From 1b305c3c239a0fd9f448b161057f132419a7cffd Mon Sep 17 00:00:00 2001 From: Maciej Zieniuk <167752252+mzieniukbw@users.noreply.github.com> Date: Mon, 15 Dec 2025 11:36:34 +0100 Subject: [PATCH 01/67] [PM-26049] Auto key not stored due to vault timeout write vs read race condition for cli (#17707) * auto key not stored due to vault timeout race condition being null for cli * fix unit test default state * neglected electron key service test cleanup * bad merge - fix formatting --- .../electron-key.service.spec.ts | 49 ++++++------------- .../src/key-management/vault-timeout/index.ts | 2 + .../vault-timeout-settings.service.ts | 6 ++- libs/key-management/src/key.service.spec.ts | 4 +- libs/key-management/src/key.service.ts | 4 +- 5 files changed, 28 insertions(+), 37 deletions(-) diff --git a/apps/desktop/src/key-management/electron-key.service.spec.ts b/apps/desktop/src/key-management/electron-key.service.spec.ts index cc1d68ed050..c5e010b1766 100644 --- a/apps/desktop/src/key-management/electron-key.service.spec.ts +++ b/apps/desktop/src/key-management/electron-key.service.spec.ts @@ -13,11 +13,13 @@ import { UserKey } from "@bitwarden/common/types/key"; import { BiometricStateService, KdfConfigService } from "@bitwarden/key-management"; import { - makeSymmetricCryptoKey, FakeAccountService, - mockAccountServiceWith, FakeStateProvider, + makeSymmetricCryptoKey, + mockAccountServiceWith, } from "../../../../libs/common/spec"; +// eslint-disable-next-line no-restricted-imports +import { VAULT_TIMEOUT } from "../../../../libs/common/src/key-management/vault-timeout"; import { DesktopBiometricsService } from "./biometrics/desktop.biometrics.service"; import { ElectronKeyService } from "./electron-key.service"; @@ -40,11 +42,13 @@ describe("ElectronKeyService", () => { let accountService: FakeAccountService; let masterPasswordService: FakeMasterPasswordService; - beforeEach(() => { + beforeEach(async () => { accountService = mockAccountServiceWith(mockUserId); masterPasswordService = new FakeMasterPasswordService(); stateProvider = new FakeStateProvider(accountService); + await stateProvider.setUserState(VAULT_TIMEOUT, 10, mockUserId); + keyService = new ElectronKeyService( masterPasswordService, keyGenerationService, @@ -79,38 +83,17 @@ describe("ElectronKeyService", () => { expect(biometricStateService.getBiometricUnlockEnabled).toHaveBeenCalledWith(mockUserId); }); - describe("biometric unlock enabled", () => { - beforeEach(() => { - biometricStateService.getBiometricUnlockEnabled.mockResolvedValue(true); - }); + it("sets biometric key when biometric unlock enabled", async () => { + biometricStateService.getBiometricUnlockEnabled.mockResolvedValue(true); - it("sets null biometric client key half and biometric unlock key when require password on start disabled", async () => { - biometricStateService.getRequirePasswordOnStart.mockResolvedValue(false); + await keyService.setUserKey(userKey, mockUserId); - await keyService.setUserKey(userKey, mockUserId); - - expect(biometricService.setBiometricProtectedUnlockKeyForUser).toHaveBeenCalledWith( - mockUserId, - userKey, - ); - expect(biometricStateService.setEncryptedClientKeyHalf).not.toHaveBeenCalled(); - expect(biometricStateService.getBiometricUnlockEnabled).toHaveBeenCalledWith(mockUserId); - }); - - describe("require password on start enabled", () => { - beforeEach(() => { - biometricStateService.getRequirePasswordOnStart.mockResolvedValue(true); - }); - - it("sets biometric key", async () => { - await keyService.setUserKey(userKey, mockUserId); - - expect(biometricService.setBiometricProtectedUnlockKeyForUser).toHaveBeenCalledWith( - mockUserId, - userKey, - ); - }); - }); + expect(biometricService.setBiometricProtectedUnlockKeyForUser).toHaveBeenCalledWith( + mockUserId, + userKey, + ); + expect(biometricStateService.setEncryptedClientKeyHalf).not.toHaveBeenCalled(); + expect(biometricStateService.getBiometricUnlockEnabled).toHaveBeenCalledWith(mockUserId); }); }); }); diff --git a/libs/common/src/key-management/vault-timeout/index.ts b/libs/common/src/key-management/vault-timeout/index.ts index ba32c12c9fb..1879de5353c 100644 --- a/libs/common/src/key-management/vault-timeout/index.ts +++ b/libs/common/src/key-management/vault-timeout/index.ts @@ -10,3 +10,5 @@ export { VaultTimeoutNumberType, VaultTimeoutStringType, } from "./types/vault-timeout.type"; +// Only used by desktop's electron-key.service.spec.ts test +export { VAULT_TIMEOUT } from "./services/vault-timeout-settings.state"; diff --git a/libs/common/src/key-management/vault-timeout/services/vault-timeout-settings.service.ts b/libs/common/src/key-management/vault-timeout/services/vault-timeout-settings.service.ts index dc0c5620518..b8bc859d11c 100644 --- a/libs/common/src/key-management/vault-timeout/services/vault-timeout-settings.service.ts +++ b/libs/common/src/key-management/vault-timeout/services/vault-timeout-settings.service.ts @@ -13,6 +13,7 @@ import { shareReplay, switchMap, tap, + concatMap, } from "rxjs"; // This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop. @@ -150,7 +151,7 @@ export class VaultTimeoutSettingsService implements VaultTimeoutSettingsServiceA return from( this.determineVaultTimeout(currentVaultTimeout, maxSessionTimeoutPolicyData), ).pipe( - tap((vaultTimeout: VaultTimeout) => { + concatMap(async (vaultTimeout: VaultTimeout) => { this.logService.debug( "[VaultTimeoutSettingsService] Determined vault timeout is %o for user id %s", vaultTimeout, @@ -159,8 +160,9 @@ export class VaultTimeoutSettingsService implements VaultTimeoutSettingsServiceA // As a side effect, set the new value determined by determineVaultTimeout into state if it's different from the current if (vaultTimeout !== currentVaultTimeout) { - return this.stateProvider.setUserState(VAULT_TIMEOUT, vaultTimeout, userId); + await this.stateProvider.setUserState(VAULT_TIMEOUT, vaultTimeout, userId); } + return vaultTimeout; }), catchError((error: unknown) => { // Protect outer observable from canceling on error by catching and returning EMPTY diff --git a/libs/key-management/src/key.service.spec.ts b/libs/key-management/src/key.service.spec.ts index a5b4eb01c7c..c0af62fe6e9 100644 --- a/libs/key-management/src/key.service.spec.ts +++ b/libs/key-management/src/key.service.spec.ts @@ -69,11 +69,13 @@ describe("keyService", () => { let accountService: FakeAccountService; let masterPasswordService: FakeMasterPasswordService; - beforeEach(() => { + beforeEach(async () => { accountService = mockAccountServiceWith(mockUserId); masterPasswordService = new FakeMasterPasswordService(); stateProvider = new FakeStateProvider(accountService); + await stateProvider.setUserState(VAULT_TIMEOUT, VaultTimeoutStringType.Never, mockUserId); + keyService = new DefaultKeyService( masterPasswordService, keyGenerationService, diff --git a/libs/key-management/src/key.service.ts b/libs/key-management/src/key.service.ts index f0e5f6ee08e..621a8135d1e 100644 --- a/libs/key-management/src/key.service.ts +++ b/libs/key-management/src/key.service.ts @@ -691,7 +691,9 @@ export class DefaultKeyService implements KeyServiceAbstraction { // the VaultTimeoutSettingsSvc and this service. // This should be fixed as part of the PM-7082 - Auto Key Service work. const vaultTimeout = await firstValueFrom( - this.stateProvider.getUserState$(VAULT_TIMEOUT, userId), + this.stateProvider + .getUserState$(VAULT_TIMEOUT, userId) + .pipe(filter((timeout) => timeout != null)), ); shouldStoreKey = vaultTimeout == VaultTimeoutStringType.Never; From bab2684bbd06f0b48c34016ceaca5720a35333e0 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Mon, 15 Dec 2025 11:37:15 +0100 Subject: [PATCH 02/67] Migrate avatar to OnPush (#17389) --- .../components/src/avatar/avatar.component.ts | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/libs/components/src/avatar/avatar.component.ts b/libs/components/src/avatar/avatar.component.ts index 2ba85e32772..f50807dd506 100644 --- a/libs/components/src/avatar/avatar.component.ts +++ b/libs/components/src/avatar/avatar.component.ts @@ -1,5 +1,5 @@ import { NgClass } from "@angular/common"; -import { Component, computed, input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, computed, input } from "@angular/core"; import { Utils } from "@bitwarden/common/platform/misc/utils"; @@ -14,13 +14,11 @@ const SizeClasses: Record = { }; /** - * Avatars display a unique color that helps a user visually recognize their logged in account. - - * A variance in color across the avatar component is important as it is used in Account Switching as a - * visual indicator to recognize which of a personal or work account a user is logged into. -*/ -// FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush -// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection + * Avatars display a unique color that helps a user visually recognize their logged in account. + * + * A variance in color across the avatar component is important as it is used in Account Switching as a + * visual indicator to recognize which of a personal or work account a user is logged into. + */ @Component({ selector: "bit-avatar", template: ` @@ -49,13 +47,38 @@ const SizeClasses: Record = { `, imports: [NgClass], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class AvatarComponent { + /** + * Whether to display a border around the avatar. + */ readonly border = input(false); + + /** + * Custom background color for the avatar. If not provided, a color will be generated based on the id or text. + */ readonly color = input(); + + /** + * Unique identifier used to generate a consistent background color. Takes precedence over text for color generation. + */ readonly id = input(); + + /** + * Text to display in the avatar. The first letters of words (up to 2 characters) will be shown. + * Also used to generate background color if id is not provided. + */ readonly text = input(); + + /** + * Title attribute for the avatar. If not provided, falls back to the text value. + */ readonly title = input(); + + /** + * Size of the avatar. + */ readonly size = input("default"); protected readonly svgCharCount = 2; From d0ddf7d84115e056111c40c33844e9c57001900e Mon Sep 17 00:00:00 2001 From: Github Actions Date: Mon, 15 Dec 2025 15:28:27 +0000 Subject: [PATCH 03/67] Bumped client version(s) --- apps/web/package.json | 2 +- package-lock.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index 344a78f2a2c..a5399de920e 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@bitwarden/web-vault", - "version": "2025.12.0", + "version": "2025.12.1", "scripts": { "build:oss": "webpack", "build:bit": "webpack -c ../../bitwarden_license/bit-web/webpack.config.js", diff --git a/package-lock.json b/package-lock.json index 3a600667ff7..a1e2f1121a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -491,7 +491,7 @@ }, "apps/web": { "name": "@bitwarden/web-vault", - "version": "2025.12.0" + "version": "2025.12.1" }, "libs/admin-console": { "name": "@bitwarden/admin-console", From 898c5d366a9186ef4264831dbf4b35b3e593368b Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Mon, 15 Dec 2025 16:42:35 +0100 Subject: [PATCH 04/67] [PM-28809] Migrate last auth from LooseComponentsModule (#17650) Migrates the last auth owned components from `LooseComponentsModule`. --- .../src/app/auth/recover-delete.component.ts | 27 ++++++++++--- .../auth/recover-two-factor.component.spec.ts | 38 +++++-------------- .../app/auth/recover-two-factor.component.ts | 27 +++++++++++-- .../app/auth/verify-email-token.component.ts | 3 -- .../auth/verify-recover-delete.component.ts | 25 +++++++++--- .../src/app/shared/loose-components.module.ts | 16 +------- 6 files changed, 73 insertions(+), 63 deletions(-) diff --git a/apps/web/src/app/auth/recover-delete.component.ts b/apps/web/src/app/auth/recover-delete.component.ts index 00b14f9a402..921d96270bf 100644 --- a/apps/web/src/app/auth/recover-delete.component.ts +++ b/apps/web/src/app/auth/recover-delete.component.ts @@ -1,21 +1,37 @@ // FIXME: Update this file to be type safe and remove this and next line // @ts-strict-ignore import { Component } from "@angular/core"; -import { FormControl, FormGroup, Validators } from "@angular/forms"; -import { Router } from "@angular/router"; +import { FormControl, FormGroup, ReactiveFormsModule, Validators } from "@angular/forms"; +import { Router, RouterLink } from "@angular/router"; +import { JslibModule } from "@bitwarden/angular/jslib.module"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { DeleteRecoverRequest } from "@bitwarden/common/models/request/delete-recover.request"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; -import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; -import { ToastService } from "@bitwarden/components"; +import { + AsyncActionsModule, + ButtonModule, + FormFieldModule, + ToastService, + TypographyModule, +} from "@bitwarden/components"; +import { I18nPipe } from "@bitwarden/ui-common"; // FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection @Component({ selector: "app-recover-delete", templateUrl: "recover-delete.component.html", - standalone: false, + imports: [ + ReactiveFormsModule, + RouterLink, + JslibModule, + AsyncActionsModule, + ButtonModule, + FormFieldModule, + I18nPipe, + TypographyModule, + ], }) export class RecoverDeleteComponent { protected recoverDeleteForm = new FormGroup({ @@ -29,7 +45,6 @@ export class RecoverDeleteComponent { constructor( private router: Router, private apiService: ApiService, - private platformUtilsService: PlatformUtilsService, private i18nService: I18nService, private toastService: ToastService, ) {} diff --git a/apps/web/src/app/auth/recover-two-factor.component.spec.ts b/apps/web/src/app/auth/recover-two-factor.component.spec.ts index c3792cfd3f3..b7a68ff9f07 100644 --- a/apps/web/src/app/auth/recover-two-factor.component.spec.ts +++ b/apps/web/src/app/auth/recover-two-factor.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; -import { Router } from "@angular/router"; +import { Router, provideRouter } from "@angular/router"; import { mock, MockProxy } from "jest-mock-extended"; import { @@ -7,69 +7,49 @@ import { LoginSuccessHandlerService, PasswordLoginCredentials, } from "@bitwarden/auth/common"; -import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { AuthResult } from "@bitwarden/common/auth/models/domain/auth-result"; import { ErrorResponse } from "@bitwarden/common/models/response/error.response"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; -import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; import { ToastService } from "@bitwarden/components"; -import { KeyService } from "@bitwarden/key-management"; -import { I18nPipe } from "@bitwarden/ui-common"; import { RecoverTwoFactorComponent } from "./recover-two-factor.component"; describe("RecoverTwoFactorComponent", () => { let component: RecoverTwoFactorComponent; let fixture: ComponentFixture; - - // Mock Services let mockRouter: MockProxy; - let mockApiService: MockProxy; - let mockPlatformUtilsService: MockProxy; let mockI18nService: MockProxy; - let mockKeyService: MockProxy; let mockLoginStrategyService: MockProxy; let mockToastService: MockProxy; - let mockConfigService: MockProxy; let mockLoginSuccessHandlerService: MockProxy; let mockLogService: MockProxy; let mockValidationService: MockProxy; - beforeEach(() => { - mockRouter = mock(); - mockApiService = mock(); - mockPlatformUtilsService = mock(); + beforeEach(async () => { mockI18nService = mock(); - mockKeyService = mock(); mockLoginStrategyService = mock(); mockToastService = mock(); - mockConfigService = mock(); mockLoginSuccessHandlerService = mock(); mockLogService = mock(); mockValidationService = mock(); - TestBed.configureTestingModule({ - declarations: [RecoverTwoFactorComponent], + await TestBed.configureTestingModule({ + imports: [RecoverTwoFactorComponent], providers: [ - { provide: Router, useValue: mockRouter }, - { provide: ApiService, useValue: mockApiService }, - { provide: PlatformUtilsService, mockPlatformUtilsService }, + provideRouter([]), { provide: I18nService, useValue: mockI18nService }, - { provide: KeyService, useValue: mockKeyService }, { provide: LoginStrategyServiceAbstraction, useValue: mockLoginStrategyService }, { provide: ToastService, useValue: mockToastService }, - { provide: ConfigService, useValue: mockConfigService }, { provide: LoginSuccessHandlerService, useValue: mockLoginSuccessHandlerService }, { provide: LogService, useValue: mockLogService }, { provide: ValidationService, useValue: mockValidationService }, ], - imports: [I18nPipe], - // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports - errorOnUnknownElements: false, - }); + }).compileComponents(); + + mockRouter = TestBed.inject(Router) as MockProxy; + jest.spyOn(mockRouter, "navigate"); fixture = TestBed.createComponent(RecoverTwoFactorComponent); component = fixture.componentInstance; diff --git a/apps/web/src/app/auth/recover-two-factor.component.ts b/apps/web/src/app/auth/recover-two-factor.component.ts index 20f40b5319a..5d160e4ed91 100644 --- a/apps/web/src/app/auth/recover-two-factor.component.ts +++ b/apps/web/src/app/auth/recover-two-factor.component.ts @@ -1,8 +1,9 @@ import { Component, DestroyRef, OnInit } from "@angular/core"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; -import { FormControl, FormGroup, Validators } from "@angular/forms"; -import { Router } from "@angular/router"; +import { FormControl, FormGroup, ReactiveFormsModule, Validators } from "@angular/forms"; +import { Router, RouterLink } from "@angular/router"; +import { JslibModule } from "@bitwarden/angular/jslib.module"; import { LoginStrategyServiceAbstraction, PasswordLoginCredentials, @@ -14,14 +15,32 @@ import { ErrorResponse } from "@bitwarden/common/models/response/error.response" import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; -import { ToastService } from "@bitwarden/components"; +import { + AsyncActionsModule, + ButtonModule, + FormFieldModule, + LinkModule, + ToastService, + TypographyModule, +} from "@bitwarden/components"; +import { I18nPipe } from "@bitwarden/ui-common"; // FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection @Component({ selector: "app-recover-two-factor", templateUrl: "recover-two-factor.component.html", - standalone: false, + imports: [ + ReactiveFormsModule, + RouterLink, + JslibModule, + AsyncActionsModule, + ButtonModule, + FormFieldModule, + I18nPipe, + LinkModule, + TypographyModule, + ], }) export class RecoverTwoFactorComponent implements OnInit { formGroup = new FormGroup({ diff --git a/apps/web/src/app/auth/verify-email-token.component.ts b/apps/web/src/app/auth/verify-email-token.component.ts index 30bfcf95bbf..fe70f876bc4 100644 --- a/apps/web/src/app/auth/verify-email-token.component.ts +++ b/apps/web/src/app/auth/verify-email-token.component.ts @@ -10,7 +10,6 @@ import { TokenService } from "@bitwarden/common/auth/abstractions/token.service" import { VerifyEmailRequest } from "@bitwarden/common/models/request/verify-email.request"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; -import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { ToastService } from "@bitwarden/components"; // FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush @@ -18,12 +17,10 @@ import { ToastService } from "@bitwarden/components"; @Component({ selector: "app-verify-email-token", templateUrl: "verify-email-token.component.html", - standalone: false, }) export class VerifyEmailTokenComponent implements OnInit { constructor( private router: Router, - private platformUtilsService: PlatformUtilsService, private i18nService: I18nService, private route: ActivatedRoute, private apiService: ApiService, diff --git a/apps/web/src/app/auth/verify-recover-delete.component.ts b/apps/web/src/app/auth/verify-recover-delete.component.ts index 06d6096c3de..16968fcd161 100644 --- a/apps/web/src/app/auth/verify-recover-delete.component.ts +++ b/apps/web/src/app/auth/verify-recover-delete.component.ts @@ -1,22 +1,36 @@ // FIXME: Update this file to be type safe and remove this and next line // @ts-strict-ignore import { Component, OnInit } from "@angular/core"; -import { FormGroup } from "@angular/forms"; -import { ActivatedRoute, Router } from "@angular/router"; +import { FormGroup, ReactiveFormsModule } from "@angular/forms"; +import { ActivatedRoute, Router, RouterLink } from "@angular/router"; import { first } from "rxjs/operators"; +import { JslibModule } from "@bitwarden/angular/jslib.module"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { VerifyDeleteRecoverRequest } from "@bitwarden/common/models/request/verify-delete-recover.request"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; -import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; -import { ToastService } from "@bitwarden/components"; +import { + AsyncActionsModule, + ButtonModule, + CalloutComponent, + ToastService, + TypographyModule, +} from "@bitwarden/components"; // FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection @Component({ selector: "app-verify-recover-delete", templateUrl: "verify-recover-delete.component.html", - standalone: false, + imports: [ + ReactiveFormsModule, + RouterLink, + JslibModule, + AsyncActionsModule, + ButtonModule, + CalloutComponent, + TypographyModule, + ], }) export class VerifyRecoverDeleteComponent implements OnInit { email: string; @@ -28,7 +42,6 @@ export class VerifyRecoverDeleteComponent implements OnInit { constructor( private router: Router, private apiService: ApiService, - private platformUtilsService: PlatformUtilsService, private i18nService: I18nService, private route: ActivatedRoute, private toastService: ToastService, diff --git a/apps/web/src/app/shared/loose-components.module.ts b/apps/web/src/app/shared/loose-components.module.ts index f096ef6a292..ff7a5f02c77 100644 --- a/apps/web/src/app/shared/loose-components.module.ts +++ b/apps/web/src/app/shared/loose-components.module.ts @@ -1,9 +1,5 @@ import { NgModule } from "@angular/core"; -import { RecoverDeleteComponent } from "../auth/recover-delete.component"; -import { RecoverTwoFactorComponent } from "../auth/recover-two-factor.component"; -import { VerifyEmailTokenComponent } from "../auth/verify-email-token.component"; -import { VerifyRecoverDeleteComponent } from "../auth/verify-recover-delete.component"; import { FreeBitwardenFamiliesComponent } from "../billing/members/free-bitwarden-families.component"; import { SponsoredFamiliesComponent } from "../billing/settings/sponsored-families.component"; import { SponsoringOrgRowComponent } from "../billing/settings/sponsoring-org-row.component"; @@ -18,20 +14,10 @@ import { SharedModule } from "./shared.module"; @NgModule({ imports: [SharedModule, HeaderModule, OrganizationBadgeModule, PipesModule], declarations: [ - RecoverDeleteComponent, - RecoverTwoFactorComponent, SponsoredFamiliesComponent, FreeBitwardenFamiliesComponent, SponsoringOrgRowComponent, - VerifyEmailTokenComponent, - VerifyRecoverDeleteComponent, - ], - exports: [ - RecoverDeleteComponent, - RecoverTwoFactorComponent, - SponsoredFamiliesComponent, - VerifyEmailTokenComponent, - VerifyRecoverDeleteComponent, ], + exports: [SponsoredFamiliesComponent], }) export class LooseComponentsModule {} From 721f253ef9ba5252c2a839a200c7c9384052ab9d Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 15 Dec 2025 16:51:31 +0100 Subject: [PATCH 05/67] [PM-28536] Add phishing blocker setting to account security (#17527) * added phishing blocker toggle * design improvements * Fix TypeScript strict mode errors in PhishingDetectionSettingsServiceAbstraction * Camel case messages * Update PhishingDetectionService.initialize parameter ordering * Add comments to PhishingDetectionSettingsServiceAbstraction * Change state from global to user settings * Remove clear on logout phishing-detection-settings * PM-28536 making a change from getActive to getUser because of method being deprecated * Moved phishing detection services to own file * Added new phishing detection availability service to expose complex enable logic * Add test cases for PhishingDetectionAvailabilityService * Remove phishing detection availability in favor of one settings service * Extract phishing detection settings service abstraction to own file * Update phishing detection-settings service to include availability logic. Updated dependencies * Add test cases for phishing detection element. Added missing dependencies in testbed setup * Update services in extension * Switch checkbox to bit-switch component * Remove comment * Remove comment * Fix prettier vs lint spacing * Replace deprecated active user state. Updated test cases * Fix account-security test failing * Update comments * Renamed variable * Removed obsolete message * Remove unused variable * Removed unused import --------- Co-authored-by: Leslie Tilton <23057410+Banrion@users.noreply.github.com> Co-authored-by: Graham Walker Co-authored-by: Tom <144813356+ttalty@users.noreply.github.com> --- apps/browser/src/_locales/en/messages.json | 9 + .../settings/account-security.component.html | 14 ++ .../account-security.component.spec.ts | 145 ++++++++++--- .../settings/account-security.component.ts | 20 ++ .../browser/src/background/main.background.ts | 11 +- .../phishing-detection.service.spec.ts | 20 +- .../services/phishing-detection.service.ts | 28 +-- .../src/popup/services/services.module.ts | 14 ++ ...-detection-settings.service.abstraction.ts | 37 ++++ ...hishing-detection-settings.service.spec.ts | 203 ++++++++++++++++++ .../phishing-detection-settings.service.ts | 116 ++++++++++ 11 files changed, 555 insertions(+), 62 deletions(-) create mode 100644 libs/common/src/dirt/services/abstractions/phishing-detection-settings.service.abstraction.ts create mode 100644 libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.spec.ts create mode 100644 libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.ts diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index 36d69fb09f5..2ace8ff8b96 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -4801,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, diff --git a/apps/browser/src/auth/popup/settings/account-security.component.html b/apps/browser/src/auth/popup/settings/account-security.component.html index b5d725b4a82..bb6b141c6c5 100644 --- a/apps/browser/src/auth/popup/settings/account-security.component.html +++ b/apps/browser/src/auth/popup/settings/account-security.component.html @@ -128,6 +128,20 @@ + + +

{{ "phishingBlocker" | i18n }}

+
+ + + {{ + "enablePhishingDetection" | i18n + }} + {{ "enablePhishingDetectionDesc" | i18n }} + + +
+

{{ "otherOptions" | i18n }}

diff --git a/apps/browser/src/auth/popup/settings/account-security.component.spec.ts b/apps/browser/src/auth/popup/settings/account-security.component.spec.ts index d0ab4793301..0f799fe7d4d 100644 --- a/apps/browser/src/auth/popup/settings/account-security.component.spec.ts +++ b/apps/browser/src/auth/popup/settings/account-security.component.spec.ts @@ -3,9 +3,10 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { By } from "@angular/platform-browser"; import { ActivatedRoute } from "@angular/router"; import { mock } from "jest-mock-extended"; -import { firstValueFrom, of } from "rxjs"; +import { firstValueFrom, of, BehaviorSubject } from "rxjs"; import { CollectionService } from "@bitwarden/admin-console/common"; +import { NudgesService } from "@bitwarden/angular/vault"; import { LockService } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; @@ -14,12 +15,15 @@ import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { Policy } from "@bitwarden/common/admin-console/models/domain/policy"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; +import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions"; +import { PhishingDetectionSettingsServiceAbstraction } from "@bitwarden/common/dirt/services/abstractions/phishing-detection-settings.service.abstraction"; import { PinServiceAbstraction } from "@bitwarden/common/key-management/pin/pin.service.abstraction"; import { VaultTimeoutSettingsService, VaultTimeoutStringType, VaultTimeoutAction, } from "@bitwarden/common/key-management/vault-timeout"; +import { ProfileResponse } from "@bitwarden/common/models/response/profile.response"; import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -27,12 +31,12 @@ import { LogService } from "@bitwarden/common/platform/abstractions/log.service" import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; import { MessageSender } from "@bitwarden/common/platform/messaging"; -import { Utils } from "@bitwarden/common/platform/misc/utils"; import { StateProvider } from "@bitwarden/common/platform/state"; import { FakeAccountService, mockAccountServiceWith } from "@bitwarden/common/spec"; import { UserId } from "@bitwarden/common/types/guid"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; import { DialogService, ToastService } from "@bitwarden/components"; +import { newGuid } from "@bitwarden/guid"; import { BiometricStateService, BiometricsService, KeyService } from "@bitwarden/key-management"; import { BrowserApi } from "../../../platform/browser/browser-api"; @@ -54,18 +58,27 @@ describe("AccountSecurityComponent", () => { let component: AccountSecurityComponent; let fixture: ComponentFixture; - const mockUserId = Utils.newGuid() as UserId; + const mockUserId = newGuid() as UserId; + const accountService: FakeAccountService = mockAccountServiceWith(mockUserId); - const vaultTimeoutSettingsService = mock(); + const apiService = mock(); + const billingService = mock(); const biometricStateService = mock(); - const policyService = mock(); - const pinServiceAbstraction = mock(); - const keyService = mock(); - const validationService = mock(); - const dialogService = mock(); - const platformUtilsService = mock(); - const lockService = mock(); const configService = mock(); + const dialogService = mock(); + const keyService = mock(); + const lockService = mock(); + const policyService = mock(); + const phishingDetectionSettingsService = mock(); + const pinServiceAbstraction = mock(); + const platformUtilsService = mock(); + const validationService = mock(); + const vaultNudgesService = mock(); + const vaultTimeoutSettingsService = mock(); + + // Mock subjects to control the phishing detection observables + let phishingAvailableSubject: BehaviorSubject; + let phishingEnabledSubject: BehaviorSubject; beforeEach(async () => { await TestBed.configureTestingModule({ @@ -73,29 +86,38 @@ describe("AccountSecurityComponent", () => { { provide: AccountService, useValue: accountService }, { provide: AccountSecurityComponent, useValue: mock() }, { provide: ActivatedRoute, useValue: mock() }, + { provide: ApiService, useValue: apiService }, + { + provide: BillingAccountProfileStateService, + useValue: billingService, + }, { provide: BiometricsService, useValue: mock() }, { provide: BiometricStateService, useValue: biometricStateService }, + { provide: CipherService, useValue: mock() }, + { provide: CollectionService, useValue: mock() }, + { provide: ConfigService, useValue: configService }, { provide: DialogService, useValue: dialogService }, { provide: EnvironmentService, useValue: mock() }, { provide: I18nService, useValue: mock() }, - { provide: MessageSender, useValue: mock() }, { provide: KeyService, useValue: keyService }, + { provide: LockService, useValue: lockService }, + { provide: LogService, useValue: mock() }, + { provide: MessageSender, useValue: mock() }, + { provide: NudgesService, useValue: vaultNudgesService }, + { provide: OrganizationService, useValue: mock() }, { provide: PinServiceAbstraction, useValue: pinServiceAbstraction }, + { + provide: PhishingDetectionSettingsServiceAbstraction, + useValue: phishingDetectionSettingsService, + }, { provide: PlatformUtilsService, useValue: platformUtilsService }, { provide: PolicyService, useValue: policyService }, { provide: PopupRouterCacheService, useValue: mock() }, + { provide: StateProvider, useValue: mock() }, { provide: ToastService, useValue: mock() }, { provide: UserVerificationService, useValue: mock() }, - { provide: VaultTimeoutSettingsService, useValue: vaultTimeoutSettingsService }, - { provide: StateProvider, useValue: mock() }, - { provide: CipherService, useValue: mock() }, - { provide: ApiService, useValue: mock() }, - { provide: LogService, useValue: mock() }, - { provide: OrganizationService, useValue: mock() }, - { provide: CollectionService, useValue: mock() }, { provide: ValidationService, useValue: validationService }, - { provide: LockService, useValue: lockService }, - { provide: ConfigService, useValue: configService }, + { provide: VaultTimeoutSettingsService, useValue: vaultTimeoutSettingsService }, ], }) .overrideComponent(AccountSecurityComponent, { @@ -110,10 +132,13 @@ describe("AccountSecurityComponent", () => { }) .compileComponents(); - fixture = TestBed.createComponent(AccountSecurityComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - + apiService.getProfile.mockResolvedValue( + mock({ + id: mockUserId, + creationDate: new Date().toISOString(), + }), + ); + vaultNudgesService.showNudgeSpotlight$.mockReturnValue(of(false)); vaultTimeoutSettingsService.getVaultTimeoutByUserId$.mockReturnValue( of(VaultTimeoutStringType.OnLocked), ); @@ -123,8 +148,25 @@ describe("AccountSecurityComponent", () => { vaultTimeoutSettingsService.getVaultTimeoutActionByUserId$.mockReturnValue( of(VaultTimeoutAction.Lock), ); + vaultTimeoutSettingsService.availableVaultTimeoutActions$.mockReturnValue(of([])); biometricStateService.promptAutomatically$ = of(false); pinServiceAbstraction.isPinSet.mockResolvedValue(false); + configService.getFeatureFlag$.mockReturnValue(of(false)); + billingService.hasPremiumPersonally$.mockReturnValue(of(true)); + + policyService.policiesByType$.mockReturnValue(of([null])); + + // Mock readonly observables for phishing detection using BehaviorSubjects so + // tests can push different values after component creation. + phishingAvailableSubject = new BehaviorSubject(true); + phishingEnabledSubject = new BehaviorSubject(true); + + (phishingDetectionSettingsService.available$ as any) = phishingAvailableSubject.asObservable(); + (phishingDetectionSettingsService.enabled$ as any) = phishingEnabledSubject.asObservable(); + + fixture = TestBed.createComponent(AccountSecurityComponent); + component = fixture.componentInstance; + fixture.detectChanges(); }); afterEach(() => { @@ -233,6 +275,59 @@ describe("AccountSecurityComponent", () => { expect(pinInputElement).toBeNull(); }); + describe("phishing detection UI and setting", () => { + it("updates phishing detection setting when form value changes", async () => { + policyService.policiesByType$.mockReturnValue(of([null])); + + phishingAvailableSubject.next(true); + phishingEnabledSubject.next(true); + + // Init component + await component.ngOnInit(); + fixture.detectChanges(); + + // Initial form value should match enabled$ observable defaulting to true + expect(component.form.controls.enablePhishingDetection.value).toBe(true); + + // Change the form value to false + component.form.controls.enablePhishingDetection.setValue(false); + fixture.detectChanges(); + // Wait briefly to allow any debounced or async valueChanges handlers to run + // fixture.whenStable() does not work here + await new Promise((resolve) => setTimeout(resolve, 0)); + + expect(phishingDetectionSettingsService.setEnabled).toHaveBeenCalledWith(mockUserId, false); + }); + + it("shows phishing detection element when available$ is true", async () => { + policyService.policiesByType$.mockReturnValue(of([null])); + phishingAvailableSubject.next(true); + phishingEnabledSubject.next(true); + + await component.ngOnInit(); + fixture.detectChanges(); + + const phishingDetectionElement = fixture.debugElement.query( + By.css("#phishingDetectionAction"), + ); + expect(phishingDetectionElement).not.toBeNull(); + }); + + it("hides phishing detection element when available$ is false", async () => { + policyService.policiesByType$.mockReturnValue(of([null])); + phishingAvailableSubject.next(false); + phishingEnabledSubject.next(true); + + await component.ngOnInit(); + fixture.detectChanges(); + + const phishingDetectionElement = fixture.debugElement.query( + By.css("#phishingDetectionAction"), + ); + expect(phishingDetectionElement).toBeNull(); + }); + }); + describe("updateBiometric", () => { let browserApiSpy: jest.SpyInstance; diff --git a/apps/browser/src/auth/popup/settings/account-security.component.ts b/apps/browser/src/auth/popup/settings/account-security.component.ts index 4ff29c8853e..7c36754c894 100644 --- a/apps/browser/src/auth/popup/settings/account-security.component.ts +++ b/apps/browser/src/auth/popup/settings/account-security.component.ts @@ -32,6 +32,7 @@ import { getFirstPolicy } from "@bitwarden/common/admin-console/services/policy/ import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; +import { PhishingDetectionSettingsServiceAbstraction } from "@bitwarden/common/dirt/services/abstractions/phishing-detection-settings.service.abstraction"; import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { PinServiceAbstraction } from "@bitwarden/common/key-management/pin/pin.service.abstraction"; import { @@ -62,6 +63,7 @@ import { SelectModule, TypographyModule, ToastService, + SwitchComponent, } from "@bitwarden/components"; import { KeyService, @@ -110,6 +112,7 @@ import { AwaitDesktopDialogComponent } from "./await-desktop-dialog.component"; SpotlightComponent, TypographyModule, SessionTimeoutInputLegacyComponent, + SwitchComponent, ], }) export class AccountSecurityComponent implements OnInit, OnDestroy { @@ -130,6 +133,7 @@ export class AccountSecurityComponent implements OnInit, OnDestroy { pinLockWithMasterPassword: false, biometric: false, enableAutoBiometricsPrompt: true, + enablePhishingDetection: true, }); protected showAccountSecurityNudge$: Observable = @@ -141,6 +145,7 @@ export class AccountSecurityComponent implements OnInit, OnDestroy { ); protected readonly consolidatedSessionTimeoutComponent$: Observable; + protected readonly phishingDetectionAvailable$: Observable; protected refreshTimeoutSettings$ = new BehaviorSubject(undefined); private destroy$ = new Subject(); @@ -167,10 +172,14 @@ export class AccountSecurityComponent implements OnInit, OnDestroy { private vaultNudgesService: NudgesService, private validationService: ValidationService, private logService: LogService, + private phishingDetectionSettingsService: PhishingDetectionSettingsServiceAbstraction, ) { this.consolidatedSessionTimeoutComponent$ = this.configService.getFeatureFlag$( FeatureFlag.ConsolidatedSessionTimeoutComponent, ); + + // Check if user phishing detection available + this.phishingDetectionAvailable$ = this.phishingDetectionSettingsService.available$; } async ngOnInit() { @@ -251,6 +260,7 @@ export class AccountSecurityComponent implements OnInit, OnDestroy { enableAutoBiometricsPrompt: await firstValueFrom( this.biometricStateService.promptAutomatically$, ), + enablePhishingDetection: await firstValueFrom(this.phishingDetectionSettingsService.enabled$), }; this.form.patchValue(initialValues, { emitEvent: false }); @@ -361,6 +371,16 @@ export class AccountSecurityComponent implements OnInit, OnDestroy { ) .subscribe(); + this.form.controls.enablePhishingDetection.valueChanges + .pipe( + concatMap(async (enabled) => { + const userId = await firstValueFrom(this.accountService.activeAccount$.pipe(getUserId)); + await this.phishingDetectionSettingsService.setEnabled(userId, enabled); + }), + takeUntil(this.destroy$), + ) + .subscribe(); + this.refreshTimeoutSettings$ .pipe( switchMap(() => diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index 2540571abb0..7b509380f6d 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -82,7 +82,9 @@ import { import { isUrlInList } from "@bitwarden/common/autofill/utils"; import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions/account/billing-account-profile-state.service"; import { DefaultBillingAccountProfileStateService } from "@bitwarden/common/billing/services/account/billing-account-profile-state.service"; +import { PhishingDetectionSettingsServiceAbstraction } from "@bitwarden/common/dirt/services/abstractions/phishing-detection-settings.service.abstraction"; import { HibpApiService } from "@bitwarden/common/dirt/services/hibp-api.service"; +import { PhishingDetectionSettingsService } from "@bitwarden/common/dirt/services/phishing-detection/phishing-detection-settings.service"; import { ClientType } from "@bitwarden/common/enums"; import { ProcessReloadServiceAbstraction } from "@bitwarden/common/key-management/abstractions/process-reload.service"; import { @@ -497,6 +499,7 @@ export default class MainBackground { // DIRT private phishingDataService: PhishingDataService; + private phishingDetectionSettingsService: PhishingDetectionSettingsServiceAbstraction; constructor() { const logoutCallback = async (logoutReason: LogoutReason, userId?: UserId) => @@ -1475,12 +1478,18 @@ export default class MainBackground { this.platformUtilsService, ); - PhishingDetectionService.initialize( + this.phishingDetectionSettingsService = new PhishingDetectionSettingsService( this.accountService, this.billingAccountProfileStateService, this.configService, + this.organizationService, + this.stateProvider, + ); + + PhishingDetectionService.initialize( this.logService, this.phishingDataService, + this.phishingDetectionSettingsService, messageListener, ); diff --git a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.spec.ts b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.spec.ts index e33b4b1b4f1..ceb18bd1573 100644 --- a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.spec.ts +++ b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.spec.ts @@ -1,9 +1,7 @@ import { mock, MockProxy } from "jest-mock-extended"; import { Observable, of } from "rxjs"; -import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; -import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; +import { PhishingDetectionSettingsServiceAbstraction } from "@bitwarden/common/dirt/services/abstractions/phishing-detection-settings.service.abstraction"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { MessageListener } from "@bitwarden/messaging"; @@ -11,17 +9,12 @@ import { PhishingDataService } from "./phishing-data.service"; import { PhishingDetectionService } from "./phishing-detection.service"; describe("PhishingDetectionService", () => { - let accountService: AccountService; - let billingAccountProfileStateService: BillingAccountProfileStateService; - let configService: ConfigService; let logService: LogService; let phishingDataService: MockProxy; let messageListener: MockProxy; + let phishingDetectionSettingsService: MockProxy; beforeEach(() => { - accountService = { getAccount$: jest.fn(() => of(null)) } as any; - billingAccountProfileStateService = {} as any; - configService = { getFeatureFlag$: jest.fn(() => of(false)) } as any; logService = { info: jest.fn(), debug: jest.fn(), warning: jest.fn(), error: jest.fn() } as any; phishingDataService = mock(); messageListener = mock({ @@ -29,16 +22,17 @@ describe("PhishingDetectionService", () => { return new Observable(); }, }); + phishingDetectionSettingsService = mock({ + on$: of(true), + }); }); it("should initialize without errors", () => { expect(() => { PhishingDetectionService.initialize( - accountService, - billingAccountProfileStateService, - configService, logService, phishingDataService, + phishingDetectionSettingsService, messageListener, ); }).not.toThrow(); @@ -61,6 +55,7 @@ describe("PhishingDetectionService", () => { // logService, // phishingDataService, // messageListener, + // phishingDetectionSettingsService, // ); // }); @@ -81,6 +76,7 @@ describe("PhishingDetectionService", () => { // logService, // phishingDataService, // messageListener, + // phishingDetectionSettingsService, // ); // }); }); diff --git a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts index 4917e740be8..e04d08559ab 100644 --- a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts +++ b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts @@ -1,21 +1,16 @@ import { - combineLatest, concatMap, distinctUntilChanged, EMPTY, filter, map, merge, - of, Subject, switchMap, tap, } from "rxjs"; -import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; -import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; +import { PhishingDetectionSettingsServiceAbstraction } from "@bitwarden/common/dirt/services/abstractions/phishing-detection-settings.service.abstraction"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { CommandDefinition, MessageListener } from "@bitwarden/messaging"; @@ -50,11 +45,9 @@ export class PhishingDetectionService { private static _didInit = false; static initialize( - accountService: AccountService, - billingAccountProfileStateService: BillingAccountProfileStateService, - configService: ConfigService, logService: LogService, phishingDataService: PhishingDataService, + phishingDetectionSettingsService: PhishingDetectionSettingsServiceAbstraction, messageListener: MessageListener, ) { if (this._didInit) { @@ -118,22 +111,9 @@ export class PhishingDetectionService { .messages$(PHISHING_DETECTION_CANCEL_COMMAND) .pipe(switchMap((message) => BrowserApi.closeTab(message.tabId))); - const activeAccountHasAccess$ = combineLatest([ - accountService.activeAccount$, - configService.getFeatureFlag$(FeatureFlag.PhishingDetection), - ]).pipe( - switchMap(([account, featureEnabled]) => { - if (!account) { - logService.debug("[PhishingDetectionService] No active account."); - return of(false); - } - return billingAccountProfileStateService - .hasPremiumFromAnySource$(account.id) - .pipe(map((hasPremium) => hasPremium && featureEnabled)); - }), - ); + const phishingDetectionActive$ = phishingDetectionSettingsService.on$; - const initSub = activeAccountHasAccess$ + const initSub = phishingDetectionActive$ .pipe( distinctUntilChanged(), switchMap((activeUserHasAccess) => { diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts index bb89eff1147..39c53b7da56 100644 --- a/apps/browser/src/popup/services/services.module.ts +++ b/apps/browser/src/popup/services/services.module.ts @@ -41,6 +41,7 @@ import { import { ExtensionNewDeviceVerificationComponentService } from "@bitwarden/browser/auth/services/new-device-verification/extension-new-device-verification-component.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { EventCollectionService as EventCollectionServiceAbstraction } from "@bitwarden/common/abstractions/event/event-collection.service"; +import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { AccountService, @@ -67,6 +68,8 @@ import { UserNotificationSettingsServiceAbstraction, } from "@bitwarden/common/autofill/services/user-notification-settings.service"; import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions/account/billing-account-profile-state.service"; +import { PhishingDetectionSettingsServiceAbstraction } from "@bitwarden/common/dirt/services/abstractions/phishing-detection-settings.service.abstraction"; +import { PhishingDetectionSettingsService } from "@bitwarden/common/dirt/services/phishing-detection/phishing-detection-settings.service"; import { ClientType } from "@bitwarden/common/enums"; import { KeyGenerationService } from "@bitwarden/common/key-management/crypto"; import { CryptoFunctionService } from "@bitwarden/common/key-management/crypto/abstractions/crypto-function.service"; @@ -512,6 +515,17 @@ const safeProviders: SafeProvider[] = [ useClass: UserNotificationSettingsService, deps: [StateProvider], }), + safeProvider({ + provide: PhishingDetectionSettingsServiceAbstraction, + useClass: PhishingDetectionSettingsService, + deps: [ + AccountService, + BillingAccountProfileStateService, + ConfigService, + OrganizationService, + StateProvider, + ], + }), safeProvider({ provide: MessageListener, useFactory: (subject: Subject>>, ngZone: NgZone) => diff --git a/libs/common/src/dirt/services/abstractions/phishing-detection-settings.service.abstraction.ts b/libs/common/src/dirt/services/abstractions/phishing-detection-settings.service.abstraction.ts new file mode 100644 index 00000000000..6c915c2dcbe --- /dev/null +++ b/libs/common/src/dirt/services/abstractions/phishing-detection-settings.service.abstraction.ts @@ -0,0 +1,37 @@ +import { Observable } from "rxjs"; + +import { UserId } from "@bitwarden/user-core"; + +/** + * Abstraction for phishing detection settings + */ +export abstract class PhishingDetectionSettingsServiceAbstraction { + /** + * An observable for whether phishing detection is available for the active user account. + * + * Access is granted only when the PhishingDetection feature flag is enabled and + * at least one of the following is true for the active account: + * - the user has a personal premium subscription + * - the user is a member of a Family org (ProductTierType.Families) + * - the user is a member of an Enterprise org with `usePhishingBlocker` enabled + * + * Note: Non-specified organization types (e.g., Team orgs) do not grant access. + */ + abstract readonly available$: Observable; + /** + * An observable for whether phishing detection is on for the active user account + * + * This is true when {@link available$} is true and when {@link enabled$} is true + */ + abstract readonly on$: Observable; + /** + * An observable for whether phishing detection is enabled + */ + abstract readonly enabled$: Observable; + /** + * Sets whether phishing detection is enabled + * + * @param enabled True to enable, false to disable + */ + abstract setEnabled: (userId: UserId, enabled: boolean) => Promise; +} diff --git a/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.spec.ts b/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.spec.ts new file mode 100644 index 00000000000..23e311d9445 --- /dev/null +++ b/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.spec.ts @@ -0,0 +1,203 @@ +import { mock, MockProxy } from "jest-mock-extended"; +import { BehaviorSubject, firstValueFrom, Subject } from "rxjs"; + +import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; +import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; +import { Account, AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions"; +import { ProductTierType } from "@bitwarden/common/billing/enums"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; + +import { FakeAccountService, FakeStateProvider, mockAccountServiceWith } from "../../../../spec"; +import { UserId } from "../../../types/guid"; + +import { PhishingDetectionSettingsService } from "./phishing-detection-settings.service"; + +describe("PhishingDetectionSettingsService", () => { + // Mock services + let mockAccountService: MockProxy; + let mockBillingService: MockProxy; + let mockConfigService: MockProxy; + let mockOrganizationService: MockProxy; + + // RxJS Subjects we control in the tests + let activeAccountSubject: BehaviorSubject; + let featureFlagSubject: BehaviorSubject; + let premiumStatusSubject: BehaviorSubject; + let organizationsSubject: BehaviorSubject; + + let service: PhishingDetectionSettingsService; + let stateProvider: FakeStateProvider; + + // Constant mock data + const familyOrg = mock({ + canAccess: true, + isMember: true, + usersGetPremium: true, + productTierType: ProductTierType.Families, + usePhishingBlocker: true, + }); + const teamOrg = mock({ + canAccess: true, + isMember: true, + usersGetPremium: true, + productTierType: ProductTierType.Teams, + usePhishingBlocker: true, + }); + const enterpriseOrg = mock({ + canAccess: true, + isMember: true, + usersGetPremium: true, + productTierType: ProductTierType.Enterprise, + usePhishingBlocker: true, + }); + + const mockUserId = "mock-user-id" as UserId; + const account = mock({ id: mockUserId }); + const accountService: FakeAccountService = mockAccountServiceWith(mockUserId); + + beforeEach(() => { + // Initialize subjects + activeAccountSubject = new BehaviorSubject(null); + featureFlagSubject = new BehaviorSubject(false); + premiumStatusSubject = new BehaviorSubject(false); + organizationsSubject = new BehaviorSubject([]); + + // Default implementations for required functions + mockAccountService = mock(); + mockAccountService.activeAccount$ = activeAccountSubject.asObservable(); + + mockBillingService = mock(); + mockBillingService.hasPremiumPersonally$.mockReturnValue(premiumStatusSubject.asObservable()); + + mockConfigService = mock(); + mockConfigService.getFeatureFlag$.mockReturnValue(featureFlagSubject.asObservable()); + + mockOrganizationService = mock(); + mockOrganizationService.organizations$.mockReturnValue(organizationsSubject.asObservable()); + + stateProvider = new FakeStateProvider(accountService); + service = new PhishingDetectionSettingsService( + mockAccountService, + mockBillingService, + mockConfigService, + mockOrganizationService, + stateProvider, + ); + }); + + // Helper to easily get the result of the observable we are testing + const getAccess = () => firstValueFrom(service.available$); + + describe("enabled$", () => { + it("should default to true if an account is logged in", async () => { + activeAccountSubject.next(account); + const result = await firstValueFrom(service.enabled$); + expect(result).toBe(true); + }); + + it("should return the stored value", async () => { + activeAccountSubject.next(account); + + await service.setEnabled(mockUserId, false); + const resultDisabled = await firstValueFrom(service.enabled$); + expect(resultDisabled).toBe(false); + + await service.setEnabled(mockUserId, true); + const resultEnabled = await firstValueFrom(service.enabled$); + expect(resultEnabled).toBe(true); + }); + }); + + describe("setEnabled", () => { + it("should update the stored value", async () => { + activeAccountSubject.next(account); + await service.setEnabled(mockUserId, false); + let result = await firstValueFrom(service.enabled$); + expect(result).toBe(false); + + await service.setEnabled(mockUserId, true); + result = await firstValueFrom(service.enabled$); + expect(result).toBe(true); + }); + }); + + it("returns false immediately when the feature flag is disabled, regardless of other conditions", async () => { + activeAccountSubject.next(account); + premiumStatusSubject.next(true); + organizationsSubject.next([familyOrg]); + + featureFlagSubject.next(false); + + await expect(getAccess()).resolves.toBe(false); + }); + + it("returns false if there is no active account present yet", async () => { + activeAccountSubject.next(null); // No active account + featureFlagSubject.next(true); // Flag is on + + await expect(getAccess()).resolves.toBe(false); + }); + + it("returns true when feature flag is enabled and user has premium personally", async () => { + activeAccountSubject.next(account); + featureFlagSubject.next(true); + organizationsSubject.next([]); + premiumStatusSubject.next(true); + + await expect(getAccess()).resolves.toBe(true); + }); + + it("returns true when feature flag is enabled and user is in a Family Organization", async () => { + activeAccountSubject.next(account); + featureFlagSubject.next(true); + premiumStatusSubject.next(false); // User has no personal premium + + organizationsSubject.next([familyOrg]); + + await expect(getAccess()).resolves.toBe(true); + }); + + it("returns true when feature flag is enabled and user is in an Enterprise org with phishing blocker enabled", async () => { + activeAccountSubject.next(account); + featureFlagSubject.next(true); + premiumStatusSubject.next(false); + organizationsSubject.next([enterpriseOrg]); + + await expect(getAccess()).resolves.toBe(true); + }); + + it("returns false when user has no access through personal premium or organizations", async () => { + activeAccountSubject.next(account); + featureFlagSubject.next(true); + premiumStatusSubject.next(false); + organizationsSubject.next([teamOrg]); // Team org does not give access + + await expect(getAccess()).resolves.toBe(false); + }); + + it("shares/caches the available$ result between multiple subscribers", async () => { + // Use a plain Subject for this test so we control when the premium observable emits + // and avoid the BehaviorSubject's initial emission which can race with subscriptions. + // Provide the Subject directly as the mock return value for the billing service + const oneTimePremium = new Subject(); + mockBillingService.hasPremiumPersonally$.mockReturnValueOnce(oneTimePremium.asObservable()); + + activeAccountSubject.next(account); + featureFlagSubject.next(true); + organizationsSubject.next([]); + + const p1 = firstValueFrom(service.available$); + const p2 = firstValueFrom(service.available$); + + // Trigger the pipeline + oneTimePremium.next(true); + + const [first, second] = await Promise.all([p1, p2]); + + expect(first).toBe(true); + expect(second).toBe(true); + // The billing function should have been called at most once due to caching + expect(mockBillingService.hasPremiumPersonally$).toHaveBeenCalledTimes(1); + }); +}); diff --git a/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.ts b/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.ts new file mode 100644 index 00000000000..36d50f60de7 --- /dev/null +++ b/libs/common/src/dirt/services/phishing-detection/phishing-detection-settings.service.ts @@ -0,0 +1,116 @@ +import { combineLatest, Observable, of, switchMap } from "rxjs"; +import { catchError, distinctUntilChanged, map, shareReplay } from "rxjs/operators"; + +import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; +import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions"; +import { ProductTierType } from "@bitwarden/common/billing/enums"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; +import { UserId } from "@bitwarden/user-core"; + +import { PHISHING_DETECTION_DISK, StateProvider, UserKeyDefinition } from "../../../platform/state"; +import { PhishingDetectionSettingsServiceAbstraction } from "../abstractions/phishing-detection-settings.service.abstraction"; + +const ENABLE_PHISHING_DETECTION = new UserKeyDefinition( + PHISHING_DETECTION_DISK, + "enablePhishingDetection", + { + deserializer: (value: boolean) => value ?? true, // Default: enabled + clearOn: [], + }, +); + +export class PhishingDetectionSettingsService implements PhishingDetectionSettingsServiceAbstraction { + readonly available$: Observable; + readonly enabled$: Observable; + readonly on$: Observable; + + constructor( + private accountService: AccountService, + private billingService: BillingAccountProfileStateService, + private configService: ConfigService, + private organizationService: OrganizationService, + private stateProvider: StateProvider, + ) { + this.available$ = this.buildAvailablePipeline$().pipe( + distinctUntilChanged(), + shareReplay({ bufferSize: 1, refCount: true }), + ); + this.enabled$ = this.buildEnabledPipeline$().pipe( + distinctUntilChanged(), + shareReplay({ bufferSize: 1, refCount: true }), + ); + + this.on$ = combineLatest([this.available$, this.enabled$]).pipe( + map(([available, enabled]) => available && enabled), + distinctUntilChanged(), + shareReplay({ bufferSize: 1, refCount: true }), + ); + } + + async setEnabled(userId: UserId, enabled: boolean): Promise { + await this.stateProvider.getUser(userId, ENABLE_PHISHING_DETECTION).update(() => enabled); + } + + /** + * Builds the observable pipeline to determine if phishing detection is available to the user + * + * @returns An observable pipeline that determines if phishing detection is available + */ + private buildAvailablePipeline$(): Observable { + return combineLatest([ + this.accountService.activeAccount$, + this.configService.getFeatureFlag$(FeatureFlag.PhishingDetection), + ]).pipe( + switchMap(([account, featureEnabled]) => { + if (!account || !featureEnabled) { + return of(false); + } + return combineLatest([ + this.billingService.hasPremiumPersonally$(account.id).pipe(catchError(() => of(false))), + this.organizationService.organizations$(account.id).pipe(catchError(() => of([]))), + ]).pipe( + map(([hasPremium, organizations]) => hasPremium || this.orgGrantsAccess(organizations)), + catchError(() => of(false)), + ); + }), + ); + } + + /** + * Builds the observable pipeline to determine if phishing detection is enabled by the user + * + * @returns True if phishing detection is enabled for the active user + */ + private buildEnabledPipeline$(): Observable { + return this.accountService.activeAccount$.pipe( + switchMap((account) => { + if (!account) { + return of(false); + } + return this.stateProvider.getUserState$(ENABLE_PHISHING_DETECTION, account.id); + }), + map((enabled) => enabled ?? true), + ); + } + + /** + * Determines if any of the user's organizations grant access to phishing detection + * + * @param organizations The organizations the user is a member of + * @returns True if any organization grants access to phishing detection + */ + private orgGrantsAccess(organizations: Organization[]): boolean { + return organizations.some((org) => { + if (!org.canAccess || !org.isMember || !org.usersGetPremium) { + return false; + } + return ( + org.productTierType === ProductTierType.Families || + (org.productTierType === ProductTierType.Enterprise && org.usePhishingBlocker) + ); + }); + } +} From 3d06668497af7eaa662972a982686a090f4b959e Mon Sep 17 00:00:00 2001 From: Vijay Oommen Date: Mon, 15 Dec 2025 10:30:22 -0600 Subject: [PATCH 06/67] [PM-28450] Single integration service (#17925) --- .../configuration/datadog-configuration.ts | 11 +- .../models/configuration/hec-configuration.ts | 11 +- .../configuration/webhook-configuration.ts | 9 +- .../models/integration-builder.ts | 94 +++ .../datadog-template.ts | 11 +- .../configuration-template/hec-template.ts | 11 +- .../webhook-template.ts | 9 +- .../organization-integration-configuration.ts | 12 +- .../organization-integration-service-type.ts | 6 +- .../models/organization-integration.ts | 16 +- ...g-organization-integration-service.spec.ts | 184 ----- ...atadog-organization-integration-service.ts | 350 ---------- ...c-organization-integration-service.spec.ts | 201 ------ .../hec-organization-integration-service.ts | 353 ---------- ...ganization-integration-api.service.spec.ts | 6 +- .../organization-integration-service.spec.ts | 633 ++++++++++++++++++ .../organization-integration-service.ts | 313 +++++++++ .../integration-card.component.spec.ts | 109 +-- .../integration-card.component.ts | 75 ++- .../integration-grid.component.spec.ts | 9 +- .../integrations.component.html | 137 ++-- .../integrations.component.ts | 54 +- .../organization-integrations.module.ts | 12 +- .../integrations.component.spec.ts | 9 +- .../integrations/integrations.module.ts | 12 +- 25 files changed, 1305 insertions(+), 1342 deletions(-) create mode 100644 bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-builder.ts delete mode 100644 bitwarden_license/bit-common/src/dirt/organization-integrations/services/datadog-organization-integration-service.spec.ts delete mode 100644 bitwarden_license/bit-common/src/dirt/organization-integrations/services/datadog-organization-integration-service.ts delete mode 100644 bitwarden_license/bit-common/src/dirt/organization-integrations/services/hec-organization-integration-service.spec.ts delete mode 100644 bitwarden_license/bit-common/src/dirt/organization-integrations/services/hec-organization-integration-service.ts create mode 100644 bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-service.spec.ts create mode 100644 bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-service.ts diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/datadog-configuration.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/datadog-configuration.ts index e788ebba7f2..51217a85877 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/datadog-configuration.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/datadog-configuration.ts @@ -1,14 +1,15 @@ -import { OrganizationIntegrationServiceType } from "../organization-integration-service-type"; +import { OrgIntegrationConfiguration } from "../integration-builder"; +import { OrganizationIntegrationServiceName } from "../organization-integration-service-type"; -export class DatadogConfiguration { +export class DatadogConfiguration implements OrgIntegrationConfiguration { uri: string; apiKey: string; - service: OrganizationIntegrationServiceType; + service: OrganizationIntegrationServiceName; - constructor(uri: string, apiKey: string, service: string) { + constructor(uri: string, apiKey: string, service: OrganizationIntegrationServiceName) { this.uri = uri; this.apiKey = apiKey; - this.service = service as OrganizationIntegrationServiceType; + this.service = service; } toString(): string { diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/hec-configuration.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/hec-configuration.ts index cdb7a5f265a..d7e0cec1840 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/hec-configuration.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/hec-configuration.ts @@ -1,15 +1,16 @@ -import { OrganizationIntegrationServiceType } from "../organization-integration-service-type"; +import { OrgIntegrationConfiguration } from "../integration-builder"; +import { OrganizationIntegrationServiceName } from "../organization-integration-service-type"; -export class HecConfiguration { +export class HecConfiguration implements OrgIntegrationConfiguration { uri: string; scheme = "Bearer"; token: string; - service: OrganizationIntegrationServiceType; + service: OrganizationIntegrationServiceName; - constructor(uri: string, token: string, service: string) { + constructor(uri: string, token: string, service: OrganizationIntegrationServiceName) { this.uri = uri; this.token = token; - this.service = service as OrganizationIntegrationServiceType; + this.service = service; } toString(): string { diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/webhook-configuration.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/webhook-configuration.ts index a4dca7378ba..2b9ed6f7bda 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/webhook-configuration.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/configuration/webhook-configuration.ts @@ -1,11 +1,16 @@ +import { OrgIntegrationConfiguration } from "../integration-builder"; +import { OrganizationIntegrationServiceName } from "../organization-integration-service-type"; + // Added to reflect how future webhook integrations could be structured within the OrganizationIntegration -export class WebhookConfiguration { +export class WebhookConfiguration implements OrgIntegrationConfiguration { propA: string; propB: string; + service: OrganizationIntegrationServiceName; - constructor(propA: string, propB: string) { + constructor(propA: string, propB: string, service: OrganizationIntegrationServiceName) { this.propA = propA; this.propB = propB; + this.service = service; } toString(): string { diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-builder.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-builder.ts new file mode 100644 index 00000000000..ae790a67408 --- /dev/null +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-builder.ts @@ -0,0 +1,94 @@ +import { DatadogConfiguration } from "./configuration/datadog-configuration"; +import { HecConfiguration } from "./configuration/hec-configuration"; +import { DatadogTemplate } from "./integration-configuration-config/configuration-template/datadog-template"; +import { HecTemplate } from "./integration-configuration-config/configuration-template/hec-template"; +import { OrganizationIntegrationServiceName } from "./organization-integration-service-type"; +import { OrganizationIntegrationType } from "./organization-integration-type"; + +/** + * Defines the structure for organization integration configuration + */ +export interface OrgIntegrationConfiguration { + service: OrganizationIntegrationServiceName; + toString(): string; +} + +/** + * Defines the structure for organization integration template + */ +export interface OrgIntegrationTemplate { + service: OrganizationIntegrationServiceName; + toString(): string; +} + +/** + * Builder class for creating organization integration configurations and templates + */ +export class OrgIntegrationBuilder { + static buildHecConfiguration( + uri: string, + token: string, + service: OrganizationIntegrationServiceName, + ): OrgIntegrationConfiguration { + return new HecConfiguration(uri, token, service); + } + + static buildHecTemplate( + index: string, + service: OrganizationIntegrationServiceName, + ): OrgIntegrationTemplate { + return new HecTemplate(index, service); + } + + static buildDataDogConfiguration(uri: string, apiKey: string): OrgIntegrationConfiguration { + return new DatadogConfiguration(uri, apiKey, OrganizationIntegrationServiceName.Datadog); + } + + static buildDataDogTemplate(service: OrganizationIntegrationServiceName): OrgIntegrationTemplate { + return new DatadogTemplate(service); + } + + static buildConfiguration( + type: OrganizationIntegrationType, + configuration: string, + ): OrgIntegrationConfiguration { + switch (type) { + case OrganizationIntegrationType.Hec: { + const hecConfig = this.convertToJson(configuration); + return this.buildHecConfiguration(hecConfig.uri, hecConfig.token, hecConfig.service); + } + case OrganizationIntegrationType.Datadog: { + const datadogConfig = this.convertToJson(configuration); + return this.buildDataDogConfiguration(datadogConfig.uri, datadogConfig.apiKey); + } + default: + throw new Error(`Unsupported integration type: ${type}`); + } + } + + static buildTemplate( + type: OrganizationIntegrationType, + template: string, + ): OrgIntegrationTemplate { + switch (type) { + case OrganizationIntegrationType.Hec: { + const hecTemplate = this.convertToJson(template); + return this.buildHecTemplate(hecTemplate.index, hecTemplate.service); + } + case OrganizationIntegrationType.Datadog: { + const datadogTemplate = this.convertToJson(template); + return this.buildDataDogTemplate(datadogTemplate.service); + } + default: + throw new Error(`Unsupported integration type: ${type}`); + } + } + + private static convertToJson(jsonString?: string): T { + try { + return JSON.parse(jsonString || "{}") as T; + } catch { + throw new Error("Invalid integration configuration: JSON parse error"); + } + } +} diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/datadog-template.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/datadog-template.ts index 9aa6e34f478..d8e168aacbe 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/datadog-template.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/datadog-template.ts @@ -1,14 +1,15 @@ -import { OrganizationIntegrationServiceType } from "../../organization-integration-service-type"; +import { OrgIntegrationTemplate } from "../../integration-builder"; +import { OrganizationIntegrationServiceName } from "../../organization-integration-service-type"; -export class DatadogTemplate { +export class DatadogTemplate implements OrgIntegrationTemplate { source_type_name = "Bitwarden"; title: string = "#Title#"; text: string = "ActingUser: #ActingUserId#\nUser: #UserId#\nEvent: #Type#\nOrganization: #OrganizationId#\nPolicyId: #PolicyId#\nIpAddress: #IpAddress#\nDomainName: #DomainName#\nCipherId: #CipherId#\n"; - service: OrganizationIntegrationServiceType; + service: OrganizationIntegrationServiceName; - constructor(service: string) { - this.service = service as OrganizationIntegrationServiceType; + constructor(service: OrganizationIntegrationServiceName) { + this.service = service; } toString(): string { diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/hec-template.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/hec-template.ts index 7a841697fde..e1b474d0e77 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/hec-template.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/hec-template.ts @@ -1,14 +1,15 @@ -import { OrganizationIntegrationServiceType } from "../../organization-integration-service-type"; +import { OrgIntegrationTemplate } from "../../integration-builder"; +import { OrganizationIntegrationServiceName } from "../../organization-integration-service-type"; -export class HecTemplate { +export class HecTemplate implements OrgIntegrationTemplate { event = "#EventMessage#"; source = "Bitwarden"; index: string; - service: OrganizationIntegrationServiceType; + service: OrganizationIntegrationServiceName; - constructor(index: string, service: string) { + constructor(index: string, service: OrganizationIntegrationServiceName) { this.index = index; - this.service = service as OrganizationIntegrationServiceType; + this.service = service; } toString(): string { diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/webhook-template.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/webhook-template.ts index 7c51e98282b..fb482d1f367 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/webhook-template.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/integration-configuration-config/configuration-template/webhook-template.ts @@ -1,9 +1,14 @@ +import { OrgIntegrationTemplate } from "../../integration-builder"; +import { OrganizationIntegrationServiceName } from "../../organization-integration-service-type"; + // Added to reflect how future webhook integrations could be structured within the OrganizationIntegration -export class WebhookTemplate { +export class WebhookTemplate implements OrgIntegrationTemplate { + service: OrganizationIntegrationServiceName; propA: string; propB: string; - constructor(propA: string, propB: string) { + constructor(service: OrganizationIntegrationServiceName, propA: string, propB: string) { + this.service = service; this.propA = propA; this.propB = propB; } diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration-configuration.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration-configuration.ts index 0209460b630..5271dcd18da 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration-configuration.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration-configuration.ts @@ -4,31 +4,25 @@ import { OrganizationIntegrationId, } from "@bitwarden/common/types/guid"; -import { DatadogTemplate } from "./integration-configuration-config/configuration-template/datadog-template"; -import { HecTemplate } from "./integration-configuration-config/configuration-template/hec-template"; -import { WebhookTemplate } from "./integration-configuration-config/configuration-template/webhook-template"; -import { WebhookIntegrationConfigurationConfig } from "./integration-configuration-config/webhook-integration-configuration-config"; +import { OrgIntegrationTemplate } from "./integration-builder"; export class OrganizationIntegrationConfiguration { id: OrganizationIntegrationConfigurationId; integrationId: OrganizationIntegrationId; eventType?: EventType | null; - configuration?: WebhookIntegrationConfigurationConfig | null; filters?: string; - template?: HecTemplate | WebhookTemplate | DatadogTemplate | null; + template?: OrgIntegrationTemplate | null; constructor( id: OrganizationIntegrationConfigurationId, integrationId: OrganizationIntegrationId, eventType?: EventType | null, - configuration?: WebhookIntegrationConfigurationConfig | null, filters?: string, - template?: HecTemplate | WebhookTemplate | DatadogTemplate | null, + template?: OrgIntegrationTemplate | null, ) { this.id = id; this.integrationId = integrationId; this.eventType = eventType; - this.configuration = configuration; this.filters = filters; this.template = template; } diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration-service-type.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration-service-type.ts index e9e93adc0ff..9634ad7249a 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration-service-type.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration-service-type.ts @@ -1,7 +1,7 @@ -export const OrganizationIntegrationServiceType = Object.freeze({ +export const OrganizationIntegrationServiceName = Object.freeze({ CrowdStrike: "CrowdStrike", Datadog: "Datadog", } as const); -export type OrganizationIntegrationServiceType = - (typeof OrganizationIntegrationServiceType)[keyof typeof OrganizationIntegrationServiceType]; +export type OrganizationIntegrationServiceName = + (typeof OrganizationIntegrationServiceName)[keyof typeof OrganizationIntegrationServiceName]; diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration.ts index d32c92a460a..84b633a207c 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/models/organization-integration.ts @@ -1,29 +1,27 @@ import { OrganizationIntegrationId } from "@bitwarden/common/types/guid"; -import { DatadogConfiguration } from "./configuration/datadog-configuration"; -import { HecConfiguration } from "./configuration/hec-configuration"; -import { WebhookConfiguration } from "./configuration/webhook-configuration"; +import { OrgIntegrationConfiguration } from "./integration-builder"; import { OrganizationIntegrationConfiguration } from "./organization-integration-configuration"; -import { OrganizationIntegrationServiceType } from "./organization-integration-service-type"; +import { OrganizationIntegrationServiceName } from "./organization-integration-service-type"; import { OrganizationIntegrationType } from "./organization-integration-type"; export class OrganizationIntegration { id: OrganizationIntegrationId; type: OrganizationIntegrationType; - serviceType: OrganizationIntegrationServiceType; - configuration: HecConfiguration | WebhookConfiguration | DatadogConfiguration | null; + serviceName: OrganizationIntegrationServiceName; + configuration: OrgIntegrationConfiguration | null; integrationConfiguration: OrganizationIntegrationConfiguration[] = []; constructor( id: OrganizationIntegrationId, type: OrganizationIntegrationType, - serviceType: OrganizationIntegrationServiceType, - configuration: HecConfiguration | WebhookConfiguration | DatadogConfiguration | null, + serviceName: OrganizationIntegrationServiceName, + configuration: OrgIntegrationConfiguration | null, integrationConfiguration: OrganizationIntegrationConfiguration[] = [], ) { this.id = id; this.type = type; - this.serviceType = serviceType; + this.serviceName = serviceName; this.configuration = configuration; this.integrationConfiguration = integrationConfiguration; } diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/datadog-organization-integration-service.spec.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/datadog-organization-integration-service.spec.ts deleted file mode 100644 index 0545f95cb83..00000000000 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/datadog-organization-integration-service.spec.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { mock } from "jest-mock-extended"; -import { firstValueFrom } from "rxjs"; - -import { - OrganizationId, - OrganizationIntegrationConfigurationId, - OrganizationIntegrationId, -} from "@bitwarden/common/types/guid"; - -import { DatadogConfiguration } from "../models/configuration/datadog-configuration"; -import { DatadogTemplate } from "../models/integration-configuration-config/configuration-template/datadog-template"; -import { OrganizationIntegration } from "../models/organization-integration"; -import { OrganizationIntegrationConfiguration } from "../models/organization-integration-configuration"; -import { OrganizationIntegrationConfigurationResponse } from "../models/organization-integration-configuration-response"; -import { OrganizationIntegrationResponse } from "../models/organization-integration-response"; -import { OrganizationIntegrationServiceType } from "../models/organization-integration-service-type"; -import { OrganizationIntegrationType } from "../models/organization-integration-type"; - -import { DatadogOrganizationIntegrationService } from "./datadog-organization-integration-service"; -import { OrganizationIntegrationApiService } from "./organization-integration-api.service"; -import { OrganizationIntegrationConfigurationApiService } from "./organization-integration-configuration-api.service"; - -describe("DatadogOrganizationIntegrationService", () => { - let service: DatadogOrganizationIntegrationService; - const mockIntegrationApiService = mock(); - const mockIntegrationConfigurationApiService = - mock(); - const organizationId = "org-1" as OrganizationId; - const integrationId = "int-1" as OrganizationIntegrationId; - const configId = "conf-1" as OrganizationIntegrationConfigurationId; - const serviceType = OrganizationIntegrationServiceType.CrowdStrike; - const url = "https://example.com"; - const apiKey = "token"; - - beforeEach(() => { - service = new DatadogOrganizationIntegrationService( - mockIntegrationApiService, - mockIntegrationConfigurationApiService, - ); - - jest.resetAllMocks(); - }); - - it("should set organization integrations", (done) => { - mockIntegrationApiService.getOrganizationIntegrations.mockResolvedValue([]); - service.setOrganizationIntegrations(organizationId); - const subscription = service.integrations$.subscribe((integrations) => { - expect(integrations).toEqual([]); - subscription.unsubscribe(); - done(); - }); - }); - - it("should save a new Datadog integration", async () => { - service.setOrganizationIntegrations(organizationId); - - const integrationResponse = { - id: integrationId, - type: OrganizationIntegrationType.Datadog, - configuration: JSON.stringify({ url, apiKey, service: serviceType }), - } as OrganizationIntegrationResponse; - - const configResponse = { - id: configId, - template: JSON.stringify({ service: serviceType }), - } as OrganizationIntegrationConfigurationResponse; - - mockIntegrationApiService.createOrganizationIntegration.mockResolvedValue(integrationResponse); - mockIntegrationConfigurationApiService.createOrganizationIntegrationConfiguration.mockResolvedValue( - configResponse, - ); - - await service.saveDatadog(organizationId, serviceType, url, apiKey); - - const integrations = await firstValueFrom(service.integrations$); - expect(integrations.length).toBe(1); - expect(integrations[0].id).toBe(integrationId); - expect(integrations[0].serviceType).toBe(serviceType); - }); - - it("should throw error on organization ID mismatch in saveDatadog", async () => { - service.setOrganizationIntegrations("other-org" as OrganizationId); - await expect(service.saveDatadog(organizationId, serviceType, url, apiKey)).rejects.toThrow( - Error("Organization ID mismatch"), - ); - }); - - it("should update an existing Datadog integration", async () => { - service.setOrganizationIntegrations(organizationId); - - const integrationResponse = { - id: integrationId, - type: OrganizationIntegrationType.Datadog, - configuration: JSON.stringify({ url, apiKey, service: serviceType }), - } as OrganizationIntegrationResponse; - - const configResponse = { - id: configId, - template: JSON.stringify({ service: serviceType }), - } as OrganizationIntegrationConfigurationResponse; - - mockIntegrationApiService.updateOrganizationIntegration.mockResolvedValue(integrationResponse); - mockIntegrationConfigurationApiService.updateOrganizationIntegrationConfiguration.mockResolvedValue( - configResponse, - ); - - await service.updateDatadog(organizationId, integrationId, configId, serviceType, url, apiKey); - - const integrations = await firstValueFrom(service.integrations$); - expect(integrations.length).toBe(1); - expect(integrations[0].id).toBe(integrationId); - }); - - it("should throw error on organization ID mismatch in updateDatadog", async () => { - service.setOrganizationIntegrations("other-org" as OrganizationId); - await expect( - service.updateDatadog(organizationId, integrationId, configId, serviceType, url, apiKey), - ).rejects.toThrow(Error("Organization ID mismatch")); - }); - - it("should get integration by id", async () => { - service["_integrations$"].next([ - new OrganizationIntegration( - integrationId, - OrganizationIntegrationType.Datadog, - serviceType, - {} as DatadogConfiguration, - [], - ), - ]); - const integration = await service.getIntegrationById(integrationId); - expect(integration).not.toBeNull(); - expect(integration!.id).toBe(integrationId); - }); - - it("should get integration by service type", async () => { - service["_integrations$"].next([ - new OrganizationIntegration( - integrationId, - OrganizationIntegrationType.Datadog, - serviceType, - {} as DatadogConfiguration, - [], - ), - ]); - const integration = await service.getIntegrationByServiceType(serviceType); - expect(integration).not.toBeNull(); - expect(integration!.serviceType).toBe(serviceType); - }); - - it("should get integration configurations", async () => { - const config = new OrganizationIntegrationConfiguration( - configId, - integrationId, - null, - null, - "", - {} as DatadogTemplate, - ); - - service["_integrations$"].next([ - new OrganizationIntegration( - integrationId, - OrganizationIntegrationType.Datadog, - serviceType, - {} as DatadogConfiguration, - [config], - ), - ]); - const configs = await service.getIntegrationConfigurations(integrationId); - expect(configs).not.toBeNull(); - expect(configs![0].id).toBe(configId); - }); - - it("convertToJson should parse valid JSON", () => { - const obj = service.convertToJson<{ a: number }>('{"a":1}'); - expect(obj).toEqual({ a: 1 }); - }); - - it("convertToJson should return null for invalid JSON", () => { - const obj = service.convertToJson<{ a: number }>("invalid"); - expect(obj).toBeNull(); - }); -}); diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/datadog-organization-integration-service.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/datadog-organization-integration-service.ts deleted file mode 100644 index 1fd5e9f8c06..00000000000 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/datadog-organization-integration-service.ts +++ /dev/null @@ -1,350 +0,0 @@ -import { BehaviorSubject, firstValueFrom, map, Subject, switchMap, takeUntil, zip } from "rxjs"; - -import { ErrorResponse } from "@bitwarden/common/models/response/error.response"; -import { - OrganizationId, - OrganizationIntegrationId, - OrganizationIntegrationConfigurationId, -} from "@bitwarden/common/types/guid"; - -import { DatadogConfiguration } from "../models/configuration/datadog-configuration"; -import { DatadogTemplate } from "../models/integration-configuration-config/configuration-template/datadog-template"; -import { OrganizationIntegration } from "../models/organization-integration"; -import { OrganizationIntegrationConfiguration } from "../models/organization-integration-configuration"; -import { OrganizationIntegrationConfigurationRequest } from "../models/organization-integration-configuration-request"; -import { OrganizationIntegrationConfigurationResponse } from "../models/organization-integration-configuration-response"; -import { OrganizationIntegrationRequest } from "../models/organization-integration-request"; -import { OrganizationIntegrationResponse } from "../models/organization-integration-response"; -import { OrganizationIntegrationServiceType } from "../models/organization-integration-service-type"; -import { OrganizationIntegrationType } from "../models/organization-integration-type"; - -import { OrganizationIntegrationApiService } from "./organization-integration-api.service"; -import { OrganizationIntegrationConfigurationApiService } from "./organization-integration-configuration-api.service"; - -export type DatadogModificationFailureReason = { - mustBeOwner: boolean; - success: boolean; -}; - -export class DatadogOrganizationIntegrationService { - private organizationId$ = new BehaviorSubject(null); - private _integrations$ = new BehaviorSubject([]); - private destroy$ = new Subject(); - - integrations$ = this._integrations$.asObservable(); - - private fetch$ = this.organizationId$ - .pipe( - switchMap(async (orgId) => { - if (orgId) { - const data$ = await this.setIntegrations(orgId); - return await firstValueFrom(data$); - } else { - return this._integrations$.getValue(); - } - }), - takeUntil(this.destroy$), - ) - .subscribe({ - next: (integrations) => { - this._integrations$.next(integrations); - }, - }); - - constructor( - private integrationApiService: OrganizationIntegrationApiService, - private integrationConfigurationApiService: OrganizationIntegrationConfigurationApiService, - ) {} - - /** - * Sets the organization Id and will trigger the retrieval of the - * integrations for a given org. - * @param orgId - */ - setOrganizationIntegrations(orgId: OrganizationId) { - this.organizationId$.next(orgId); - } - - /** - * Saves a new organization integration and updates the integrations$ observable - * @param organizationId id of the organization - * @param service service type of the integration - * @param url url of the service - * @param apiKey api token - */ - async saveDatadog( - organizationId: OrganizationId, - service: OrganizationIntegrationServiceType, - url: string, - apiKey: string, - ): Promise { - if (organizationId != this.organizationId$.getValue()) { - throw new Error("Organization ID mismatch"); - } - - try { - const datadogConfig = new DatadogConfiguration(url, apiKey, service); - const newIntegrationResponse = await this.integrationApiService.createOrganizationIntegration( - organizationId, - new OrganizationIntegrationRequest( - OrganizationIntegrationType.Datadog, - datadogConfig.toString(), - ), - ); - - const newTemplate = new DatadogTemplate(service); - const newIntegrationConfigResponse = - await this.integrationConfigurationApiService.createOrganizationIntegrationConfiguration( - organizationId, - newIntegrationResponse.id, - new OrganizationIntegrationConfigurationRequest(null, null, null, newTemplate.toString()), - ); - - const newIntegration = this.mapResponsesToOrganizationIntegration( - newIntegrationResponse, - newIntegrationConfigResponse, - ); - if (newIntegration !== null) { - this._integrations$.next([...this._integrations$.getValue(), newIntegration]); - } - return { mustBeOwner: false, success: true }; - } catch (error) { - if (error instanceof ErrorResponse && error.statusCode === 404) { - return { mustBeOwner: true, success: false }; - } - throw error; - } - } - - /** - * Updates an existing organization integration and updates the integrations$ observable - * @param organizationId id of the organization - * @param OrganizationIntegrationId id of the organization integration - * @param OrganizationIntegrationConfigurationId id of the organization integration configuration - * @param service service type of the integration - * @param url url of the service - * @param apiKey api token - */ - async updateDatadog( - organizationId: OrganizationId, - OrganizationIntegrationId: OrganizationIntegrationId, - OrganizationIntegrationConfigurationId: OrganizationIntegrationConfigurationId, - service: OrganizationIntegrationServiceType, - url: string, - apiKey: string, - ): Promise { - if (organizationId != this.organizationId$.getValue()) { - throw new Error("Organization ID mismatch"); - } - - try { - const datadogConfig = new DatadogConfiguration(url, apiKey, service); - const updatedIntegrationResponse = - await this.integrationApiService.updateOrganizationIntegration( - organizationId, - OrganizationIntegrationId, - new OrganizationIntegrationRequest( - OrganizationIntegrationType.Datadog, - datadogConfig.toString(), - ), - ); - - const updatedTemplate = new DatadogTemplate(service); - const updatedIntegrationConfigResponse = - await this.integrationConfigurationApiService.updateOrganizationIntegrationConfiguration( - organizationId, - OrganizationIntegrationId, - OrganizationIntegrationConfigurationId, - new OrganizationIntegrationConfigurationRequest( - null, - null, - null, - updatedTemplate.toString(), - ), - ); - - const updatedIntegration = this.mapResponsesToOrganizationIntegration( - updatedIntegrationResponse, - updatedIntegrationConfigResponse, - ); - - if (updatedIntegration !== null) { - this._integrations$.next([...this._integrations$.getValue(), updatedIntegration]); - } - return { mustBeOwner: false, success: true }; - } catch (error) { - if (error instanceof ErrorResponse && error.statusCode === 404) { - return { mustBeOwner: true, success: false }; - } - throw error; - } - } - - async deleteDatadog( - organizationId: OrganizationId, - OrganizationIntegrationId: OrganizationIntegrationId, - OrganizationIntegrationConfigurationId: OrganizationIntegrationConfigurationId, - ): Promise { - if (organizationId != this.organizationId$.getValue()) { - throw new Error("Organization ID mismatch"); - } - - try { - // delete the configuration first due to foreign key constraint - await this.integrationConfigurationApiService.deleteOrganizationIntegrationConfiguration( - organizationId, - OrganizationIntegrationId, - OrganizationIntegrationConfigurationId, - ); - - // delete the integration - await this.integrationApiService.deleteOrganizationIntegration( - organizationId, - OrganizationIntegrationId, - ); - - // update the local observable - const updatedIntegrations = this._integrations$ - .getValue() - .filter((i) => i.id !== OrganizationIntegrationId); - this._integrations$.next(updatedIntegrations); - - return { mustBeOwner: false, success: true }; - } catch (error) { - if (error instanceof ErrorResponse && error.statusCode === 404) { - return { mustBeOwner: true, success: false }; - } - throw error; - } - } - - /** - * Gets a OrganizationIntegration for an OrganizationIntegrationId - * @param integrationId id of the integration - * @returns OrganizationIntegration or null - */ - // TODO: Move to base class when another service integration type is implemented - async getIntegrationById( - integrationId: OrganizationIntegrationId, - ): Promise { - return await firstValueFrom( - this.integrations$.pipe( - map((integrations) => integrations.find((i) => i.id === integrationId) || null), - ), - ); - } - - /** - * Gets a OrganizationIntegration for a service type - * @param serviceType type of the service - * @returns OrganizationIntegration or null - */ - // TODO: Move to base class when another service integration type is implemented - async getIntegrationByServiceType( - serviceType: OrganizationIntegrationServiceType, - ): Promise { - return await firstValueFrom( - this.integrations$.pipe( - map((integrations) => integrations.find((i) => i.serviceType === serviceType) || null), - ), - ); - } - - /** - * Gets a OrganizationIntegrationConfigurations for an integration ID - * @param integrationId id of the integration - * @returns OrganizationIntegration array or null - */ - // TODO: Move to base class when another service integration type is implemented - async getIntegrationConfigurations( - integrationId: OrganizationIntegrationId, - ): Promise { - return await firstValueFrom( - this.integrations$.pipe( - map((integrations) => { - const integration = integrations.find((i) => i.id === integrationId); - return integration ? integration.integrationConfiguration : null; - }), - ), - ); - } - - // TODO: Move to data models to be more explicit for future services - private mapResponsesToOrganizationIntegration( - integrationResponse: OrganizationIntegrationResponse, - configurationResponse: OrganizationIntegrationConfigurationResponse, - ): OrganizationIntegration | null { - const datadogConfig = this.convertToJson( - integrationResponse.configuration, - ); - const template = this.convertToJson(configurationResponse.template); - - if (!datadogConfig || !template) { - return null; - } - - const integrationConfig = new OrganizationIntegrationConfiguration( - configurationResponse.id, - integrationResponse.id, - null, - null, - "", - template, - ); - - return new OrganizationIntegration( - integrationResponse.id, - integrationResponse.type, - datadogConfig.service, - datadogConfig, - [integrationConfig], - ); - } - - // Could possibly be moved to a base service. All services would then assume that the - // integration configuration would always be an array and this datadog specific service - // would just assume a single entry. - private setIntegrations(orgId: OrganizationId) { - const results$ = zip(this.integrationApiService.getOrganizationIntegrations(orgId)).pipe( - switchMap(([responses]) => { - const integrations: OrganizationIntegration[] = []; - const promises: Promise[] = []; - - responses.forEach((integration) => { - if (integration.type === OrganizationIntegrationType.Datadog) { - const promise = this.integrationConfigurationApiService - .getOrganizationIntegrationConfigurations(orgId, integration.id) - .then((response) => { - // datadog events will only have one OrganizationIntegrationConfiguration - const config = response[0]; - - const orgIntegration = this.mapResponsesToOrganizationIntegration( - integration, - config, - ); - - if (orgIntegration !== null) { - integrations.push(orgIntegration); - } - }); - promises.push(promise); - } - }); - return Promise.all(promises).then(() => { - return integrations; - }); - }), - ); - - return results$; - } - - // TODO: Move to base service when necessary - convertToJson(jsonString?: string): T | null { - try { - return JSON.parse(jsonString || "") as T; - } catch { - return null; - } - } -} diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/hec-organization-integration-service.spec.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/hec-organization-integration-service.spec.ts deleted file mode 100644 index 556078ea862..00000000000 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/hec-organization-integration-service.spec.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { mock } from "jest-mock-extended"; -import { firstValueFrom } from "rxjs"; - -import { - OrganizationId, - OrganizationIntegrationConfigurationId, - OrganizationIntegrationId, -} from "@bitwarden/common/types/guid"; - -import { HecConfiguration } from "../models/configuration/hec-configuration"; -import { HecTemplate } from "../models/integration-configuration-config/configuration-template/hec-template"; -import { OrganizationIntegration } from "../models/organization-integration"; -import { OrganizationIntegrationConfiguration } from "../models/organization-integration-configuration"; -import { OrganizationIntegrationConfigurationResponse } from "../models/organization-integration-configuration-response"; -import { OrganizationIntegrationResponse } from "../models/organization-integration-response"; -import { OrganizationIntegrationServiceType } from "../models/organization-integration-service-type"; -import { OrganizationIntegrationType } from "../models/organization-integration-type"; - -import { HecOrganizationIntegrationService } from "./hec-organization-integration-service"; -import { OrganizationIntegrationApiService } from "./organization-integration-api.service"; -import { OrganizationIntegrationConfigurationApiService } from "./organization-integration-configuration-api.service"; - -describe("HecOrganizationIntegrationService", () => { - let service: HecOrganizationIntegrationService; - const mockIntegrationApiService = mock(); - const mockIntegrationConfigurationApiService = - mock(); - const organizationId = "org-1" as OrganizationId; - const integrationId = "int-1" as OrganizationIntegrationId; - const configId = "conf-1" as OrganizationIntegrationConfigurationId; - const serviceType = OrganizationIntegrationServiceType.CrowdStrike; - const url = "https://example.com"; - const bearerToken = "token"; - const index = "main"; - - beforeEach(() => { - service = new HecOrganizationIntegrationService( - mockIntegrationApiService, - mockIntegrationConfigurationApiService, - ); - - jest.resetAllMocks(); - }); - - it("should set organization integrations", (done) => { - mockIntegrationApiService.getOrganizationIntegrations.mockResolvedValue([]); - service.setOrganizationIntegrations(organizationId); - const subscription = service.integrations$.subscribe((integrations) => { - expect(integrations).toEqual([]); - subscription.unsubscribe(); - done(); - }); - }); - - it("should save a new Hec integration", async () => { - service.setOrganizationIntegrations(organizationId); - - const integrationResponse = { - id: integrationId, - type: OrganizationIntegrationType.Hec, - configuration: JSON.stringify({ url, bearerToken, service: serviceType }), - } as OrganizationIntegrationResponse; - - const configResponse = { - id: configId, - template: JSON.stringify({ index, service: serviceType }), - } as OrganizationIntegrationConfigurationResponse; - - mockIntegrationApiService.createOrganizationIntegration.mockResolvedValue(integrationResponse); - mockIntegrationConfigurationApiService.createOrganizationIntegrationConfiguration.mockResolvedValue( - configResponse, - ); - - await service.saveHec(organizationId, serviceType, url, bearerToken, index); - - const integrations = await firstValueFrom(service.integrations$); - expect(integrations.length).toBe(1); - expect(integrations[0].id).toBe(integrationId); - expect(integrations[0].serviceType).toBe(serviceType); - }); - - it("should throw error on organization ID mismatch in saveHec", async () => { - service.setOrganizationIntegrations("other-org" as OrganizationId); - await expect( - service.saveHec(organizationId, serviceType, url, bearerToken, index), - ).rejects.toThrow(Error("Organization ID mismatch")); - }); - - it("should update an existing Hec integration", async () => { - service.setOrganizationIntegrations(organizationId); - - const integrationResponse = { - id: integrationId, - type: OrganizationIntegrationType.Hec, - configuration: JSON.stringify({ url, bearerToken, service: serviceType }), - } as OrganizationIntegrationResponse; - - const configResponse = { - id: configId, - template: JSON.stringify({ index, service: serviceType }), - } as OrganizationIntegrationConfigurationResponse; - - mockIntegrationApiService.updateOrganizationIntegration.mockResolvedValue(integrationResponse); - mockIntegrationConfigurationApiService.updateOrganizationIntegrationConfiguration.mockResolvedValue( - configResponse, - ); - - await service.updateHec( - organizationId, - integrationId, - configId, - serviceType, - url, - bearerToken, - index, - ); - - const integrations = await firstValueFrom(service.integrations$); - expect(integrations.length).toBe(1); - expect(integrations[0].id).toBe(integrationId); - }); - - it("should throw error on organization ID mismatch in updateHec", async () => { - service.setOrganizationIntegrations("other-org" as OrganizationId); - await expect( - service.updateHec( - organizationId, - integrationId, - configId, - serviceType, - url, - bearerToken, - index, - ), - ).rejects.toThrow(Error("Organization ID mismatch")); - }); - - it("should get integration by id", async () => { - service["_integrations$"].next([ - new OrganizationIntegration( - integrationId, - OrganizationIntegrationType.Hec, - serviceType, - {} as HecConfiguration, - [], - ), - ]); - const integration = await service.getIntegrationById(integrationId); - expect(integration).not.toBeNull(); - expect(integration!.id).toBe(integrationId); - }); - - it("should get integration by service type", async () => { - service["_integrations$"].next([ - new OrganizationIntegration( - integrationId, - OrganizationIntegrationType.Hec, - serviceType, - {} as HecConfiguration, - [], - ), - ]); - const integration = await service.getIntegrationByServiceType(serviceType); - expect(integration).not.toBeNull(); - expect(integration!.serviceType).toBe(serviceType); - }); - - it("should get integration configurations", async () => { - const config = new OrganizationIntegrationConfiguration( - configId, - integrationId, - null, - null, - "", - {} as HecTemplate, - ); - - service["_integrations$"].next([ - new OrganizationIntegration( - integrationId, - OrganizationIntegrationType.Hec, - serviceType, - {} as HecConfiguration, - [config], - ), - ]); - const configs = await service.getIntegrationConfigurations(integrationId); - expect(configs).not.toBeNull(); - expect(configs![0].id).toBe(configId); - }); - - it("convertToJson should parse valid JSON", () => { - const obj = service.convertToJson<{ a: number }>('{"a":1}'); - expect(obj).toEqual({ a: 1 }); - }); - - it("convertToJson should return null for invalid JSON", () => { - const obj = service.convertToJson<{ a: number }>("invalid"); - expect(obj).toBeNull(); - }); -}); diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/hec-organization-integration-service.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/hec-organization-integration-service.ts deleted file mode 100644 index b83ea26e166..00000000000 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/hec-organization-integration-service.ts +++ /dev/null @@ -1,353 +0,0 @@ -import { BehaviorSubject, firstValueFrom, map, Subject, switchMap, takeUntil, zip } from "rxjs"; - -import { ErrorResponse } from "@bitwarden/common/models/response/error.response"; -import { - OrganizationId, - OrganizationIntegrationId, - OrganizationIntegrationConfigurationId, -} from "@bitwarden/common/types/guid"; - -import { HecConfiguration } from "../models/configuration/hec-configuration"; -import { HecTemplate } from "../models/integration-configuration-config/configuration-template/hec-template"; -import { OrganizationIntegration } from "../models/organization-integration"; -import { OrganizationIntegrationConfiguration } from "../models/organization-integration-configuration"; -import { OrganizationIntegrationConfigurationRequest } from "../models/organization-integration-configuration-request"; -import { OrganizationIntegrationConfigurationResponse } from "../models/organization-integration-configuration-response"; -import { OrganizationIntegrationRequest } from "../models/organization-integration-request"; -import { OrganizationIntegrationResponse } from "../models/organization-integration-response"; -import { OrganizationIntegrationServiceType } from "../models/organization-integration-service-type"; -import { OrganizationIntegrationType } from "../models/organization-integration-type"; - -import { OrganizationIntegrationApiService } from "./organization-integration-api.service"; -import { OrganizationIntegrationConfigurationApiService } from "./organization-integration-configuration-api.service"; - -export type HecModificationFailureReason = { - mustBeOwner: boolean; - success: boolean; -}; - -export class HecOrganizationIntegrationService { - private organizationId$ = new BehaviorSubject(null); - private _integrations$ = new BehaviorSubject([]); - private destroy$ = new Subject(); - - integrations$ = this._integrations$.asObservable(); - - private fetch$ = this.organizationId$ - .pipe( - switchMap(async (orgId) => { - if (orgId) { - const data$ = await this.setIntegrations(orgId); - return await firstValueFrom(data$); - } else { - return [] as OrganizationIntegration[]; - } - }), - takeUntil(this.destroy$), - ) - .subscribe({ - next: (integrations) => { - this._integrations$.next(integrations); - }, - }); - - constructor( - private integrationApiService: OrganizationIntegrationApiService, - private integrationConfigurationApiService: OrganizationIntegrationConfigurationApiService, - ) {} - - /** - * Sets the organization Id and will trigger the retrieval of the - * integrations for a given org. - * @param orgId - */ - setOrganizationIntegrations(orgId: OrganizationId) { - if (orgId == this.organizationId$.getValue()) { - return; - } - this._integrations$.next([]); - this.organizationId$.next(orgId); - } - - /** - * Saves a new organization integration and updates the integrations$ observable - * @param organizationId id of the organization - * @param service service type of the integration - * @param url url of the service - * @param bearerToken api token - * @param index index in service - */ - async saveHec( - organizationId: OrganizationId, - service: OrganizationIntegrationServiceType, - url: string, - bearerToken: string, - index: string, - ): Promise { - if (organizationId != this.organizationId$.getValue()) { - throw new Error("Organization ID mismatch"); - } - - try { - const hecConfig = new HecConfiguration(url, bearerToken, service); - const newIntegrationResponse = await this.integrationApiService.createOrganizationIntegration( - organizationId, - new OrganizationIntegrationRequest(OrganizationIntegrationType.Hec, hecConfig.toString()), - ); - - const newTemplate = new HecTemplate(index, service); - const newIntegrationConfigResponse = - await this.integrationConfigurationApiService.createOrganizationIntegrationConfiguration( - organizationId, - newIntegrationResponse.id, - new OrganizationIntegrationConfigurationRequest(null, null, null, newTemplate.toString()), - ); - - const newIntegration = this.mapResponsesToOrganizationIntegration( - newIntegrationResponse, - newIntegrationConfigResponse, - ); - if (newIntegration !== null) { - this._integrations$.next([...this._integrations$.getValue(), newIntegration]); - } - return { mustBeOwner: false, success: true }; - } catch (error) { - if (error instanceof ErrorResponse && error.statusCode === 404) { - return { mustBeOwner: true, success: false }; - } - throw error; - } - } - - /** - * Updates an existing organization integration and updates the integrations$ observable - * @param organizationId id of the organization - * @param OrganizationIntegrationId id of the organization integration - * @param OrganizationIntegrationConfigurationId id of the organization integration configuration - * @param service service type of the integration - * @param url url of the service - * @param bearerToken api token - * @param index index in service - */ - async updateHec( - organizationId: OrganizationId, - OrganizationIntegrationId: OrganizationIntegrationId, - OrganizationIntegrationConfigurationId: OrganizationIntegrationConfigurationId, - service: OrganizationIntegrationServiceType, - url: string, - bearerToken: string, - index: string, - ): Promise { - if (organizationId != this.organizationId$.getValue()) { - throw new Error("Organization ID mismatch"); - } - - try { - const hecConfig = new HecConfiguration(url, bearerToken, service); - const updatedIntegrationResponse = - await this.integrationApiService.updateOrganizationIntegration( - organizationId, - OrganizationIntegrationId, - new OrganizationIntegrationRequest(OrganizationIntegrationType.Hec, hecConfig.toString()), - ); - - const updatedTemplate = new HecTemplate(index, service); - const updatedIntegrationConfigResponse = - await this.integrationConfigurationApiService.updateOrganizationIntegrationConfiguration( - organizationId, - OrganizationIntegrationId, - OrganizationIntegrationConfigurationId, - new OrganizationIntegrationConfigurationRequest( - null, - null, - null, - updatedTemplate.toString(), - ), - ); - - const updatedIntegration = this.mapResponsesToOrganizationIntegration( - updatedIntegrationResponse, - updatedIntegrationConfigResponse, - ); - - if (updatedIntegration !== null) { - const unchangedIntegrations = this._integrations$ - .getValue() - .filter((i) => i.id !== OrganizationIntegrationId); - this._integrations$.next([...unchangedIntegrations, updatedIntegration]); - } - return { mustBeOwner: false, success: true }; - } catch (error) { - if (error instanceof ErrorResponse && error.statusCode === 404) { - return { mustBeOwner: true, success: false }; - } - throw error; - } - } - - async deleteHec( - organizationId: OrganizationId, - OrganizationIntegrationId: OrganizationIntegrationId, - OrganizationIntegrationConfigurationId: OrganizationIntegrationConfigurationId, - ): Promise { - if (organizationId != this.organizationId$.getValue()) { - throw new Error("Organization ID mismatch"); - } - - try { - // delete the configuration first due to foreign key constraint - await this.integrationConfigurationApiService.deleteOrganizationIntegrationConfiguration( - organizationId, - OrganizationIntegrationId, - OrganizationIntegrationConfigurationId, - ); - - // delete the integration - await this.integrationApiService.deleteOrganizationIntegration( - organizationId, - OrganizationIntegrationId, - ); - - // update the local observable - const updatedIntegrations = this._integrations$ - .getValue() - .filter((i) => i.id !== OrganizationIntegrationId); - this._integrations$.next(updatedIntegrations); - - return { mustBeOwner: false, success: true }; - } catch (error) { - if (error instanceof ErrorResponse && error.statusCode === 404) { - return { mustBeOwner: true, success: false }; - } - throw error; - } - } - - /** - * Gets a OrganizationIntegration for an OrganizationIntegrationId - * @param integrationId id of the integration - * @returns OrganizationIntegration or null - */ - // TODO: Move to base class when another service integration type is implemented - async getIntegrationById( - integrationId: OrganizationIntegrationId, - ): Promise { - return await firstValueFrom( - this.integrations$.pipe( - map((integrations) => integrations.find((i) => i.id === integrationId) || null), - ), - ); - } - - /** - * Gets a OrganizationIntegration for a service type - * @param serviceType type of the service - * @returns OrganizationIntegration or null - */ - // TODO: Move to base class when another service integration type is implemented - async getIntegrationByServiceType( - serviceType: OrganizationIntegrationServiceType, - ): Promise { - return await firstValueFrom( - this.integrations$.pipe( - map((integrations) => integrations.find((i) => i.serviceType === serviceType) || null), - ), - ); - } - - /** - * Gets a OrganizationIntegrationConfigurations for an integration ID - * @param integrationId id of the integration - * @returns OrganizationIntegration array or null - */ - // TODO: Move to base class when another service integration type is implemented - async getIntegrationConfigurations( - integrationId: OrganizationIntegrationId, - ): Promise { - return await firstValueFrom( - this.integrations$.pipe( - map((integrations) => { - const integration = integrations.find((i) => i.id === integrationId); - return integration ? integration.integrationConfiguration : null; - }), - ), - ); - } - - // TODO: Move to data models to be more explicit for future services - private mapResponsesToOrganizationIntegration( - integrationResponse: OrganizationIntegrationResponse, - configurationResponse: OrganizationIntegrationConfigurationResponse, - ): OrganizationIntegration | null { - const hecConfig = this.convertToJson(integrationResponse.configuration); - const template = this.convertToJson(configurationResponse.template); - - if (!hecConfig || !template) { - return null; - } - - const integrationConfig = new OrganizationIntegrationConfiguration( - configurationResponse.id, - integrationResponse.id, - null, - null, - "", - template, - ); - - return new OrganizationIntegration( - integrationResponse.id, - integrationResponse.type, - hecConfig.service, - hecConfig, - [integrationConfig], - ); - } - - // Could possibly be moved to a base service. All services would then assume that the - // integration configuration would always be an array and this hec specific service - // would just assume a single entry. - private setIntegrations(orgId: OrganizationId) { - const results$ = zip(this.integrationApiService.getOrganizationIntegrations(orgId)).pipe( - switchMap(([responses]) => { - const integrations: OrganizationIntegration[] = []; - const promises: Promise[] = []; - - responses.forEach((integration) => { - if (integration.type === OrganizationIntegrationType.Hec) { - const promise = this.integrationConfigurationApiService - .getOrganizationIntegrationConfigurations(orgId, integration.id) - .then((response) => { - // Hec events will only have one OrganizationIntegrationConfiguration - const config = response[0]; - - const orgIntegration = this.mapResponsesToOrganizationIntegration( - integration, - config, - ); - - if (orgIntegration !== null) { - integrations.push(orgIntegration); - } - }); - promises.push(promise); - } - }); - return Promise.all(promises).then(() => { - return integrations; - }); - }), - ); - - return results$; - } - - // TODO: Move to base service when necessary - convertToJson(jsonString?: string): T | null { - try { - return JSON.parse(jsonString || "") as T; - } catch { - return null; - } - } -} diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-api.service.spec.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-api.service.spec.ts index 10ea87486b4..a03b675868d 100644 --- a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-api.service.spec.ts +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-api.service.spec.ts @@ -4,7 +4,7 @@ import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationId, OrganizationIntegrationId } from "@bitwarden/common/types/guid"; import { OrganizationIntegrationRequest } from "../models/organization-integration-request"; -import { OrganizationIntegrationServiceType } from "../models/organization-integration-service-type"; +import { OrganizationIntegrationServiceName } from "../models/organization-integration-service-type"; import { OrganizationIntegrationType } from "../models/organization-integration-type"; import { OrganizationIntegrationApiService } from "./organization-integration-api.service"; @@ -56,7 +56,7 @@ describe("OrganizationIntegrationApiService", () => { it("should call apiService.send with correct parameters for createOrganizationIntegration", async () => { const request = new OrganizationIntegrationRequest( OrganizationIntegrationType.Hec, - `{ 'uri:' 'test.com', 'scheme:' 'bearer', 'token:' '123456789', 'service:' '${OrganizationIntegrationServiceType.CrowdStrike}' }`, + `{ 'uri:' 'test.com', 'scheme:' 'bearer', 'token:' '123456789', 'service:' '${OrganizationIntegrationServiceName.CrowdStrike}' }`, ); const orgId = "org1" as OrganizationId; @@ -76,7 +76,7 @@ describe("OrganizationIntegrationApiService", () => { it("should call apiService.send with the correct parameters for updateOrganizationIntegration", async () => { const request = new OrganizationIntegrationRequest( OrganizationIntegrationType.Hec, - `{ 'uri:' 'test.com', 'scheme:' 'bearer', 'token:' '123456789', 'service:' '${OrganizationIntegrationServiceType.CrowdStrike}' }`, + `{ 'uri:' 'test.com', 'scheme:' 'bearer', 'token:' '123456789', 'service:' '${OrganizationIntegrationServiceName.CrowdStrike}' }`, ); const orgId = "org1" as OrganizationId; const integrationId = "integration1" as OrganizationIntegrationId; diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-service.spec.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-service.spec.ts new file mode 100644 index 00000000000..767c22e2014 --- /dev/null +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-service.spec.ts @@ -0,0 +1,633 @@ +import { mock, MockProxy } from "jest-mock-extended"; +import { firstValueFrom } from "rxjs"; + +import { ErrorResponse } from "@bitwarden/common/models/response/error.response"; +import { + OrganizationId, + OrganizationIntegrationId, + OrganizationIntegrationConfigurationId, +} from "@bitwarden/common/types/guid"; + +import { OrgIntegrationBuilder } from "../models/integration-builder"; +import { OrganizationIntegrationConfigurationRequest } from "../models/organization-integration-configuration-request"; +import { OrganizationIntegrationConfigurationResponse } from "../models/organization-integration-configuration-response"; +import { OrganizationIntegrationRequest } from "../models/organization-integration-request"; +import { OrganizationIntegrationResponse } from "../models/organization-integration-response"; +import { OrganizationIntegrationServiceName } from "../models/organization-integration-service-type"; +import { OrganizationIntegrationType } from "../models/organization-integration-type"; + +import { OrganizationIntegrationApiService } from "./organization-integration-api.service"; +import { OrganizationIntegrationConfigurationApiService } from "./organization-integration-configuration-api.service"; +import { OrganizationIntegrationService } from "./organization-integration-service"; + +describe("OrganizationIntegrationService", () => { + let service: OrganizationIntegrationService; + let integrationApiService: MockProxy; + let integrationConfigurationApiService: MockProxy; + + const orgId = "org-123" as OrganizationId; + const integrationId = "integration-456" as OrganizationIntegrationId; + const configurationId = "config-789" as OrganizationIntegrationConfigurationId; + + const mockIntegrationResponse = new OrganizationIntegrationResponse({ + Id: integrationId, + Type: OrganizationIntegrationType.Hec, + Configuration: JSON.stringify({ + uri: "https://test.splunk.com", + token: "test-token", + service: OrganizationIntegrationServiceName.CrowdStrike, + }), + }); + + const mockConfigurationResponse = new OrganizationIntegrationConfigurationResponse({ + Id: configurationId, + Template: JSON.stringify({ + index: "main", + service: OrganizationIntegrationServiceName.CrowdStrike, + }), + }); + + beforeEach(() => { + integrationApiService = mock(); + integrationConfigurationApiService = mock(); + + service = new OrganizationIntegrationService( + integrationApiService, + integrationConfigurationApiService, + ); + }); + + describe("initialization", () => { + it("should be created", () => { + expect(service).toBeTruthy(); + }); + + it("should initialize with empty integrations", async () => { + const integrations = await firstValueFrom(service.integrations$); + expect(integrations).toEqual([]); + }); + }); + + describe("setOrganizationId", () => { + it("should fetch and set integrations for the organization", async () => { + integrationApiService.getOrganizationIntegrations.mockReturnValue( + Promise.resolve([mockIntegrationResponse]), + ); + integrationConfigurationApiService.getOrganizationIntegrationConfigurations.mockReturnValue( + Promise.resolve([mockConfigurationResponse]), + ); + + service.setOrganizationId(orgId).subscribe(); + + // Wait for the observable to emit + await new Promise((resolve) => setTimeout(resolve, 100)); + + const integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(1); + expect(integrations[0].id).toBe(integrationId); + expect(integrations[0].type).toBe(OrganizationIntegrationType.Hec); + expect(integrationApiService.getOrganizationIntegrations).toHaveBeenCalledWith(orgId); + expect( + integrationConfigurationApiService.getOrganizationIntegrationConfigurations, + ).toHaveBeenCalledWith(orgId, integrationId); + }); + + it("should skip fetching if organization ID is the same", async () => { + integrationApiService.getOrganizationIntegrations.mockReturnValue(Promise.resolve([])); + + service.setOrganizationId(orgId).subscribe(); + await new Promise((resolve) => setTimeout(resolve, 50)); + + integrationApiService.getOrganizationIntegrations.mockClear(); + + // Call again with the same org ID + service.setOrganizationId(orgId).subscribe(); + await new Promise((resolve) => setTimeout(resolve, 50)); + + expect(integrationApiService.getOrganizationIntegrations).not.toHaveBeenCalled(); + }); + + it("should clear existing integrations when switching organizations", async () => { + const orgId2 = "org-456" as OrganizationId; + + integrationApiService.getOrganizationIntegrations.mockReturnValue( + Promise.resolve([mockIntegrationResponse]), + ); + integrationConfigurationApiService.getOrganizationIntegrationConfigurations.mockReturnValue( + Promise.resolve([mockConfigurationResponse]), + ); + + service.setOrganizationId(orgId).subscribe(); + await new Promise((resolve) => setTimeout(resolve, 100)); + + let integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(1); + + // Switch to different org + integrationApiService.getOrganizationIntegrations.mockReturnValue(Promise.resolve([])); + service.setOrganizationId(orgId2).subscribe(); + + // Should immediately clear + integrations = await firstValueFrom(service.integrations$); + expect(integrations).toEqual([]); + }); + + it("should unsubscribe from previous fetch when setting new organization", async () => { + integrationApiService.getOrganizationIntegrations.mockReturnValue(Promise.resolve([])); + + service.setOrganizationId(orgId).subscribe(); + await new Promise((resolve) => setTimeout(resolve, 50)); + + const orgId2 = "org-456" as OrganizationId; + service.setOrganizationId(orgId2).subscribe(); + await new Promise((resolve) => setTimeout(resolve, 50)); + + // Should call the API for both organizations (no errors about duplicate subscriptions) + // The exact call count may vary based on observable behavior + expect(integrationApiService.getOrganizationIntegrations).toHaveBeenCalled(); + }); + + it("should handle multiple integrations", async () => { + const integration2Response = new OrganizationIntegrationResponse({ + Id: "integration-2" as OrganizationIntegrationId, + Type: OrganizationIntegrationType.Datadog, + Configuration: JSON.stringify({ + uri: "https://datadog.com", + apiKey: "test-api-key", + service: OrganizationIntegrationServiceName.Datadog, + }), + }); + + const configuration2Response = new OrganizationIntegrationConfigurationResponse({ + Id: "config-2" as OrganizationIntegrationConfigurationId, + Template: JSON.stringify({ + service: OrganizationIntegrationServiceName.Datadog, + }), + }); + + integrationApiService.getOrganizationIntegrations.mockReturnValue( + Promise.resolve([mockIntegrationResponse, integration2Response]), + ); + integrationConfigurationApiService.getOrganizationIntegrationConfigurations + .mockReturnValueOnce(Promise.resolve([mockConfigurationResponse])) + .mockReturnValueOnce(Promise.resolve([configuration2Response])); + + service.setOrganizationId(orgId).subscribe(); + await new Promise((resolve) => setTimeout(resolve, 100)); + + const integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(2); + }); + }); + + describe("save", () => { + const config = OrgIntegrationBuilder.buildHecConfiguration( + "https://test.splunk.com", + "test-token", + OrganizationIntegrationServiceName.CrowdStrike, + ); + const template = OrgIntegrationBuilder.buildHecTemplate( + "main", + OrganizationIntegrationServiceName.CrowdStrike, + ); + + beforeEach(() => { + // Set the organization first + integrationApiService.getOrganizationIntegrations.mockReturnValue(Promise.resolve([])); + service.setOrganizationId(orgId).subscribe(); + }); + + it("should save a new integration successfully", async () => { + integrationApiService.createOrganizationIntegration.mockResolvedValue( + mockIntegrationResponse, + ); + integrationConfigurationApiService.createOrganizationIntegrationConfiguration.mockResolvedValue( + mockConfigurationResponse, + ); + + const result = await service.save(orgId, OrganizationIntegrationType.Hec, config, template); + + expect(result).toEqual({ mustBeOwner: false, success: true }); + expect(integrationApiService.createOrganizationIntegration).toHaveBeenCalledWith( + orgId, + expect.any(OrganizationIntegrationRequest), + ); + expect( + integrationConfigurationApiService.createOrganizationIntegrationConfiguration, + ).toHaveBeenCalledWith( + orgId, + integrationId, + expect.any(OrganizationIntegrationConfigurationRequest), + ); + + const integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(1); + expect(integrations[0].id).toBe(integrationId); + }); + + it("should throw error when organization ID mismatch", async () => { + const differentOrgId = "different-org" as OrganizationId; + + await expect( + service.save(differentOrgId, OrganizationIntegrationType.Hec, config, template), + ).rejects.toThrow("Organization ID mismatch"); + }); + + it("should return mustBeOwner true when API returns 404", async () => { + const error = new ErrorResponse({}, 404); + integrationApiService.createOrganizationIntegration.mockRejectedValue(error); + + const result = await service.save(orgId, OrganizationIntegrationType.Hec, config, template); + + expect(result).toEqual({ mustBeOwner: true, success: false }); + }); + + it("should rethrow non-404 errors", async () => { + const error = new Error("Server error"); + integrationApiService.createOrganizationIntegration.mockRejectedValue(error); + + await expect( + service.save(orgId, OrganizationIntegrationType.Hec, config, template), + ).rejects.toThrow("Server error"); + }); + + it("should handle configuration creation failure with 404", async () => { + const error = new ErrorResponse({}, 404); + integrationApiService.createOrganizationIntegration.mockResolvedValue( + mockIntegrationResponse, + ); + integrationConfigurationApiService.createOrganizationIntegrationConfiguration.mockRejectedValue( + error, + ); + + const result = await service.save(orgId, OrganizationIntegrationType.Hec, config, template); + + expect(result).toEqual({ mustBeOwner: true, success: false }); + }); + }); + + describe("update", () => { + const config = OrgIntegrationBuilder.buildHecConfiguration( + "https://updated.splunk.com", + "updated-token", + OrganizationIntegrationServiceName.CrowdStrike, + ); + const template = OrgIntegrationBuilder.buildHecTemplate( + "updated-index", + OrganizationIntegrationServiceName.CrowdStrike, + ); + + beforeEach(() => { + // Set the organization and add an existing integration + integrationApiService.getOrganizationIntegrations.mockReturnValue( + Promise.resolve([mockIntegrationResponse]), + ); + integrationConfigurationApiService.getOrganizationIntegrationConfigurations.mockReturnValue( + Promise.resolve([mockConfigurationResponse]), + ); + service.setOrganizationId(orgId).subscribe(); + }); + + it("should update an integration successfully", async () => { + const updatedIntegrationResponse = new OrganizationIntegrationResponse({ + Id: integrationId, + Type: OrganizationIntegrationType.Hec, + Configuration: JSON.stringify({ + uri: "https://updated.splunk.com", + token: "updated-token", + service: OrganizationIntegrationServiceName.CrowdStrike, + }), + }); + + const updatedConfigurationResponse = new OrganizationIntegrationConfigurationResponse({ + Id: configurationId, + Template: JSON.stringify({ + index: "updated-index", + service: OrganizationIntegrationServiceName.CrowdStrike, + }), + }); + + integrationApiService.updateOrganizationIntegration.mockResolvedValue( + updatedIntegrationResponse, + ); + integrationConfigurationApiService.updateOrganizationIntegrationConfiguration.mockResolvedValue( + updatedConfigurationResponse, + ); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + const result = await service.update( + orgId, + integrationId, + OrganizationIntegrationType.Hec, + configurationId, + config, + template, + ); + + expect(result).toEqual({ mustBeOwner: false, success: true }); + expect(integrationApiService.updateOrganizationIntegration).toHaveBeenCalledWith( + orgId, + integrationId, + expect.any(OrganizationIntegrationRequest), + ); + expect( + integrationConfigurationApiService.updateOrganizationIntegrationConfiguration, + ).toHaveBeenCalledWith( + orgId, + integrationId, + configurationId, + expect.any(OrganizationIntegrationConfigurationRequest), + ); + + const integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(1); + expect(integrations[0].id).toBe(integrationId); + }); + + it("should throw error when organization ID mismatch", async () => { + const differentOrgId = "different-org" as OrganizationId; + + await expect( + service.update( + differentOrgId, + integrationId, + OrganizationIntegrationType.Hec, + configurationId, + config, + template, + ), + ).rejects.toThrow("Organization ID mismatch"); + }); + + it("should return mustBeOwner true when API returns 404", async () => { + const error = new ErrorResponse({}, 404); + integrationApiService.updateOrganizationIntegration.mockRejectedValue(error); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + const result = await service.update( + orgId, + integrationId, + OrganizationIntegrationType.Hec, + configurationId, + config, + template, + ); + + expect(result).toEqual({ mustBeOwner: true, success: false }); + }); + + it("should rethrow non-404 errors", async () => { + const error = new Error("Server error"); + integrationApiService.updateOrganizationIntegration.mockRejectedValue(error); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + await expect( + service.update( + orgId, + integrationId, + OrganizationIntegrationType.Hec, + configurationId, + config, + template, + ), + ).rejects.toThrow("Server error"); + }); + + it("should replace old integration with updated one in the list", async () => { + // Add multiple integrations first + const integration2Response = new OrganizationIntegrationResponse({ + Id: "integration-2" as OrganizationIntegrationId, + Type: OrganizationIntegrationType.Hec, + Configuration: mockIntegrationResponse.configuration, + }); + const configuration2Response = new OrganizationIntegrationConfigurationResponse({ + Id: "config-2" as OrganizationIntegrationConfigurationId, + Template: mockConfigurationResponse.template, + }); + + const orgId2 = "org-456" as OrganizationId; + integrationApiService.getOrganizationIntegrations.mockReturnValue( + Promise.resolve([mockIntegrationResponse, integration2Response]), + ); + integrationConfigurationApiService.getOrganizationIntegrationConfigurations + .mockReturnValue(Promise.resolve([mockConfigurationResponse])) + .mockReturnValueOnce(Promise.resolve([mockConfigurationResponse])) + .mockReturnValueOnce(Promise.resolve([configuration2Response])); + + service.setOrganizationId(orgId2).subscribe(); + await new Promise((resolve) => setTimeout(resolve, 100)); + + let integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(2); + + // Now update the first integration + integrationApiService.updateOrganizationIntegration.mockResolvedValue( + mockIntegrationResponse, + ); + integrationConfigurationApiService.updateOrganizationIntegrationConfiguration.mockResolvedValue( + mockConfigurationResponse, + ); + + await service.update( + orgId2, + integrationId, + OrganizationIntegrationType.Hec, + configurationId, + config, + template, + ); + + integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(2); + expect(integrations.find((i) => i.id === integrationId)).toBeDefined(); + expect(integrations.find((i) => i.id === "integration-2")).toBeDefined(); + }); + }); + + describe("delete", () => { + beforeEach(() => { + // Set the organization and add an existing integration + integrationApiService.getOrganizationIntegrations.mockReturnValue( + Promise.resolve([mockIntegrationResponse]), + ); + integrationConfigurationApiService.getOrganizationIntegrationConfigurations.mockReturnValue( + Promise.resolve([mockConfigurationResponse]), + ); + service.setOrganizationId(orgId).subscribe(); + }); + + it("should delete an integration successfully", async () => { + integrationConfigurationApiService.deleteOrganizationIntegrationConfiguration.mockResolvedValue( + undefined, + ); + integrationApiService.deleteOrganizationIntegration.mockResolvedValue(undefined); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + let integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(1); + + const result = await service.delete(orgId, integrationId, configurationId); + + expect(result).toEqual({ mustBeOwner: false, success: true }); + expect( + integrationConfigurationApiService.deleteOrganizationIntegrationConfiguration, + ).toHaveBeenCalledWith(orgId, integrationId, configurationId); + expect(integrationApiService.deleteOrganizationIntegration).toHaveBeenCalledWith( + orgId, + integrationId, + ); + + integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(0); + }); + + it("should delete configuration before integration", async () => { + const callOrder: string[] = []; + + integrationConfigurationApiService.deleteOrganizationIntegrationConfiguration.mockImplementation( + async () => { + callOrder.push("configuration"); + }, + ); + integrationApiService.deleteOrganizationIntegration.mockImplementation(async () => { + callOrder.push("integration"); + }); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + await service.delete(orgId, integrationId, configurationId); + + expect(callOrder).toEqual(["configuration", "integration"]); + }); + + it("should throw error when organization ID mismatch", async () => { + const differentOrgId = "different-org" as OrganizationId; + + await expect(service.delete(differentOrgId, integrationId, configurationId)).rejects.toThrow( + "Organization ID mismatch", + ); + }); + + it("should return mustBeOwner true when API returns 404", async () => { + const error = new ErrorResponse({}, 404); + integrationConfigurationApiService.deleteOrganizationIntegrationConfiguration.mockRejectedValue( + error, + ); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + const result = await service.delete(orgId, integrationId, configurationId); + + expect(result).toEqual({ mustBeOwner: true, success: false }); + }); + + it("should rethrow non-404 errors", async () => { + const error = new Error("Server error"); + integrationConfigurationApiService.deleteOrganizationIntegrationConfiguration.mockRejectedValue( + error, + ); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + await expect(service.delete(orgId, integrationId, configurationId)).rejects.toThrow( + "Server error", + ); + }); + + it("should handle 404 error when deleting integration", async () => { + const error = new ErrorResponse({}, 404); + integrationConfigurationApiService.deleteOrganizationIntegrationConfiguration.mockResolvedValue( + undefined, + ); + integrationApiService.deleteOrganizationIntegration.mockRejectedValue(error); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + const result = await service.delete(orgId, integrationId, configurationId); + + expect(result).toEqual({ mustBeOwner: true, success: false }); + }); + }); + + describe("mapResponsesToOrganizationIntegration", () => { + it("should return null if configuration cannot be built", () => { + const invalidIntegrationResponse = new OrganizationIntegrationResponse({ + Id: integrationId, + Type: 999 as OrganizationIntegrationType, // Invalid type + Configuration: "invalid-json", + }); + + // The buildConfiguration method throws for unsupported types + // In production, this error is caught in the setIntegrations pipeline + expect(() => + service["mapResponsesToOrganizationIntegration"]( + invalidIntegrationResponse, + mockConfigurationResponse, + ), + ).toThrow("Unsupported integration type: 999"); + }); + + it("should handle template with invalid data", () => { + const invalidConfigurationResponse = new OrganizationIntegrationConfigurationResponse({ + Id: configurationId, + Template: "{}", // Empty template, will have undefined values but won't return null + }); + + const result = service["mapResponsesToOrganizationIntegration"]( + mockIntegrationResponse, + invalidConfigurationResponse, + ); + + // The result won't be null, but will have a template with undefined/default values + expect(result).not.toBeNull(); + expect(result?.integrationConfiguration[0].template).toBeDefined(); + }); + + it("should successfully map valid responses to OrganizationIntegration", () => { + const result = service["mapResponsesToOrganizationIntegration"]( + mockIntegrationResponse, + mockConfigurationResponse, + ); + + expect(result).not.toBeNull(); + expect(result?.id).toBe(integrationId); + expect(result?.type).toBe(OrganizationIntegrationType.Hec); + expect(result?.integrationConfiguration).toHaveLength(1); + expect(result?.integrationConfiguration[0].id).toBe(configurationId); + }); + }); + + describe("edge cases", () => { + it("should handle empty integration list from API", async () => { + integrationApiService.getOrganizationIntegrations.mockReturnValue(Promise.resolve([])); + + service.setOrganizationId(orgId).subscribe(); + await new Promise((resolve) => setTimeout(resolve, 100)); + + const integrations = await firstValueFrom(service.integrations$); + expect(integrations).toEqual([]); + }); + + it("should handle errors when fetching integrations", async () => { + const validIntegration = mockIntegrationResponse; + + integrationApiService.getOrganizationIntegrations.mockReturnValue( + Promise.resolve([validIntegration]), + ); + integrationConfigurationApiService.getOrganizationIntegrationConfigurations.mockReturnValue( + Promise.resolve([mockConfigurationResponse]), + ); + + service.setOrganizationId(orgId).subscribe(); + await new Promise((resolve) => setTimeout(resolve, 100)); + + const integrations = await firstValueFrom(service.integrations$); + expect(integrations).toHaveLength(1); + expect(integrations[0].id).toBe(integrationId); + }); + }); +}); diff --git a/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-service.ts b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-service.ts new file mode 100644 index 00000000000..cd153bc1133 --- /dev/null +++ b/bitwarden_license/bit-common/src/dirt/organization-integrations/services/organization-integration-service.ts @@ -0,0 +1,313 @@ +import { BehaviorSubject, map, Observable, of, switchMap, tap, zip } from "rxjs"; + +import { ErrorResponse } from "@bitwarden/common/models/response/error.response"; +import { + OrganizationId, + OrganizationIntegrationId, + OrganizationIntegrationConfigurationId, +} from "@bitwarden/common/types/guid"; + +import { + OrgIntegrationBuilder, + OrgIntegrationConfiguration, + OrgIntegrationTemplate, +} from "../models/integration-builder"; +import { OrganizationIntegration } from "../models/organization-integration"; +import { OrganizationIntegrationConfiguration } from "../models/organization-integration-configuration"; +import { OrganizationIntegrationConfigurationRequest } from "../models/organization-integration-configuration-request"; +import { OrganizationIntegrationConfigurationResponse } from "../models/organization-integration-configuration-response"; +import { OrganizationIntegrationRequest } from "../models/organization-integration-request"; +import { OrganizationIntegrationResponse } from "../models/organization-integration-response"; +import { OrganizationIntegrationType } from "../models/organization-integration-type"; + +import { OrganizationIntegrationApiService } from "./organization-integration-api.service"; +import { OrganizationIntegrationConfigurationApiService } from "./organization-integration-configuration-api.service"; +/** + * Common result type for integration modification operations (save, update, delete). + * was the server side failure due to insufficient permissions (must be owner)? + */ +export type IntegrationModificationResult = { + mustBeOwner: boolean; + success: boolean; +}; + +/** + * Provides common functionality for managing integrations with different external services. + */ +export class OrganizationIntegrationService { + private organizationId$ = new BehaviorSubject(null); + private _integrations$ = new BehaviorSubject([]); + + integrations$: Observable = this._integrations$.asObservable(); + + constructor( + protected integrationApiService: OrganizationIntegrationApiService, + protected integrationConfigurationApiService: OrganizationIntegrationConfigurationApiService, + ) {} + + /** + * Sets the organization Id and triggers the retrieval of integrations for the given organization. + * The integrations will be available via the integrations$ observable. + * If the organization ID is the same as the current one, no action is taken. + * Use this method to kick off loading integrations for a specific organization. + * Use integrations$ to subscribe to the loaded integrations. + * + * @param orgId - The organization ID to set + * @returns Observable that completes when the operation is done. Subscribe to trigger the load. + */ + setOrganizationId(orgId: OrganizationId): Observable { + if (orgId === this.organizationId$.getValue()) { + return of(void 0); + } + this._integrations$.next([]); + this.organizationId$.next(orgId); + + // subscribe to load and set integrations + // use integrations$ to get the loaded integrations + return this.setIntegrations(orgId).pipe( + tap((integrations) => { + this._integrations$.next(integrations); + }), + map((): void => void 0), + ); + } + + /** + * Saves a new organization integration and updates the integrations$ observable. + * + * @param organizationId - ID of the organization + * @param integrationType - Type of the organization integration + * @param config - The configuration object for this integration + * @param template - The template object for this integration + * @returns Promise with the result indicating success or failure reason + */ + async save( + organizationId: OrganizationId, + integrationType: OrganizationIntegrationType, + config: OrgIntegrationConfiguration, + template: OrgIntegrationTemplate, + ): Promise { + if (organizationId !== this.organizationId$.getValue()) { + throw new Error("Organization ID mismatch"); + } + + try { + const configString = config.toString(); + const newIntegrationResponse = await this.integrationApiService.createOrganizationIntegration( + organizationId, + new OrganizationIntegrationRequest(integrationType, configString), + ); + + const templateString = template.toString(); + const newIntegrationConfigResponse = + await this.integrationConfigurationApiService.createOrganizationIntegrationConfiguration( + organizationId, + newIntegrationResponse.id, + new OrganizationIntegrationConfigurationRequest(null, null, null, templateString), + ); + + const newIntegration = this.mapResponsesToOrganizationIntegration( + newIntegrationResponse, + newIntegrationConfigResponse, + ); + if (newIntegration !== null) { + this._integrations$.next([...this._integrations$.getValue(), newIntegration]); + } + return { mustBeOwner: false, success: true }; + } catch (error) { + if (error instanceof ErrorResponse && error.statusCode === 404) { + return { mustBeOwner: true, success: false }; + } + throw error; + } + } + + /** + * Updates an existing organization integration and updates the integrations$ observable. + * + * @param organizationId - ID of the organization + * @param integrationId - ID of the organization integration + * @param integrationType - Type of the organization integration + * @param configurationId - ID of the organization integration configuration + * @param config - The updated configuration object + * @param template - The updated template object + * @returns Promise with the result indicating success or failure reason + */ + async update( + organizationId: OrganizationId, + integrationId: OrganizationIntegrationId, + integrationType: OrganizationIntegrationType, + configurationId: OrganizationIntegrationConfigurationId, + config: OrgIntegrationConfiguration, + template: OrgIntegrationTemplate, + ): Promise { + if (organizationId !== this.organizationId$.getValue()) { + throw new Error("Organization ID mismatch"); + } + + try { + const configString = config.toString(); + const updatedIntegrationResponse = + await this.integrationApiService.updateOrganizationIntegration( + organizationId, + integrationId, + new OrganizationIntegrationRequest(integrationType, configString), + ); + + const templateString = template.toString(); + const updatedIntegrationConfigResponse = + await this.integrationConfigurationApiService.updateOrganizationIntegrationConfiguration( + organizationId, + integrationId, + configurationId, + new OrganizationIntegrationConfigurationRequest(null, null, null, templateString), + ); + + const updatedIntegration = this.mapResponsesToOrganizationIntegration( + updatedIntegrationResponse, + updatedIntegrationConfigResponse, + ); + + if (updatedIntegration !== null) { + const integrations = this._integrations$.getValue(); + const index = integrations.findIndex((i) => i.id === integrationId); + if (index !== -1) { + integrations[index] = updatedIntegration; + } else { + integrations.push(updatedIntegration); + } + this._integrations$.next([...integrations]); + } + return { mustBeOwner: false, success: true }; + } catch (error) { + if (error instanceof ErrorResponse && error.statusCode === 404) { + return { mustBeOwner: true, success: false }; + } + throw error; + } + } + + /** + * Deletes an organization integration and updates the integrations$ observable. + * + * @param organizationId - ID of the organization + * @param integrationId - ID of the organization integration + * @param configurationId - ID of the organization integration configuration + * @returns Promise with the result indicating success or failure reason + */ + async delete( + organizationId: OrganizationId, + integrationId: OrganizationIntegrationId, + configurationId: OrganizationIntegrationConfigurationId, + ): Promise { + if (organizationId !== this.organizationId$.getValue()) { + throw new Error("Organization ID mismatch"); + } + + try { + // delete the configuration first due to foreign key constraint + await this.integrationConfigurationApiService.deleteOrganizationIntegrationConfiguration( + organizationId, + integrationId, + configurationId, + ); + + // delete the integration + await this.integrationApiService.deleteOrganizationIntegration(organizationId, integrationId); + + // update the local observable + const updatedIntegrations = this._integrations$ + .getValue() + .filter((i) => i.id !== integrationId); + this._integrations$.next(updatedIntegrations); + + return { mustBeOwner: false, success: true }; + } catch (error) { + if (error instanceof ErrorResponse && error.statusCode === 404) { + return { mustBeOwner: true, success: false }; + } + throw error; + } + } + + /** + * Maps API responses to an OrganizationIntegration domain model. + * + * @param integrationResponse - The integration response from the API + * @param configurationResponse - The configuration response from the API + * @returns OrganizationIntegration or null if mapping fails + */ + private mapResponsesToOrganizationIntegration( + integrationResponse: OrganizationIntegrationResponse, + configurationResponse: OrganizationIntegrationConfigurationResponse, + ): OrganizationIntegration | null { + const integrationType = integrationResponse.type; + const config = OrgIntegrationBuilder.buildConfiguration( + integrationType, + integrationResponse.configuration, + ); + const template = OrgIntegrationBuilder.buildTemplate( + integrationType, + configurationResponse.template ?? "{}", + ); + + if (!config || !template) { + return null; + } + + const integrationConfig = new OrganizationIntegrationConfiguration( + configurationResponse.id, + integrationResponse.id, + null, + "", + template, + ); + + return new OrganizationIntegration( + integrationResponse.id, + integrationResponse.type, + config.service, + config, + [integrationConfig], + ); + } + + /** + * Fetches integrations for the given organization from the API. + * + * @param orgId - Organization ID to fetch integrations for + * @returns Observable of OrganizationIntegration array + */ + private setIntegrations(orgId: OrganizationId): Observable { + const results$ = zip(this.integrationApiService.getOrganizationIntegrations(orgId)).pipe( + switchMap(([responses]) => { + const integrations: OrganizationIntegration[] = []; + const promises: Promise[] = []; + + responses.forEach((integration) => { + const promise = this.integrationConfigurationApiService + .getOrganizationIntegrationConfigurations(orgId, integration.id) + .then((response) => { + // Integration will only have one OrganizationIntegrationConfiguration + const config = response[0]; + + const orgIntegration = this.mapResponsesToOrganizationIntegration( + integration, + config, + ); + + if (orgIntegration !== null) { + integrations.push(orgIntegration); + } + }); + promises.push(promise); + }); + return Promise.all(promises).then(() => { + return integrations; + }); + }), + ); + + return results$; + } +} diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-card/integration-card.component.spec.ts b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-card/integration-card.component.spec.ts index 8beaae7f10a..37bd504643c 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-card/integration-card.component.spec.ts +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-card/integration-card.component.spec.ts @@ -4,9 +4,10 @@ import { mock } from "jest-mock-extended"; import { BehaviorSubject, of } from "rxjs"; import { SYSTEM_THEME_OBSERVABLE } from "@bitwarden/angular/services/injection-tokens"; -import { OrganizationIntegrationServiceType } from "@bitwarden/bit-common/dirt/organization-integrations/models/organization-integration-service-type"; -import { DatadogOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/datadog-organization-integration-service"; -import { HecOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/hec-organization-integration-service"; +import { OrgIntegrationBuilder } from "@bitwarden/bit-common/dirt/organization-integrations/models/integration-builder"; +import { OrganizationIntegrationServiceName } from "@bitwarden/bit-common/dirt/organization-integrations/models/organization-integration-service-type"; +import { OrganizationIntegrationType } from "@bitwarden/bit-common/dirt/organization-integrations/models/organization-integration-type"; +import { OrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-service"; import { ErrorResponse } from "@bitwarden/common/models/response/error.response"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { ThemeType } from "@bitwarden/common/platform/enums"; @@ -29,8 +30,7 @@ describe("IntegrationCardComponent", () => { let fixture: ComponentFixture; const mockI18nService = mock(); const activatedRoute = mock(); - const mockIntegrationService = mock(); - const mockDatadogIntegrationService = mock(); + const mockIntegrationService = mock(); const dialogService = mock(); const toastService = mock(); @@ -54,8 +54,7 @@ describe("IntegrationCardComponent", () => { { provide: I18nPipe, useValue: mock() }, { provide: I18nService, useValue: mockI18nService }, { provide: ActivatedRoute, useValue: activatedRoute }, - { provide: HecOrganizationIntegrationService, useValue: mockIntegrationService }, - { provide: DatadogOrganizationIntegrationService, useValue: mockDatadogIntegrationService }, + { provide: OrganizationIntegrationService, useValue: mockIntegrationService }, { provide: ToastService, useValue: toastService }, { provide: DialogService, useValue: dialogService }, ], @@ -259,7 +258,7 @@ describe("IntegrationCardComponent", () => { configuration: {}, integrationConfiguration: [{ id: "config-id" }], }, - name: OrganizationIntegrationServiceType.CrowdStrike, + name: OrganizationIntegrationServiceName.CrowdStrike, } as any; component.organizationId = "org-id" as any; jest.resetAllMocks(); @@ -270,8 +269,8 @@ describe("IntegrationCardComponent", () => { closed: of({ success: false }), }); await component.setupConnection(); - expect(mockIntegrationService.updateHec).not.toHaveBeenCalled(); - expect(mockIntegrationService.saveHec).not.toHaveBeenCalled(); + expect(mockIntegrationService.update).not.toHaveBeenCalled(); + expect(mockIntegrationService.save).not.toHaveBeenCalled(); }); it("should call updateHec if isUpdateAvailable is true", async () => { @@ -284,26 +283,35 @@ describe("IntegrationCardComponent", () => { }), }); + const config = OrgIntegrationBuilder.buildHecConfiguration( + "test-url", + "token", + OrganizationIntegrationServiceName.CrowdStrike, + ); + const template = OrgIntegrationBuilder.buildHecTemplate( + "index", + OrganizationIntegrationServiceName.CrowdStrike, + ); + jest.spyOn(component, "isUpdateAvailable", "get").mockReturnValue(true); await component.setupConnection(); - expect(mockIntegrationService.updateHec).toHaveBeenCalledWith( + expect(mockIntegrationService.update).toHaveBeenCalledWith( "org-id", "integration-id", + OrganizationIntegrationType.Hec, "config-id", - OrganizationIntegrationServiceType.CrowdStrike, - "test-url", - "token", - "index", + config, + template, ); - expect(mockIntegrationService.saveHec).not.toHaveBeenCalled(); + expect(mockIntegrationService.save).not.toHaveBeenCalled(); }); it("should call saveHec if isUpdateAvailable is false", async () => { component.integrationSettings = { organizationIntegration: null, - name: OrganizationIntegrationServiceType.CrowdStrike, + name: OrganizationIntegrationServiceName.CrowdStrike, } as any; component.organizationId = "org-id" as any; @@ -316,23 +324,32 @@ describe("IntegrationCardComponent", () => { }), }); + const config = OrgIntegrationBuilder.buildHecConfiguration( + "test-url", + "token", + OrganizationIntegrationServiceName.CrowdStrike, + ); + const template = OrgIntegrationBuilder.buildHecTemplate( + "index", + OrganizationIntegrationServiceName.CrowdStrike, + ); + jest.spyOn(component, "isUpdateAvailable", "get").mockReturnValue(false); - mockIntegrationService.saveHec.mockResolvedValue({ mustBeOwner: false, success: true }); + mockIntegrationService.save.mockResolvedValue({ mustBeOwner: false, success: true }); await component.setupConnection(); - expect(mockIntegrationService.saveHec).toHaveBeenCalledWith( + expect(mockIntegrationService.save).toHaveBeenCalledWith( "org-id", - OrganizationIntegrationServiceType.CrowdStrike, - "test-url", - "token", - "index", + OrganizationIntegrationType.Hec, + config, + template, ); - expect(mockIntegrationService.updateHec).not.toHaveBeenCalled(); + expect(mockIntegrationService.update).not.toHaveBeenCalled(); }); - it("should call deleteHec when a delete is requested", async () => { + it("should call delete with Hec type when a delete is requested", async () => { component.organizationId = "org-id" as any; (openHecConnectDialog as jest.Mock).mockReturnValue({ @@ -344,22 +361,22 @@ describe("IntegrationCardComponent", () => { }), }); - mockIntegrationService.deleteHec.mockResolvedValue({ mustBeOwner: false, success: true }); + mockIntegrationService.delete.mockResolvedValue({ mustBeOwner: false, success: true }); await component.setupConnection(); - expect(mockIntegrationService.deleteHec).toHaveBeenCalledWith( + expect(mockIntegrationService.delete).toHaveBeenCalledWith( "org-id", "integration-id", "config-id", ); - expect(mockIntegrationService.saveHec).not.toHaveBeenCalled(); + expect(mockIntegrationService.save).not.toHaveBeenCalled(); }); - it("should not call deleteHec if no existing configuration", async () => { + it("should not call delete if no existing configuration", async () => { component.integrationSettings = { organizationIntegration: null, - name: OrganizationIntegrationServiceType.CrowdStrike, + name: OrganizationIntegrationServiceName.CrowdStrike, } as any; component.organizationId = "org-id" as any; @@ -372,20 +389,16 @@ describe("IntegrationCardComponent", () => { }), }); - mockIntegrationService.deleteHec.mockResolvedValue({ mustBeOwner: false, success: true }); + mockIntegrationService.delete.mockResolvedValue({ mustBeOwner: false, success: true }); await component.setupConnection(); - expect(mockIntegrationService.deleteHec).not.toHaveBeenCalledWith( + expect(mockIntegrationService.delete).not.toHaveBeenCalledWith( "org-id", "integration-id", "config-id", - OrganizationIntegrationServiceType.CrowdStrike, - "test-url", - "token", - "index", ); - expect(mockIntegrationService.updateHec).not.toHaveBeenCalled(); + expect(mockIntegrationService.update).not.toHaveBeenCalled(); }); it("should show toast on error while saving", async () => { @@ -399,11 +412,11 @@ describe("IntegrationCardComponent", () => { }); jest.spyOn(component, "isUpdateAvailable", "get").mockReturnValue(true); - mockIntegrationService.updateHec.mockRejectedValue(new Error("fail")); + mockIntegrationService.update.mockRejectedValue(new Error("fail")); await component.setupConnection(); - expect(mockIntegrationService.updateHec).toHaveBeenCalled(); + expect(mockIntegrationService.update).toHaveBeenCalled(); expect(toastService.showToast).toHaveBeenCalledWith({ variant: "error", title: "", @@ -422,11 +435,11 @@ describe("IntegrationCardComponent", () => { }); jest.spyOn(component, "isUpdateAvailable", "get").mockReturnValue(true); - mockIntegrationService.updateHec.mockRejectedValue(new ErrorResponse("Not Found", 404)); + mockIntegrationService.update.mockRejectedValue(new ErrorResponse("Not Found", 404)); await component.setupConnection(); - expect(mockIntegrationService.updateHec).toHaveBeenCalled(); + expect(mockIntegrationService.update).toHaveBeenCalled(); expect(toastService.showToast).toHaveBeenCalledWith({ variant: "error", title: "", @@ -445,11 +458,10 @@ describe("IntegrationCardComponent", () => { }); jest.spyOn(component, "isUpdateAvailable", "get").mockReturnValue(true); - mockIntegrationService.updateHec.mockRejectedValue(new ErrorResponse("Not Found", 404)); - + mockIntegrationService.update.mockRejectedValue(new ErrorResponse("Not Found", 404)); await component.setupConnection(); - expect(mockIntegrationService.updateHec).toHaveBeenCalled(); + expect(mockIntegrationService.update).toHaveBeenCalled(); expect(toastService.showToast).toHaveBeenCalledWith({ variant: "error", title: "", @@ -468,11 +480,11 @@ describe("IntegrationCardComponent", () => { }); jest.spyOn(component, "isUpdateAvailable", "get").mockReturnValue(true); - mockIntegrationService.deleteHec.mockRejectedValue(new Error("fail")); + mockIntegrationService.delete.mockRejectedValue(new Error("fail")); await component.setupConnection(); - expect(mockIntegrationService.deleteHec).toHaveBeenCalled(); + expect(mockIntegrationService.delete).toHaveBeenCalled(); expect(toastService.showToast).toHaveBeenCalledWith({ variant: "error", title: "", @@ -491,11 +503,10 @@ describe("IntegrationCardComponent", () => { }); jest.spyOn(component, "isUpdateAvailable", "get").mockReturnValue(true); - mockIntegrationService.deleteHec.mockRejectedValue(new ErrorResponse("Not Found", 404)); - + mockIntegrationService.delete.mockRejectedValue(new ErrorResponse("Not Found", 404)); await component.setupConnection(); - expect(mockIntegrationService.deleteHec).toHaveBeenCalled(); + expect(mockIntegrationService.delete).toHaveBeenCalled(); expect(toastService.showToast).toHaveBeenCalledWith({ variant: "error", title: "", diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-card/integration-card.component.ts b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-card/integration-card.component.ts index e6d4aff05fb..8026e14c2fc 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-card/integration-card.component.ts +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-card/integration-card.component.ts @@ -12,10 +12,10 @@ import { Observable, Subject, combineLatest, lastValueFrom, takeUntil } from "rx import { SYSTEM_THEME_OBSERVABLE } from "@bitwarden/angular/services/injection-tokens"; import { Integration } from "@bitwarden/bit-common/dirt/organization-integrations/models/integration"; -import { OrganizationIntegrationServiceType } from "@bitwarden/bit-common/dirt/organization-integrations/models/organization-integration-service-type"; +import { OrgIntegrationBuilder } from "@bitwarden/bit-common/dirt/organization-integrations/models/integration-builder"; +import { OrganizationIntegrationServiceName } from "@bitwarden/bit-common/dirt/organization-integrations/models/organization-integration-service-type"; import { OrganizationIntegrationType } from "@bitwarden/bit-common/dirt/organization-integrations/models/organization-integration-type"; -import { DatadogOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/datadog-organization-integration-service"; -import { HecOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/hec-organization-integration-service"; +import { OrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { ThemeType } from "@bitwarden/common/platform/enums"; import { ThemeStateService } from "@bitwarden/common/platform/theming/theme-state.service"; @@ -96,8 +96,7 @@ export class IntegrationCardComponent implements AfterViewInit, OnDestroy { private systemTheme$: Observable, private dialogService: DialogService, private activatedRoute: ActivatedRoute, - private hecOrganizationIntegrationService: HecOrganizationIntegrationService, - private datadogOrganizationIntegrationService: DatadogOrganizationIntegrationService, + private organizationIntegrationService: OrganizationIntegrationService, private toastService: ToastService, private i18nService: I18nService, ) { @@ -250,7 +249,18 @@ export class IntegrationCardComponent implements AfterViewInit, OnDestroy { } async saveHec(result: HecConnectDialogResult) { - let saveResponse = { mustBeOwner: false, success: false }; + let response = { mustBeOwner: false, success: false }; + + const config = OrgIntegrationBuilder.buildHecConfiguration( + result.url, + result.bearerToken, + this.integrationSettings.name as OrganizationIntegrationServiceName, + ); + const template = OrgIntegrationBuilder.buildHecTemplate( + result.index, + this.integrationSettings.name as OrganizationIntegrationServiceName, + ); + if (this.isUpdateAvailable) { // retrieve org integration and configuration ids const orgIntegrationId = this.integrationSettings.organizationIntegration?.id; @@ -262,27 +272,25 @@ export class IntegrationCardComponent implements AfterViewInit, OnDestroy { } // update existing integration and configuration - saveResponse = await this.hecOrganizationIntegrationService.updateHec( + response = await this.organizationIntegrationService.update( this.organizationId, orgIntegrationId, + OrganizationIntegrationType.Hec, orgIntegrationConfigurationId, - this.integrationSettings.name as OrganizationIntegrationServiceType, - result.url, - result.bearerToken, - result.index, + config, + template, ); } else { // create new integration and configuration - saveResponse = await this.hecOrganizationIntegrationService.saveHec( + response = await this.organizationIntegrationService.save( this.organizationId, - this.integrationSettings.name as OrganizationIntegrationServiceType, - result.url, - result.bearerToken, - result.index, + OrganizationIntegrationType.Hec, + config, + template, ); } - if (saveResponse.mustBeOwner) { + if (response.mustBeOwner) { this.showMustBeOwnerToast(); return; } @@ -303,7 +311,7 @@ export class IntegrationCardComponent implements AfterViewInit, OnDestroy { throw Error("Organization Integration ID or Configuration ID is missing"); } - const response = await this.hecOrganizationIntegrationService.deleteHec( + const response = await this.organizationIntegrationService.delete( this.organizationId, orgIntegrationId, orgIntegrationConfigurationId, @@ -322,6 +330,13 @@ export class IntegrationCardComponent implements AfterViewInit, OnDestroy { } async saveDatadog(result: DatadogConnectDialogResult) { + let response = { mustBeOwner: false, success: false }; + + const config = OrgIntegrationBuilder.buildDataDogConfiguration(result.url, result.apiKey); + const template = OrgIntegrationBuilder.buildDataDogTemplate( + this.integrationSettings.name as OrganizationIntegrationServiceName, + ); + if (this.isUpdateAvailable) { // retrieve org integration and configuration ids const orgIntegrationId = this.integrationSettings.organizationIntegration?.id; @@ -333,23 +348,29 @@ export class IntegrationCardComponent implements AfterViewInit, OnDestroy { } // update existing integration and configuration - await this.datadogOrganizationIntegrationService.updateDatadog( + response = await this.organizationIntegrationService.update( this.organizationId, orgIntegrationId, + OrganizationIntegrationType.Datadog, orgIntegrationConfigurationId, - this.integrationSettings.name as OrganizationIntegrationServiceType, - result.url, - result.apiKey, + config, + template, ); } else { // create new integration and configuration - await this.datadogOrganizationIntegrationService.saveDatadog( + response = await this.organizationIntegrationService.save( this.organizationId, - this.integrationSettings.name as OrganizationIntegrationServiceType, - result.url, - result.apiKey, + OrganizationIntegrationType.Datadog, + config, + template, ); } + + if (response.mustBeOwner) { + this.showMustBeOwnerToast(); + return; + } + this.toastService.showToast({ variant: "success", title: "", @@ -366,7 +387,7 @@ export class IntegrationCardComponent implements AfterViewInit, OnDestroy { throw Error("Organization Integration ID or Configuration ID is missing"); } - const response = await this.datadogOrganizationIntegrationService.deleteDatadog( + const response = await this.organizationIntegrationService.delete( this.organizationId, orgIntegrationId, orgIntegrationConfigurationId, diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-grid/integration-grid.component.spec.ts b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-grid/integration-grid.component.spec.ts index 2908fe0c089..3560a32fb40 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-grid/integration-grid.component.spec.ts +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integration-grid/integration-grid.component.spec.ts @@ -6,8 +6,7 @@ import { of } from "rxjs"; import { SYSTEM_THEME_OBSERVABLE } from "@bitwarden/angular/services/injection-tokens"; import { Integration } from "@bitwarden/bit-common/dirt/organization-integrations/models/integration"; -import { DatadogOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/datadog-organization-integration-service"; -import { HecOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/hec-organization-integration-service"; +import { OrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-service"; import { IntegrationType } from "@bitwarden/common/enums"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { ThemeTypes } from "@bitwarden/common/platform/enums"; @@ -24,8 +23,7 @@ describe("IntegrationGridComponent", () => { let component: IntegrationGridComponent; let fixture: ComponentFixture; const mockActivatedRoute = mock(); - const mockIntegrationService = mock(); - const mockDatadogIntegrationService = mock(); + const mockIntegrationService = mock(); const integrations: Integration[] = [ { name: "Integration 1", @@ -71,8 +69,7 @@ describe("IntegrationGridComponent", () => { provide: ActivatedRoute, useValue: mockActivatedRoute, }, - { provide: HecOrganizationIntegrationService, useValue: mockIntegrationService }, - { provide: DatadogOrganizationIntegrationService, useValue: mockDatadogIntegrationService }, + { provide: OrganizationIntegrationService, useValue: mockIntegrationService }, { provide: ToastService, useValue: mock(), diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.html b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.html index 58c52e4f40a..a35df3677bb 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.html +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.html @@ -1,69 +1,78 @@ - - -
-

{{ "singleSignOn" | i18n }}

-

- {{ "ssoDescStart" | i18n }} - {{ "singleSignOn" | i18n }} - {{ "ssoDescEnd" | i18n }} -

- -
-
+@let organization = organization$ | async; - -
-

- {{ "scimIntegration" | i18n }} -

-

- {{ "scimIntegrationDescStart" | i18n }} - {{ "scimIntegration" | i18n }} - {{ "scimIntegrationDescEnd" | i18n }} -

- -
-
-

- {{ "bwdc" | i18n }} -

-

{{ "bwdcDesc" | i18n }}

- -
-
+@if (organization) { + + @if (organization?.useSso) { + +
+

{{ "singleSignOn" | i18n }}

+

+ {{ "ssoDescStart" | i18n }} + {{ + "singleSignOn" | i18n + }} + {{ "ssoDescEnd" | i18n }} +

+ +
+
+ } - -
-

- {{ "eventManagement" | i18n }} -

-

{{ "eventManagementDesc" | i18n }}

- -
-
+ @if (organization?.useScim || organization?.useDirectory) { + +
+

+ {{ "scimIntegration" | i18n }} +

+

+ {{ "scimIntegrationDescStart" | i18n }} + {{ "scimIntegration" | i18n }} + {{ "scimIntegrationDescEnd" | i18n }} +

+ +
+
+

+ {{ "bwdc" | i18n }} +

+

{{ "bwdcDesc" | i18n }}

+ +
+
+ } - -
-

- {{ "deviceManagement" | i18n }} -

-

{{ "deviceManagementDesc" | i18n }}

- -
-
-
+ @if (organization?.useEvents) { + +
+

+ {{ "eventManagement" | i18n }} +

+

{{ "eventManagementDesc" | i18n }}

+ +
+
+ } + + +
+

+ {{ "deviceManagement" | i18n }} +

+

{{ "deviceManagementDesc" | i18n }}

+ +
+
+
+} diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.ts b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.ts index 894a8e9a25c..6517182b21e 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.ts +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/integrations.component.ts @@ -3,10 +3,9 @@ import { ActivatedRoute } from "@angular/router"; import { firstValueFrom, Observable, Subject, switchMap, takeUntil, takeWhile } from "rxjs"; import { Integration } from "@bitwarden/bit-common/dirt/organization-integrations/models/integration"; -import { OrganizationIntegrationServiceType } from "@bitwarden/bit-common/dirt/organization-integrations/models/organization-integration-service-type"; +import { OrganizationIntegrationServiceName } from "@bitwarden/bit-common/dirt/organization-integrations/models/organization-integration-service-type"; import { OrganizationIntegrationType } from "@bitwarden/bit-common/dirt/organization-integrations/models/organization-integration-type"; -import { DatadogOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/datadog-organization-integration-service"; -import { HecOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/hec-organization-integration-service"; +import { OrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; @@ -21,6 +20,7 @@ import { SharedModule } from "@bitwarden/web-vault/app/shared"; import { IntegrationGridComponent } from "./integration-grid/integration-grid.component"; import { FilterIntegrationsPipe } from "./integrations.pipe"; +// attempted, but because bit-tab-group is not OnPush, caused more issues than it solved // FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection @Component({ @@ -236,10 +236,12 @@ export class AdminConsoleIntegrationsComponent implements OnInit, OnDestroy { ); // Sets the organization ID which also loads the integrations$ - this.organization$.pipe(takeUntil(this.destroy$)).subscribe((org) => { - this.hecOrganizationIntegrationService.setOrganizationIntegrations(org.id); - this.datadogOrganizationIntegrationService.setOrganizationIntegrations(org.id); - }); + this.organization$ + .pipe( + switchMap((org) => this.organizationIntegrationService.setOrganizationId(org.id)), + takeUntil(this.destroy$), + ) + .subscribe(); } constructor( @@ -247,8 +249,7 @@ export class AdminConsoleIntegrationsComponent implements OnInit, OnDestroy { private organizationService: OrganizationService, private accountService: AccountService, private configService: ConfigService, - private hecOrganizationIntegrationService: HecOrganizationIntegrationService, - private datadogOrganizationIntegrationService: DatadogOrganizationIntegrationService, + private organizationIntegrationService: OrganizationIntegrationService, ) { this.configService .getFeatureFlag$(FeatureFlag.EventManagementForDataDogAndCrowdStrike) @@ -260,7 +261,7 @@ export class AdminConsoleIntegrationsComponent implements OnInit, OnDestroy { // Add the new event based items to the list if (this.isEventManagementForDataDogAndCrowdStrikeEnabled) { const crowdstrikeIntegration: Integration = { - name: OrganizationIntegrationServiceType.CrowdStrike, + name: OrganizationIntegrationServiceName.CrowdStrike, linkURL: "https://bitwarden.com/help/crowdstrike-siem/", image: "../../../../../../../images/integrations/logo-crowdstrike-black.svg", type: IntegrationType.EVENT, @@ -272,7 +273,7 @@ export class AdminConsoleIntegrationsComponent implements OnInit, OnDestroy { this.integrationsList.push(crowdstrikeIntegration); const datadogIntegration: Integration = { - name: OrganizationIntegrationServiceType.Datadog, + name: OrganizationIntegrationServiceName.Datadog, linkURL: "https://bitwarden.com/help/datadog-siem/", image: "../../../../../../../images/integrations/logo-datadog-color.svg", type: IntegrationType.EVENT, @@ -286,42 +287,23 @@ export class AdminConsoleIntegrationsComponent implements OnInit, OnDestroy { // For all existing event based configurations loop through and assign the // organizationIntegration for the correct services. - this.hecOrganizationIntegrationService.integrations$ + this.organizationIntegrationService.integrations$ .pipe(takeUntil(this.destroy$)) .subscribe((integrations) => { - // reset all integrations to null first - in case one was deleted + // reset all event based integrations to null first - in case one was deleted this.integrationsList.forEach((i) => { - if (i.integrationType === OrganizationIntegrationType.Hec) { - i.organizationIntegration = null; - } + i.organizationIntegration = null; }); - integrations.map((integration) => { - const item = this.integrationsList.find((i) => i.name === integration.serviceType); - if (item) { - item.organizationIntegration = integration; - } - }); - }); - - this.datadogOrganizationIntegrationService.integrations$ - .pipe(takeUntil(this.destroy$)) - .subscribe((integrations) => { - // reset all integrations to null first - in case one was deleted - this.integrationsList.forEach((i) => { - if (i.integrationType === OrganizationIntegrationType.Datadog) { - i.organizationIntegration = null; - } - }); - - integrations.map((integration) => { - const item = this.integrationsList.find((i) => i.name === integration.serviceType); + integrations.forEach((integration) => { + const item = this.integrationsList.find((i) => i.name === integration.serviceName); if (item) { item.organizationIntegration = integration; } }); }); } + ngOnDestroy(): void { this.destroy$.next(); this.destroy$.complete(); diff --git a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.module.ts b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.module.ts index e3c37b4a42b..789ae548521 100644 --- a/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.module.ts +++ b/bitwarden_license/bit-web/src/app/dirt/organization-integrations/organization-integrations.module.ts @@ -1,9 +1,8 @@ import { NgModule } from "@angular/core"; -import { DatadogOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/datadog-organization-integration-service"; -import { HecOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/hec-organization-integration-service"; import { OrganizationIntegrationApiService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-api.service"; import { OrganizationIntegrationConfigurationApiService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-configuration-api.service"; +import { OrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { safeProvider } from "@bitwarden/ui-common"; @@ -14,13 +13,8 @@ import { OrganizationIntegrationsRoutingModule } from "./organization-integratio imports: [AdminConsoleIntegrationsComponent, OrganizationIntegrationsRoutingModule], providers: [ safeProvider({ - provide: DatadogOrganizationIntegrationService, - useClass: DatadogOrganizationIntegrationService, - deps: [OrganizationIntegrationApiService, OrganizationIntegrationConfigurationApiService], - }), - safeProvider({ - provide: HecOrganizationIntegrationService, - useClass: HecOrganizationIntegrationService, + provide: OrganizationIntegrationService, + useClass: OrganizationIntegrationService, deps: [OrganizationIntegrationApiService, OrganizationIntegrationConfigurationApiService], }), safeProvider({ diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/integrations/integrations.component.spec.ts b/bitwarden_license/bit-web/src/app/secrets-manager/integrations/integrations.component.spec.ts index 0e8c46c8864..7a02e3fb04e 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/integrations/integrations.component.spec.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/integrations/integrations.component.spec.ts @@ -9,8 +9,7 @@ import {} from "@bitwarden/web-vault/app/shared"; import { JslibModule } from "@bitwarden/angular/jslib.module"; import { SYSTEM_THEME_OBSERVABLE } from "@bitwarden/angular/services/injection-tokens"; -import { DatadogOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/datadog-organization-integration-service"; -import { HecOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/hec-organization-integration-service"; +import { OrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { ThemeType } from "@bitwarden/common/platform/enums"; import { ThemeStateService } from "@bitwarden/common/platform/theming/theme-state.service"; @@ -41,8 +40,7 @@ class MockNewMenuComponent {} describe("IntegrationsComponent", () => { let fixture: ComponentFixture; - const hecOrgIntegrationSvc = mock(); - const datadogOrgIntegrationSvc = mock(); + const orgIntegrationSvc = mock(); const activatedRouteMock = { snapshot: { paramMap: { get: jest.fn() } }, @@ -60,8 +58,7 @@ describe("IntegrationsComponent", () => { { provide: ActivatedRoute, useValue: activatedRouteMock }, { provide: I18nPipe, useValue: mock() }, { provide: I18nService, useValue: mockI18nService }, - { provide: HecOrganizationIntegrationService, useValue: hecOrgIntegrationSvc }, - { provide: DatadogOrganizationIntegrationService, useValue: datadogOrgIntegrationSvc }, + { provide: OrganizationIntegrationService, useValue: orgIntegrationSvc }, ], }).compileComponents(); fixture = TestBed.createComponent(IntegrationsComponent); diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/integrations/integrations.module.ts b/bitwarden_license/bit-web/src/app/secrets-manager/integrations/integrations.module.ts index 04240da3176..bcfbb9b3f2c 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/integrations/integrations.module.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/integrations/integrations.module.ts @@ -1,9 +1,8 @@ import { NgModule } from "@angular/core"; -import { DatadogOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/datadog-organization-integration-service"; -import { HecOrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/hec-organization-integration-service"; import { OrganizationIntegrationApiService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-api.service"; import { OrganizationIntegrationConfigurationApiService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-configuration-api.service"; +import { OrganizationIntegrationService } from "@bitwarden/bit-common/dirt/organization-integrations/services/organization-integration-service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { safeProvider } from "@bitwarden/ui-common"; @@ -23,13 +22,8 @@ import { IntegrationsComponent } from "./integrations.component"; ], providers: [ safeProvider({ - provide: DatadogOrganizationIntegrationService, - useClass: DatadogOrganizationIntegrationService, - deps: [OrganizationIntegrationApiService, OrganizationIntegrationConfigurationApiService], - }), - safeProvider({ - provide: HecOrganizationIntegrationService, - useClass: HecOrganizationIntegrationService, + provide: OrganizationIntegrationService, + useClass: OrganizationIntegrationService, deps: [OrganizationIntegrationApiService, OrganizationIntegrationConfigurationApiService], }), safeProvider({ From 1edff74b30f7dcc928d7cf769e504c0d0d25227f Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Mon, 15 Dec 2025 18:36:16 +0100 Subject: [PATCH 07/67] Use proof of decryption (#17903) --- .../prompt-migration-password.component.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/libs/angular/src/key-management/encrypted-migration/prompt-migration-password.component.ts b/libs/angular/src/key-management/encrypted-migration/prompt-migration-password.component.ts index 060901d68fb..59fec1a6f70 100644 --- a/libs/angular/src/key-management/encrypted-migration/prompt-migration-password.component.ts +++ b/libs/angular/src/key-management/encrypted-migration/prompt-migration-password.component.ts @@ -5,8 +5,7 @@ import { filter, firstValueFrom, map } from "rxjs"; import { JslibModule } from "@bitwarden/angular/jslib.module"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; -import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; -import { VerificationType } from "@bitwarden/common/auth/enums/verification-type"; +import { MasterPasswordUnlockService } from "@bitwarden/common/key-management/master-password/abstractions/master-password-unlock.service"; import { LinkModule, AsyncActionsModule, @@ -39,7 +38,7 @@ import { export class PromptMigrationPasswordComponent { private dialogRef = inject(DialogRef); private formBuilder = inject(FormBuilder); - private uvService = inject(UserVerificationService); + private masterPasswordUnlockService = inject(MasterPasswordUnlockService); private accountService = inject(AccountService); migrationPasswordForm = this.formBuilder.group({ @@ -57,23 +56,21 @@ export class PromptMigrationPasswordComponent { return; } - const { userId, email } = await firstValueFrom( + const { userId } = await firstValueFrom( this.accountService.activeAccount$.pipe( filter((account) => account != null), map((account) => { return { userId: account!.id, - email: account!.email, }; }), ), ); if ( - !(await this.uvService.verifyUserByMasterPassword( - { type: VerificationType.MasterPassword, secret: masterPasswordControl.value }, + !(await this.masterPasswordUnlockService.proofOfDecryption( + masterPasswordControl.value, userId, - email, )) ) { return; From 1d1eca472eff9c639469e5772d61fe1eb75b1b42 Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 18:57:55 +0100 Subject: [PATCH 08/67] Autosync the updated translations (#17937) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/web/src/locales/af/messages.json | 229 +++++++++- apps/web/src/locales/ar/messages.json | 229 +++++++++- apps/web/src/locales/az/messages.json | 247 +++++++++- apps/web/src/locales/be/messages.json | 229 +++++++++- apps/web/src/locales/bg/messages.json | 227 +++++++++- apps/web/src/locales/bn/messages.json | 229 +++++++++- apps/web/src/locales/bs/messages.json | 229 +++++++++- apps/web/src/locales/ca/messages.json | 229 +++++++++- apps/web/src/locales/cs/messages.json | 227 +++++++++- apps/web/src/locales/cy/messages.json | 229 +++++++++- apps/web/src/locales/da/messages.json | 229 +++++++++- apps/web/src/locales/de/messages.json | 253 ++++++++++- apps/web/src/locales/el/messages.json | 229 +++++++++- apps/web/src/locales/en_GB/messages.json | 227 +++++++++- apps/web/src/locales/en_IN/messages.json | 229 +++++++++- apps/web/src/locales/eo/messages.json | 229 +++++++++- apps/web/src/locales/es/messages.json | 229 +++++++++- apps/web/src/locales/et/messages.json | 229 +++++++++- apps/web/src/locales/eu/messages.json | 229 +++++++++- apps/web/src/locales/fa/messages.json | 229 +++++++++- apps/web/src/locales/fi/messages.json | 229 +++++++++- apps/web/src/locales/fil/messages.json | 229 +++++++++- apps/web/src/locales/fr/messages.json | 231 +++++++++- apps/web/src/locales/gl/messages.json | 229 +++++++++- apps/web/src/locales/he/messages.json | 229 +++++++++- apps/web/src/locales/hi/messages.json | 229 +++++++++- apps/web/src/locales/hr/messages.json | 229 +++++++++- apps/web/src/locales/hu/messages.json | 229 +++++++++- apps/web/src/locales/id/messages.json | 229 +++++++++- apps/web/src/locales/it/messages.json | 247 +++++++++- apps/web/src/locales/ja/messages.json | 229 +++++++++- apps/web/src/locales/ka/messages.json | 229 +++++++++- apps/web/src/locales/km/messages.json | 229 +++++++++- apps/web/src/locales/kn/messages.json | 229 +++++++++- apps/web/src/locales/ko/messages.json | 229 +++++++++- apps/web/src/locales/lv/messages.json | 229 +++++++++- apps/web/src/locales/ml/messages.json | 229 +++++++++- apps/web/src/locales/mr/messages.json | 229 +++++++++- apps/web/src/locales/my/messages.json | 229 +++++++++- apps/web/src/locales/nb/messages.json | 229 +++++++++- apps/web/src/locales/ne/messages.json | 229 +++++++++- apps/web/src/locales/nl/messages.json | 229 +++++++++- apps/web/src/locales/nn/messages.json | 229 +++++++++- apps/web/src/locales/or/messages.json | 229 +++++++++- apps/web/src/locales/pl/messages.json | 229 +++++++++- apps/web/src/locales/pt_BR/messages.json | 253 ++++++++++- apps/web/src/locales/pt_PT/messages.json | 229 +++++++++- apps/web/src/locales/ro/messages.json | 229 +++++++++- apps/web/src/locales/ru/messages.json | 227 +++++++++- apps/web/src/locales/si/messages.json | 229 +++++++++- apps/web/src/locales/sk/messages.json | 297 ++++++++++-- apps/web/src/locales/sl/messages.json | 229 +++++++++- apps/web/src/locales/sr_CS/messages.json | 229 +++++++++- apps/web/src/locales/sr_CY/messages.json | 229 +++++++++- apps/web/src/locales/sv/messages.json | 313 ++++++++++--- apps/web/src/locales/ta/messages.json | 229 +++++++++- apps/web/src/locales/te/messages.json | 229 +++++++++- apps/web/src/locales/th/messages.json | 229 +++++++++- apps/web/src/locales/tr/messages.json | 549 ++++++++++++++++------- apps/web/src/locales/uk/messages.json | 229 +++++++++- apps/web/src/locales/vi/messages.json | 363 +++++++++++---- apps/web/src/locales/zh_CN/messages.json | 253 ++++++++++- apps/web/src/locales/zh_TW/messages.json | 247 +++++++++- 63 files changed, 14223 insertions(+), 930 deletions(-) diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json index 923e65fbf99..b5701c01e86 100644 --- a/apps/web/src/locales/af/messages.json +++ b/apps/web/src/locales/af/messages.json @@ -5169,9 +5169,21 @@ "message": "Herstel", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Daar is ou lêeraanhegsels in u kluis wat herstel moet word alvorens u u rekening se enkripsiesleutel kan roteer." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "U rekening se vingerafdrukfrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Suksesvol heruitgenooi" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Suksesvol verwyder" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Kluisuittel is nie binne toegelate omvang nie." }, - "disablePersonalVaultExport": { - "message": "Deaktiveer uitstuur van persoonlike kluis" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Ongeldige bevestigingskode" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO geaktiveer" }, - "disabledSso": { - "message": "SSO gedeaktiveer" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Gekose streekvlag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/ar/messages.json b/apps/web/src/locales/ar/messages.json index 4999534a5f6..807689cebae 100644 --- a/apps/web/src/locales/ar/messages.json +++ b/apps/web/src/locales/ar/messages.json @@ -5169,9 +5169,21 @@ "message": "اصلاح", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "عبارة بصمة حسابك", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "رمز التحقق غير صالح" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json index 409d2a4edde..77df36f5c45 100644 --- a/apps/web/src/locales/az/messages.json +++ b/apps/web/src/locales/az/messages.json @@ -3063,7 +3063,7 @@ "message": "Fayl qoşmaları üçün 1 GB şifrələnmiş saxlama sahəsi." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "Fayl qoşmaları üçün $SIZE$ şifrələnmiş anbar sahəsi.", "placeholders": { "size": { "content": "$1", @@ -3134,13 +3134,13 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "Premium abunəliyiniz bitdi" }, "premiumSubscriptionEndedDesc": { - "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." + "message": "Arxivinizə təkrar erişmək üçün Premium abunəliyinizi yenidən başladın. Təkrar başlatmazdan əvvəl arxivlənmiş elementin detallarına düzəliş etsəniz, həmin element seyfinizə daşınacaq." }, "restartPremium": { - "message": "Restart Premium" + "message": "\"Premium\"u yenidən başlat" }, "additionalStorageGb": { "message": "Əlavə saxlama sahəsi (GB)" @@ -4627,19 +4627,19 @@ "message": "Daha ətraflı" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Şifrələmə ayarlarını güncəlləyərkən bir xəta baş verdi." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Şifrələmə ayarlarınızı güncəlləyin" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Tövsiyə edilən yeni şifrələmə ayarları, hesabınızın təhlükəsizliyini artıracaq. İndi güncəlləmək üçün ana parolunuzu daxil edin." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Davam etmək üçün kimliyinizi təsdiqləyin" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Ana parolunuzu daxil edin" }, "updateSettings": { "message": "Güncəlləmə ayarları" @@ -5169,9 +5169,21 @@ "message": "Düzəlt", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Şifrələməni düzəlt" + }, + "fixEncryptionTooltip": { + "message": "Bu fayl, köhnə bir şifrələmə üsulunu istifadə edir." + }, + "attachmentUpdated": { + "message": "Qoşma güncəllənib" + }, "oldAttachmentsNeedFixDesc": { "message": "Hesabınızın şifrələmə açarını döndərməzdən əvvəl, seyfinizdəki köhnə fayl qoşmalarını düzəltməlisiniz." }, + "itemsTransferred": { + "message": "Elementlər köçürüldü" + }, "yourAccountsFingerprint": { "message": "Hesabınızın barmaq izi ifadəsi", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Uğurla yenidən dəvət edildi." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ istifadəçi təkrar dəvət edildi", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$/$SELECTEDCOUNT$ istifadəçi təkrar dəvət edildi. $LIMIT$ dəvət limitinə görə $EXCLUDEDCOUNT$ dəvət edilmədi.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Uğurla çıxarıldı" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Seyf bitmə vaxtı, icazə verilən aralıqda deyil." }, - "disablePersonalVaultExport": { - "message": "Fərdi seyfi xaricə köçürməni ləğv et" + "disableExport": { + "message": "Xaricə köçürməni sil" }, "disablePersonalVaultExportDescription": { "message": "Üzvlərin fərdi seyflərindən veriləri xaricə köçürməsinə icazə verilməsin." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Yararsız doğrulama kodu" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Aşağıdakı təşkilatların üzvləri üçün artıq ana parol tələb olunmur. Lütfən aşağıdakı domeni təşkilatınızın inzibatçısı ilə təsdiqləyin." - }, "keyConnectorDomain": { "message": "Key Connector domeni" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO fəaldır" }, - "disabledSso": { - "message": "SSO sıradan çıxarılıb" + "ssoTurnedOff": { + "message": "SSO söndürüldü" }, "emailMustLoginWithSso": { "message": "$EMAIL$, Vahid Daxil olma üsulu ilə giriş etməlidir", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO girişi tələb olunur" }, + "emailRequiredForSsoLogin": { + "message": "SSO üçün e-poçt tələb olunur" + }, "selectedRegionFlag": { "message": "Seçilmiş bölgə bayrağı" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Ailə üzvlüyü" }, - "planDescPremium": { - "message": "Tam onlayn təhlükəsizlik" + "advancedOnlineSecurity": { + "message": "Qabaqcıl onlayn təhlükəsizlik" }, "planDescFamiliesV2": { "message": "Ailəniz üçün Premium təhlükəsizlik" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Heç bir kritik tətbiq seçilməyib" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "İstifadəçi doğrulaması uğursuz oldu." + }, + "recoveryDeleteCiphersTitle": { + "message": "Geri qaytarıla bilməyən seyf elementlərini sil" + }, + "recoveryDeleteCiphersDesc": { + "message": "Seyfinizdəki bəzi elementlər geri qaytarıla bilmədi. Bu geri qaytarıla bilməyən elementləri seyfinizdən silmək istəyirsiniz?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Geri qaytarıla bilməyən qovluqları sil" + }, + "recoveryDeleteFoldersDesc": { + "message": "Qovluqlarınızdan bəziləri geri qaytarıla bilmədi. Bu geri qaytarıla bilməyən qovluqları seyfinizdən silmək istəyirsiniz?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Şifrələmə açarını əvəz et" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Public-key şifrələmə açar cütü geri qaytarıla bilmədi. Şifrələmə açarınızı yeni bir açar cütü ilə əvəz etmək istəyirsiniz? Bu proses, mövcud fövqəladə hal və təşkilat üzvlüyünüzü yenidən qurmağınızı tələb edir." + }, + "recoveryStepSyncTitle": { + "message": "Verilər sinxronlaşdırılır" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Şifrələmə açarı tamlığı doğrulanır" + }, + "recoveryStepUserInfoTitle": { + "message": "İstifadəçi məlumatı doğrulanır" + }, + "recoveryStepCipherTitle": { + "message": "Seyf elementinin tamlığı doğrulanır" + }, + "recoveryStepFoldersTitle": { + "message": "Qovluq tamlığı doğrulanır" + }, + "dataRecoveryTitle": { + "message": "Veri geri qaytarma və diaqnostika" + }, + "dataRecoveryDescription": { + "message": "Hesabınızla bağlı problemləri diaqnostika etmək və bərpa etmək üçün veri geri qaytarma alətini istifadə edin. Diaqnostika prosesini işə saldıqdan sonra, dəstək üçün diaqnostika log-larını saxlama və aşkarlanan problemləri həll etmə seçimləriniz olacaq." + }, + "runDiagnostics": { + "message": "Diaqnostikanı işə sal" + }, + "repairIssues": { + "message": "Problemləri həll et" + }, + "saveDiagnosticLogs": { + "message": "Diaqnostika log-larını saxla" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Bu ayar, təşkilatınız tərəfindən idarə olunur." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Təşkilatınız, maksimum seyf bitmə vaxtını $HOURS$ saat $MINUTES$ dəqiqə olaraq ayarladı.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Təşkilatınız, seansın ilkin bitmə vaxtını Brauzer təzələnəndə olaraq təyin etdi." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maksimum bitmə vaxtı $HOURS$ saat $MINUTES$ dəqiqə dəyərini aşa bilməz", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Brauzer təzələnəndə" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Vaxt bitmə əməliyyatınızı dəyişdirmək üçün bir kilid açma üsulu qurun." + }, + "leaveConfirmationDialogTitle": { + "message": "Tərk etmək istədiyinizə əminsiniz?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Rədd cavabı versəniz, fərdi elementləriniz hesabınızda qalacaq, paylaşılan elementlərə və təşkilat özəlliklərinə erişimi itirəcəksiniz." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Erişimi təkrar qazanmaq üçün admininizlə əlaqə saxlayın." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Tərk et: $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Seyfimi necə idarə edim?" + }, + "transferItemsToOrganizationTitle": { + "message": "Elementləri bura köçür: $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$, təhlükəsizlik və riayətlilik üçün bütün elementlərin təşkilata aid olmasını tələb edir. Elementlərinizin sahibliyini transfer etmək üçün qəbul edin.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Transferi qəbul et" + }, + "declineAndLeave": { + "message": "Rədd et və tərk et" + }, + "whyAmISeeingThis": { + "message": "Bunu niyə görürəm?" } } diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json index d0de973f30f..c670f82a00d 100644 --- a/apps/web/src/locales/be/messages.json +++ b/apps/web/src/locales/be/messages.json @@ -5169,9 +5169,21 @@ "message": "Выправіць", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "У вашым сховішчы ёсць старыя далучаныя файлы, якія неабходна выправіць перад тым, як змяніць ключ шыфравання ўліковага запісу." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Фраза адбітку пальца вашага ўліковага запісу", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Паспяхова паўторна запрошаны." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Паспяхова выдалена" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Час чакання сховішча па-за межамі дазволенага дыяпазону." }, - "disablePersonalVaultExport": { - "message": "Выдаліць экспартаванне асабістага сховішча" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Не дазваляць удзельнікам экспартаваць даныя з іх індывідуальнага сховішча." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Памылковы праверачны код" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO уключана" }, - "disabledSso": { - "message": "SSO адключаны" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Сцяг выбранага рэгіёна" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/bg/messages.json b/apps/web/src/locales/bg/messages.json index e058bdee1bd..3e3451084fc 100644 --- a/apps/web/src/locales/bg/messages.json +++ b/apps/web/src/locales/bg/messages.json @@ -5169,9 +5169,21 @@ "message": "Поправяне", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Поправяне на шифроването" + }, + "fixEncryptionTooltip": { + "message": "Този файл използва остарял метод на шифроване." + }, + "attachmentUpdated": { + "message": "Прикаченият файл е актуализиран" + }, "oldAttachmentsNeedFixDesc": { "message": "В трезора ви има стари прикачени файлове. Те трябва да бъдат поправени, за да можете да смените ключа за шифриране на абонамента." }, + "itemsTransferred": { + "message": "Елементите са прехвърлени" + }, "yourAccountsFingerprint": { "message": "Уникална фраза, идентифицираща абонамента ви", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Успешно изпратени наново покани." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ повторно поканени потребители", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ от $SELECTEDCOUNT$ повторно поканени потребители. $EXCLUDEDCOUNT$ не бяха поканени, поради ограничението от $LIMIT$.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Успешно премахване" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Времето за изчакване на трезора не е в позволения интервал." }, - "disablePersonalVaultExport": { - "message": "Забраняване на изнасянето на личния трезор" + "disableExport": { + "message": "Премахване на изнесеното" }, "disablePersonalVaultExportDescription": { "message": "Да не се разрешава на членовете да изнасят данните от собствените си трезори." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Грешен код за потвърждаване" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "За членовете на следната организация вече не се изисква главна парола. Потвърдете домейна по-долу с администратора на организацията си." - }, "keyConnectorDomain": { "message": "Домейн на конектора за ключове" }, @@ -7154,7 +7189,7 @@ "enabledSso": { "message": "Еднократното удостоверяване е включено" }, - "disabledSso": { + "ssoTurnedOff": { "message": "Еднократното удостоверяване е изключено" }, "emailMustLoginWithSso": { @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Необходимо е вписване чрез еднократно удостоверяване" }, + "emailRequiredForSsoLogin": { + "message": "За еднократно удостоверяване е необходима е-поща" + }, "selectedRegionFlag": { "message": "Знаме на избрания регион" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Членство за семейства" }, - "planDescPremium": { - "message": "Пълна сигурност в Интернет" + "advancedOnlineSecurity": { + "message": "Разширена сигурност в Интернет" }, "planDescFamiliesV2": { "message": "Допълнителна защита за Вашето семейство" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Вашата организация вече не използва главни пароли за вписване в Битуорден. За да продължите, потвърдете организацията и домейна." + }, + "continueWithLogIn": { + "message": "Продължаване с вписването" + }, + "doNotContinue": { + "message": "Не продължавам" + }, + "domain": { + "message": "Домейн" + }, + "keyConnectorDomainTooltip": { + "message": "Този домейн ще съхранява ключовете за шифроване на акаунта Ви, така че се уверете, че му имате доверие. Ако имате съмнения, свържете се с администратора си." + }, + "verifyYourOrganization": { + "message": "Потвърдете организацията си, за да се впишете" + }, + "organizationVerified": { + "message": "Организацията е потвърдена" + }, + "domainVerified": { + "message": "Домейнът е потвърден" + }, + "leaveOrganizationContent": { + "message": "Ако не потвърдите организацията, достъпът Ви до нея ще бъде преустановен." + }, + "leaveNow": { + "message": "Напускане сега" + }, + "verifyYourDomainToLogin": { + "message": "Потвърдете домейна си, за да се впишете" + }, + "verifyYourDomainDescription": { + "message": "За да продължите с вписването, потвърдете този домейн." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "За да продължите с вписването, потвърдете организацията и домейна." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Няма избрани важни приложения" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "Проверката на потребителя беше неуспешна." + }, + "recoveryDeleteCiphersTitle": { + "message": "Изтриване на невъзстановимите елементи от трезора" + }, + "recoveryDeleteCiphersDesc": { + "message": "Някои от елементите в трезора не могат да бъдат възстановени. Искате ли да ги изтриете от трезора си?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Изтриване на невъзстановимите папки" + }, + "recoveryDeleteFoldersDesc": { + "message": "Някои от папките не могат да бъдат възстановени. Искате ли да ги изтриете от трезора си?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Подмяна на ключа за шифроване" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Вашата двойка ключове за шифроване не може да бъде възстановена. Искате ли да замените ключа си за шифроване с нова двойка? Ще трябва да настроите аварийния достъп отново, както и членствата си в организации." + }, + "recoveryStepSyncTitle": { + "message": "Синхронизиране на данните…" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Потвърждаване на целостта на ключа за шифроване" + }, + "recoveryStepUserInfoTitle": { + "message": "Потвърждаване на информацията за потребителя" + }, + "recoveryStepCipherTitle": { + "message": "Потвърждаване на целостта на данните в трезора" + }, + "recoveryStepFoldersTitle": { + "message": "Потвърждаване на целостта на папките" + }, + "dataRecoveryTitle": { + "message": "Възстановяване и диагностика на данните" + }, + "dataRecoveryDescription": { + "message": "Използвайте инструмента за възстановяване на данните, за да направите проверка и поправка, ако има проблеми с акаунта Ви. След изпълнението на диагностиката ще имате възможност да запазите нейния журнал, в случай, че са нужни на поддръжката, както и ще можете да опитате да поправите откритите проблеми." + }, + "runDiagnostics": { + "message": "Стартиране на диагностиката" + }, + "repairIssues": { + "message": "Поправяне на проблемите" + }, + "saveDiagnosticLogs": { + "message": "Запазване на журнала от диагностиката" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Тази настройка се управлява от организацията Ви." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Организацията Ви е настроила максималното разрешено време за достъп на [%1$i] час(а) и [%2$i] минути.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Организацията Ви е настроила стандартното разрешено време за достъп да бъде до презареждане на страницата в браузъра." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Максималното време на достъп не може да превишава $HOURS$ час(а) и $MINUTES$ минути", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "При презареждане на страницата в браузъра" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Задайте метод за отключване, за да може да промените действието при изтичане на времето за достъп" + }, + "leaveConfirmationDialogTitle": { + "message": "Наистина ли искате да напуснете?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ако откажете, Вашите собствени елементи ще останат в акаунта Ви, но ще загубите достъп до споделените елементи и функционалностите на организацията." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Свържете се с администратор, за да получите достъп отново." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Напускане на $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Как да управлявам трезора си?" + }, + "transferItemsToOrganizationTitle": { + "message": "Прехвърляне на елементи към $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ изисква всички елементи да станат притежание на организацията, за по-добра сигурност и съвместимост. Изберете, че приемате, за да прехвърлите собствеността на елементите си към организацията.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Приемане на прехвърлянето" + }, + "declineAndLeave": { + "message": "Отказване и напускане" + }, + "whyAmISeeingThis": { + "message": "Защо виждам това?" } } diff --git a/apps/web/src/locales/bn/messages.json b/apps/web/src/locales/bn/messages.json index 915f2bff970..4e8c53b1598 100644 --- a/apps/web/src/locales/bn/messages.json +++ b/apps/web/src/locales/bn/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/bs/messages.json b/apps/web/src/locales/bs/messages.json index 4c3005bda33..defb970c237 100644 --- a/apps/web/src/locales/bs/messages.json +++ b/apps/web/src/locales/bs/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/ca/messages.json b/apps/web/src/locales/ca/messages.json index 8b3e85e936e..9b8bb1fce7d 100644 --- a/apps/web/src/locales/ca/messages.json +++ b/apps/web/src/locales/ca/messages.json @@ -5169,9 +5169,21 @@ "message": "Corregeix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Hi ha arxius adjunts antics a la vostra caixa forta que s'han de corregir abans de poder rotar la clau de xifratge del vostre compte." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Frase d'empremta digital del vostre compte", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Tornat a convidar correctament." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Suprimit correctament" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "El temps d'espera de la caixa forta no es troba dins de l'interval permès." }, - "disablePersonalVaultExport": { - "message": "Inhabilita l'exportació de la caixa forta personal" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "No permetes que els membres exporten dades des de la seua caixa forta individual." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Codi de verificació no vàlid" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO habilitat" }, - "disabledSso": { - "message": "SSO inhabilitat" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Inici de sessió SSO necessari" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Bandera de la regió seleccionada" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/cs/messages.json b/apps/web/src/locales/cs/messages.json index aceb40291df..4eacb212138 100644 --- a/apps/web/src/locales/cs/messages.json +++ b/apps/web/src/locales/cs/messages.json @@ -5169,9 +5169,21 @@ "message": "Opravit", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Opravit šifrování" + }, + "fixEncryptionTooltip": { + "message": "Tento soubor používá zastaralou šifrovací metodu." + }, + "attachmentUpdated": { + "message": "Příloha byla aktualizována" + }, "oldAttachmentsNeedFixDesc": { "message": "Ve Vašem trezoru jsou staré přílohy vyžadující opravu před změnou šifrovacího klíče k Vašemu účtu." }, + "itemsTransferred": { + "message": "Převedené položky" + }, "yourAccountsFingerprint": { "message": "Fráze otisku prstu Vašeho účtu", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Znovu úspěšně pozváno" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ uživatelů bylo znovu pozváno", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ z $SELECTEDCOUNT$ uživatelů bylo znovu pozváno. $EXCLUDEDCOUNT$ nebylo pozváno z důvodu limitu pozvánky: $LIMIT$.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Úspěšně odebráno" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Časový limit trezoru není v rámci povoleného rozsahu." }, - "disablePersonalVaultExport": { - "message": "Odebrat osobní export trezoru" + "disableExport": { + "message": "Odebrat export" }, "disablePersonalVaultExportDescription": { "message": "Nedovolí, aby členové exportovali svá osobní data trezoru." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Neplatný ověřovací kód" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hlavní heslo již není vyžadováno pro členy následující organizace. Potvrďte níže uvedenou doménu u správce Vaší organizace." - }, "keyConnectorDomain": { "message": "Doména Key Connectoru" }, @@ -7154,7 +7189,7 @@ "enabledSso": { "message": "SSO je zapnuto" }, - "disabledSso": { + "ssoTurnedOff": { "message": "SSO je vypnuto" }, "emailMustLoginWithSso": { @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Přihlášení SSO je povinné" }, + "emailRequiredForSsoLogin": { + "message": "Pro SSO je vyžadován e-mail" + }, "selectedRegionFlag": { "message": "Vlajka zvoleného regionu" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Členství v rodinách" }, - "planDescPremium": { - "message": "Dokončit online zabezpečení" + "advancedOnlineSecurity": { + "message": "Pokročilé zabezpečení online" }, "planDescFamiliesV2": { "message": "Prémiové zabezpečení pro Vaši rodinu" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Vaše organizace již k přihlášení do Bitwardenu nepoužívá hlavní hesla. Chcete-li pokračovat, ověřte organizaci a doménu." + }, + "continueWithLogIn": { + "message": "Pokračovat s přihlášením" + }, + "doNotContinue": { + "message": "Nepokračovat" + }, + "domain": { + "message": "Doména" + }, + "keyConnectorDomainTooltip": { + "message": "Tato doména uloží šifrovací klíče Vašeho účtu, takže se ujistěte, že jí věříte. Pokud si nejste jisti, kontaktujte Vašeho správce." + }, + "verifyYourOrganization": { + "message": "Ověřte svou organizaci pro přihlášení" + }, + "organizationVerified": { + "message": "Organizace byla ověřena" + }, + "domainVerified": { + "message": "Doména byla ověřena" + }, + "leaveOrganizationContent": { + "message": "Pokud neověříte svou organizaci, Váš přístup k organizaci bude zrušen." + }, + "leaveNow": { + "message": "Opustit hned" + }, + "verifyYourDomainToLogin": { + "message": "Ověřte svou doménu pro přihlášení" + }, + "verifyYourDomainDescription": { + "message": "Chcete-li pokračovat v přihlášení, ověřte tuto doménu." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Chcete-li pokračovat v přihlášení, ověřte organizaci a doménu." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Nejsou vybrány žádné kritické aplikace" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "Ověření uživatele se nezdařilo." + }, + "recoveryDeleteCiphersTitle": { + "message": "Smazat neobnovitelné položky trezoru" + }, + "recoveryDeleteCiphersDesc": { + "message": "Některé z Vašich trezorů nelze obnovit. Chcete smazat tyto neobnovitelné položky z Vašeho trezoru?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Smazat neobnovitelné složky" + }, + "recoveryDeleteFoldersDesc": { + "message": "Některé z Vašich složek nelze obnovit. Chcete smazat tyto neobnovitelné složky z Vašeho trezoru?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Nahradit šifrovací klíč" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Nelze obnovit Váš pár šifrovacích klíčů veřejného klíče. Chcete nahradit Váš šifrovací klíč novým párem klíčů? To bude vyžadovat, abyste znovu nastavili stávající nouzový přístup a členství v organizaci." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizování dat" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Ověřování integrity šifrovacího klíče" + }, + "recoveryStepUserInfoTitle": { + "message": "Ověřování informací o uživateli" + }, + "recoveryStepCipherTitle": { + "message": "Ověřování integrity položky trezoru" + }, + "recoveryStepFoldersTitle": { + "message": "Ověřování integrity složky" + }, + "dataRecoveryTitle": { + "message": "Obnova dat a diagnostika" + }, + "dataRecoveryDescription": { + "message": "Použijte nástroj pro obnovení dat k diagnostice a opravě problémů s Vaším účtem. Po spuštění diagnostiky máte možnost uložit diagnostické protokoly pro podporu a možnost opravit všechny zjištěné problémy." + }, + "runDiagnostics": { + "message": "Spustit diagnostiku" + }, + "repairIssues": { + "message": "Problémy s opravou" + }, + "saveDiagnosticLogs": { + "message": "Uložit diagnostické protokoly" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Tato nastavení je spravováno Vaší organizací." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Vaše organizace nastavila maximální časový limit relace na $HOURS$ hodin a $MINUTES$ minut.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Vaše organizace nastavila výchozí časový limit relace na Při obnovení prohlížeče." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximální časový limit nesmí překročit $HOURS$ hodin a $MINUTES$ minut", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Při obnovení prohlížeče" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Nastavte metodu odemknutí, abyste změnili akci při vypršení časového limitu" + }, + "leaveConfirmationDialogTitle": { + "message": "Opravdu chcete odejít?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Odmítnutím zůstanou Vaše osobní položky ve Vašem účtu, ale ztratíte přístup ke sdíleným položkám a funkcím organizace." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Obraťte se na svého správce, abyste znovu získali přístup." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Opustit $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Jak mohu spravovat svůj trezor?" + }, + "transferItemsToOrganizationTitle": { + "message": "Přenést položky do $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ vyžaduje, aby byly všechny položky vlastněny organizací z důvodu bezpečnosti a shody. Klepnutím na tlačítko pro převod vlastnictví Vašich položek.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Přijmout převod" + }, + "declineAndLeave": { + "message": "Odmítnout a opustit" + }, + "whyAmISeeingThis": { + "message": "Proč se mi toto zobrazuje?" } } diff --git a/apps/web/src/locales/cy/messages.json b/apps/web/src/locales/cy/messages.json index 108b1ebe23a..f8839744e98 100644 --- a/apps/web/src/locales/cy/messages.json +++ b/apps/web/src/locales/cy/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json index 904dc69a0e3..3b583416b25 100644 --- a/apps/web/src/locales/da/messages.json +++ b/apps/web/src/locales/da/messages.json @@ -5169,9 +5169,21 @@ "message": "Reparér", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Der er gamle filvedhæftninger i din boks, der skal repareres, før du kan rotere din kontos krypteringsnøgle." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Din kontos fingeraftrykssætning", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Hermed geninviteret." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Hermed fjernet" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Boks-timeout er ikke inden for det tilladte interval." }, - "disablePersonalVaultExport": { - "message": "Fjern individuel bokseksport" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Tillad ikke medlemmer at eksportere data fra deres individuelle bokse." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Ugyldig bekræftelseskode" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO aktiveret" }, - "disabledSso": { - "message": "SSO deaktiveret" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO-login er obligatorisk" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Valgte områdeflag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index 6c354cd9064..6eb0b1d5dc7 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -15,13 +15,13 @@ "message": "Keine kritischen Anwendungen gefährdet" }, "accessIntelligence": { - "message": "Zugriff auf Informationen" + "message": "Access Intelligence" }, "passwordRisk": { "message": "Passwort-Risiko" }, "noEditPermissions": { - "message": "Du hast keine Berechtigung, diesen Eintrag zu bearbeiten" + "message": "Du bist nicht berechtigt, diesen Eintrag zu bearbeiten" }, "reviewAtRiskPasswords": { "message": "Überprüfe gefährdete Passwörter (schwach, kompromittiert oder wiederverwendet) in allen Anwendungen. Wähle deine kritischsten Anwendungen aus, um die Sicherheitsmaßnahmen für deine Benutzer zu priorisieren, um gefährdete Passwörter zu beseitigen." @@ -182,7 +182,7 @@ "message": "Keine Daten gefunden" }, "noDataInOrgDescription": { - "message": "Importiere die Zugangsdaten deiner Organisation, um mit der Zugangsintelligenz zu beginnen. Sobald du dies getan hast, kannst du:" + "message": "Importiere die Zugangsdaten deiner Organisation, um mit Access Intelligence zu beginnen. Sobald du dies getan hast, kannst du:" }, "feature1Title": { "message": "Anwendungen als kritisch markieren" @@ -3063,7 +3063,7 @@ "message": "1 GB verschlüsselter Speicherplatz für Dateianhänge." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ verschlüsselter Speicher für Dateianhänge.", "placeholders": { "size": { "content": "$1", @@ -3134,13 +3134,13 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "Dein Premium-Abonnement ist abgelaufen" }, "premiumSubscriptionEndedDesc": { - "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." + "message": "Starte dein Premium-Abonnement neu, um den Zugriff auf dein Archiv wiederherzustellen. Wenn du die Details für einen archivierten Eintrag vor dem Neustart bearbeitest, wird er wieder zurück in deinen Tresor verschoben." }, "restartPremium": { - "message": "Restart Premium" + "message": "Premium neu starten" }, "additionalStorageGb": { "message": "Zusätzlicher Speicher (GB)" @@ -4479,7 +4479,7 @@ "message": "Browser aktualisieren" }, "generatingYourAccessIntelligence": { - "message": "Deine Zugangsintelligenz wird generiert..." + "message": "Deine Access Intelligence wird generiert..." }, "fetchingMemberData": { "message": "Mitgliedsdaten werden abgerufen..." @@ -4627,19 +4627,19 @@ "message": "Erfahre mehr" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Beim Aktualisieren der Verschlüsselungseinstellungen ist ein Fehler aufgetreten." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Aktualisiere deine Verschlüsselungseinstellungen" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Die neuen empfohlenen Verschlüsselungseinstellungen verbessern deine Kontosicherheit. Gib dein Master-Passwort ein, um sie zu aktualisieren." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Bestätige deine Identität, um fortzufahren" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Gib dein Master-Passwort ein" }, "updateSettings": { "message": "Einstellungen aktualisieren" @@ -5169,9 +5169,21 @@ "message": "Reparieren", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Verschlüsselung reparieren" + }, + "fixEncryptionTooltip": { + "message": "Diese Datei verwendet eine veraltete Verschlüsselungsmethode." + }, + "attachmentUpdated": { + "message": "Anhang aktualisiert" + }, "oldAttachmentsNeedFixDesc": { "message": "Es gibt alte Dateianhänge in deinem Tresor, die repariert werden müssen, bevor du deinen Verschlüsselungsschlüssel erneuern kannst." }, + "itemsTransferred": { + "message": "Einträge übertragen" + }, "yourAccountsFingerprint": { "message": "Fingerabdruck-Phrase deines Kontos", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Erfolgreich erneut eingeladen" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Erfolgreich entfernt" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Tresor-Timeout ist außerhalb des zulässigen Bereichs." }, - "disablePersonalVaultExport": { - "message": "Persönlichen Tresor-Export deaktivieren" + "disableExport": { + "message": "Export entfernen" }, "disablePersonalVaultExportDescription": { "message": "Mitgliedern nicht erlauben, Daten aus ihrem persönlichen Tresor zu exportieren." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Ungültiger Verifizierungscode" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Für Mitglieder der folgenden Organisation ist kein Master-Passwort mehr erforderlich. Bitte bestätige die folgende Domain bei deinem Organisations-Administrator." - }, "keyConnectorDomain": { "message": "Key Connector-Domain" }, @@ -7154,7 +7189,7 @@ "enabledSso": { "message": "SSO aktiviert" }, - "disabledSso": { + "ssoTurnedOff": { "message": "SSO deaktiviert" }, "emailMustLoginWithSso": { @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO-Anmeldung ist erforderlich" }, + "emailRequiredForSsoLogin": { + "message": "Für SSO ist eine E-Mail-Adresse erforderlich" + }, "selectedRegionFlag": { "message": "Flagge der ausgewählten Region" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families-Mitgliedschaft" }, - "planDescPremium": { - "message": "Umfassende Online-Sicherheit" + "advancedOnlineSecurity": { + "message": "Erweiterte Online-Sicherheit" }, "planDescFamiliesV2": { "message": "Premium-Sicherheit für deine Familie" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Deine Organisation verwendet keine Master-Passwörter mehr, um sich bei Bitwarden anzumelden. Verifiziere die Organisation und Domain, um fortzufahren." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organisation verifiziert" + }, + "domainVerified": { + "message": "Domain verifiziert" + }, + "leaveOrganizationContent": { + "message": "Wenn du deine Organisation nicht verifizierst, wird dein Zugriff auf die Organisation widerrufen." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Es sind keine kritischen Anwendungen ausgewählt" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "Benutzerverifizierung fehlgeschlagen." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Verschlüsselungsschlüssel ersetzen" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Diese Einstellung wird von deiner Organisation verwaltet." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Deine Organisation hat das maximale Sitzungs-Timeout auf $HOURS$ Stunde(n) und $MINUTES$ Minute(n) festgelegt.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Deine Organisation hat das Standard-Sitzungs-Timeout auf \"Bei Browser-Aktualisierung\" gesetzt." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Das maximale Timeout darf $HOURS$ Stunde(n) und $MINUTES$ Minute(n) nicht überschreiten", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Bei Browser-Aktualisierung" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Stell eine Entsperrmethode ein, um deine Timeout-Aktion zu ändern" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Wenn du ablehnst, bleiben deine persönlichen Einträge in deinem Konto erhalten, aber du wirst den Zugriff auf geteilte Einträge und Organisationsfunktionen verlieren." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Übertragung annehmen" + }, + "declineAndLeave": { + "message": "Ablehnen und verlassen" + }, + "whyAmISeeingThis": { + "message": "Warum wird mir das angezeigt?" } } diff --git a/apps/web/src/locales/el/messages.json b/apps/web/src/locales/el/messages.json index f6e8abfd612..f8efb8f78f8 100644 --- a/apps/web/src/locales/el/messages.json +++ b/apps/web/src/locales/el/messages.json @@ -5169,9 +5169,21 @@ "message": "Επιδιόρθωση", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Υπάρχουν στο παρελθόν παλιά συνημμένα αρχεία που πρέπει να διορθωθούν πριν την περιστροφή κλειδιού κρυπτογράφησης του λογαριασμού σας." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Φράση δακτυλικών αποτυπωμάτων λογαριασμού", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Επιτυχής ανάκληση." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Καταργήθηκε με επιτυχία" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Το χρονικό όριο λήξης του θησαυ/κίου δεν είναι εντός του επιτρεπόμενου εύρους." }, - "disablePersonalVaultExport": { - "message": "Απενεργοποίηση Εξαγωγής Προσωπικών Vault" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Μη έγκυρος κωδικός επαλήθευσης" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "Ενεργοποιημένο SSO" }, - "disabledSso": { - "message": "Απενεργοποιημένο SSO" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Απαιτείται σύνδεση SSO" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json index be621369c77..cdcf727df78 100644 --- a/apps/web/src/locales/en_GB/messages.json +++ b/apps/web/src/locales/en_GB/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organisation. Please confirm the domain below with your organisation administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,7 +7189,7 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { + "ssoTurnedOff": { "message": "SSO turned off" }, "emailMustLoginWithSso": { @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organisation is no longer using master passwords to log into Bitwarden. To continue, verify the organisation and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organisation to log in" + }, + "organizationVerified": { + "message": "Organisation verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organisation, your access to the organisation will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organisation and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organisation memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronising data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organisation has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organisation has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organisation features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organisation for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/en_IN/messages.json b/apps/web/src/locales/en_IN/messages.json index aafb9a01f3e..ba0927f73fc 100644 --- a/apps/web/src/locales/en_IN/messages.json +++ b/apps/web/src/locales/en_IN/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organisation. Please confirm the domain below with your organisation administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organisation is no longer using master passwords to log into Bitwarden. To continue, verify the organisation and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organisation to log in" + }, + "organizationVerified": { + "message": "Organisation verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organisation, your access to the organisation will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organisation and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organisation memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronising data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organisation has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organisation has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organisation features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organisation for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/eo/messages.json b/apps/web/src/locales/eo/messages.json index 220d9492c67..dbccabfe6d7 100644 --- a/apps/web/src/locales/eo/messages.json +++ b/apps/web/src/locales/eo/messages.json @@ -5169,9 +5169,21 @@ "message": "Ripari", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Estas malnovaj dosieraj aldonaĵoj en via trezorejo, kiuj devas esti riparitaj antaŭ ol vi povas turni la ĉifran ŝlosilon de via konto." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Fingrospuro de via konto", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO-salutado estas bezonata" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Elektis flagon de regiono" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json index b0a3716cf60..218cfea5617 100644 --- a/apps/web/src/locales/es/messages.json +++ b/apps/web/src/locales/es/messages.json @@ -5169,9 +5169,21 @@ "message": "Arreglar", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Hay archivos adjuntos antiguos en la caja fuerte que necesitan ser corregidos antes de poder rotar la clave de encriptación de su cuenta." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Frase de la huella digital de su cuenta", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvitado con éxito." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Eliminado con éxito" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "El tiempo de espera de la caja fuerte no está dentro del rango permitido." }, - "disablePersonalVaultExport": { - "message": "Desactivar exportación de la caja fuerte personal" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "No permita a los miembros exportar datos de su caja fuerte individual." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Código de verificación no válido" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO habilitado" }, - "disabledSso": { - "message": "SSO desactivado" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Región seleccionada" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/et/messages.json b/apps/web/src/locales/et/messages.json index 1388e25bc13..df1baf98bc2 100644 --- a/apps/web/src/locales/et/messages.json +++ b/apps/web/src/locales/et/messages.json @@ -5169,9 +5169,21 @@ "message": "Paranda", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Hoidlas on vanu failimanuseid, mida peab enne konto krüpteerimise võtme roteerimist parandama." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Sinu konto unikaalne sõnajada", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Edukalt uuesti kutsutud." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Edukalt eemaldatud" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Hoidla ajalõpp pole lubatud piirides." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Vale kinnituskood" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO sisse lülitatud" }, - "disabledSso": { - "message": "SSO välja lülitatud" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json index c2fa69d56b8..e633cefdbf0 100644 --- a/apps/web/src/locales/eu/messages.json +++ b/apps/web/src/locales/eu/messages.json @@ -5169,9 +5169,21 @@ "message": "Konpondu", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Kutxa gotorrean eranskin zaharrak daude, eta konpondu beharra dute zure kontuko zifratze-gakoa berritu ahal izateko." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Zure kontuaren hatz-marka esaldia", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Behar bezala bergonbidatua." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Behar bezala kendua" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Kutxa gotorreko itxaronaldia ez dago baimendutako tartean." }, - "disablePersonalVaultExport": { - "message": "Desgaitu kutxa gotor pertsonalaren esportazioa" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Egiaztatze-kodea ez da baliozkoa" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO gaituta" }, - "disabledSso": { - "message": "SSO desgaituta" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/fa/messages.json b/apps/web/src/locales/fa/messages.json index c8623050394..5039584050d 100644 --- a/apps/web/src/locales/fa/messages.json +++ b/apps/web/src/locales/fa/messages.json @@ -5169,9 +5169,21 @@ "message": "اصلاح", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "پرونده‌های پیوستی قدیمی در گاوصندوق شما وجود دارد که قبل از اینکه بتوانید کلید رمزگذاری حساب خود را بچرخانید باید اصلاح شوند." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "عبارت اثر انگشت حساب شما", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "با موفقیت مجدد دعوت شد" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "با موفقیت حذف شد" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "مهلت زمانی گاوصندوق در محدوده مجاز نیست." }, - "disablePersonalVaultExport": { - "message": "حذف برون ریزی گاوصندوق شخصی" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "به اعضا اجازه ندهید که داده‌های گاوصندوق شخصی خود را برون ریزی کنند." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "کد تأیید نامعتبر است" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "برای اعضای سازمان زیر، کلمه عبور اصلی دیگر لازم نیست. لطفاً دامنه زیر را با مدیر سازمان خود تأیید کنید." - }, "keyConnectorDomain": { "message": "دامنه رابط کلید" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO روشن شد" }, - "disabledSso": { - "message": "SSO روشن شد" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "ورود از طریق SSO الزامی است" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "پرچم منطقه انتخاب شد" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json index 181c8d4f125..8a70ab58fde 100644 --- a/apps/web/src/locales/fi/messages.json +++ b/apps/web/src/locales/fi/messages.json @@ -5169,9 +5169,21 @@ "message": "Korjaa", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Holvissasi on vanhoja tiedostoliitteitä, jotka on korjattava ennen kuin voit uudistaa tilisi salausavaimen." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Tilisi tunnistelause", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Uuudelleenkutsu onnistui" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Poisto onnistui." }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Holvin aikakatkaisu ei ole sallitun alueen sisällä." }, - "disablePersonalVaultExport": { - "message": "Estä yksityisen holvin vienti" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Älä salli jäsenten viedä henkilökohtaisten holviensa tietoja." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Virheellinen todennuskoodi" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "Kertakirjautuminen otettiin käyttöön" }, - "disabledSso": { - "message": "Kertakirjautuminen poistettiin käytöstä" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Kertakirjautuminen vaaditaan" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Valitun alueen lippu" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/fil/messages.json b/apps/web/src/locales/fil/messages.json index f3542368044..cd201f852ef 100644 --- a/apps/web/src/locales/fil/messages.json +++ b/apps/web/src/locales/fil/messages.json @@ -5169,9 +5169,21 @@ "message": "Ayusin ang", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "May mga lumang file attachment sa iyong vault na kailangang ayusin bago mo maiikot ang encryption key ng iyong account." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Ang fingerprint pala ng iyong account", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Matagumpay na naimbitahan muli" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Matagumpay na tinanggal" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Hindi pinapayagan ang vault timeout." }, - "disablePersonalVaultExport": { - "message": "Alisin ang indibidwal na pag export ng vault" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Maling verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "Nakabukas ang SSO" }, - "disabledSso": { - "message": "Nakabukas ang SSO" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/fr/messages.json b/apps/web/src/locales/fr/messages.json index e5fcf929f0d..311f8912137 100644 --- a/apps/web/src/locales/fr/messages.json +++ b/apps/web/src/locales/fr/messages.json @@ -5075,7 +5075,7 @@ "message": "4 heures" }, "onRefresh": { - "message": "Au rechargement de la page" + "message": "À l'actualisation du navigateur" }, "dateUpdated": { "message": "Mis à jour", @@ -5169,9 +5169,21 @@ "message": "Réparer", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Corriger le chiffrement" + }, + "fixEncryptionTooltip": { + "message": "Ce fichier utilise une méthode de chiffrement obsolète." + }, + "attachmentUpdated": { + "message": "Pièce jointe mise à jour" + }, "oldAttachmentsNeedFixDesc": { "message": "Il y a d'anciennes pièces jointes dans votre coffre qui doivent être réparées avant que vous ne puissiez régénérer la clé de chiffrement de votre compte." }, + "itemsTransferred": { + "message": "Éléments transférés" + }, "yourAccountsFingerprint": { "message": "Phrase d'empreinte de votre compte", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Réinvité avec succès." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ ont été réinvités", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ des utilisateurs de $SELECTEDCOUNT$ ont été ré-invités. $EXCLUDEDCOUNT$ n'ont pas été invités en raison de la limite d'invitation de $LIMIT$.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Supprimé avec succès" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Le délai de mise en veille du coffre n'est pas dans l'intervalle de temps autorisé." }, - "disablePersonalVaultExport": { - "message": "Supprimer l'exportation individuelle du coffre" + "disableExport": { + "message": "Supprimer l'exportation" }, "disablePersonalVaultExportDescription": { "message": "Ne pas autoriser les membres à exporter des données de leur coffre individuel." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Code de vérification invalide" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Un mot de passe maître n'est plus requis pour les membres de l'organisation suivante. Veuillez confirmer le domaine ci-dessous avec l'administrateur de votre organisation." - }, "keyConnectorDomain": { "message": "Domaine Key Connector" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO activé" }, - "disabledSso": { - "message": "SSO désactivé" + "ssoTurnedOff": { + "message": "SSO éteint" }, "emailMustLoginWithSso": { "message": "$EMAIL$ doit se connecter avec une Authentification Unique (SSO)", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "La connexion SSO est requise" }, + "emailRequiredForSsoLogin": { + "message": "Le courriel est requis pour le SSO" + }, "selectedRegionFlag": { "message": "Drapeau de la région sélectionnée" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Abonnement à Familles" }, - "planDescPremium": { - "message": "Sécurité en ligne complète" + "advancedOnlineSecurity": { + "message": "Sécurité en ligne avancée" }, "planDescFamiliesV2": { "message": "Sécurité Premium pour votre famille" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Votre organisation n'utilise plus les mots de passe principaux pour se connecter à Bitwarden. Pour continuer, vérifiez l'organisation et le domaine." + }, + "continueWithLogIn": { + "message": "Continuer avec la connexion" + }, + "doNotContinue": { + "message": "Ne pas continuer" + }, + "domain": { + "message": "Domaine" + }, + "keyConnectorDomainTooltip": { + "message": "Ce domaine stockera les clés de chiffrement de votre compte, alors assurez-vous que vous lui faites confiance. Si vous n'êtes pas sûr, vérifiez auprès de votre administrateur." + }, + "verifyYourOrganization": { + "message": "Vérifiez votre organisation pour vous connecter" + }, + "organizationVerified": { + "message": "Organisation vérifiée" + }, + "domainVerified": { + "message": "Domaine vérifié" + }, + "leaveOrganizationContent": { + "message": "Si vous ne vérifiez pas votre organisation, votre accès à l'organisation sera révoqué." + }, + "leaveNow": { + "message": "Quitter maintenant" + }, + "verifyYourDomainToLogin": { + "message": "Vérifiez votre domaine pour vous connecter" + }, + "verifyYourDomainDescription": { + "message": "Pour continuer à vous connecter, vérifiez ce domaine." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Pour continuer à vous connecter, vérifiez l'organisation et le domaine." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Aucune application critique n'est sélectionnée" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "La vérification de l'utilisateur a échoué." + }, + "recoveryDeleteCiphersTitle": { + "message": "Supprimer les éléments non récupérables du coffre" + }, + "recoveryDeleteCiphersDesc": { + "message": "Certains éléments de votre coffre n'ont pu être récupérés. Voulez-vous supprimer ces éléments non récupérables de votre coffre ?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Supprimer les dossiers non récupérables" + }, + "recoveryDeleteFoldersDesc": { + "message": "Certains de vos dossiers n'ont pu être récupérés. Voulez-vous supprimer ces dossiers irrécupérables de votre coffre ?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Remplacer la clé de chiffrement" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Votre paire de clés de chiffrement à clé publique n'a pu être récupérée. Voulez-vous remplacer votre clé de chiffrement par une nouvelle paire de clés ? Cela vous demandera de reconfigurer les accès d'urgence existants et les adhésions à l'organisation." + }, + "recoveryStepSyncTitle": { + "message": "Synchronisation des données" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Vérification de l'intégrité de la clé de chiffrement" + }, + "recoveryStepUserInfoTitle": { + "message": "Vérification des informations de l'utilisateur" + }, + "recoveryStepCipherTitle": { + "message": "Vérification de l'intégrité de l'élément du coffre" + }, + "recoveryStepFoldersTitle": { + "message": "Vérification de l'intégrité du dossier" + }, + "dataRecoveryTitle": { + "message": "Récupération des données et Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Utilisez l'outil de récupération de données pour diagnostiquer et réparer les problèmes avec votre compte. Après avoir exécuté les diagnostics, vous avez la possibilité d'enregistrer les journaux de diagnostic pour la prise en charge et l'option de réparer tous les problèmes détectés." + }, + "runDiagnostics": { + "message": "Lancer le diagnostique" + }, + "repairIssues": { + "message": "Réparer les problèmes" + }, + "saveDiagnosticLogs": { + "message": "Enregistrer les journaux de diagnostic" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Ce paramètre est géré par votre organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Votre organisation a réglé le délai d'expiration de session maximal à $HOURS$ heure(s) et $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Votre organisation a défini le délai d'expiration de session par défaut sur À l'actualisation du navigateur." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Le délai d'expiration de session maximal ne peut pas dépasser $HOURS$ heure(s) et $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "À l'actualisation du navigateur" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Configurez une méthode de déverrouillage pour changer le délai d'expiration de votre coffre" + }, + "leaveConfirmationDialogTitle": { + "message": "Êtes-vous sûr de vouloir quitter ?" + }, + "leaveConfirmationDialogContentOne": { + "message": "En refusant, vos éléments personnels resteront dans votre compte, mais vous perdrez l'accès aux éléments partagés et aux fonctionnalités de l'organisation." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contactez votre administrateur pour regagner l'accès." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Quitter $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Comment gérer mon coffre ?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transférer les éléments vers $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ exige que tous les éléments soient détenus par l’organisation pour des raisons de sécurité et de conformité. Cliquez sur Accepter pour transférer la propriété de vos éléments.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accepter le transfert" + }, + "declineAndLeave": { + "message": "Refuser et quitter" + }, + "whyAmISeeingThis": { + "message": "Pourquoi est-ce que je vois ça ?" } } diff --git a/apps/web/src/locales/gl/messages.json b/apps/web/src/locales/gl/messages.json index f7a848bd025..f882247b331 100644 --- a/apps/web/src/locales/gl/messages.json +++ b/apps/web/src/locales/gl/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/he/messages.json b/apps/web/src/locales/he/messages.json index d723cb42140..3a56db568a7 100644 --- a/apps/web/src/locales/he/messages.json +++ b/apps/web/src/locales/he/messages.json @@ -5169,9 +5169,21 @@ "message": "תקן", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "בכספת שלך קיים קובץ מצורף ישן שצריך לעבור תיקון לפני שתוכל להחליף את מפתחות ההצפנה של החשבון שלך." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "הסיסמה של טביעת האצבעות בחשבון שלך", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "הוזמנו בהצלחה" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "הוסרו בהצלחה" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "פסק זמן לכספת אינו בטווח המותר." }, - "disablePersonalVaultExport": { - "message": "הסר ייצוא כספת אישית" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "אל תאפשר לחברים לייצא נתונים מהכספת האישית שלהם." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "קוד אימות שגוי" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "סיסמה ראשית אינה נדרשת עוד עבור חברים בארגון הבא. נא לאשר את הדומיין שלהלן עם מנהל הארגון שלך." - }, "keyConnectorDomain": { "message": "דומיין של Key Connector" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO מופעל" }, - "disabledSso": { - "message": "SSO כבוי" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ מוכרח להיכנס עם כניסה יחידה", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "נדרשת כניסת SSO" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "דגל האזור שנבחר" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "חברות למשפחות" }, - "planDescPremium": { - "message": "השלם אבטחה מקוונת" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "אבטחת פרימיום למשפחה שלך" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "לא סומנו יישומים קריטים" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/hi/messages.json b/apps/web/src/locales/hi/messages.json index 1c5a211aaca..5909b46ff33 100644 --- a/apps/web/src/locales/hi/messages.json +++ b/apps/web/src/locales/hi/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/hr/messages.json b/apps/web/src/locales/hr/messages.json index f357718bab0..ff7cf0be88e 100644 --- a/apps/web/src/locales/hr/messages.json +++ b/apps/web/src/locales/hr/messages.json @@ -5169,9 +5169,21 @@ "message": "Popravi", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Postoje stari privitci u tvom trezoru koje je potrebno popraviti prije rotacije ključa za šifriranje." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Jedinstvena fraza tvog računa", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Uspješno ponovno pozvano" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Uspješno uklonjeno" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Istek trezora nije unutar zadanog vremena." }, - "disablePersonalVaultExport": { - "message": "Onemogući izvoz osobnog trezora" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Onemogućuje korisnicima izvoz osobnog trezora." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Nevažeći kôd za provjeru" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Glavna lozinka više nije obavezna za članove ove organizacije. Provjeri prikazanu domenu sa svojim administratorom." - }, "keyConnectorDomain": { "message": "Domena konektora ključa" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO omogućen" }, - "disabledSso": { - "message": "SSO onemogućen" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ se mora prijavljivati sa SSO", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Potrebna je SSO prijava" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Zastava odabrane regije" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Obiteljsko članstvo" }, - "planDescPremium": { - "message": "Dovrši online sigurnost" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium sigurnost za tvoju obitelj" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Nisu odabrane kritične aplikacije" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json index 3d360541b93..eb437dcc678 100644 --- a/apps/web/src/locales/hu/messages.json +++ b/apps/web/src/locales/hu/messages.json @@ -5169,9 +5169,21 @@ "message": "Javítás", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Titkosítás javítása" + }, + "fixEncryptionTooltip": { + "message": "Ez a fájl elavult titkosítási módszert használ." + }, + "attachmentUpdated": { + "message": "A melléklet frissítésre került." + }, "oldAttachmentsNeedFixDesc": { "message": "A széfben régi mellékletek vannak, amelyeket javítani kell a fiók titkosító kulcsának fordítása előtt." }, + "itemsTransferred": { + "message": "Az elemek átvitelre kerültek." + }, "yourAccountsFingerprint": { "message": "Fiók ujjlenyomat kifejezés", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Az ismételt meghívás sikeres volt." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ felhasználó ismételten meghívásra került.", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ / $SELECTEDCOUNT$ felhasználó ismételten meghívásra került. $EXCLUDEDCOUNT$ nem kapott meghívást $LIMIT$ meghívási korlát miatt.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Az eltávolítás sikeres volt." }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "A széf időkifutás nincs az engedélyezett intervallunban." }, - "disablePersonalVaultExport": { - "message": "A személyes széf exportálás eltávolítása" + "disableExport": { + "message": "Exportálás eltávolítása" }, "disablePersonalVaultExportDescription": { "message": "Ne engedjük meg a tagoknak, hogy adatokat exportáljanak a saját széfből." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Érvénytelen ellenőrző kód" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A következő szervezet tagjai számára már nincs szükség mesterjelszóra. Erősítsük meg az alábbi tartományt a szervezet adminisztrátorával." - }, "keyConnectorDomain": { "message": "Key Connector tartomány" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "Az SSO bekapcsolásra került." }, - "disabledSso": { - "message": "Az SSO bekapcsolásra került." + "ssoTurnedOff": { + "message": "Az SSO kikapcsolásra került." }, "emailMustLoginWithSso": { "message": "$EMAIL$ segítségével be kell jelentkezni egyszeri bejelentkezéssel.", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO bejelentkezés szükséges" }, + "emailRequiredForSsoLogin": { + "message": "Email cím szükséges az SSO esetén." + }, "selectedRegionFlag": { "message": "Kiválasztott régió zászló" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Családi tagság" }, - "planDescPremium": { - "message": "Teljes körű online biztonság" + "advancedOnlineSecurity": { + "message": "Bővített online biztonság" }, "planDescFamiliesV2": { "message": "Prémium biztonság a család számára" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "A szervezet már nem használ mesterjelszavakat a Bitwardenbe bejelentkezéshez. A folytatáshoz ellenőrizzük a szervezetet és a tartományt." + }, + "continueWithLogIn": { + "message": "Folytatás bejelentkezéssel" + }, + "doNotContinue": { + "message": "Nincs folytatás" + }, + "domain": { + "message": "Tartomány" + }, + "keyConnectorDomainTooltip": { + "message": "Ez a tartomány tárolja a fiók titkosítási kulcsait, ezért győződjünk meg róla, hogy megbízunk-e benne. Ha nem vagyunk biztos benne, érdeklődjünk adminisztrátornál." + }, + "verifyYourOrganization": { + "message": "Szervezet ellenőrzése a bejelentkezéshez" + }, + "organizationVerified": { + "message": "A szervezet ellenőrzésre került." + }, + "domainVerified": { + "message": "A tartomány ellenőrzésre került." + }, + "leaveOrganizationContent": { + "message": "Ha nem ellenőrizzük a szervezetet, a szervezethez hozzáférés visszavonásra kerül." + }, + "leaveNow": { + "message": "Elhagyás most" + }, + "verifyYourDomainToLogin": { + "message": "Tartomány ellenőrzése a bejelentkezéshez" + }, + "verifyYourDomainDescription": { + "message": "A bejelentkezés folytatásához ellenőrizzük ezt a tartományt." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "A bejelentkezés folytatásához ellenőrizzük a szervezetet és a tartományt." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Nincsenek veszélyben levő kritikus alkalmazások." }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "A felhasználó ellenőrzése sikertelen volt." + }, + "recoveryDeleteCiphersTitle": { + "message": "Helyreállíthatatlan széf elemek törlése" + }, + "recoveryDeleteCiphersDesc": { + "message": "Néhány széf elemet nem sikerült helyreállítani. Törölni szeretnénk ezeket a helyreállíthatatlan elemeket a széfből?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Helyreállíthatatlan mappák törlése" + }, + "recoveryDeleteFoldersDesc": { + "message": "Néhány mappát nem sikerült helyreállítani. Törölni szeretnénk ezeket a helyreállíthatatlan nappákat a széfből?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Titkosító kulcs cseréje" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "A nyilvános kulcsú titkosítás kulcspárját nem sikerült helyreállítani. Szeretnénk lecserélni a titkosítási kulcsot egy új kulcspárra? Ehhez újra be kell üzemelni a meglévő vészhelyzeti hozzáférési és szervezeti tagságokat." + }, + "recoveryStepSyncTitle": { + "message": "Adatok szinkronizálása" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Titkosítási kulcs integritás ellenőrzése" + }, + "recoveryStepUserInfoTitle": { + "message": "Felhasználói információk ellenőrzése" + }, + "recoveryStepCipherTitle": { + "message": "Széf elem integritás ellenőrzése" + }, + "recoveryStepFoldersTitle": { + "message": "Mappa integritás ellenőrzése" + }, + "dataRecoveryTitle": { + "message": "Adat helyreállítás és diagnosztika" + }, + "dataRecoveryDescription": { + "message": "Használjuk az adat helyreállítási eszközt a fiókkal kapcsolatos problémák diagnosztizálásához és javításához. A diagnosztika futtatása után lehetőség van a diagnosztikai naplók mentésére támogatáshoz, valamint az észlelt problémák kijavításához." + }, + "runDiagnostics": { + "message": "Diagnosztika futtatása" + }, + "repairIssues": { + "message": "Hibák javítása" + }, + "saveDiagnosticLogs": { + "message": "Diagnosztikai naplók mentése" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Ezt a beállítást a szervezet lezeli." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "A szervezet a munkamenet maximális munkamenet időkifutását $HOURS$ órára és $MINUTES$ percre állította be.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "A szervezet az alapértelmezett munkamenet időkifutást a Böngésző frissítésekor értékre állította." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "A maximális időtúllépés nem haladhatja meg a $HOURS$ óra és $MINUTES$ perc értéket.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Böngésző frissítésekor" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Állítsunk be egy feloldási módot a széf időkifutási műveletének módosításához." + }, + "leaveConfirmationDialogTitle": { + "message": "Biztosan szeretnénk kilépni?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Az elutasítással a személyes elemek a fiókban maradnak, de elveszítjük hozzáférést a megosztott elemekhez és a szervezeti funkciókhoz." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Lépjünk kapcsolatba az adminisztrátorral a hozzáférés visszaszerzéséért." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "$ORGANIZATION$ elhagyása", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Hogyan kezeljem a széfet?" + }, + "transferItemsToOrganizationTitle": { + "message": "Elemek átvitele $ORGANIZATION$ szervezethez", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ megköveteli, hogy minden elem a szervezet tulajdonában legyen a biztonság és a megfelelőség érdekében. Kattintás az elfogadásra az elemek tulajdonjogának átruházásához.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Átvitel elfogadása" + }, + "declineAndLeave": { + "message": "Elutasítás és kilépés" + }, + "whyAmISeeingThis": { + "message": "Miért látható ez?" } } diff --git a/apps/web/src/locales/id/messages.json b/apps/web/src/locales/id/messages.json index 4dc41e8f928..74804d5db8e 100644 --- a/apps/web/src/locales/id/messages.json +++ b/apps/web/src/locales/id/messages.json @@ -5169,9 +5169,21 @@ "message": "Perbaiki", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Ada lampiran berkas lama di brankas Anda yang perlu diperbaiki sebelum Anda dapat memutar kunci enkripsi akun Anda." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Frase sidik jari akun Anda", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Berhasil mengundang kembali." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Penghapusan sukses" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Kode verifikasi tidak valid" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO aktif" }, - "disabledSso": { - "message": "SSO tidak aktif" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json index 459f1dfd3a4..3814df96b74 100644 --- a/apps/web/src/locales/it/messages.json +++ b/apps/web/src/locales/it/messages.json @@ -3063,7 +3063,7 @@ "message": "1 GB di spazio di archiviazione crittografato per gli allegati." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "Archivio crittografato di $SIZE$ per allegati.", "placeholders": { "size": { "content": "$1", @@ -3134,13 +3134,13 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "Il tuo abbonamento Premium è scaduto" }, "premiumSubscriptionEndedDesc": { - "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." + "message": "Per recuperare l'accesso al tuo archivio, riavvia il tuo abbonamento Premium. Se modifichi i dettagli di un elemento archiviato prima del riavvio, sarà spostato nella tua cassaforte." }, "restartPremium": { - "message": "Restart Premium" + "message": "Riavvia Premium" }, "additionalStorageGb": { "message": "Spazio di archiviazione aggiuntivo (GB)" @@ -4627,19 +4627,19 @@ "message": "Ulteriori informazioni" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "S'è verificato un errore durante l'aggiornamento delle impostazioni di crittografia." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Aggiorna le impostazioni di crittografia" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Le impostazioni di crittografia consigliate miglioreranno la sicurezza del tuo account. Inserisci la password principale per aggiornare." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Conferma la tua identità per continuare" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Inserisci la password principale" }, "updateSettings": { "message": "Aggiorna le impostazioni" @@ -5169,9 +5169,21 @@ "message": "Correggi", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Correggi la crittografia" + }, + "fixEncryptionTooltip": { + "message": "Questo file usa un metodo di crittografia obsoleto." + }, + "attachmentUpdated": { + "message": "Allegato aggiornato" + }, "oldAttachmentsNeedFixDesc": { "message": "Ci sono vecchi file allegati nella tua cassaforte che devono essere corretti prima di poter ruotare la chiave di crittografia del tuo account." }, + "itemsTransferred": { + "message": "Elementi trasferiti" + }, "yourAccountsFingerprint": { "message": "Frase impronta del tuo account", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Invitato di nuovo" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ utente/i ri-invitato/i", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ utenti su $SELECTEDCOUNT$ ri-invitati. $EXCLUDEDCOUNT$ non hanno ricevuto l'invito a causa del limite di $LIMIT$ inviti.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Rimosso" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Il timeout della cassaforte non è all'interno dell'intervallo consentito." }, - "disablePersonalVaultExport": { - "message": "Rimuovi esportazione cassaforte individuale" + "disableExport": { + "message": "Rimuovi esportazione" }, "disablePersonalVaultExportDescription": { "message": "Non consentire ai membri di esportare i dati dalla loro cassaforte individuale." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Codice di verifica non valido" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "La password principale non è più richiesta per i membri dell'organizzazione. Per favore, conferma il dominio qui sotto con l'amministratore." - }, "keyConnectorDomain": { "message": "Dominio Key Connector" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO attivato" }, - "disabledSso": { - "message": "SSO disattivato" + "ssoTurnedOff": { + "message": "Single Sign-On (SSO) disattivato" }, "emailMustLoginWithSso": { "message": "$EMAIL$ deve accedere con Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Il login SSO è obbligatorio" }, + "emailRequiredForSsoLogin": { + "message": "L'email è richiesta per SSO (Single Sign-On)" + }, "selectedRegionFlag": { "message": "Bandiera della regione selezionata" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Abbonamento famiglie" }, - "planDescPremium": { - "message": "Sicurezza online completa" + "advancedOnlineSecurity": { + "message": "Sicurezza online avanzata" }, "planDescFamiliesV2": { "message": "Sicurezza Premium per la tua famiglia" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Non ci sono applicazioni contrassegnate come critiche" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "Verifica dell'utente non riuscita." + }, + "recoveryDeleteCiphersTitle": { + "message": "Elimina gli oggetti della cassaforte non recuperabili" + }, + "recoveryDeleteCiphersDesc": { + "message": "Alcuni oggetti della tua cassaforte non possono essere recuperati. Vuoi eliminarli?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Elimina le cartelle non recuperabili" + }, + "recoveryDeleteFoldersDesc": { + "message": "Alcune cartelle della tua cassaforte non possono essere recuperate. Vuoi eliminarle?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Cambia chiave crittografica" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "La tua coppia di chiavi crittografiche non può essere recuperata. Vuoi sostituirla con una nuova coppia di chiavi? Attenzione: dovrai impostare nuovamente i membri abilitati all'accesso d'emergenza." + }, + "recoveryStepSyncTitle": { + "message": "Sincronizzazione dati…" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifica integrità della chiave crittografica" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifica delle informazioni dell'utente" + }, + "recoveryStepCipherTitle": { + "message": "Verifica integrità dell'oggetto…" + }, + "recoveryStepFoldersTitle": { + "message": "Verifica integrità della cartella…" + }, + "dataRecoveryTitle": { + "message": "Recupero dati e diagnostica" + }, + "dataRecoveryDescription": { + "message": "Usa lo strumento di recupero dati per diagnosticare e riparare i problemi dell'account. Dopo la scansione della diagnostica, potrai salvare i registri diagnostici per il supporto e avrai la possibilità di riparare eventuali problemi rilevati." + }, + "runDiagnostics": { + "message": "Esegui la diagnostica" + }, + "repairIssues": { + "message": "Ripara i problemi rilevati" + }, + "saveDiagnosticLogs": { + "message": "Salva registri diagnostici" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Questa impostazione è gestita dalla tua organizzazione." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "La tua organizzazione ha impostato $HOURS$ ora/e e $MINUTES$ minuto/i come durata massima della sessione.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "In base alle impostazioni della tua organizzazione, la sessione terminerà ogni volta che la pagina sarà chiusa o ricaricata." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "La durata della sessione non può superare $HOURS$ ora/e e $MINUTES$ minuto/i", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Al refresh o riavvio del browser" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Imposta un metodo di sblocco per modificare l'azione al timeout" + }, + "leaveConfirmationDialogTitle": { + "message": "Vuoi davvero abbandonare?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Se rifiuti, tutti gli elementi esistenti resteranno nel tuo account, ma perderai l'accesso agli oggetti condivisi e alle funzioni organizzative." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contatta il tuo amministratore per recuperare l'accesso." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Abbandona $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Come si gestisce la cassaforte?" + }, + "transferItemsToOrganizationTitle": { + "message": "Trasferisci gli elementi in $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ richiede che tutti gli elementi siano di proprietà dell'organizzazione per motivi di conformità e sicurezza. Clicca su 'Accetta' per trasferire la proprietà.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accetta il trasferimento" + }, + "declineAndLeave": { + "message": "Rifiuta e abbandona" + }, + "whyAmISeeingThis": { + "message": "Perché vedo questo avviso?" } } diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json index 33535634bc8..930b2ddd81d 100644 --- a/apps/web/src/locales/ja/messages.json +++ b/apps/web/src/locales/ja/messages.json @@ -5169,9 +5169,21 @@ "message": "修正", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "暗号化キーのローテーションを行う前に、保管庫内の古い添付ファイルを修正する必要があります。" }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "アカウントのパスフレーズ", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "再招待に成功しました" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "削除しました " }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "保管庫のタイムアウトは許可された範囲内にありません。" }, - "disablePersonalVaultExport": { - "message": "個別の保管庫のエクスポートを削除" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "メンバーが個人の保管庫からデータをエクスポートすることを許可しません。" @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "認証コードが間違っています" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO を有効にしました" }, - "disabledSso": { - "message": "SSOを無効にしました" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO ログインが必要です" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "リージョン選択" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/ka/messages.json b/apps/web/src/locales/ka/messages.json index 47a46367feb..d1f614c61d7 100644 --- a/apps/web/src/locales/ka/messages.json +++ b/apps/web/src/locales/ka/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/km/messages.json b/apps/web/src/locales/km/messages.json index 608215f8155..fd419fe7397 100644 --- a/apps/web/src/locales/km/messages.json +++ b/apps/web/src/locales/km/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/kn/messages.json b/apps/web/src/locales/kn/messages.json index 2f0759ff939..5d5c07f2baa 100644 --- a/apps/web/src/locales/kn/messages.json +++ b/apps/web/src/locales/kn/messages.json @@ -5169,9 +5169,21 @@ "message": "ಹೊಂದಿಸು", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿ ಹಳೆಯ ಫೈಲ್ ಲಗತ್ತುಗಳಿವೆ, ಅದನ್ನು ನಿಮ್ಮ ಖಾತೆಯ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ತಿರುಗಿಸುವ ಮೊದಲು ಸರಿಪಡಿಸಬೇಕಾಗಿದೆ." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "ನಿಮ್ಮ ಖಾತೆಯ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ನುಡಿಗಟ್ಟು", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "ಯಶಸ್ವಿಯಾಗಿ ಪುನಃ ಆಹ್ವಾನಿಸಲಾಗಿದೆ." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "ಯಶಸ್ವಿಯಾಗಿ ತೆಗೆದುಹಾಕಲಾಗಿದೆ" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/ko/messages.json b/apps/web/src/locales/ko/messages.json index aaef9d378e9..a3ea2982a4a 100644 --- a/apps/web/src/locales/ko/messages.json +++ b/apps/web/src/locales/ko/messages.json @@ -5169,9 +5169,21 @@ "message": "수정", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "계정의 암호화 키를 교체하기 전에 보관함 내 오래된 파일 수정이 필요합니다." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "계정 지문 구절", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "성공적으로 재초대되었습니다." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "성공적으로 제거됨" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "개인 보관함 내보내기 비활성화" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "유효하지 않은 확인 코드" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO 활성화됨" }, - "disabledSso": { - "message": "SSO 비활성화됨" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json index d627835b1f4..42d8dc15f3c 100644 --- a/apps/web/src/locales/lv/messages.json +++ b/apps/web/src/locales/lv/messages.json @@ -5169,9 +5169,21 @@ "message": "Salabot", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Salabot šifrēšanu" + }, + "fixEncryptionTooltip": { + "message": "Šī datne izmanto novecojušu šifrēšanas veidu." + }, + "attachmentUpdated": { + "message": "Pielikums atjaunināts" + }, "oldAttachmentsNeedFixDesc": { "message": "Glabātavā atrodas veci datņu pielikumi, kas ir jāsalabo, pirms tiek veikta konta šifrēšanas atslēgu maiņa." }, + "itemsTransferred": { + "message": "Vienumi pārcelti" + }, "yourAccountsFingerprint": { "message": "Konta atpazīšanas vārdkopa", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Uzaicinājums veiksmīgi nosūtīts atkārtoti." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ lietotāji uzaicināti atkārtoti", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "Atkārtoti uzaicināti $LIMIT$ no $SELECTEDCOUNT$ lieotājiem. $EXCLUDEDCOUNT$ netika uzaicināt uzaicinājumu ierobežojuma ($LIMIT$) dēļ.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Veiksmīgi noņemts" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Glabātavas noildze nav pieļaujamajās robežvērtībās." }, - "disablePersonalVaultExport": { - "message": "Atspējot personīgās glabātavas izgūšanu" + "disableExport": { + "message": "Noņemt izguvi" }, "disablePersonalVaultExportDescription": { "message": "Neļaut dalībniekiem izgūt datus no viņu glabātavas." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Nederīgs apliecinājuma kods" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Galvenā parole vairs nav nepieciešama turpmāk minētās apvienības dalībniekiem. Lūgums saskaņot zemāk esošo domēnu ar savas apvienības pārvaldītāju." - }, "keyConnectorDomain": { "message": "Key Connector domēns" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "Iespējota vienotā pieteikšanās" }, - "disabledSso": { - "message": "Atspējota vienotā pieteikšanās" + "ssoTurnedOff": { + "message": "Vienotā pieteikšanās izslēgta" }, "emailMustLoginWithSso": { "message": "$EMAIL$ jāpiesakās ar vienoto pieteikšanos", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Vienotā pieteikšanās ir nepieciešama" }, + "emailRequiredForSsoLogin": { + "message": "SSO ir nepieciešama e-pasta adrese" + }, "selectedRegionFlag": { "message": "Atlasītā apgabala karogs" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Dalība ģimeņu plānā" }, - "planDescPremium": { - "message": "Pilnīga drošība tiešsaistē" + "advancedOnlineSecurity": { + "message": "Izvērsta tiešsaistes drošība" }, "planDescFamiliesV2": { "message": "Augstākā labuma drošība ģimenei" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Apvienība vairs neizmanto galvenās paroles, lai pieteiktos Bitwarden. Lai turpinātu, jāapliecina apvienība un domēns." + }, + "continueWithLogIn": { + "message": "Turpināt ar pieteikšanos" + }, + "doNotContinue": { + "message": "Neturpināt" + }, + "domain": { + "message": "Domēns" + }, + "keyConnectorDomainTooltip": { + "message": "Šajā domēnā tiks glabātas konta šifrēšanas atslēgas, tādēļ jāpārliecinās par uzticamību. Ja nav pārliecības, jāsazinās ar savu pārvaldītāju." + }, + "verifyYourOrganization": { + "message": "Jāapliecina apvienība, lai pieteiktos" + }, + "organizationVerified": { + "message": "Apvienība apliecināta" + }, + "domainVerified": { + "message": "Domēns ir apliecināts" + }, + "leaveOrganizationContent": { + "message": "Ja neapliecināsi apvienību, tiks atsaukta piekļuve tai." + }, + "leaveNow": { + "message": "Pamest tagad" + }, + "verifyYourDomainToLogin": { + "message": "Jāapliecina domēns, lai pieteiktos" + }, + "verifyYourDomainDescription": { + "message": "Lai turpinātu pieteikšanos, jāapliecina šis domēns." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Lai turpinātu pieteikšanos, jāapliecina apvienība un domēns." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Neviena būtiska lietotne nav atlasīta" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "Lietotāja apliecināšana neizdevās." + }, + "recoveryDeleteCiphersTitle": { + "message": "Izdzēst neatkopjamos glabātavas vienumus" + }, + "recoveryDeleteCiphersDesc": { + "message": "Dažus no glabātavas vienumiem nevarēja atkopt. Vai izdzēst tos?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Izdzēst neatkopjamās mapes" + }, + "recoveryDeleteFoldersDesc": { + "message": "Dažus no mapēm nevarēja atkopt. Vai izdzēst neatkopjamās mapes no glabātavas?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Aizvietot šifrēšanas atslēgu" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Vai tiešām pamest?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Pēc noraidīšanas personīgie vienumi paliks Tavā kontā, bet Tu zaudēsi piekļvuvi kopīgotajiem vienumiem un apvienību iespējām." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Jāsazinās ar savu pārvaldītāju, lai atgūtu piekļuvi." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Pamest $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Kā es varu pārvaldīt savu glabātavu?" + }, + "transferItemsToOrganizationTitle": { + "message": "Pārcelt vienumus uz $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/ml/messages.json b/apps/web/src/locales/ml/messages.json index 8d49e35690e..907dd90fa2e 100644 --- a/apps/web/src/locales/ml/messages.json +++ b/apps/web/src/locales/ml/messages.json @@ -5169,9 +5169,21 @@ "message": "പരിഹരിക്കുക", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "നിങ്ങളുടെ അക്കൗണ്ടിന്റെ എൻ‌ക്രിപ്ഷൻ കീ തിരിക്കുന്നതിന് മുമ്പ് ശരിയാക്കേണ്ട പഴയ ഫയൽ അറ്റാച്ചുമെന്റുകൾ നിങ്ങളുടെ നിലവറയിൽ ഉണ്ട്." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "നിങ്ങളുടെ അക്കൗണ്ടിൻ്റെ ഫിംഗർപ്രിന്റ് ഫ്രേസ്‌", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/mr/messages.json b/apps/web/src/locales/mr/messages.json index 6ba6661c478..d8d7999dbe2 100644 --- a/apps/web/src/locales/mr/messages.json +++ b/apps/web/src/locales/mr/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/my/messages.json b/apps/web/src/locales/my/messages.json index 608215f8155..fd419fe7397 100644 --- a/apps/web/src/locales/my/messages.json +++ b/apps/web/src/locales/my/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/nb/messages.json b/apps/web/src/locales/nb/messages.json index 042444814e6..444a13a68e1 100644 --- a/apps/web/src/locales/nb/messages.json +++ b/apps/web/src/locales/nb/messages.json @@ -5169,9 +5169,21 @@ "message": "Reparer", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Hvelvet ditt har gamle fil-vedlegg som må repareres før du kan oppdatere krypteringsnøkkelen til kontoen din." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Din kontos fingeravtrykksfrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvitasjon vellykket." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Fjernet" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Hvelv-timeout er utenfor gyldig intervall." }, - "disablePersonalVaultExport": { - "message": "Deaktivere personlig hvelv eksport" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Ugyldig bekreftelseskode" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "Skrudde på SSO" }, - "disabledSso": { - "message": "Skrudde av SSO" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/ne/messages.json b/apps/web/src/locales/ne/messages.json index 31367740728..99f87c4fb75 100644 --- a/apps/web/src/locales/ne/messages.json +++ b/apps/web/src/locales/ne/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json index 333df664f77..0b648eaf204 100644 --- a/apps/web/src/locales/nl/messages.json +++ b/apps/web/src/locales/nl/messages.json @@ -5169,9 +5169,21 @@ "message": "Oplossen", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Versleuteling repareren" + }, + "fixEncryptionTooltip": { + "message": "Dit bestand gebruikt een verouderde versleutelingsmethode." + }, + "attachmentUpdated": { + "message": "Bijlagen bijgewerkt" + }, "oldAttachmentsNeedFixDesc": { "message": "Er zijn oude bestandsbijlagen in je kluis die aangepast moeten worden voordat je je encryptiesleutels kunt roteren." }, + "itemsTransferred": { + "message": "Items overgedragen" + }, "yourAccountsFingerprint": { "message": "Vingerafdrukzin van je account", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Succesvol opnieuw uitgenodigd" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ gebruikers opnieuw uitgenodigd", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ van $SELECTEDCOUNT$ gebruikers opnieuw uitgenodigd. $EXCLUDEDCOUNT$ werden niet uitgenodigd vanwege de $LIMIT$ uitnodigingslimiet.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Succesvol verwijderd" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Kluis time-out ligt niet binnen het toegestane bereik." }, - "disablePersonalVaultExport": { - "message": "Persoonlijke kluis exporteren uitschakelen" + "disableExport": { + "message": "Export verwijderen" }, "disablePersonalVaultExportDescription": { "message": "Exporteren van gegevens uit hun individuele kluis niet toestaan." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Ongeldige verificatiecode" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Voor leden van de volgende organisatie is een hoofdwachtwoord niet langer nodig. Bevestig het domein hieronder met de beheerder van je organisatie." - }, "keyConnectorDomain": { "message": "Key Connector-domein" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO ingeschakeld" }, - "disabledSso": { - "message": "SSO uitgeschakeld" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ moet met Single Sign-on inloggen", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is vereist" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Geselecteerde regionale vlag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Lidmaatschap families" }, - "planDescPremium": { - "message": "Online beveiliging voltooien" + "advancedOnlineSecurity": { + "message": "Geavanceerde online beveiliging" }, "planDescFamiliesV2": { "message": "Premium beveiliging voor je familie" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Je organisatie maakt niet langer gebruik van hoofdwachtwoorden om in te loggen op Bitwarden. Controleer de organisatie en het domein om door te gaan." + }, + "continueWithLogIn": { + "message": "Doorgaan met inloggen" + }, + "doNotContinue": { + "message": "Niet verder gaan" + }, + "domain": { + "message": "Domein" + }, + "keyConnectorDomainTooltip": { + "message": "Dit domein zal de encryptiesleutels van je account opslaan, dus zorg ervoor dat je het vertrouwt. Als je het niet zeker weet, controleer dan bij je beheerder." + }, + "verifyYourOrganization": { + "message": "Verifieer je organisatie om in te loggen" + }, + "organizationVerified": { + "message": "Organisatie geverifieerd" + }, + "domainVerified": { + "message": "Domein geverifieerd" + }, + "leaveOrganizationContent": { + "message": "Als je je organisatie niet verifieert, wordt je toegang tot de organisatie ingetrokken." + }, + "leaveNow": { + "message": "Nu verlaten" + }, + "verifyYourDomainToLogin": { + "message": "Verifieer je domein om in te loggen" + }, + "verifyYourDomainDescription": { + "message": "Bevestig dit domein om verder te gaan met inloggen." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Bevestig organisatie en domein om verder te gaan met inloggen." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Geen belangrijke applicaties geselecteerd" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Onherstelbare kluisitems verwijderen" + }, + "recoveryDeleteCiphersDesc": { + "message": "Sommige kluisitems konden niet worden hersteld. Wilt je deze onherstelbare items uit je kluis verwijderen?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Onherstelbare mappen verwijderen" + }, + "recoveryDeleteFoldersDesc": { + "message": "Sommige mappen konden niet worden hersteld. Wilt je deze onherstelbare mappen uit je kluis verwijderen?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Encryptiesleutel vervangen" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Je sleutelpaar voor versleuteling met publieke sleutel kon niet worden hersteld. Wilt je je encryptiesleutel vervangen door een nieuwe sleutel? Hiervoor zal je bestaande noodtoegang en organisatielidmaatschappen opnieuw moeten instellen." + }, + "recoveryStepSyncTitle": { + "message": "Data synchroniseren" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Integriteit encryptiesleutel verifiëren" + }, + "recoveryStepUserInfoTitle": { + "message": "Gebruikersinformatie verifiëren" + }, + "recoveryStepCipherTitle": { + "message": "Integriteit kluisitem verifiëren" + }, + "recoveryStepFoldersTitle": { + "message": "Integriteit map verifiëren" + }, + "dataRecoveryTitle": { + "message": "Gegevensherstel en diagnostiek" + }, + "dataRecoveryDescription": { + "message": "Gebruik het hulpmiddelen voor gegevensherstel om problemen met je account te diagnosticeren en repareren. Na het uitvoeren van de diagnose heb je de optie om diagnostische logboeken op te slaan voor ondersteuning en de optie om gedetecteerde problemen op te lossen." + }, + "runDiagnostics": { + "message": "Diagnose uitvoeren" + }, + "repairIssues": { + "message": "Problemen oplossen" + }, + "saveDiagnosticLogs": { + "message": "Diagnostische logs opslaan" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Deze instelling wordt beheerd door je organisatie." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Je organisatie heeft de maximale sessietime-out ingesteld op $HOURS$ uur en $MINUTES$ minuten.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Je organisatie heeft de standaard sessietime-out ingesteld op Browser verversen." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximale time-out kan niet langer zijn dan $HOURS$ uur en $MINUTES$ minu(u) t(en)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Browser verversen" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Stel een ontgrendelingsmethode in om je kluis time-out actie te wijzigen" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/nn/messages.json b/apps/web/src/locales/nn/messages.json index 32c452cf657..8d1c2d1b394 100644 --- a/apps/web/src/locales/nn/messages.json +++ b/apps/web/src/locales/nn/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/or/messages.json b/apps/web/src/locales/or/messages.json index 608215f8155..fd419fe7397 100644 --- a/apps/web/src/locales/or/messages.json +++ b/apps/web/src/locales/or/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/pl/messages.json b/apps/web/src/locales/pl/messages.json index f5e6b898bff..e90d3e1ab47 100644 --- a/apps/web/src/locales/pl/messages.json +++ b/apps/web/src/locales/pl/messages.json @@ -5169,9 +5169,21 @@ "message": "Napraw", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "W Twoim sejfie istnieją stare załączniki, które muszą zostać naprawione, zanim będziesz mógł zmienić klucz szyfrowania Twojego konta." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Unikalny identyfikator Twojego konta", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Zaproszony ponownie" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Usunięto" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Czas blokowania sejfu nie jest w dozwolonym zakresie." }, - "disablePersonalVaultExport": { - "message": "Wyłącz eksportowanie osobistego sejfu" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Nie zezwalaj użytkownikom na eksport danych z ich indywidualnego sejfu." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Kod weryfikacyjny jest nieprawidłowy" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hasło główne nie jest już wymagane dla członków następującej organizacji. Proszę potwierdzić poniższą domenę u administratora organizacji." - }, "keyConnectorDomain": { "message": "Domena Key Connector'a" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "Logowanie jednokrotne SSO zostało włączone" }, - "disabledSso": { - "message": "Logowanie jednokrotne SSO zostało wyłączone" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Logowaniez użyciem SSO jest wymagane" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Flaga wybranego regionu" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json index ff5686cbba8..4c79ec5ecc4 100644 --- a/apps/web/src/locales/pt_BR/messages.json +++ b/apps/web/src/locales/pt_BR/messages.json @@ -1958,10 +1958,10 @@ "message": "Confirmar exportação de segredos" }, "exportWarningDesc": { - "message": "Esta exportação contém os dados do seu cofre em um formato não criptografado. Você não deve armazenar ou enviar o arquivo exportado por canais inseguros (como e-mail). Apague o arquivo imediatamente após terminar de usá-lo." + "message": "Esta exportação contém os dados do seu cofre em um formato sem criptografia. Você não deve armazenar ou enviar o arquivo exportado por canais inseguros (como e-mail). Apague o arquivo imediatamente após terminar de usá-lo." }, "exportSecretsWarningDesc": { - "message": "Esta exportação contém seus dados de segredos em um formato não criptografado. Você não deve armazenar ou enviar o arquivo exportado por canais inseguros (como e-mail). Apague-o imediatamente após terminar de usá-lo." + "message": "Esta exportação contém seus dados de segredos em um formato sem criptografia. Você não deve armazenar ou enviar o arquivo exportado por canais inseguros (como e-mail). Apague-o imediatamente após terminar de usá-lo." }, "encExportKeyWarningDesc": { "message": "Esta exportação criptografa seus dados usando a chave de criptografia da sua conta. Se você rotacionar a chave de criptografia da sua conta, você deve exportar novamente, já que você não será capaz de descriptografar este arquivo de exportação." @@ -4331,7 +4331,7 @@ "message": "Esta solicitação não é mais válida." }, "loginRequestApprovedForEmailOnDevice": { - "message": "Solicitação de autenticação aprovada para $EMAIL$ em $DEVICE$", + "message": "Solicitação de acesso aprovada para $EMAIL$ em $DEVICE$", "placeholders": { "email": { "content": "$1", @@ -4344,10 +4344,10 @@ } }, "youDeniedLoginAttemptFromAnotherDevice": { - "message": "Você negou uma tentativa de autenticação de outro dispositivo. Se era você, tente se conectar com o dispositivo novamente." + "message": "Você negou uma tentativa de acesso de outro dispositivo. Se era você, tente se conectar com o dispositivo novamente." }, "loginRequestHasAlreadyExpired": { - "message": "A solicitação de autenticação já expirou." + "message": "A solicitação de acesso já expirou." }, "justNow": { "message": "Agora há pouco" @@ -4512,13 +4512,13 @@ "message": "Você está usando um navegador da web não suportado. O cofre web pode não funcionar corretamente." }, "youHaveAPendingLoginRequest": { - "message": "Você tem uma solicitação de autenticação pendente de outro dispositivo." + "message": "Você tem uma solicitação de acesso pendente de outro dispositivo." }, "reviewLoginRequest": { - "message": "Revisar solicitação de autenticação" + "message": "Revisar solicitação de acesso" }, "loginRequest": { - "message": "Solicitação de autenticação" + "message": "Solicitação de acesso" }, "freeTrialEndPromptCount": { "message": "Seu teste grátis termina em $COUNT$ dias.", @@ -5169,9 +5169,21 @@ "message": "Corrigir", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Corrigir criptografia" + }, + "fixEncryptionTooltip": { + "message": "Este arquivo está usando um método de criptografia desatualizado." + }, + "attachmentUpdated": { + "message": "Anexo atualizado" + }, "oldAttachmentsNeedFixDesc": { "message": "Há anexos de arquivos antigos no seu cofre que precisam ser corrigidos antes que você possa rotacionar a chave de criptografia da sua conta." }, + "itemsTransferred": { + "message": "Itens transferidos" + }, "yourAccountsFingerprint": { "message": "A frase biométrica da sua conta", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Re-convidado com sucesso" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ usuários re-convidados", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ dos $SELECTEDCOUNT$ usuários foram re-convidados. $EXCLUDEDCOUNT$ não foram convidados devido ao limite de convite de $LIMIT$.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removido com sucesso" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Tempo limite do cofre não está dentro do intervalo permitido." }, - "disablePersonalVaultExport": { - "message": "Remover exportação do cofre individual" + "disableExport": { + "message": "Remover exportação" }, "disablePersonalVaultExportDescription": { "message": "Não permita que os membros exportem dados do seu cofre individual." @@ -6840,7 +6878,7 @@ "message": "Escopos personalizados" }, "additionalUserIdClaimTypes": { - "message": "Tipos de reivindicação de ID de usuário personalizado" + "message": "Tipos personalizados de reivindicação de ID de usuário" }, "additionalEmailClaimTypes": { "message": "Tipos de reivindicação de e-mail" @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Código de verificação inválido" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Uma senha principal não é mais necessária para membros da seguinte organização. Confirme o domínio abaixo com o administrador da sua organização." - }, "keyConnectorDomain": { "message": "Domínio do Key Connector" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO foi ativado" }, - "disabledSso": { - "message": "SSO foi desativado" + "ssoTurnedOff": { + "message": "SSO desativado" }, "emailMustLoginWithSso": { "message": "$EMAIL$ deve se conectar com a autenticação única", @@ -9095,7 +9130,7 @@ "message": "Importar segredos" }, "getStarted": { - "message": "Vamos começar" + "message": "Introdução" }, "complete": { "message": "$COMPLETED$ concluídos dos $TOTAL$", @@ -9377,7 +9412,7 @@ "message": "Solicitação de acesso negada" }, "allLoginRequestsDenied": { - "message": "Todas as solicitações de autenticação foram negadas" + "message": "Todas as solicitações de acesso foram negadas" }, "loginRequestApproved": { "message": "Solicitação de acesso aprovada" @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Autenticação com SSO é necessário" }, + "emailRequiredForSsoLogin": { + "message": "O e-mail é necessário para o SSO" + }, "selectedRegionFlag": { "message": "Bandeira da região selecionada" }, @@ -9464,7 +9502,7 @@ "message": "Problemas para acessar?" }, "loginApproved": { - "message": "Autenticação aprovada" + "message": "Acesso aprovado" }, "userEmailMissing": { "message": "E-mail do usuário ausente" @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Assinatura do Famílias" }, - "planDescPremium": { - "message": "Segurança on-line completa" + "advancedOnlineSecurity": { + "message": "Segurança on-line avançada" }, "planDescFamiliesV2": { "message": "Segurança Premium para a sua família" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "A sua organização não está mais usando senhas principais para se conectar ao Bitwarden. Para continuar, verifique a organização e o domínio." + }, + "continueWithLogIn": { + "message": "Continuar acessando" + }, + "doNotContinue": { + "message": "Não continuar" + }, + "domain": { + "message": "Domínio" + }, + "keyConnectorDomainTooltip": { + "message": "Este domínio armazenará as chaves de criptografia da sua conta, então certifique-se que confia nele. Se não tiver certeza, verifique com o seu administrador." + }, + "verifyYourOrganization": { + "message": "Verifique sua organização para se conectar" + }, + "organizationVerified": { + "message": "Organização verificada" + }, + "domainVerified": { + "message": "Domínio verificado" + }, + "leaveOrganizationContent": { + "message": "Se você não verificar a sua organização, o seu acesso à organização será revogado." + }, + "leaveNow": { + "message": "Sair agora" + }, + "verifyYourDomainToLogin": { + "message": "Verifique seu domínio para se conectar" + }, + "verifyYourDomainDescription": { + "message": "Para continuar se conectando, verifique este domínio." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Para continuar se conectando, verifique a organização e o domínio." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Nenhum aplicativo crítico foi selecionado" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "Falha na verificação do usuário." + }, + "recoveryDeleteCiphersTitle": { + "message": "Apagar itens não recuperáveis do cofre" + }, + "recoveryDeleteCiphersDesc": { + "message": "Alguns dos itens do seu cofre não puderam ser recuperados. Gostaria de apagar estes itens não recuperáveis do seu cofre?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Apagar pastas não recuperáveis" + }, + "recoveryDeleteFoldersDesc": { + "message": "Algumas das suas pastas não puderam ser recuperadas. Gostaria de apagar estas pastas não recuperáveis do seu cofre?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Substituir chave de criptografia" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "O seu par de chaves de criptografia de chave pública não pôde ser recuperado. Gostaria de substituir sua chave de criptografia com um novo par? Ao fazer isso, será necessário reconfigurar o acesso de emergência existente e participações de organizações." + }, + "recoveryStepSyncTitle": { + "message": "Sincronizando dados" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verificando integridade da chave de criptografia" + }, + "recoveryStepUserInfoTitle": { + "message": "Verificando informações do usuário" + }, + "recoveryStepCipherTitle": { + "message": "Verificando integridade do item do cofre" + }, + "recoveryStepFoldersTitle": { + "message": "Verificando integridade da pasta" + }, + "dataRecoveryTitle": { + "message": "Diagnósticos e recuperação de dados" + }, + "dataRecoveryDescription": { + "message": "Use a ferramenta de recuperação de dados para diagnosticar e resolver problemas com a sua conta. Ao executar os diagnósticos, você tem a opção de salvar os registros de diagnóstico para suporte, e a opção de resolver quaisquer problemas detectados." + }, + "runDiagnostics": { + "message": "Executar diagnósticos" + }, + "repairIssues": { + "message": "Resolver problemas" + }, + "saveDiagnosticLogs": { + "message": "Salvar registros de diagnóstico" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Esta configuração é gerenciada pela sua organização." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "A sua organização configurou o tempo de limite máximo da sessão para $HOURS$ hora(s) e $MINUTES$ minuto(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "A sua organização configurou o tempo de limite máximo padrão da sessão para ser no recarregar do navegador." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "O tempo limite máximo não pode exceder $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "No recarregar do navegador" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Configure um método de desbloqueio para alterar a ação do tempo limite" + }, + "leaveConfirmationDialogTitle": { + "message": "Tem certeza de que quer sair?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Se recusar, seus itens pessoais continuarão na sua conta, mas você perderá o acesso aos itens compartilhados e os recursos de organização." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Entre em contato com o seu administrador para recuperar o acesso." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Sair de $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Como gerencio meu cofre?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transferir itens para $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ exige que todos os itens sejam propriedade da organização por segurança e conformidade. Clique em aceitar para transferir a propriedade dos seus itens.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Aceitar transferência" + }, + "declineAndLeave": { + "message": "Recusar e sair" + }, + "whyAmISeeingThis": { + "message": "Por que estou vendo isso?" } } diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json index 73ba923b416..7b0e9e8a197 100644 --- a/apps/web/src/locales/pt_PT/messages.json +++ b/apps/web/src/locales/pt_PT/messages.json @@ -5169,9 +5169,21 @@ "message": "Corrigir", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Corrigir encriptação" + }, + "fixEncryptionTooltip": { + "message": "Este ficheiro está a utilizar um método de encriptação desatualizado." + }, + "attachmentUpdated": { + "message": "Anexo atualizado" + }, "oldAttachmentsNeedFixDesc": { "message": "Existem anexos de ficheiros antigos no seu cofre que têm de ser corrigidos antes de poder regenerar a chave de encriptação da sua conta." }, + "itemsTransferred": { + "message": "Itens transferidos" + }, "yourAccountsFingerprint": { "message": "Frase de impressão digital da sua conta", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -5854,7 +5866,7 @@ "description": "This will be used as a hyperlink" }, "organizationDataOwnershipWarningTitle": { - "message": "Tens a certeza de que queres continuar?" + "message": "Tem a certeza de que pretende continuar?" }, "organizationDataOwnershipWarning1": { "message": "continuará a ser acessível aos membros" @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Convidado novamente com sucesso" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ utilizadores convidados novamente", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ de $SELECTEDCOUNT$ utilizadores convidados novamente. $EXCLUDEDCOUNT$ não foram convidados devido ao limite de $LIMIT$ convites.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removido com sucesso" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "O tempo limite do cofre não está dentro do intervalo permitido." }, - "disablePersonalVaultExport": { - "message": "Remover a exportação do cofre individual" + "disableExport": { + "message": "Remover exportação" }, "disablePersonalVaultExportDescription": { "message": "Não permitir que os membros exportem dados do seu cofre individual." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Código de verificação inválido" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Já não é necessária uma palavra-passe mestra para os membros da seguinte organização. Por favor, confirme o domínio abaixo com o administrador da sua organização." - }, "keyConnectorDomain": { "message": "Domínio do Key Connector" }, @@ -7154,7 +7189,7 @@ "enabledSso": { "message": "SSO ativado" }, - "disabledSso": { + "ssoTurnedOff": { "message": "SSO desativado" }, "emailMustLoginWithSso": { @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "É necessário um início de sessão SSO" }, + "emailRequiredForSsoLogin": { + "message": "O e-mail é necessário para o SSO" + }, "selectedRegionFlag": { "message": "Bandeira da região selecionada" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Adesão familiar" }, - "planDescPremium": { - "message": "Segurança total online" + "advancedOnlineSecurity": { + "message": "Segurança online avançada" }, "planDescFamiliesV2": { "message": "Segurança de topo para a sua família" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Não foram selecionadas aplicações críticas" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "Falha na verificação do utilizador." + }, + "recoveryDeleteCiphersTitle": { + "message": "Eliminar itens irrecuperáveis do cofre" + }, + "recoveryDeleteCiphersDesc": { + "message": "Alguns dos seus itens do cofre não puderam ser recuperados. Pretende eliminar esses itens irrecuperáveis do seu cofre?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Eliminar pastas irrecuperáveis" + }, + "recoveryDeleteFoldersDesc": { + "message": "Alguns das suas pastas não puderam ser recuperados. Pretende eliminar essas pastas irrecuperáveis do seu cofre?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Substituir chave de encriptação" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Não foi possível recuperar o seu par de chaves de encriptação de chave pública. Pretende substituir a sua chave de encriptação por um novo par de chaves? Isto exigirá que configure novamente os acessos de emergência existentes e as associações à organização." + }, + "recoveryStepSyncTitle": { + "message": "A sincronizar dados" + }, + "recoveryStepPrivateKeyTitle": { + "message": "A verificar a integridade da chave de encriptação" + }, + "recoveryStepUserInfoTitle": { + "message": "A verificar informações do utilizador" + }, + "recoveryStepCipherTitle": { + "message": "A verificar a integridade dos itens do cofre" + }, + "recoveryStepFoldersTitle": { + "message": "A verificar a integridade da pasta" + }, + "dataRecoveryTitle": { + "message": "Recuperação de Dados e Diagnóstico" + }, + "dataRecoveryDescription": { + "message": "Utilize a ferramenta de recuperação de dados para diagnosticar e resolver problemas na sua conta. Após executar os diagnósticos, terá a opção de guardar os registos de diagnóstico para suporte e a opção de reparar quaisquer problemas detetados." + }, + "runDiagnostics": { + "message": "Executar diagnóstico" + }, + "repairIssues": { + "message": "Resolver problemas" + }, + "saveDiagnosticLogs": { + "message": "Guardar registos de diagnóstico" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Esta configuração é gerida pela sua organização." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "A sua organização definiu o tempo limite máximo da sessão para $HOURS$ hora(s) e $MINUTES$ minuto(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "A sua organização definiu o tempo limite de sessão predefinido para Ao atualizar o navegador." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "O tempo limite máximo não pode ser superior a $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Ao atualizar o navegador" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Configure um método de desbloqueio para alterar a sua ação de tempo limite" + }, + "leaveConfirmationDialogTitle": { + "message": "Tem a certeza de que pretende sair?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ao recusar, os seus itens pessoais permanecerão na sua conta, mas perderá o acesso aos itens partilhados e às funcionalidades da organização." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Entre em contacto com o seu administrador para recuperar o acesso." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Sair de $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Como posso gerir o meu cofre?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transferir itens para $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ exige que todos os itens sejam propriedade da organização por motivos de segurança e conformidade. Clique em Aceitar para transferir a propriedade dos seus itens.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Aceitar transferência" + }, + "declineAndLeave": { + "message": "Recusar e sair" + }, + "whyAmISeeingThis": { + "message": "Porque é que estou a ver isto?" } } diff --git a/apps/web/src/locales/ro/messages.json b/apps/web/src/locales/ro/messages.json index 8efd88e49aa..9ae83220ebd 100644 --- a/apps/web/src/locales/ro/messages.json +++ b/apps/web/src/locales/ro/messages.json @@ -5169,9 +5169,21 @@ "message": "Repară", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "Există atașamente de fișiere vechi în seiful dvs. care trebuie reparate înainte de a putea revoca cheia de criptare a contului." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Fraza amprentă a contului dvs.", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvitat cu succes" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Eliminat cu succes" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Timpul de expirare al seifului nu este în intervalul permis." }, - "disablePersonalVaultExport": { - "message": "Înlăturați exportul de seif individual" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Cod de verificare nevalid" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO a fost activat" }, - "disabledSso": { - "message": "SSO a fost activat" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/ru/messages.json b/apps/web/src/locales/ru/messages.json index 0691b4e654b..7637c2baab5 100644 --- a/apps/web/src/locales/ru/messages.json +++ b/apps/web/src/locales/ru/messages.json @@ -5169,9 +5169,21 @@ "message": "Исправить", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Исправить шифрование" + }, + "fixEncryptionTooltip": { + "message": "Этот файл использует устаревший метод шифрования." + }, + "attachmentUpdated": { + "message": "Вложение обновлено" + }, "oldAttachmentsNeedFixDesc": { "message": "В вашем хранилище есть старые вложения файлов, которые необходимо исправить, прежде чем вы сможете сменить ключ шифрования вашего аккаунта." }, + "itemsTransferred": { + "message": "Элементы переданы" + }, "yourAccountsFingerprint": { "message": "Фраза отпечатка вашего аккаунта", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Повторно приглашен успешно" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Удален(-о) успешно" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Тайм-аут хранилища находится за пределами допустимого диапазона." }, - "disablePersonalVaultExport": { - "message": "Удалить экспорт личного хранилища" + "disableExport": { + "message": "Удалить экспорт" }, "disablePersonalVaultExportDescription": { "message": "Запретить пользователям экспортировать данные из их собственного хранилища." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Неверный код подтверждения" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Мастер-пароль больше не требуется для членов следующей организации. Пожалуйста, подтвердите указанный ниже домен у администратора вашей организации." - }, "keyConnectorDomain": { "message": "Домен соединителя ключей" }, @@ -7154,7 +7189,7 @@ "enabledSso": { "message": "SSO включен" }, - "disabledSso": { + "ssoTurnedOff": { "message": "SSO отключен" }, "emailMustLoginWithSso": { @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Требуется логин SSO" }, + "emailRequiredForSsoLogin": { + "message": "Для SSO необходим email" + }, "selectedRegionFlag": { "message": "Флаг выбранного региона" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Членство Families" }, - "planDescPremium": { - "message": "Полная онлайн-защищенность" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Премиальная защищенность \n для вашей семьи" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Ваша организация больше не использует мастер-пароли для входа в Bitwarden. Чтобы продолжить, подтвердите организацию и домен." + }, + "continueWithLogIn": { + "message": "Продолжить с логином" + }, + "doNotContinue": { + "message": "Не продолжать" + }, + "domain": { + "message": "Домен" + }, + "keyConnectorDomainTooltip": { + "message": "В этом домене будут храниться ключи шифрования вашего аккаунта, поэтому убедитесь, что вы ему доверяете. Если вы не уверены, обратитесь к своему администратору." + }, + "verifyYourOrganization": { + "message": "Подтвердите свою организацию для входа" + }, + "organizationVerified": { + "message": "Организация подтверждена" + }, + "domainVerified": { + "message": "Домен верифицирован" + }, + "leaveOrganizationContent": { + "message": "Если вы не подтвердите свою организацию, ваш доступ к ней будет аннулирован." + }, + "leaveNow": { + "message": "Покинуть" + }, + "verifyYourDomainToLogin": { + "message": "Подтвердите свой домен для входа" + }, + "verifyYourDomainDescription": { + "message": "Чтобы продолжить с логином, подтвердите этот домен." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Чтобы продолжить с логином, подтвердите организацию и домен." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Критичные приложения не выбраны" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "Проверка пользователя не удалась." + }, + "recoveryDeleteCiphersTitle": { + "message": "Удалить невосстановимые элементы хранилища" + }, + "recoveryDeleteCiphersDesc": { + "message": "Некоторые элементы вашего хранилища восстановить не удалось. Вы хотите удалить элементы, которые невозможно восстановить из вашего хранилища?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Удалить невосстановимые папки" + }, + "recoveryDeleteFoldersDesc": { + "message": "Некоторые папки вашего хранилища восстановить не удалось. Вы хотите удалить папки, которые невозможно восстановить из вашего хранилища?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Сменить ключ шифрования" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Не удалось восстановить вашу пару ключей шифрования с публичным ключом. Вы хотите заменить свой ключ шифрования на новую пару ключей? Для этого вам потребуется заново настроить существующий экстренный доступ и членство в организации." + }, + "recoveryStepSyncTitle": { + "message": "Синхронизация данных" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Проверка целостности ключа шифрования" + }, + "recoveryStepUserInfoTitle": { + "message": "Проверка информации о пользователе" + }, + "recoveryStepCipherTitle": { + "message": "Проверка целостности хранилища" + }, + "recoveryStepFoldersTitle": { + "message": "Проверка целостности папки" + }, + "dataRecoveryTitle": { + "message": "Восстановление и диагностика данных" + }, + "dataRecoveryDescription": { + "message": "Используйте инструмент восстановления данных для диагностики и устранения неполадок с вашим аккаунтом. После запуска диагностики у вас будет возможность сохранить журналы диагностики для поддержки и устранить любые обнаруженные неполадки." + }, + "runDiagnostics": { + "message": "Запустить диагностику" + }, + "repairIssues": { + "message": "Решить проблемы" + }, + "saveDiagnosticLogs": { + "message": "Сохранить журналы диагностики" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Вы уверены, что хотите покинуть?" + }, + "leaveConfirmationDialogContentOne": { + "message": "В случае отказа ваши личные данные останутся в вашем аккаунте, но вы потеряете доступ к общим элементам и возможностям организации." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Свяжитесь с вашим администратором для восстановления доступа." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Покинуть $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Как я могу управлять своим хранилищем?" + }, + "transferItemsToOrganizationTitle": { + "message": "Перенести элементы в $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ требует, чтобы все элементы принадлежали организации для обеспечения безопасности и соответствия требованиям. Нажмите Принять, чтобы передать собственность на ваши элементы.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Принять передачу" + }, + "declineAndLeave": { + "message": "Отклонить и покинуть" + }, + "whyAmISeeingThis": { + "message": "Почему я это вижу?" } } diff --git a/apps/web/src/locales/si/messages.json b/apps/web/src/locales/si/messages.json index d4c4d143600..432a61608b5 100644 --- a/apps/web/src/locales/si/messages.json +++ b/apps/web/src/locales/si/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json index 70578e5bf59..698c71f458f 100644 --- a/apps/web/src/locales/sk/messages.json +++ b/apps/web/src/locales/sk/messages.json @@ -94,7 +94,7 @@ "message": "Pre sledovanie progresu, priraďte členom úlohy" }, "onceYouReviewApplications": { - "message": "Once you review applications and mark them as critical, assign tasks to your members to change their passwords." + "message": "Po kontrole aplikácií a ich označení za kritické, predeľte členom úlohu na zmenu svojho hesla." }, "sendReminders": { "message": "Poslať upomienky" @@ -179,34 +179,34 @@ } }, "noDataInOrgTitle": { - "message": "No data found" + "message": "Nenašli sa žiadne údaje" }, "noDataInOrgDescription": { - "message": "Import your organization's login data to get started with Access Intelligence. Once you do that, you'll be able to:" + "message": "Ak chcete začať s prehľadom o prístupe, importujete prihlasovacie dáta vašej organizácie. Keď to spravíte, budete môcť:" }, "feature1Title": { - "message": "Mark applications as critical" + "message": "Označiť aplikácie za kritické" }, "feature1Description": { - "message": "This will help you remove risks to your most important applications first." + "message": "Toto vám pomôže prioritne odstrániť ohrozenia vo vašich najdôležitejších aplikáciach." }, "feature2Title": { - "message": "Help members improve their security" + "message": "Pomôcť členom zlepšiť si zabezpečenie" }, "feature2Description": { - "message": "Assign at-risk members guided security tasks to update credentials." + "message": "Prideľte ohrozeným členom bezpečnostné úlohy pre aktualizáciu prihlasovacích údajov." }, "feature3Title": { - "message": "Monitor progress" + "message": "Sledovať progres" }, "feature3Description": { - "message": "Track changes over time to show security improvements." + "message": "Zobrazte zlepšenie zabezpečenia sledovaním zmien v priebehu času." }, "noReportsRunTitle": { - "message": "Generate report" + "message": "Generovať report" }, "noReportsRunDescription": { - "message": "You’re ready to start generating reports. Once you generate, you’ll be able to:" + "message": "Môžete začať generovať reporty. Po generovaní budete môcť:" }, "noCriticalApplicationsTitle": { "message": "Neoznačili ste žiadne aplikácie ako kritické" @@ -266,13 +266,13 @@ "message": "Ohrozených členov" }, "membersWithAccessToAtRiskItemsForCriticalApplications": { - "message": "These members have access to vulnerable items for critical applications." + "message": "Títo členovia majú prístup k ohrozeným položkám kritických aplikácii." }, "membersWithAtRiskPasswords": { "message": "Členovia s ohrozenými heslami" }, "membersWillReceiveSecurityTask": { - "message": "Members of your organization will be assigned a task to change vulnerable passwords. They’ll receive a notification within their Bitwarden browser extension." + "message": "Členom vašej organizácie budú pridelené úlohy na zmenu ohrozených hesiel. Upozornenie obdržia prostredníctvom rozšírenia Bitwarden pre prehliadače." }, "membersAtRiskCount": { "message": "$COUNT$ ohrozených členov", @@ -302,7 +302,7 @@ } }, "atRiskMemberDescription": { - "message": "These members are logging into critical applications with weak, exposed, or reused passwords." + "message": "Títo členovia sa prihlasujú do kritických aplikácií so slabým, uniknutým alebo viacnásobne použitým heslom." }, "atRiskMembersDescriptionNone": { "message": "These are no members logging into applications with weak, exposed, or reused passwords." @@ -386,13 +386,13 @@ "message": "Uprednostniť kritické aplikácie" }, "selectCriticalAppsDescription": { - "message": "Select which applications are most critical to your organization. Then, you’ll be able to assign security tasks to members to remove risks." + "message": "Vyberte ktoré aplikácie sú pre vašu organizáciu najkritickejšie. Potom budete môcť členom prideliť bezpečnostné úlohy pre vyriešenie ohrozených hesiel." }, "reviewNewApplications": { "message": "Review new applications" }, "reviewNewAppsDescription": { - "message": "Review new applications with vulnerable items and mark those you’d like to monitor closely as critical. Then, you’ll be able to assign security tasks to members to remove risks." + "message": "Skontrolujte nové aplikácie s ohrozenými položkami a označte tie, ktoré chcete podrobne sledovať za kritické. Potom budete môcť prideliť členom bezpečnostné úlohy pre odstránenie ohrození." }, "clickIconToMarkAppAsCritical": { "message": "Aplikáciu označíte za kritickú kliknutím na ikonu hviezdičky" @@ -3063,7 +3063,7 @@ "message": "1 GB šifrovaného úložiska pre prílohy." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ šifrovaného úložiska na prílohy.", "placeholders": { "size": { "content": "$1", @@ -4627,19 +4627,19 @@ "message": "Zistiť viac" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Pri aktualizácii nastavení šifrovania došlo k chybe." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Aktualizujte nastavenie šifrovania" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Nové odporúčané nastavenia šifrovania zlepšia bezpečnosť vášho účtu. Ak ich chcete aktualizovať teraz, zadajte hlavné heslo." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Ak chcete pokračovať, potvrďte svoju identitu" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Zadajte hlavné heslo" }, "updateSettings": { "message": "Update settings" @@ -5169,9 +5169,21 @@ "message": "Opraviť", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "V trezore máte staré prílohy ktoré musia byť opravené pred tým, než budete môcť obnoviť šifrovací kľúč k účtu." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Fráza odtlačku vašeho účtu", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -5846,7 +5858,7 @@ "description": "This is the policy description shown in the policy list." }, "organizationDataOwnershipDescContent": { - "message": "All items will be owned and saved to the organization, enabling organization-wide controls, visibility, and reporting. When turned on, a default collection will be available for each member to store items. Learn more about managing the ", + "message": "Všetky položky budú vo vlastníctve organizácie a uložené v nej, čo umožní kontrolu, prehľadnosť a vykazovanie v rámci celej organizácie. Po zapnutí bude každému členovi k dispozícii predvolená zbierka na ukladanie položiek. Dozvedieť sa viac o správe ", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'All items will be owned and saved to the organization, enabling organization-wide controls, visibility, and reporting. When turned on, a default collection will be available for each member to store items. Learn more about managing the credential lifecycle.'" }, "organizationDataOwnershipContentAnchor": { @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Opätovné pozvanie úspešné." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ používateľov opätovne pozvaných", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ z $SELECTEDCOUNT$ používateľov opätovne pozvaných. $EXCLUDEDCOUNT$ nebolo pozvaných kvôli limitu $LIMIT$ pozvánok.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Odstránenie úspešné" }, @@ -6686,7 +6724,7 @@ "message": "Okamžite" }, "onSystemLock": { - "message": "Keď je systém uzamknutý" + "message": "Pri uzamknutí systému" }, "onAppRestart": { "message": "Po reštarte aplikácie" @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Časový limit trezoru nie je v povolenom rozsahu." }, - "disablePersonalVaultExport": { - "message": "Zakázať export osobného trezora" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Zakázať používateľom exportovať údaje zo súkromného trezora." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Neplatný verifikačný kód" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hlavné heslo sa už nevyžaduje pre členov tejto organizácie. Nižšie uvedenú doménu potvrďte u správcu organizácie." - }, "keyConnectorDomain": { "message": "Doména Key Connectora" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO povolené" }, - "disabledSso": { - "message": "SSO zakázané" + "ssoTurnedOff": { + "message": "Jednotné prihlásenie vypnuté" }, "emailMustLoginWithSso": { "message": "$EMAIL$ sa musí prihlásiť cez prihlasovací formulár spoločnosti ", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Vyžaduje sa prihlásenie cez SSO" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -9857,11 +9895,11 @@ "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "switchToFreePlan": { - "message": "Switching to free plan", + "message": "Prechod na bezplatný plán", "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "switchToFreeOrg": { - "message": "Switching to free organization", + "message": "Prechod na bezplatnú organizáciu", "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "freeForOneYear": { @@ -9895,7 +9933,7 @@ "message": "Priradiť úlohy" }, "assignSecurityTasksToMembers": { - "message": "Send notifications to change passwords" + "message": "Odoslať upozornenia na zmenu hesla" }, "assignToCollections": { "message": "Prideliť k zbierkam" @@ -11704,7 +11742,7 @@ "message": "Rozšírenie Bitwarden nainštalované!" }, "bitwardenExtensionIsInstalled": { - "message": "Bitwarden extension is installed!" + "message": "Rozšírenie Bitwarden je nainštalované!" }, "openExtensionToAutofill": { "message": "Otvorte rozšírenie, prihláste sa a začnite automatické vypĺňanie." @@ -11721,11 +11759,11 @@ "description": "This will be displayed as part of a larger sentence. The whole sentence reads: 'For tips on getting started with Bitwarden visit the Learning Center and Help Center'" }, "openExtensionFromToolbarPart1": { - "message": "If the extension didn't open, you may need to open Bitwarden from the icon ", + "message": "Ak sa rozšírenie neotvorilo, možno musíte otvoriť Bitwarden prostredníctvom ikony ", "description": "This will be used as part of a larger sentence, broken up to include the Bitwarden icon. The full sentence will read 'If the extension didn't open, you may need to open Bitwarden from the icon [Bitwarden Icon] on the toolbar.'" }, "openExtensionFromToolbarPart2": { - "message": " on the toolbar.", + "message": " na paneli nástrojov.", "description": "This will be used as part of a larger sentence, broken up to include the Bitwarden icon. The full sentence will read 'If the extension didn't open, you may need to open Bitwarden from the icon [Bitwarden Icon] on the toolbar.'" }, "gettingStartedWithBitwardenPart3": { @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Členstvo pre rodiny" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Pokročilá bezpečnosť online" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12157,13 +12195,13 @@ "message": "Začať bezplatnú skúšku pre predplatné Rodiny" }, "blockClaimedDomainAccountCreation": { - "message": "Block account creation for claimed domains" + "message": "Zablokovať vytváranie účtov na privlastnenej doméne" }, "blockClaimedDomainAccountCreationDesc": { - "message": "Prevent users from creating accounts outside of your organization using email addresses from claimed domains." + "message": "Zabrániť používateľom mimo vašej organizácie vytvárať účet s emailom z privlastnených domén." }, "blockClaimedDomainAccountCreationPrerequisite": { - "message": "A domain must be claimed before activating this policy." + "message": "Pred zapnutím tohto pravidla musí byť doména privlastnená." }, "unlockMethodNeededToChangeTimeoutActionDesc": { "message": "Set up an unlock method to change your vault timeout action." @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Nie sú vybrané žiadne kritické aplikácie" }, @@ -12206,6 +12283,140 @@ "message": "Ste si istí, že chcete pokračovať?" }, "userVerificationFailed": { - "message": "User verification failed." + "message": "Zlyhalo overenie používateľa." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Toto nastavenie spravuje vaša organizácia." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Vaša organizácia nastavila maximálny časový limit relácie na $HOURS$ hod. a $MINUTES$ min.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Vaša organizácia nastavila predvolený časový limit relácie na Pri reštarte prehliadača." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximálny časový limit nesmie prekročiť $HOURS$ hod. a $MINUTES$ min.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Pri reštarte prehliadača" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Nastavte metódu odomknutia, aby ste zmenili akciu pri vypršaní časového limitu" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/sl/messages.json b/apps/web/src/locales/sl/messages.json index 10c734ec6b7..97a3f12c606 100644 --- a/apps/web/src/locales/sl/messages.json +++ b/apps/web/src/locales/sl/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Identifikacijsko geslo vašega računa", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/sr_CS/messages.json b/apps/web/src/locales/sr_CS/messages.json index 0f8a2760370..5527124ca73 100644 --- a/apps/web/src/locales/sr_CS/messages.json +++ b/apps/web/src/locales/sr_CS/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/sr_CY/messages.json b/apps/web/src/locales/sr_CY/messages.json index f1f7dd3ca73..835e4081be3 100644 --- a/apps/web/src/locales/sr_CY/messages.json +++ b/apps/web/src/locales/sr_CY/messages.json @@ -5169,9 +5169,21 @@ "message": "Фиксирај", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "У вашем сефу постоје стари прилози који треба поправити да бисте могли да промените кључ за шифровање свог налога." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Ваша Сигурносна Фраза Сефа", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Успешно поновно позивање." }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Успешно уклоњено" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Временско ограничење сефа није у дозвољеном опсегу." }, - "disablePersonalVaultExport": { - "message": "Онемогућите извоз личног сефа" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Не дозволи члановима да извозе податке из свог индивидуалног сефа." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Неисправан верификациони код" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Главна лозинка више није потребна за чланове следеће организације. Молимо потврдите домен са администратором организације." - }, "keyConnectorDomain": { "message": "Домен конектора кључа" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO омогућен" }, - "disabledSso": { - "message": "SSO онемогућен" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO пријава је потребна" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Одабрана застава" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json index 7f1275ee75c..57495a63fa8 100644 --- a/apps/web/src/locales/sv/messages.json +++ b/apps/web/src/locales/sv/messages.json @@ -94,7 +94,7 @@ "message": "Tilldela medlemmar uppgifter för att övervaka framsteg" }, "onceYouReviewApplications": { - "message": "Once you review applications and mark them as critical, assign tasks to your members to change their passwords." + "message": "När du granskar applikationer och markerar dem som kritiska, tilldela uppgifter till dina medlemmar att ändra sina lösenord." }, "sendReminders": { "message": "Skicka påminnelser" @@ -182,31 +182,31 @@ "message": "Ingen data hittades" }, "noDataInOrgDescription": { - "message": "Import your organization's login data to get started with Access Intelligence. Once you do that, you'll be able to:" + "message": "Importera din organisations inloggningsdata för att komma igång med Access Intelligence. När du gör det kommer du att:" }, "feature1Title": { "message": "Markera applikationer som kritiska" }, "feature1Description": { - "message": "This will help you remove risks to your most important applications first." + "message": "Detta kommer att hjälpa dig att minska risken för dina viktigaste applikationer först." }, "feature2Title": { "message": "Hjälp medlemmar att förbättra sin säkerhet" }, "feature2Description": { - "message": "Assign at-risk members guided security tasks to update credentials." + "message": "Tilldela medlemmar i riskzonen tydliga säkerhetsuppgifter för att uppdatera inloggningsuppgifter." }, "feature3Title": { "message": "Övervaka framsteg" }, "feature3Description": { - "message": "Track changes over time to show security improvements." + "message": "Spåra förändringar över tid för att visa säkerhetsförbättringar." }, "noReportsRunTitle": { "message": "Generera rapport" }, "noReportsRunDescription": { - "message": "You’re ready to start generating reports. Once you generate, you’ll be able to:" + "message": "Du är redo att börja generera rapporter. När du genererar dem kommer du att kunna:" }, "noCriticalApplicationsTitle": { "message": "Du har inte markerat några applikationer som kritiska" @@ -266,13 +266,13 @@ "message": "Riskutsatta medlemmar" }, "membersWithAccessToAtRiskItemsForCriticalApplications": { - "message": "These members have access to vulnerable items for critical applications." + "message": "Dessa medlemmar har tillgång till sårbara objekt för kritiska applikationer." }, "membersWithAtRiskPasswords": { "message": "Medlemmar med lösenord i riskzonen" }, "membersWillReceiveSecurityTask": { - "message": "Members of your organization will be assigned a task to change vulnerable passwords. They’ll receive a notification within their Bitwarden browser extension." + "message": "Medlemmar i din organisation kommer att tilldelas en uppgift att ändra sårbara lösenord. De kommer att få ett meddelande i deras Bitwarden-webbläsartillägg." }, "membersAtRiskCount": { "message": "$COUNT$ medlemmar i riskzonen", @@ -302,7 +302,7 @@ } }, "atRiskMemberDescription": { - "message": "These members are logging into critical applications with weak, exposed, or reused passwords." + "message": "Dessa medlemmar loggar in i kritiska applikationer med svaga, exponerade eller återanvända lösenord." }, "atRiskMembersDescriptionNone": { "message": "Det finns inga medlemmar som loggar in i applikationer med svaga, exponerade eller återanvända lösenord." @@ -362,13 +362,13 @@ "message": "Granska nu" }, "allCaughtUp": { - "message": "All caught up!" + "message": "Inget mer att göra!" }, "noNewApplicationsToReviewAtThisTime": { "message": "Inga nya applikationer att granska just nu" }, "organizationHasItemsSavedForApplications": { - "message": "Your organization has items saved for $COUNT$ applications", + "message": "Din organisation har sparade objekt för $COUNT$ applikationer", "placeholders": { "count": { "content": "$1", @@ -377,7 +377,7 @@ } }, "reviewApplicationsToSecureItems": { - "message": "Review applications to secure the items most critical to your organization's security" + "message": "Granska applikationer för att säkra de objekt som är mest kritiska för din organisations säkerhet" }, "reviewApplications": { "message": "Granska applikationer" @@ -386,22 +386,22 @@ "message": "Prioritera kritiska applikationer" }, "selectCriticalAppsDescription": { - "message": "Select which applications are most critical to your organization. Then, you’ll be able to assign security tasks to members to remove risks." + "message": "Välj vilka applikationer som är mest kritiska för din organisation. Då kommer du att kunna tilldela säkerhetsuppgifter till medlemmar för att ta bort risker." }, "reviewNewApplications": { "message": "Granska nya applikationer" }, "reviewNewAppsDescription": { - "message": "Review new applications with vulnerable items and mark those you’d like to monitor closely as critical. Then, you’ll be able to assign security tasks to members to remove risks." + "message": "Granska nya applikationer med sårbara objekt och markera dem som du vill övervaka noga som kritiska. Då kommer du att kunna tilldela säkerhetsuppgifter till medlemmar för att ta bort risker." }, "clickIconToMarkAppAsCritical": { - "message": "Click the star icon to mark an app as critical" + "message": "Klicka på stjärnikonen för att markera en app som kritisk" }, "markAsCriticalPlaceholder": { "message": "Markera som kritisk funktionalitet kommer att implementeras i en framtida uppdatering" }, "applicationReviewSaved": { - "message": "Application review saved" + "message": "Applikationsgranskning sparad" }, "newApplicationsReviewed": { "message": "Nya applikationer granskade" @@ -875,7 +875,7 @@ "message": "Favoriter" }, "taskSummary": { - "message": "Task summary" + "message": "Uppgiftssammandrag" }, "types": { "message": "Typer" @@ -1717,7 +1717,7 @@ "message": "Inga objekt i valvet" }, "emptyVaultDescription": { - "message": "The vault protects more than just your passwords. Store secure logins, IDs, cards and notes securely here." + "message": "Valvet skyddar mer än bara dina lösenord. Förvara säkra inloggningar, ID-handlingar, kort och anteckningar säkert här." }, "emptyFavorites": { "message": "Du har inga favoritobjekt" @@ -3044,7 +3044,7 @@ "message": "Se till att ditt konto har tillräckligt mycket tillgänglig kredit för detta köp. Om ditt konto inte har tillräckligt med tillgänglig kredit, kommer din sparade standardbetalningsmetod användas för skillnaden. Du kan lägga till kredit till ditt konto från faktureringssidan." }, "notEnoughAccountCredit": { - "message": "You do not have enough account credit for this purchase. You can add credit to your account from the Billing page." + "message": "Du har inte tillräckligt med kontokredit för detta köp. Du kan lägga till kredit till ditt konto från faktureringssidan." }, "creditAppliedDesc": { "message": "Kontots kredit kan användas för att göra köp. Tillgänglig kredit kommer automatiskt tillämpas mot fakturor som genereras för detta konto." @@ -3063,7 +3063,7 @@ "message": "1 GB krypterad lagring." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ krypterad lagring för filbilagor.", "placeholders": { "size": { "content": "$1", @@ -3134,10 +3134,10 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "Din Premium-prenumeration avslutades" }, "premiumSubscriptionEndedDesc": { - "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." + "message": "För att återfå åtkomst till ditt arkiv, starta om Premium-prenumerationen. Om du redigerar detaljer för ett arkiverat objekt innan du startar om kommer det att flyttas tillbaka till ditt valv." }, "restartPremium": { "message": "Starta om Premium" @@ -4479,7 +4479,7 @@ "message": "Uppdatera webbläsare" }, "generatingYourAccessIntelligence": { - "message": "Generating your Access Intelligence..." + "message": "Genererar din Access Intelligence..." }, "fetchingMemberData": { "message": "Hämtar medlemsdata..." @@ -5096,7 +5096,7 @@ "message": "Organisationen är avstängd" }, "organizationIsSuspendedDesc": { - "message": "Items in suspended organizations cannot be accessed. Contact your organization owner for assistance." + "message": "Objekt i inaktiverade organisationer är inte åtkomliga. Kontakta organisationens ägare för att få hjälp." }, "secretsAccessSuspended": { "message": "Avstängda organisationer kan inte nås. Kontakta din organisationsägare för hjälp." @@ -5169,9 +5169,21 @@ "message": "Åtgärda", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fixa kryptering" + }, + "fixEncryptionTooltip": { + "message": "Denna fil använder en föråldrad krypteringsmetod." + }, + "attachmentUpdated": { + "message": "Bilaga uppdaterad" + }, "oldAttachmentsNeedFixDesc": { "message": "Det finns gamla bilagor i ditt valv som behöver åtgärdas innan du kan rotera ditt kontos krypteringsnyckel." }, + "itemsTransferred": { + "message": "Objekt överförda" + }, "yourAccountsFingerprint": { "message": "Ditt kontos fingeravtrycksfras", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -5484,7 +5496,7 @@ "message": "SSO-identifierare" }, "ssoIdentifierHint": { - "message": "Provide this ID to your members to login with SSO. Members can skip entering this identifier during SSO if a claimed domain is set up. ", + "message": "Ange detta id till dina medlemmar för att logga in med SSO. Medlemmar kan hoppa över att ange denna identifierare under SSO om en domän som gjorts anspråk på är inställd. ", "description": "This will be used as part of a larger sentence, broken up to include a link. The full sentence will read 'Provide this ID to your members to login with SSO. Members can skip entering this identifier during SSO if a claimed domain is set up. Learn more'" }, "claimedDomainsLearnMore": { @@ -5846,7 +5858,7 @@ "description": "This is the policy description shown in the policy list." }, "organizationDataOwnershipDescContent": { - "message": "All items will be owned and saved to the organization, enabling organization-wide controls, visibility, and reporting. When turned on, a default collection will be available for each member to store items. Learn more about managing the ", + "message": "Alla objekt kommer att ägas och sparas till organisationen, vilket möjliggör organisationsövergripande kontroller, synlighet och rapportering. När den är aktiverad kommer en standardsamling att finnas tillgänglig för varje medlem att lagra objekt. Läs mer om hur du hanterar ", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'All items will be owned and saved to the organization, enabling organization-wide controls, visibility, and reporting. When turned on, a default collection will be available for each member to store items. Learn more about managing the credential lifecycle.'" }, "organizationDataOwnershipContentAnchor": { @@ -5897,7 +5909,7 @@ "description": "This is a fragment of a larger sencence. The whole sentence will read: 'Select Turn on'" }, "autoConfirmExtensionOpened": { - "message": "Successfully opened the Bitwarden browser extension. You can now activate the automatic user confirmation setting." + "message": "Lyckades öppna Bitwarden-webbläsartillägg. Du kan nu aktivera inställningen för automatisk bekräftelse av användaren." }, "autoConfirmPolicyEditDescription": { "message": "Nya användare som bjuds in till organisationen kommer automatiskt att bekräftas när en administratörs enhet är upplåst. Innan du aktiverar denna policy, granska och godkänn följande: ", @@ -5907,7 +5919,7 @@ "message": "Potentiell säkerhetsrisk. " }, "autoConfirmAcceptSecurityRiskDescription": { - "message": "Automatic user confirmation could pose a security risk to your organization’s data." + "message": "Automatisk användarbekräftelse kan innebära en säkerhetsrisk för din organisations data." }, "autoConfirmAcceptSecurityRiskLearnMore": { "message": "Läs mer om riskerna", @@ -5917,10 +5929,10 @@ "message": "En organisationspolicy krävs. " }, "autoConfirmSingleOrgRequiredDesc": { - "message": "All members must only belong to this organization to activate this automation." + "message": "Alla medlemmar får bara tillhöra denna organisation för att aktivera denna automatisering." }, "autoConfirmSingleOrgExemption": { - "message": "Single organization policy will extend to all roles. " + "message": "En gemensam organisation policy kommer att utvidgas till alla roller. " }, "autoConfirmNoEmergencyAccess": { "message": "Ingen nödåtkomst. " @@ -5993,7 +6005,7 @@ "message": "Standardmatchning för URI" }, "invalidUriMatchDefaultPolicySetting": { - "message": "Please select a valid URI match detection option.", + "message": "Välj ett giltigt upptäcktsalternativ för URI-matchning.", "description": "Error message displayed when a user attempts to save URI match detection policy settings with an invalid selection." }, "modifiedPolicyId": { @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Bjöd in igen" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ användare återinbjudna", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ av $SELECTEDCOUNT$ användare återinbjudna. $EXCLUDEDCOUNT$ blev inte inbjudna på grund av gränsen på $LIMIT$ inbjudningar.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Tog bort" }, @@ -6653,7 +6691,7 @@ "message": "Automatisk inloggning med SSO" }, "automaticAppLoginWithSSODesc": { - "message": "Extend SSO security and convenience to unmanaged apps. When users launch an app from your identity provider, their login details are automatically filled and submitted, creating a one-click, secure flow from the identity provider to the app." + "message": "Utöka SSO-säkerhet och bekvämlighet till ohanterade appar. När användare startar en app från din identitetsleverantör fylls deras inloggningsuppgifter automatiskt i och skickas in, skapa ett enda klick, säkert flöde från identitetsleverantör till appen." }, "automaticAppLoginIdpHostLabel": { "message": "Identitetsleverantörens värd" @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout ligger inte inom tillåtet intervall." }, - "disablePersonalVaultExport": { - "message": "Ta bort export av enskilda valv" + "disableExport": { + "message": "Ta bort export" }, "disablePersonalVaultExportDescription": { "message": "Tillåt inte medlemmar att exportera data från sina individuella valv." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Ogiltig verifieringskod" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Ett huvudlösenord krävs inte längre för medlemmar i följande organisation. Vänligen bekräfta domänen nedan med din organisationsadministratör." - }, "keyConnectorDomain": { "message": "Key Connector-domän" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO aktiverad" }, - "disabledSso": { - "message": "SSO inaktiverad" + "ssoTurnedOff": { + "message": "SSO avstängd" }, "emailMustLoginWithSso": { "message": "$EMAIL$ måste logga in med Single Sign-on", @@ -7408,7 +7443,7 @@ } }, "exportingOrganizationVaultFromPasswordManagerWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported.", + "message": "Endast organisationsvalvet som är associerat med $ORGANIZATION$ kommer att exporteras.", "placeholders": { "organization": { "content": "$1", @@ -7417,7 +7452,7 @@ } }, "exportingOrganizationVaultFromAdminConsoleWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. My items collections will not be included.", + "message": "Endast organisationsvalvet som är associerat med $ORGANIZATION$ kommer att exporteras. Mina objektsamlingar kommer inte att inkluderas.", "placeholders": { "organization": { "content": "$1", @@ -8936,7 +8971,7 @@ } }, "accessedProjectWithIdentifier": { - "message": "Accessed a project with identifier: $PROJECT_ID$.", + "message": "Kom åt ett projekt med identifierare: $PROJECT_ID$.", "placeholders": { "project_id": { "content": "$1", @@ -8963,7 +8998,7 @@ } }, "nameUnavailableServiceAccountDeleted": { - "message": "Deleted machine account Id: $SERVICE_ACCOUNT_ID$", + "message": "Tog bort maskinkonto med id: $SERVICE_ACCOUNT_ID$", "placeholders": { "service_account_id": { "content": "$1", @@ -8981,7 +9016,7 @@ } }, "addedUserToServiceAccountWithId": { - "message": "Added user: $USER_ID$ to machine account with identifier: $SERVICE_ACCOUNT_ID$", + "message": "Lade till användare: $USER_ID$ till maskinkonto med identifierare: $SERVICE_ACCOUNT_ID$", "placeholders": { "user_id": { "content": "$1", @@ -8994,7 +9029,7 @@ } }, "removedUserToServiceAccountWithId": { - "message": "Removed user: $USER_ID$ from machine account with identifier: $SERVICE_ACCOUNT_ID$", + "message": "Tog bort användare: $USER_ID$ från maskinkonto med identifierare: $SERVICE_ACCOUNT_ID$", "placeholders": { "user_id": { "content": "$1", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO-inloggning krävs" }, + "emailRequiredForSsoLogin": { + "message": "E-postadress krävs för SSO" + }, "selectedRegionFlag": { "message": "Flagga för vald region" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Familjemedlemskap" }, - "planDescPremium": { - "message": "Komplett säkerhet online" + "advancedOnlineSecurity": { + "message": "Avancerad säkerhet online" }, "planDescFamiliesV2": { "message": "Premiumsäkerhet för din familj" @@ -12157,13 +12195,13 @@ "message": "Starta gratis testperiod för Families" }, "blockClaimedDomainAccountCreation": { - "message": "Block account creation for claimed domains" + "message": "Blockera kontoskapande för domäner som gjorts anspråk på" }, "blockClaimedDomainAccountCreationDesc": { - "message": "Prevent users from creating accounts outside of your organization using email addresses from claimed domains." + "message": "Förhindra användare från att skapa konton utanför din organisation med hjälp av e-postadresser från domäner som gjorts anspråk på." }, "blockClaimedDomainAccountCreationPrerequisite": { - "message": "A domain must be claimed before activating this policy." + "message": "En domän måste göras anspråk på först innan denna policy aktiveras." }, "unlockMethodNeededToChangeTimeoutActionDesc": { "message": "Konfigurera en upplåsningsmetod för att ändra tidsgränsåtgärden för valvet." @@ -12199,13 +12237,186 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Din organisation använder inte längre huvudlösenord för att logga in på Bitwarden. För att fortsätta, verifiera organisationen och domänen." + }, + "continueWithLogIn": { + "message": "Fortsätt med inloggning" + }, + "doNotContinue": { + "message": "Fortsätt inte" + }, + "domain": { + "message": "Domän" + }, + "keyConnectorDomainTooltip": { + "message": "Denna domän kommer att lagra dina krypteringsnycklar, så se till att du litar på den. Om du inte är säker, kontrollera med din administratör." + }, + "verifyYourOrganization": { + "message": "Verifiera din organisation för att logga in" + }, + "organizationVerified": { + "message": "Organisation verifierad" + }, + "domainVerified": { + "message": "Domän verifierad" + }, + "leaveOrganizationContent": { + "message": "Om du inte verifierar din organisation kommer din åtkomst till organisationen att återkallas." + }, + "leaveNow": { + "message": "Lämna nu" + }, + "verifyYourDomainToLogin": { + "message": "Verifiera din domän för att logga in" + }, + "verifyYourDomainDescription": { + "message": "För att fortsätta med inloggning, verifiera denna domän." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "För att fortsätta logga in, verifiera organisationen och domänen." + }, "confirmNoSelectedCriticalApplicationsTitle": { - "message": "No critical applications are selected" + "message": "Inga kritiska applikationer är valda" }, "confirmNoSelectedCriticalApplicationsDesc": { "message": "Är du säker på att du vill fortsätta?" }, "userVerificationFailed": { "message": "Verifiering av användare misslyckades." + }, + "recoveryDeleteCiphersTitle": { + "message": "Ta bort oåterkalleliga valvobjekt" + }, + "recoveryDeleteCiphersDesc": { + "message": "Några av dina valvobjekt kunde inte återställas. Vill du ta bort dessa oåterkalleliga objekt från ditt valv?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Ta bort oåterkalleliga mappar" + }, + "recoveryDeleteFoldersDesc": { + "message": "Några av dina mappar kunde inte återställas. Vill du ta bort dessa oåterkalleliga mappar från ditt valv?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Ersätt krypteringsnyckel" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Ditt publika nyckelpar för kryptering kunde inte återställas. Vill du ersätta din krypteringsnyckel med ett nytt nyckelpar? Detta kommer att kräva att du konfigurerar befintlig nödåtkomst och organisationsmedlemskap igen." + }, + "recoveryStepSyncTitle": { + "message": "Synkroniserar data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifierar integritet för krypteringsnyckeln" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifierar användarinformation" + }, + "recoveryStepCipherTitle": { + "message": "Verifierar integritet för valvobjekt" + }, + "recoveryStepFoldersTitle": { + "message": "Verifierar mappintegritet" + }, + "dataRecoveryTitle": { + "message": "Dataåterställning och diagnostik" + }, + "dataRecoveryDescription": { + "message": "Använd verktyget för dataåterställning för att diagnostisera och reparera problem med ditt konto. Efter att ha kört diagnostik har du möjlighet att spara diagnostikloggar för support och möjlighet att reparera eventuella upptäckta problem." + }, + "runDiagnostics": { + "message": "Kör diagnostik" + }, + "repairIssues": { + "message": "Reparera problem" + }, + "saveDiagnosticLogs": { + "message": "Spara diagnostikloggar" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Den här inställningen hanteras av din organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Din organisation har ställt in maximal sessionstidsgräns till $HOURS$ timmar och $MINUTES$ minut(er).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Din organisation har ställt in tidsgränsen för standardsession till Vid webbläsaruppdatering." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximal tidsgräns får inte överstiga $HOURS$ timmar och $MINUTES$ minut(er)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Vid webbläsaruppdatering" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Ställ in en upplåsningsmetod för att ändra din tidsgränsåtgärd" + }, + "leaveConfirmationDialogTitle": { + "message": "Är du säker på att du vill lämna?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Genom att avböja kommer dina personliga objekt att stanna på ditt konto, men du kommer att förlora åtkomst till delade objekt och organisationsfunktioner." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Kontakta administratören för att återfå åtkomst." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Lämna $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Hur hanterar jag mitt valv?" + }, + "transferItemsToOrganizationTitle": { + "message": "Överför objekt till $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ kräver att alla objekt ägs av organisationen för säkerhet och efterlevnad. Klicka på godkänn för att överföra ägarskapet för dina objekt.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Godkänn överföring" + }, + "declineAndLeave": { + "message": "Avböj och lämna" + }, + "whyAmISeeingThis": { + "message": "Varför ser jag det här?" } } diff --git a/apps/web/src/locales/ta/messages.json b/apps/web/src/locales/ta/messages.json index 98970962d69..5f2a1afba42 100644 --- a/apps/web/src/locales/ta/messages.json +++ b/apps/web/src/locales/ta/messages.json @@ -5169,9 +5169,21 @@ "message": "சரிசெய்", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "உங்கள் வால்ட்டில் பழைய கோப்பு இணைப்புகள் உள்ளன, அவை உங்கள் கணக்கின் என்க்ரிப்ஷன் கீயைச் சுழற்றுவதற்கு முன் சரிசெய்யப்பட வேண்டும்." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "உங்கள் கணக்கின் ஃபிங்கர்பிரிண்ட் ஃபிரேஸ்", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "வெற்றிகரமாக மீண்டும் அழைக்கப்பட்டது" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "வெற்றிகரமாக அகற்றப்பட்டது" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "பெட்டக காலக்கெடு அனுமதிக்கப்பட்ட வரம்பிற்குள் இல்லை." }, - "disablePersonalVaultExport": { - "message": "தனிப்பட்ட பெட்டக ஏற்றுமதியை அகற்று" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "உறுப்பினர்கள் தங்கள் தனிப்பட்ட பெட்டகத்திலிருந்து தரவை ஏற்றுமதி செய்ய அனுமதிக்க வேண்டாம்." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "தவறான சரிபார்ப்புக் குறியீடு" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "பின்வரும் நிறுவனத்தின் உறுப்பினர்களுக்கு மாஸ்டர் கடவுச்சொல் இனி தேவையில்லை. தயவுசெய்து கீழே உள்ள டொமைனை உங்கள் நிறுவன நிர்வாகியுடன் உறுதிப்படுத்தவும்." - }, "keyConnectorDomain": { "message": "கீ கனெக்டர் டொமைன்" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO இயக்கப்பட்டது" }, - "disabledSso": { - "message": "SSO இயக்கப்பட்டது" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO உள்நுழைவு தேவை" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "தேர்ந்தெடுக்கப்பட்ட பிராந்திய கொடி" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/te/messages.json b/apps/web/src/locales/te/messages.json index 608215f8155..fd419fe7397 100644 --- a/apps/web/src/locales/te/messages.json +++ b/apps/web/src/locales/te/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/th/messages.json b/apps/web/src/locales/th/messages.json index c20cc2e5d8c..362db4faea2 100644 --- a/apps/web/src/locales/th/messages.json +++ b/apps/web/src/locales/th/messages.json @@ -5169,9 +5169,21 @@ "message": "Fix", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "There are old file attachments in your vault that need to be fixed before you can rotate your account's encryption key." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Your account's fingerprint phrase", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Reinvited successfully" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Removed successfully" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Vault timeout is not within allowed range." }, - "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Do not allow members to export data from their individual vault." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Invalid verification code" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "keyConnectorDomain": { "message": "Key Connector domain" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO turned on" }, - "disabledSso": { - "message": "SSO turned on" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO login is required" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Selected region flag" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Premium security for your family" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json index 829c0ca17dc..dbb8eb2d299 100644 --- a/apps/web/src/locales/tr/messages.json +++ b/apps/web/src/locales/tr/messages.json @@ -39,7 +39,7 @@ } }, "noReportRan": { - "message": "You have not created a report yet" + "message": "Henüz bir rapor oluşturmadınız" }, "notifiedMembers": { "message": "Bildirilen üyeler" @@ -75,7 +75,7 @@ } }, "securityTasksCompleted": { - "message": "$COUNT$ out of $TOTAL$ security tasks completed", + "message": "$TOTAL$ güvenlik görevinden $COUNT$ tanesi tamamlandı", "placeholders": { "count": { "content": "$1", @@ -88,28 +88,28 @@ } }, "passwordChangeProgress": { - "message": "Password change progress" + "message": "Parola değiştirme ilerlemesi" }, "assignMembersTasksToMonitorProgress": { - "message": "Assign members tasks to monitor progress" + "message": "İlerlemeyi izlemek için üyelere görevler atayın" }, "onceYouReviewApplications": { - "message": "Once you review applications and mark them as critical, assign tasks to your members to change their passwords." + "message": "Uygulamaları gözden geçirip kritik olarak işaretledikten sonra, parolalarını değiştirmeleri için üyelerinize görevler atayın." }, "sendReminders": { - "message": "Send reminders" + "message": "Hatırlatıcı gönder" }, "onceYouMarkApplicationsCriticalTheyWillDisplayHere": { - "message": "Once you mark applications critical, they will display here." + "message": "Uygulamaları kritik olarak işaretlediğinizde burada görüntülenecekler." }, "viewAtRiskMembers": { - "message": "View at-risk members" + "message": "Risk altındaki üyeleri görüntüle" }, "viewAtRiskApplications": { - "message": "View at-risk applications" + "message": "Risk altındaki uygulamaları görüntüle" }, "criticalApplicationsAreAtRisk": { - "message": "$COUNT$ out of $TOTAL$ critical applications are at-risk due to at-risk passwords", + "message": "Riskli parolalar nedeniyle $TOTAL$ kritik uygulamadan $COUNT$ tanesi risk altında", "placeholders": { "count": { "content": "$1", @@ -131,7 +131,7 @@ } }, "criticalApplicationsMarked": { - "message": "critical applications marked" + "message": "işaretlenmiş kritik uygulamalar" }, "countOfCriticalApplications": { "message": "$COUNT$ kritik uygulama", @@ -143,7 +143,7 @@ } }, "countOfApplicationsAtRisk": { - "message": "$COUNT$ applications at-risk", + "message": "$COUNT$ uygulama risk altında", "placeholders": { "count": { "content": "$1", @@ -152,7 +152,7 @@ } }, "countOfAtRiskPasswords": { - "message": "$COUNT$ passwords at-risk", + "message": "$COUNT$ parola risk altında", "placeholders": { "count": { "content": "$1", @@ -179,34 +179,34 @@ } }, "noDataInOrgTitle": { - "message": "No data found" + "message": "Veri bulunamadı" }, "noDataInOrgDescription": { - "message": "Import your organization's login data to get started with Access Intelligence. Once you do that, you'll be able to:" + "message": "Access Intelligence’i kullanmaya başlamak için kuruluşunuzun hesap verilerini içe aktarın. Bunu yaptıktan sonra şunları yapabileceksiniz:" }, "feature1Title": { - "message": "Mark applications as critical" + "message": "Uygulamaları kritik olarak işaretle" }, "feature1Description": { - "message": "This will help you remove risks to your most important applications first." + "message": "Bu, öncelikle en önemli uygulamalarınızdaki riskleri ortadan kaldırmanıza yardımcı olur." }, "feature2Title": { - "message": "Help members improve their security" + "message": "Üyelerin güvenliklerini iyileştirmelerine yardımcı olun" }, "feature2Description": { - "message": "Assign at-risk members guided security tasks to update credentials." + "message": "Kimlik bilgilerini güncellemeleri için risk altındaki üyelere rehberli güvenlik görevleri atayın." }, "feature3Title": { - "message": "Monitor progress" + "message": "İlerlemeyi izle" }, "feature3Description": { - "message": "Track changes over time to show security improvements." + "message": "Zaman içindeki değişiklikleri takip ederek güvenlikteki iyileşmeleri gösterin." }, "noReportsRunTitle": { - "message": "Generate report" + "message": "Rapor oluştur" }, "noReportsRunDescription": { - "message": "You’re ready to start generating reports. Once you generate, you’ll be able to:" + "message": "Artık rapor oluşturmaya hazırsınız. Rapor oluşturduğunuzda şunları yapabileceksiniz:" }, "noCriticalApplicationsTitle": { "message": "Hiçbir uygulamayı kritik olarak işaretlemediniz" @@ -224,19 +224,19 @@ "message": "Kritik olarak işaretle" }, "applicationsSelected": { - "message": "applications selected" + "message": "seçili uygulamalar" }, "selectApplication": { - "message": "Select application" + "message": "Uygulama seçin" }, "unselectApplication": { - "message": "Unselect application" + "message": "Uygulama seçimini kaldır" }, "applicationsMarkedAsCriticalSuccess": { "message": "Kritik olarak işaretlenmiş uygulamalar" }, "criticalApplicationsMarkedSuccess": { - "message": "$COUNT$ applications marked as critical", + "message": "$COUNT$ uygulama kritik olarak işaretlendi", "placeholders": { "count": { "content": "$1", @@ -245,7 +245,7 @@ } }, "applicationsMarkedAsCriticalFail": { - "message": "Failed to mark applications as critical" + "message": "Uygulamaların kritik olarak işaretlenmesi başarısız oldu" }, "application": { "message": "Uygulama" @@ -266,13 +266,13 @@ "message": "Riskli üyeler" }, "membersWithAccessToAtRiskItemsForCriticalApplications": { - "message": "These members have access to vulnerable items for critical applications." + "message": "Bu üyelerin kritik uygulamalara ait güvenlik zafiyeti olan kayıtlara erişimi var." }, "membersWithAtRiskPasswords": { - "message": "Members with at-risk passwords" + "message": "Riskli parolalara sahip üyeler" }, "membersWillReceiveSecurityTask": { - "message": "Members of your organization will be assigned a task to change vulnerable passwords. They’ll receive a notification within their Bitwarden browser extension." + "message": "Kuruluşunuzdaki üyelere, güvenlik zafiyeti olan parolaları değiştirmeleri için bir görev atanacaktır. Bildirimi Bitwarden tarayıcı uzantıları içinde alacaklar." }, "membersAtRiskCount": { "message": "$COUNT$ üye risk altında", @@ -302,7 +302,7 @@ } }, "atRiskMemberDescription": { - "message": "These members are logging into critical applications with weak, exposed, or reused passwords." + "message": "Bu üyeler kritik uygulamalara zayıf, ele geçirilmiş veya yeniden kullanılan parolalarla giriş yapıyor." }, "atRiskMembersDescriptionNone": { "message": "Zayıf, ele geçirilmiş veya tekrar kullanılan parolayla uygulamalara giriş yapan üye yok." @@ -341,13 +341,13 @@ "message": "Toplam uygulama" }, "applicationsNeedingReview": { - "message": "Applications needing review" + "message": "Gözden geçirilmesi gereken uygulamalar" }, "newApplicationsCardTitle": { - "message": "Review new applications" + "message": "Yeni uygulamaları gözden geçir" }, "newApplicationsWithCount": { - "message": "$COUNT$ new applications", + "message": "$COUNT$ yeni uygulama", "placeholders": { "count": { "content": "$1", @@ -356,19 +356,19 @@ } }, "newApplicationsDescription": { - "message": "Review new applications to mark as critical and keep your organization secure" + "message": "Kuruluşunuzun güvenliğini sağlamak için yeni uygulamaları gözden geçirip kritik olarak işaretleyin" }, "reviewNow": { - "message": "Review now" + "message": "Şimdi gözden geçir" }, "allCaughtUp": { "message": "Şimdilik bu kadar!" }, "noNewApplicationsToReviewAtThisTime": { - "message": "No new applications to review at this time" + "message": "Şu anda gözden geçirilecek yeni uygulama yok" }, "organizationHasItemsSavedForApplications": { - "message": "Your organization has items saved for $COUNT$ applications", + "message": "Kuruluşunuzun $COUNT$ uygulama için kaydedilmiş kayıtları var", "placeholders": { "count": { "content": "$1", @@ -377,37 +377,37 @@ } }, "reviewApplicationsToSecureItems": { - "message": "Review applications to secure the items most critical to your organization's security" + "message": "Kuruluşunuzun güvenliği açısından en kritik kayıtları güvence altına almak için uygulamaları gözden geçirin" }, "reviewApplications": { - "message": "Review applications" + "message": "Uygulamaları gözden geçir" }, "prioritizeCriticalApplications": { - "message": "Prioritize critical applications" + "message": "Kritik uygulamalara öncelik ver" }, "selectCriticalAppsDescription": { - "message": "Select which applications are most critical to your organization. Then, you’ll be able to assign security tasks to members to remove risks." + "message": "Kuruluşunuz için en kritik uygulamaları seçin. Ardından riskleri ortadan kaldırmak için üyelere güvenlik görevleri atayabilirsiniz." }, "reviewNewApplications": { - "message": "Review new applications" + "message": "Yeni uygulamaları gözden geçir" }, "reviewNewAppsDescription": { - "message": "Review new applications with vulnerable items and mark those you’d like to monitor closely as critical. Then, you’ll be able to assign security tasks to members to remove risks." + "message": "Güvenlik zafiyeti olan kayıtlara sahip yeni uygulamaları gözden geçirip yakından izlemek istediklerinizi kritik olarak işaretleyin. Ardından riskleri ortadan kaldırmak için üyelere güvenlik görevleri atayabilirsiniz." }, "clickIconToMarkAppAsCritical": { - "message": "Click the star icon to mark an app as critical" + "message": "Bir uygulamayı kritik olarak işaretlemek için yıldız simgesine tıklayın" }, "markAsCriticalPlaceholder": { - "message": "Mark as critical functionality will be implemented in a future update" + "message": "Kritik olarak işaretle işlevselliği gelecekteki bir güncellemede uygulanacaktır" }, "applicationReviewSaved": { - "message": "Application review saved" + "message": "Uygulama incelemesi kaydedildi" }, "newApplicationsReviewed": { - "message": "New applications reviewed" + "message": "Yeni uygulamalar incelendi" }, "errorSavingReviewStatus": { - "message": "Error saving review status" + "message": "İnceleme durumu kaydedilirken hata oluştu" }, "pleaseTryAgain": { "message": "Lütfen yeniden deneyin" @@ -1390,7 +1390,7 @@ "message": "Bu pencereyi açık tutun ve tarayıcınızdan gelen talimatları uygulayın." }, "passkeyAuthenticationFailed": { - "message": "Passkey authentication failed. Please try again." + "message": "Geçiş anahtarı ile kimlik doğrulama başarısız oldu. Lütfen tekrar deneyin." }, "useADifferentLogInMethod": { "message": "Başka bir giriş yöntemi kullan" @@ -1720,13 +1720,13 @@ "message": "Kasanız sadece parolalarınız için değil. Hesaplarınızı, kimliklerinizi, kredi kartlarınızı ve notlarınızı da güvenle burada depolayabilirsiniz." }, "emptyFavorites": { - "message": "You haven't favorited any items" + "message": "Henüz hiçbir kaydı favorilere eklemediniz" }, "emptyFavoritesDesc": { - "message": "Add frequently used items to favorites for quick access." + "message": "Sık kullandığınız kayıtları hızlı erişim için favorilere ekleyin." }, "noSearchResults": { - "message": "No search results returned" + "message": "Arama sonucu bulunamadı" }, "clearFiltersOrTryAnother": { "message": "Filtreleri temizleyin veya başka bir arama yapmayı deneyin" @@ -3044,7 +3044,7 @@ "message": "Lütfen hesabınızda bu ödemeyi yapabilecek kadar kredi olduğundan emin olun. Eğer hesabınızda yeteri kadar kredi yoksa, aradaki fark varsayılan ödeme yöntemizinden karşılanacaktır. Faturalandırma sayfasından hesabınıza kredi ekleyebilirsiniz." }, "notEnoughAccountCredit": { - "message": "You do not have enough account credit for this purchase. You can add credit to your account from the Billing page." + "message": "Bu satın alma için yeterli hesap krediniz yok. Faturalandırma sayfasından hesabınıza kredi ekleyebilirsiniz." }, "creditAppliedDesc": { "message": "Hesabınızdaki krediyi satın alımlarda kullanabilirsiniz. Mevcut krediniz bu hesap için oluşturulan faturalardan otomatik olarak düşülecektir." @@ -3134,13 +3134,13 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "Premium aboneliğiniz sona erdi" }, "premiumSubscriptionEndedDesc": { - "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." + "message": "Arşivinize yeniden erişim kazanmak için Premium aboneliğinizi yeniden başlatın. Yeniden başlatmadan önce arşivlenmiş bir kaydın ayrıntılarını düzenlerseniz, kayıt tekrar kasanıza taşınır." }, "restartPremium": { - "message": "Restart Premium" + "message": "Premium’u yeniden başlat" }, "additionalStorageGb": { "message": "Ek depolama alanı (GB)" @@ -4479,34 +4479,34 @@ "message": "Tarayıcıyı güncelle" }, "generatingYourAccessIntelligence": { - "message": "Generating your Access Intelligence..." + "message": "Access Intelligence’ınız oluşturuluyor..." }, "fetchingMemberData": { - "message": "Fetching member data..." + "message": "Üye verileri getiriliyor..." }, "analyzingPasswordHealth": { - "message": "Analyzing password health..." + "message": "Parola sağlığı analiz ediliyor..." }, "calculatingRiskScores": { - "message": "Calculating risk scores..." + "message": "Risk puanları hesaplanıyor..." }, "generatingReportData": { - "message": "Generating report data..." + "message": "Rapor verileri oluşturuluyor..." }, "savingReport": { - "message": "Saving report..." + "message": "Rapor kaydediliyor..." }, "compilingInsights": { - "message": "Compiling insights..." + "message": "İçgörüler derleniyor..." }, "loadingProgress": { - "message": "Loading progress" + "message": "Yükleme ilerlemesi" }, "thisMightTakeFewMinutes": { - "message": "This might take a few minutes." + "message": "Bu işlem birkaç dakika sürebilir." }, "riskInsightsRunReport": { - "message": "Run report" + "message": "Raporu çalıştır" }, "updateBrowserDesc": { "message": "Desteklenmeyen bir web tarayıcısı kullanıyorsunuz. Web kasası düzgün çalışmayabilir." @@ -4591,7 +4591,7 @@ "message": "Davet kabul edildi" }, "invitationAcceptedDesc": { - "message": "Successfully accepted your invitation." + "message": "Davetiniz başarıyla kabul edildi." }, "inviteInitAcceptedDesc": { "message": "Artık bu kuruluşa erişebilirsiniz." @@ -4627,19 +4627,19 @@ "message": "Daha fazla bilgi al" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Şifreleme ayarları güncellenirken bir hata oluştu." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Şifreleme ayarlarınızı güncelleyin" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Önerilen yeni şifreleme ayarları hesap güvenliğinizi artıracaktır. Şimdi güncellemek için ana parolanızı girin." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Devam etmek için kimliğinizi doğrulayın" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Ana parolanızı girin" }, "updateSettings": { "message": "Ayarları güncelle" @@ -5169,9 +5169,21 @@ "message": "Düzelt", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Şifrelemeyi düzelt" + }, + "fixEncryptionTooltip": { + "message": "Bu dosya eski bir şifreleme yöntemi kullanıyor." + }, + "attachmentUpdated": { + "message": "Ek güncellendi" + }, "oldAttachmentsNeedFixDesc": { "message": "Hesabınızın şifreleme anahtarını yenilemeden önce kasanızdaki eski dosya eklerini düzeltilmeniz gerekiyor." }, + "itemsTransferred": { + "message": "Kayıtlar aktarıldı" + }, "yourAccountsFingerprint": { "message": "Hesabınızın parmak izi ifadesi", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -5484,11 +5496,11 @@ "message": "SSO tanımlayıcı" }, "ssoIdentifierHint": { - "message": "Provide this ID to your members to login with SSO. Members can skip entering this identifier during SSO if a claimed domain is set up. ", + "message": "Üyelerinizin SSO ile hesaplarına erişebilmeleri için bu kimliği onlara verin. Bir sahiplenilmiş etki alanı yapılandırılmışsa, SSO sırasında üyeler bu tanımlayıcıyı girmeyi atlayabilir.", "description": "This will be used as part of a larger sentence, broken up to include a link. The full sentence will read 'Provide this ID to your members to login with SSO. Members can skip entering this identifier during SSO if a claimed domain is set up. Learn more'" }, "claimedDomainsLearnMore": { - "message": "Learn more", + "message": "Daha fazla bilgi alın", "description": "This will be used as part of a larger sentence, broken up to include a link. The full sentence will read 'Provide this ID to your members to login with SSO. Members can skip entering this identifier during SSO if a claimed domain is set up. Learn more'" }, "unlinkSso": { @@ -5846,7 +5858,7 @@ "description": "This is the policy description shown in the policy list." }, "organizationDataOwnershipDescContent": { - "message": "All items will be owned and saved to the organization, enabling organization-wide controls, visibility, and reporting. When turned on, a default collection will be available for each member to store items. Learn more about managing the ", + "message": "Tüm kayıtların mülkiyeti kuruluşa ait olacak ve kayıtlar kuruluşa kaydedilerek kuruluş genelinde denetim, görünürlük ve raporlama sağlanacaktır. Bu özellik açıldığında, her üyenin kayıtlarını kaydetmesi için varsayılan bir koleksiyon kullanıma sunulur. Yönetimi hakkında daha fazla bilgi edinin ", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'All items will be owned and saved to the organization, enabling organization-wide controls, visibility, and reporting. When turned on, a default collection will be available for each member to store items. Learn more about managing the credential lifecycle.'" }, "organizationDataOwnershipContentAnchor": { @@ -5873,17 +5885,17 @@ "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Learn more about the credential lifecycle.'" }, "availableNow": { - "message": "Available now" + "message": "Şimdi kullanılabilir" }, "autoConfirm": { - "message": "Automatic confirmation of new users" + "message": "Yeni kullanıcıların otomatik onayı" }, "autoConfirmDescription": { - "message": "New users invited to the organization will be automatically confirmed when an admin’s device is unlocked.", + "message": "Kuruluşa davet edilen yeni kullanıcılar, bir yöneticinin cihazı kilitli değilken otomatik olarak onaylanacaktır.", "description": "This is the description of the policy as it appears in the 'Policies' page" }, "howToTurnOnAutoConfirm": { - "message": "How to turn on automatic user confirmation" + "message": "Otomatik kullanıcı onayı nasıl açılır" }, "autoConfirmExtension1": { "message": "Bitwarden uzantınızı açın" @@ -5897,39 +5909,39 @@ "description": "This is a fragment of a larger sencence. The whole sentence will read: 'Select Turn on'" }, "autoConfirmExtensionOpened": { - "message": "Successfully opened the Bitwarden browser extension. You can now activate the automatic user confirmation setting." + "message": "Bitwarden tarayıcı uzantısı başarıyla açıldı. Artık otomatik kullanıcı onayı ayarını etkinleştirebilirsiniz." }, "autoConfirmPolicyEditDescription": { - "message": "New users invited to the organization will be automatically confirmed when an admin’s device is unlocked. Before turning on this policy, please review and agree to the following: ", + "message": "Kuruluşa davet edilen yeni kullanıcılar, bir yöneticinin cihazı kilitli değilken otomatik olarak onaylanacaktır. Bu ilkeyi etkinleştirmeden önce lütfen aşağıdakileri inceleyip kabul edin: ", "description": "This is the description of the policy as it appears inside the policy edit dialog" }, "autoConfirmAcceptSecurityRiskTitle": { - "message": "Potential security risk. " + "message": "Olası güvenlik riski. " }, "autoConfirmAcceptSecurityRiskDescription": { - "message": "Automatic user confirmation could pose a security risk to your organization’s data." + "message": "Otomatik kullanıcı onayı, kuruluşunuzun verileri için bir güvenlik riski oluşturabilir." }, "autoConfirmAcceptSecurityRiskLearnMore": { - "message": "Learn about the risks", + "message": "Riskler hakkında bilgi edinin", "description": "The is the link copy for the first check box option in the edit policy dialog" }, "autoConfirmSingleOrgRequired": { - "message": "Single organization policy required. " + "message": "Tek kuruluş ilkesi gereklidir. " }, "autoConfirmSingleOrgRequiredDesc": { - "message": "All members must only belong to this organization to activate this automation." + "message": "Bu otomasyonu etkinleştirmek için tüm üyelerin yalnızca bu kuruluşa ait olması gerekir." }, "autoConfirmSingleOrgExemption": { - "message": "Single organization policy will extend to all roles. " + "message": "Tek kuruluş ilkesinin kapsamı tüm rollere genişletilecektir. " }, "autoConfirmNoEmergencyAccess": { - "message": "No emergency access. " + "message": "Acil durum erişimi yok. " }, "autoConfirmNoEmergencyAccessDescription": { - "message": "Emergency Access will be removed." + "message": "Acil Erişim kaldırılacak." }, "autoConfirmCheckBoxLabel": { - "message": "I accept these risks and policy updates" + "message": "Bu riskleri ve ilke güncellemelerini kabul ediyorum" }, "personalOwnership": { "message": "Kişisel kasayı kaldır" @@ -5944,10 +5956,10 @@ "message": "Bir kuruluş ilkesi nedeniyle kişisel kasanıza hesap kaydetmeniz kısıtlanmış. Sahip seçeneğini bir kuruluş olarak değiştirin ve mevcut koleksiyonlar arasından seçim yapın." }, "desktopAutotypePolicy": { - "message": "Desktop Autotype Default Setting" + "message": "Masaüstü Otomatik Yazma Varsayılan Ayarı" }, "desktopAutotypePolicyDesc": { - "message": "Turn Desktop Autotype ON by default for members. Members can turn Autotype off manually in the Desktop client.", + "message": "Üyeler için Masaüstü Otomatik Yazma özelliğini varsayılan olarak AÇIK duruma getirin. Üyeler, Masaüstü istemcisinde Otomatik Yazma’yı manuel olarak kapatabilir.", "description": "This policy will enable Desktop Autotype by default for members on Unlock." }, "disableSend": { @@ -5987,13 +5999,13 @@ "message": "Varsayılan URI eşleşme tespiti" }, "uriMatchDetectionPolicyDesc": { - "message": "Determine when logins are suggested for autofill. Admins and owners are exempt from this policy." + "message": "Hesapların otomatik doldurma için ne zaman önerileceğini belirleyin. Yöneticiler ve sahipler bu ilkeden muaftır." }, "uriMatchDetectionOptionsLabel": { "message": "Varsayılan URI eşleşme tespiti" }, "invalidUriMatchDefaultPolicySetting": { - "message": "Please select a valid URI match detection option.", + "message": "Lütfen geçerli bir URl eşleşme algılama seçeneği seçin.", "description": "Error message displayed when a user attempts to save URI match detection policy settings with an invalid selection." }, "modifiedPolicyId": { @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Yeniden davet edildi" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ kullanıcı yeniden davet edildi", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$SELECTEDCOUNT$ kullanıcıdan $LIMIT$ tanesi yeniden davet edildi. $EXCLUDEDCOUNT$ kullanıcı, $LIMIT$ davet sınırı nedeniyle davet edilmedi.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Başarıyla kaldırıldı" }, @@ -6650,10 +6688,10 @@ "message": "Ana parolanız kuruluş ilkelerinizi karşılamıyor. Kasanıza erişmek için ana parolanızı güncellemelisiniz. Devam ettiğinizde oturumunuz kapanacak ve yeniden oturum açmanız gerekecektir. Diğer cihazlardaki aktif oturumlar bir saate kadar aktif kalabilir." }, "automaticAppLoginWithSSO": { - "message": "Automatic login with SSO" + "message": "SSO ile otomatik hesap girişi" }, "automaticAppLoginWithSSODesc": { - "message": "Extend SSO security and convenience to unmanaged apps. When users launch an app from your identity provider, their login details are automatically filled and submitted, creating a one-click, secure flow from the identity provider to the app." + "message": "SSO güvenliğini ve kullanım kolaylığını yönetilmeyen uygulamalara da genişletin. Kullanıcılar bir uygulamayı kimlik sağlayıcınızdan başlattığında, hesap bilgileri otomatik olarak doldurulup gönderilir ve böylece kimlik sağlayıcıdan uygulamaya tek tıklamalı, güvenli bir akış sağlanır." }, "automaticAppLoginIdpHostLabel": { "message": "Kimlik sağlayıcı ana bilgisayarı" @@ -6668,16 +6706,16 @@ "message": "Oturum zaman aşımı" }, "sessionTimeoutPolicyDescription": { - "message": "Set a maximum session timeout for all members except owners." + "message": "Sahipler dışındaki tüm üyeler için maksimum oturum zaman aşımı belirleyin." }, "maximumAllowedTimeout": { - "message": "Maximum allowed timeout" + "message": "İzin verilen maksimum zaman aşımı" }, "maximumAllowedTimeoutRequired": { - "message": "Maximum allowed timeout is required." + "message": "İzin verilen maksimum zaman aşımı zorunludur." }, "sessionTimeoutPolicyInvalidTime": { - "message": "Time is invalid. Change at least one value." + "message": "Süre geçersiz. En az bir değeri değiştirin." }, "sessionTimeoutAction": { "message": "Oturum zaman aşımı eylemi" @@ -6698,19 +6736,19 @@ "message": "Dakika" }, "sessionTimeoutConfirmationNeverTitle": { - "message": "Are you certain you want to allow a maximum timeout of \"Never\" for all members?" + "message": "Tüm üyeler için maksimum zaman aşımının \"Asla\" olmasına izin vermek istediğinizden emin misiniz?" }, "sessionTimeoutConfirmationNeverDescription": { - "message": "This option will save your members' encryption keys on their devices. If you choose this option, ensure that their devices are adequately protected." + "message": "Bu seçenek, üyelerinizin şifreleme anahtarlarını cihazlarında kaydedecektir. Bu seçeneği tercih ederseniz, üyelerinizin cihazlarının yeterince korunduğundan emin olun." }, "learnMoreAboutDeviceProtection": { - "message": "Learn more about device protection" + "message": "Cihaz koruması hakkında daha fazla bilgi edinin" }, "sessionTimeoutConfirmationOnSystemLockTitle": { - "message": "\"System lock\" will only apply to the browser and desktop app" + "message": "\"Sistem kilidi\" yalnızca tarayıcı ve masaüstü uygulaması için geçerli olacaktır" }, "sessionTimeoutConfirmationOnSystemLockDescription": { - "message": "The mobile and web app will use \"on app restart\" as their maximum allowed timeout, since the option is not supported." + "message": "Bu seçenek desteklenmediğinden, mobil ve web uygulamaları için izin verilen maksimum zaman aşımı olarak \"uygulama yeniden başlatıldığında\" kullanılacaktır." }, "vaultTimeoutPolicyInEffect": { "message": "Kuruluş ilkeleriniz izin verilen maksimum kasa zaman aşımını $HOURS$ saat $MINUTES$ dakika olarak belirlemiş.", @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Kasa zaman aşımı izin verilen aralıkta değil." }, - "disablePersonalVaultExport": { - "message": "Kişisel kasayı dışa aktarmayı kaldır" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Üyelerin kişisel kasalarındaki verileri dışa aktarmasına izin verme." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Geçersiz doğrulama kodu" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Aşağıdaki organizasyonun üyeleri için artık ana parola gerekmemektedir. Lütfen alan adını organizasyon yöneticinizle doğrulayın." - }, "keyConnectorDomain": { "message": "Key Connector alan adı" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO etkinleştirildi" }, - "disabledSso": { - "message": "SSO etkinleştirildi" + "ssoTurnedOff": { + "message": "SSO kapatıldı" }, "emailMustLoginWithSso": { "message": "$EMAIL$ çoklu oturum açma (SSO) ile giriş yapmalıdır", @@ -7408,7 +7443,7 @@ } }, "exportingOrganizationVaultFromPasswordManagerWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported.", + "message": "Yalnızca $ORGANIZATION$ ile ilişkilendirilmiş kuruluş kasası dışa aktarılacaktır.", "placeholders": { "organization": { "content": "$1", @@ -7417,7 +7452,7 @@ } }, "exportingOrganizationVaultFromAdminConsoleWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. My items collections will not be included.", + "message": "Yalnızca $ORGANIZATION$ ile ilişkilendirilmiş kuruluş kasası dışa aktarılacaktır. Kayıtlarım koleksiyonları dahil edilmeyecektir.", "placeholders": { "organization": { "content": "$1", @@ -7583,7 +7618,7 @@ "message": "Bilinmeyen sır, bu sırra erişmek için izin istemeniz gerekebilir." }, "unknownServiceAccount": { - "message": "Unknown machine account, you may need to request permission to access this machine account." + "message": "Bilinmeyen makine hesabı, bu makine hesabına erişmek için izin talep etmeniz gerekebilir." }, "unknownProject": { "message": "Bilinmeyen proje, bu projeye erişmek için izin istemeniz gerekebilir." @@ -8936,7 +8971,7 @@ } }, "accessedProjectWithIdentifier": { - "message": "Accessed a project with identifier: $PROJECT_ID$.", + "message": "$PROJECT_ID$ tanımlayıcısına sahip bir projeye erişildi.", "placeholders": { "project_id": { "content": "$1", @@ -8963,7 +8998,7 @@ } }, "nameUnavailableServiceAccountDeleted": { - "message": "Deleted machine account Id: $SERVICE_ACCOUNT_ID$", + "message": "Silinen makine hesabı ID’si: $SERVICE_ACCOUNT_ID$", "placeholders": { "service_account_id": { "content": "$1", @@ -8981,7 +9016,7 @@ } }, "addedUserToServiceAccountWithId": { - "message": "Added user: $USER_ID$ to machine account with identifier: $SERVICE_ACCOUNT_ID$", + "message": "$SERVICE_ACCOUNT_ID$ kimlikli makine hesabına $USER_ID$ kullanıcısı eklendi", "placeholders": { "user_id": { "content": "$1", @@ -8994,7 +9029,7 @@ } }, "removedUserToServiceAccountWithId": { - "message": "Removed user: $USER_ID$ from machine account with identifier: $SERVICE_ACCOUNT_ID$", + "message": "$SERVICE_ACCOUNT_ID$ kimlikli makine hesabından $USER_ID$ kullanıcısı kaldırıldı", "placeholders": { "user_id": { "content": "$1", @@ -9007,7 +9042,7 @@ } }, "removedGroupFromServiceAccountWithId": { - "message": "Removed group: $GROUP_ID$ from machine account with identifier: $SERVICE_ACCOUNT_ID$", + "message": "$SERVICE_ACCOUNT_ID$ kimlikli makine hesabından $GROUP_ID$ grubu kaldırıldı", "placeholders": { "group_id": { "content": "$1", @@ -9020,7 +9055,7 @@ } }, "serviceAccountCreatedWithId": { - "message": "Created machine account with identifier: $SERVICE_ACCOUNT_ID$", + "message": "$SERVICE_ACCOUNT_ID$ kimlikli makine hesabı oluşturuldu", "placeholders": { "service_account_id": { "content": "$1", @@ -9029,7 +9064,7 @@ } }, "addedGroupToServiceAccountId": { - "message": "Added group: $GROUP_ID$ to machine account with identifier: $SERVICE_ACCOUNT_ID$", + "message": "$SERVICE_ACCOUNT_ID$ kimlikli makine hesabına $GROUP_ID$ grubu eklendi", "placeholders": { "group_id": { "content": "$1", @@ -9042,7 +9077,7 @@ } }, "serviceAccountDeletedWithId": { - "message": "Deleted machine account with identifier: $SERVICE_ACCOUNT_ID$", + "message": "$SERVICE_ACCOUNT_ID$ kimlikli makine hesabı silindi", "placeholders": { "service_account_id": { "content": "$1", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "SSO girişi gereklidir" }, + "emailRequiredForSsoLogin": { + "message": "SSO için e-posta gereklidir" + }, "selectedRegionFlag": { "message": "Seçilen bölgenin bayrağı" }, @@ -9857,11 +9895,11 @@ "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "switchToFreePlan": { - "message": "Switching to free plan", + "message": "Ücretsiz plana geçiliyor", "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "switchToFreeOrg": { - "message": "Switching to free organization", + "message": "Ücretsiz kuruluşa geçiliyor", "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "freeForOneYear": { @@ -9892,10 +9930,10 @@ "message": "Ata" }, "assignTasks": { - "message": "Assign tasks" + "message": "Görev ata" }, "assignSecurityTasksToMembers": { - "message": "Send notifications to change passwords" + "message": "Parolaları değiştirmek için bildirim gönder" }, "assignToCollections": { "message": "Koleksiyonlara ata" @@ -10293,13 +10331,13 @@ "message": "Etkinlik verilerini Logscale'e gönderin" }, "datadogEventIntegrationDesc": { - "message": "Send vault event data to your Datadog instance" + "message": "Kasa olay verilerini Datadog örneğinize gönderin" }, "failedToSaveIntegration": { "message": "Entegrasyon kaydedilemedi. Lütfen daha sonra tekrar deneyin." }, "mustBeOrgOwnerToPerformAction": { - "message": "You must be the organization owner to perform this action." + "message": "Bu işlemi gerçekleştirmek için kuruluş sahibi olmalısınız." }, "failedToDeleteIntegration": { "message": "Entegrasyon silinemedi. Lütfen daha sonra tekrar deneyin." @@ -11565,36 +11603,36 @@ "message": "Arşivde kayıt yok" }, "noItemsInArchiveDesc": { - "message": "Archived items will appear here and will be excluded from general search results and autofill suggestions." + "message": "Arşivlenmiş kayıtlar burada görünür ve genel arama sonuçları ile otomatik doldurma önerilerinden hariç tutulur." }, "itemWasSentToArchive": { - "message": "Item was sent to archive" + "message": "Kayıt arşive gönderildi" }, "itemsWereSentToArchive": { - "message": "Items were sent to archive" + "message": "Kayıtlar arşive gönderildi" }, "itemUnarchived": { - "message": "Item was unarchived" + "message": "Kayıt arşivden çıkarıldı" }, "bulkArchiveItems": { - "message": "Items archived" + "message": "Kayıtlar arşivlendi" }, "bulkUnarchiveItems": { - "message": "Items unarchived" + "message": "Kayıtlar arşivden çıkarıldı" }, "archiveItem": { "message": "Kaydı arşivle", "description": "Verb" }, "archiveItemConfirmDesc": { - "message": "Archived items are excluded from general search results and autofill suggestions. Are you sure you want to archive this item?" + "message": "Arşivlenmiş kayıtlar genel arama sonuçları ve otomatik doldurma önerilerinden hariç tutulur. Bu kaydı arşivlemek istediğinizden emin misiniz?" }, "archiveBulkItems": { - "message": "Archive items", + "message": "Kayıtları arşivle", "description": "Verb" }, "archiveBulkItemsConfirmDesc": { - "message": "Archived items are excluded from general search results and autofill suggestions. Are you sure you want to archive these items?" + "message": "Arşivlenmiş kayıtlar genel arama sonuçları ve otomatik doldurma önerilerinden hariç tutulur. Bu kayıtları arşivlemek istediğinizden emin misiniz?" }, "businessUnit": { "message": "İş Birimi" @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Aile üyeliği" }, - "planDescPremium": { - "message": "Tam çevrimiçi güvenlik" + "advancedOnlineSecurity": { + "message": "Gelişmiş çevrimiçi güvenlik" }, "planDescFamiliesV2": { "message": "Aileniz için Premium güvenlik" @@ -12073,34 +12111,34 @@ "message": "Sorunsuz entegrasyon" }, "families": { - "message": "Families" + "message": "Aileler" }, "upgradeToFamilies": { - "message": "Upgrade to Families" + "message": "Aileler planına yükselt" }, "upgradeToPremium": { - "message": "Upgrade to Premium" + "message": "Premium’a yükselt" }, "familiesUpdated": { - "message": "You've upgraded to Families!" + "message": "Aileler planına yükseltildiniz!" }, "taxCalculationError": { - "message": "There was an error calculating tax for your location. Please try again." + "message": "Konumunuz için vergi hesaplanırken bir hata oluştu. Lütfen tekrar deneyin." }, "individualUpgradeWelcomeMessage": { - "message": "Welcome to Bitwarden" + "message": "Bitwarden’a Hoş Geldiniz" }, "individualUpgradeDescriptionMessage": { - "message": "Unlock more security features with Premium, or start sharing items with Families" + "message": "Premium ile daha fazla güvenlik özelliğinin kilidini açın veya Aileler ile kayıtlarınızı paylaşmaya başlayın" }, "individualUpgradeTaxInformationMessage": { - "message": "Prices exclude tax and are billed annually." + "message": "Fiyatlara vergi dahil değildir ve yıllık olarak faturalandırılır." }, "organizationNameDescription": { - "message": "Your organization name will appear in invitations you send to members." + "message": "Kuruluş adınız, üyelere gönderdiğiniz davetlerde görünecektir." }, "continueWithoutUpgrading": { - "message": "Continue without upgrading" + "message": "Yükseltmeden devam et" }, "upgradeYourPlan": { "message": "Planınızı yükseltin" @@ -12109,19 +12147,19 @@ "message": "Şimdi yükselt" }, "formWillCreateNewFamiliesOrgMessage": { - "message": "Completing this form will create a new Families organization. You can upgrade your Free organization from the Admin Console." + "message": "Bu formu doldurmanız yeni bir Aileler kuruluşu oluşturacaktır. Ücretsiz kuruluşunuzu Yönetici Konsolu’ndan yükseltebilirsiniz." }, "upgradeErrorMessage": { - "message": "We encountered an error while processing your upgrade. Please try again." + "message": "Yükseltmenizi işlerken bir hata ile karşılaştık. Lütfen tekrar deneyin." }, "bitwardenFreeplanMessage": { - "message": "You have the Bitwarden Free plan" + "message": "Bitwarden Ücretsiz planını kullanıyorsunuz" }, "upgradeCompleteSecurity": { - "message": "Upgrade for complete security" + "message": "Tam güvenlik için yükselt" }, "viewbusinessplans": { - "message": "View business plans" + "message": "Kurumsal planları görüntüle" }, "updateEncryptionSettings": { "message": "Şifreleme ayarlarını güncelle" @@ -12133,37 +12171,37 @@ "message": "Algoritma" }, "encryptionKeySettingsHowShouldWeEncryptYourData": { - "message": "Choose how Bitwarden should encrypt your vault data. All options are secure, but stronger methods offer better protection - especially against brute-force attacks. Bitwarden recommends the default setting for most users." + "message": "Bitwarden’ın kasanızdaki verileri nasıl şifrelemesi gerektiğini seçin. Tüm seçenekler güvenlidir, ancak daha güçlü yöntemler özellikle kaba kuvvet saldırılarına karşı daha iyi koruma sağlar. Bitwarden, çoğu kullanıcı için varsayılan ayarı önerir." }, "encryptionKeySettingsIncreaseImproveSecurity": { - "message": "Increasing the values above the default will improve security, but your vault may take longer to unlock as a result." + "message": "Değerleri varsayılanın üzerine çıkarmak güvenliği artıracaktır, ancak bunun sonucunda kasanızın kilidinin açılması daha uzun sürebilir." }, "encryptionKeySettingsAlgorithmPopoverTitle": { - "message": "About encryption algorithms" + "message": "Şifreleme algoritmaları hakkında" }, "encryptionKeySettingsAlgorithmPopoverPBKDF2": { - "message": "PBKDF2-SHA256 is a well-tested encryption method that balances security and performance. Good for all users." + "message": "PBKDF2-SHA256, güvenlik ve performans arasında denge sağlayan, kapsamlı şekilde test edilmiş bir şifreleme yöntemidir. Tüm kullanıcılar için uygundur." }, "encryptionKeySettingsAlgorithmPopoverArgon2Id": { - "message": "Argon2id offers stronger protection against modern attacks. Best for advanced users with powerful devices." + "message": "Argon2id, modern saldırılara karşı daha güçlü koruma sağlar. Güçlü cihazlara sahip ileri düzey kullanıcılar için en iyisidir." }, "zipPostalCodeLabel": { - "message": "ZIP / Postal code" + "message": "Posta kodu" }, "cardNumberLabel": { - "message": "Card number" + "message": "Kart numarası" }, "startFreeFamiliesTrial": { - "message": "Start free Families trial" + "message": "Ücretsiz Aileler denemesini başlat" }, "blockClaimedDomainAccountCreation": { - "message": "Block account creation for claimed domains" + "message": "Sahiplenilen etki alanları için hesap oluşturulmasını engelle" }, "blockClaimedDomainAccountCreationDesc": { - "message": "Prevent users from creating accounts outside of your organization using email addresses from claimed domains." + "message": "Kullanıcıların, sahiplenilen etki alanlarına ait e-posta adreslerini kullanarak kuruluşunuzun dışında hesap oluşturmalarını engelleyin." }, "blockClaimedDomainAccountCreationPrerequisite": { - "message": "A domain must be claimed before activating this policy." + "message": "Bu ilkeyi etkinleştirmeden önce bir etki alanının sahiplenilmesi gerekir." }, "unlockMethodNeededToChangeTimeoutActionDesc": { "message": "Kasa zaman aşımı eyleminizi değiştirmek için kilit açma yönteminizi ayarlayın." @@ -12199,13 +12237,186 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { - "message": "No critical applications are selected" + "message": "Hiçbir kritik uygulama seçili değil" }, "confirmNoSelectedCriticalApplicationsDesc": { "message": "Devam etmek istediğinizden emin misiniz?" }, "userVerificationFailed": { "message": "Kullanıcı doğrulaması başarısız oldu." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Bu ayar kuruluşunuz tarafından yönetiliyor." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Kuruluşunuz maksimum kasa zaman aşımını $HOURS$ saat $MINUTES$ dakika olarak belirlemiş.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Kuruluşunuz varsayılan oturum zaman aşımını \"Tarayıcı yenilendiğinde\" olarak ayarladı." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maksimum zaman aşımı en fazla $HOURS$ saat $MINUTES$ dakika olabilir", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Tarayıcı yenilendiğinde" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Zaman aşımı eyleminizi değiştirmek için kilit açma yönteminizi ayarlayın" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/uk/messages.json b/apps/web/src/locales/uk/messages.json index be571b0c146..0cc96b69904 100644 --- a/apps/web/src/locales/uk/messages.json +++ b/apps/web/src/locales/uk/messages.json @@ -5169,9 +5169,21 @@ "message": "Виправити", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "oldAttachmentsNeedFixDesc": { "message": "У вашому сховищі є старі вкладені файли, які необхідно виправити перед тим, як оновлювати ключ шифрування облікового запису." }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "Фраза відбитка вашого облікового запису", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Повторне запрошення успішне" }, + "bulkReinviteSuccessToast": { + "message": "$COUNT$ users re-invited", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Успішно вилучено" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Час очікування сховища поза межами дозволеного діапазону." }, - "disablePersonalVaultExport": { - "message": "Вилучити експорт особистого сховища" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "Не дозволяти учасникам експортувати дані з їхнього особистого сховища." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Недійсний код підтвердження" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Головний пароль більше не є обов'язковим для учасників зазначеної організації. Підтвердьте вказаний нижче домен з адміністратором вашої організації." - }, "keyConnectorDomain": { "message": "Домен Key Connector" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO увімкнено" }, - "disabledSso": { - "message": "SSO вимкнено" + "ssoTurnedOff": { + "message": "SSO turned off" }, "emailMustLoginWithSso": { "message": "$EMAIL$ must login with Single Sign-on", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Потрібно увійти через SSO" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Прапор вибраного регіону" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Families membership" }, - "planDescPremium": { - "message": "Повна онлайн-безпека" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "planDescFamiliesV2": { "message": "Безпека Premium для вашої сім'ї" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "User verification failed." + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser refresh." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser refresh" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/web/src/locales/vi/messages.json b/apps/web/src/locales/vi/messages.json index 35e7db50023..aa32aa4254c 100644 --- a/apps/web/src/locales/vi/messages.json +++ b/apps/web/src/locales/vi/messages.json @@ -21,7 +21,7 @@ "message": "Mật khẩu rủi ro" }, "noEditPermissions": { - "message": "You don't have permission to edit this item" + "message": "Bạn không có quyền chỉnh sửa mục này" }, "reviewAtRiskPasswords": { "message": "Kiểm tra các mật khẩu có rủi ro (yếu, bị lộ hoặc được sử dụng lại) trên các ứng dụng. Chọn các ứng dụng quan trọng nhất của bạn để ưu tiên các biện pháp bảo mật cho người dùng nhằm giải quyết các mật khẩu có rủi ro." @@ -94,7 +94,7 @@ "message": "Giao tác vụ cho thành viên để theo dõi tiến trình" }, "onceYouReviewApplications": { - "message": "Once you review applications and mark them as critical, assign tasks to your members to change their passwords." + "message": "Khi bạn xem xét các ứng dụng và đánh dấu chúng là quan trọng, hãy giao nhiệm vụ cho các thành viên của bạn thay đổi mật khẩu." }, "sendReminders": { "message": "Gửi lời nhắc" @@ -179,34 +179,34 @@ } }, "noDataInOrgTitle": { - "message": "No data found" + "message": "Không tìm thấy dữ liệu" }, "noDataInOrgDescription": { - "message": "Import your organization's login data to get started with Access Intelligence. Once you do that, you'll be able to:" + "message": "Nhập dữ liệu đăng nhập của tổ chức bạn để bắt đầu với Access Intelligence. Khi thực hiện xong, bạn sẽ có thể:" }, "feature1Title": { - "message": "Mark applications as critical" + "message": "Đánh dấu ứng dụng là quan trọng" }, "feature1Description": { - "message": "This will help you remove risks to your most important applications first." + "message": "Điều này sẽ giúp bạn loại bỏ rủi ro đối với các ứng dụng quan trọng nhất trước tiên." }, "feature2Title": { - "message": "Help members improve their security" + "message": "Giúp thành viên cải thiện bảo mật" }, "feature2Description": { - "message": "Assign at-risk members guided security tasks to update credentials." + "message": "Giao các nhiệm vụ bảo mật có hướng dẫn cho các thành viên có rủi ro để cập nhật thông tin xác thực." }, "feature3Title": { - "message": "Monitor progress" + "message": "Theo dõi tiến độ" }, "feature3Description": { - "message": "Track changes over time to show security improvements." + "message": "Theo dõi các thay đổi theo thời gian để hiển thị những cải tiến bảo mật." }, "noReportsRunTitle": { - "message": "Generate report" + "message": "Tạo báo cáo" }, "noReportsRunDescription": { - "message": "You’re ready to start generating reports. Once you generate, you’ll be able to:" + "message": "Bạn đã sẵn sàng để bắt đầu tạo báo cáo. Một khi bạn tạo, bạn sẽ có thể:" }, "noCriticalApplicationsTitle": { "message": "Bạn chưa đánh dấu ứng dụng nào là quan trọng" @@ -266,13 +266,13 @@ "message": "Các thành viên có rủi ro" }, "membersWithAccessToAtRiskItemsForCriticalApplications": { - "message": "These members have access to vulnerable items for critical applications." + "message": "Các thành viên này có quyền truy cập vào các mục dễ bị tổn thương cho các ứng dụng quan trọng." }, "membersWithAtRiskPasswords": { "message": "Thành viên có mật khẩu rủi ro" }, "membersWillReceiveSecurityTask": { - "message": "Members of your organization will be assigned a task to change vulnerable passwords. They’ll receive a notification within their Bitwarden browser extension." + "message": "Các thành viên trong tổ chức của bạn sẽ được giao nhiệm vụ thay đổi mật khẩu dễ bị tổn thương. Họ sẽ nhận được thông báo trong tiện ích mở rộng trình duyệt Bitwarden của họ." }, "membersAtRiskCount": { "message": "$COUNT$ thành viên gặp rủi ro", @@ -302,7 +302,7 @@ } }, "atRiskMemberDescription": { - "message": "These members are logging into critical applications with weak, exposed, or reused passwords." + "message": "Các thành viên này đang đăng nhập vào các ứng dụng quan trọng bằng mật khẩu yếu, bị lộ hoặc được sử dụng lại." }, "atRiskMembersDescriptionNone": { "message": "Không có thành viên nào đăng nhập vào ứng dụng bằng mật khẩu yếu, dễ bị lộ hoặc được sử dụng lại." @@ -344,7 +344,7 @@ "message": "Ứng dụng cần xem lại" }, "newApplicationsCardTitle": { - "message": "Review new applications" + "message": "Xem xét các ứng dụng mới" }, "newApplicationsWithCount": { "message": "$COUNT$ ứng dụng mới", @@ -368,7 +368,7 @@ "message": "Hiện tại không có ứng dụng mới nào để đánh giá" }, "organizationHasItemsSavedForApplications": { - "message": "Your organization has items saved for $COUNT$ applications", + "message": "Tổ chức của bạn có các mục được lưu cho $COUNT$ ứng dụng", "placeholders": { "count": { "content": "$1", @@ -377,22 +377,22 @@ } }, "reviewApplicationsToSecureItems": { - "message": "Review applications to secure the items most critical to your organization's security" + "message": "Xem xét các ứng dụng để bảo mật các mục quan trọng nhất đối với an ninh của tổ chức bạn" }, "reviewApplications": { - "message": "Review applications" + "message": "Xem xét ứng dụng" }, "prioritizeCriticalApplications": { "message": "Ưu tiên các ứng dụng quan trọng" }, "selectCriticalAppsDescription": { - "message": "Select which applications are most critical to your organization. Then, you’ll be able to assign security tasks to members to remove risks." + "message": "Chọn những ứng dụng nào là quan trọng nhất đối với tổ chức của bạn. Sau đó, bạn sẽ có thể giao các nhiệm vụ bảo mật cho các thành viên để loại bỏ rủi ro." }, "reviewNewApplications": { - "message": "Review new applications" + "message": "Xem xét các ứng dụng mới" }, "reviewNewAppsDescription": { - "message": "Review new applications with vulnerable items and mark those you’d like to monitor closely as critical. Then, you’ll be able to assign security tasks to members to remove risks." + "message": "Xem xét các ứng dụng mới có các mục dễ bị tổn thương và đánh dấu những ứng dụng bạn muốn giám sát chặt chẽ là quan trọng. Sau đó, bạn sẽ có thể giao các nhiệm vụ bảo mật cho các thành viên để loại bỏ rủi ro." }, "clickIconToMarkAppAsCritical": { "message": "Nhấp vào biểu tượng ngôi sao để đánh dấu một ứng dụng là quan trọng" @@ -3063,7 +3063,7 @@ "message": "1GB bộ nhớ lưu trữ được mã hóa cho các tệp đính kèm." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ bộ nhớ lưu trữ được mã hóa cho các tệp đính kèm.", "placeholders": { "size": { "content": "$1", @@ -3134,13 +3134,13 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "Gói đăng ký Cao cấp của bạn đã kết thúc" }, "premiumSubscriptionEndedDesc": { - "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." + "message": "Để lấy lại quyền truy cập vào lưu trữ của bạn, hãy khởi động lại gói đăng ký Cao cấp. Nếu bạn chỉnh sửa chi tiết cho một mục đã lưu trữ trước khi khởi động lại, mục đó sẽ được chuyển trở lại kho của bạn." }, "restartPremium": { - "message": "Restart Premium" + "message": "Khởi động lại gói Cao cấp" }, "additionalStorageGb": { "message": "Dung lượng lưu trữ bổ sung (GB)" @@ -3263,16 +3263,16 @@ "message": "Lần thanh toán tiếp theo" }, "nextChargeHeader": { - "message": "Next Charge" + "message": "Lần thanh toán tiếp theo" }, "plan": { - "message": "Plan" + "message": "Gói" }, "details": { "message": "Chi tiết" }, "discount": { - "message": "discount" + "message": "giảm giá" }, "downloadLicense": { "message": "Tải về tệp giấy phép" @@ -4479,31 +4479,31 @@ "message": "Cập nhật trình duyệt" }, "generatingYourAccessIntelligence": { - "message": "Generating your Access Intelligence..." + "message": "Đang tạo Access Intelligence của bạn..." }, "fetchingMemberData": { - "message": "Fetching member data..." + "message": "Đang lấy dữ liệu thành viên..." }, "analyzingPasswordHealth": { - "message": "Analyzing password health..." + "message": "Đang phân tích độ mạnh mật khẩu..." }, "calculatingRiskScores": { - "message": "Calculating risk scores..." + "message": "Đang tính điểm rủi ro..." }, "generatingReportData": { - "message": "Generating report data..." + "message": "Đang tạo dữ liệu báo cáo..." }, "savingReport": { - "message": "Saving report..." + "message": "Đang lưu báo cáo..." }, "compilingInsights": { - "message": "Compiling insights..." + "message": "Đang biên soạn thông tin chi tiết..." }, "loadingProgress": { - "message": "Loading progress" + "message": "Đang tải tiến trình" }, "thisMightTakeFewMinutes": { - "message": "This might take a few minutes." + "message": "Quá trình này có thể mất vài phút." }, "riskInsightsRunReport": { "message": "Chạy báo cáo" @@ -4627,19 +4627,19 @@ "message": "Tìm hiểu thêm" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Đã xảy ra lỗi khi cập nhật cài đặt mã hóa." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Cập nhật cài đặt mã hóa của bạn" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Cài đặt mã hóa được khuyến nghị sẽ cải thiện bảo mật cho tài khoản của bạn. Nhập mật khẩu chính để cập nhật ngay." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Xác minh danh tính để tiếp tục" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Nhập mật khẩu chính của bạn" }, "updateSettings": { "message": "Cập nhật cài đặt" @@ -5169,9 +5169,21 @@ "message": "Sửa", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "Sửa mã hóa" + }, + "fixEncryptionTooltip": { + "message": "Tệp này đang sử dụng phương pháp mã hóa lỗi thời." + }, + "attachmentUpdated": { + "message": "Tệp đính kèm đã được cập nhật" + }, "oldAttachmentsNeedFixDesc": { "message": "Có một số tệp đính kèm cũ trong kho lưu trữ của bạn cần được sửa chữa trước khi bạn có thể thay đổi khóa mã hóa của tài khoản." }, + "itemsTransferred": { + "message": "Các mục đã chuyển" + }, "yourAccountsFingerprint": { "message": "Cụm từ xác thực tài khoản của bạn", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -5846,7 +5858,7 @@ "description": "This is the policy description shown in the policy list." }, "organizationDataOwnershipDescContent": { - "message": "All items will be owned and saved to the organization, enabling organization-wide controls, visibility, and reporting. When turned on, a default collection will be available for each member to store items. Learn more about managing the ", + "message": "Tất cả các mục sẽ thuộc sở hữu và được lưu vào tổ chức, cho phép kiểm soát, hiển thị và báo cáo trên toàn tổ chức. Khi được bật, một bộ sưu tập mặc định sẽ có sẵn cho mỗi thành viên để lưu trữ các mục. Tìm hiểu thêm về việc quản lý ", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'All items will be owned and saved to the organization, enabling organization-wide controls, visibility, and reporting. When turned on, a default collection will be available for each member to store items. Learn more about managing the credential lifecycle.'" }, "organizationDataOwnershipContentAnchor": { @@ -5886,14 +5898,14 @@ "message": "Cách bật xác nhận người dùng tự động" }, "autoConfirmExtension1": { - "message": "Open your Bitwarden extension" + "message": "Mở tiện ích mở rộng Bitwarden của bạn" }, "autoConfirmExtension2": { - "message": "Select", + "message": "Chọn", "description": "This is a fragment of a larger sencence. The whole sentence will read: 'Select Turn on'" }, "autoConfirmExtension3": { - "message": " Turn on", + "message": " Bật", "description": "This is a fragment of a larger sencence. The whole sentence will read: 'Select Turn on'" }, "autoConfirmExtensionOpened": { @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "Đã mời lại thành công" }, + "bulkReinviteSuccessToast": { + "message": "Đã mời lại $COUNT$ người dùng", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "Đã mời lại $LIMIT$ trong số $SELECTEDCOUNT$ người dùng. $EXCLUDEDCOUNT$ người đã không được mời do giới hạn mời là $LIMIT$.", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "Đã xóa thành công" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "Thời gian chờ của kho lưu trữ không nằm trong phạm vi cho phép." }, - "disablePersonalVaultExport": { - "message": "Xóa xuất dữ liệu kho riêng lẻ" + "disableExport": { + "message": "Xóa xuất" }, "disablePersonalVaultExportDescription": { "message": "Không cho phép thành viên xuất dữ liệu từ kho lưu trữ cá nhân của họ." @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "Mã xác minh không đúng" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Không còn yêu cầu mật khẩu chính đối với các thành viên của tổ chức sau. Vui lòng xác nhận tên miền bên dưới với quản trị viên của tổ chức bạn." - }, "keyConnectorDomain": { "message": "Tên miền Key Connector" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO đã bật" }, - "disabledSso": { - "message": "SSO đã được bật" + "ssoTurnedOff": { + "message": "Đã tắt SSO" }, "emailMustLoginWithSso": { "message": "$EMAIL$ phải đăng nhập bằng Đăng nhập một lần", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "Yêu cầu đăng nhập bằng SSO" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "Cờ vùng đã chọn" }, @@ -9857,11 +9895,11 @@ "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "switchToFreePlan": { - "message": "Switching to free plan", + "message": "Chuyển sang gói miễn phí", "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "switchToFreeOrg": { - "message": "Switching to free organization", + "message": "Chuyển sang tổ chức miễn phí", "description": "An option for the offboarding survey shown when a user cancels their subscription." }, "freeForOneYear": { @@ -9895,7 +9933,7 @@ "message": "Giao tác vụ" }, "assignSecurityTasksToMembers": { - "message": "Send notifications to change passwords" + "message": "Gửi thông báo thay đổi mật khẩu" }, "assignToCollections": { "message": "Gán vào bộ sưu tập" @@ -11704,7 +11742,7 @@ "message": "Đã cài đặt tiện ích mở rộng Bitwarden!" }, "bitwardenExtensionIsInstalled": { - "message": "Bitwarden extension is installed!" + "message": "Tiện ích mở rộng Bitwarden đã được cài đặt!" }, "openExtensionToAutofill": { "message": "Mở tiện ích mở rộng để đăng nhập và bắt đầu tự động điền." @@ -11721,11 +11759,11 @@ "description": "This will be displayed as part of a larger sentence. The whole sentence reads: 'For tips on getting started with Bitwarden visit the Learning Center and Help Center'" }, "openExtensionFromToolbarPart1": { - "message": "If the extension didn't open, you may need to open Bitwarden from the icon ", + "message": "Nếu tiện ích mở rộng không mở, bạn có thể cần mở Bitwarden từ biểu tượng ", "description": "This will be used as part of a larger sentence, broken up to include the Bitwarden icon. The full sentence will read 'If the extension didn't open, you may need to open Bitwarden from the icon [Bitwarden Icon] on the toolbar.'" }, "openExtensionFromToolbarPart2": { - "message": " on the toolbar.", + "message": " trên thanh công cụ.", "description": "This will be used as part of a larger sentence, broken up to include the Bitwarden icon. The full sentence will read 'If the extension didn't open, you may need to open Bitwarden from the icon [Bitwarden Icon] on the toolbar.'" }, "gettingStartedWithBitwardenPart3": { @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "Gói Bitwarden Gia đình" }, - "planDescPremium": { - "message": "Bảo mật trực tuyến toàn diện" + "advancedOnlineSecurity": { + "message": "Bảo mật trực tuyến nâng cao" }, "planDescFamiliesV2": { "message": "Bảo mật cao cấp cho gia đình bạn" @@ -12157,37 +12195,37 @@ "message": "Bắt đầu dùng thử Gói Gia đình miễn phí" }, "blockClaimedDomainAccountCreation": { - "message": "Block account creation for claimed domains" + "message": "Chặn tạo tài khoản cho các tên miền đã xác nhận quyền sở hữu" }, "blockClaimedDomainAccountCreationDesc": { - "message": "Prevent users from creating accounts outside of your organization using email addresses from claimed domains." + "message": "Ngăn người dùng tạo tài khoản bên ngoài tổ chức của bạn bằng địa chỉ email từ các tên miền đã xác nhận." }, "blockClaimedDomainAccountCreationPrerequisite": { - "message": "A domain must be claimed before activating this policy." + "message": "Cần phải xác nhận tên miền trước khi kích hoạt chính sách này." }, "unlockMethodNeededToChangeTimeoutActionDesc": { - "message": "Set up an unlock method to change your vault timeout action." + "message": "Thiết lập phương thức mở khóa để thay đổi hành động sau khi đóng kho." }, "vaultTimeoutPolicyAffectingOptions": { - "message": "Enterprise policy requirements have been applied to your timeout options" + "message": "Các yêu cầu chính sách của doanh nghiệp đã được áp dụng cho các tùy chọn thời gian mở kho của bạn" }, "vaultTimeoutTooLarge": { - "message": "Your vault timeout exceeds the restrictions set by your organization." + "message": "Thời gian mở kho vượt quá giới hạn do tổ chức của bạn đặt ra." }, "neverLockWarning": { - "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + "message": "Bạn có chắc chắn muốn chọn \"Không bao giờ\" không? Lựa chọn này sẽ lưu khóa mã hóa kho của bạn trực tiếp trên thiết bị. Hãy nhớ bảo vệ thiết bị của bạn thật cẩn thận nếu bạn chọn tùy chọn này." }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "Hành động sau khi đóng kho" }, "sessionTimeoutHeader": { - "message": "Session timeout" + "message": "Thời gian hết phiên" }, "appearance": { - "message": "Appearance" + "message": "Giao diện" }, "vaultTimeoutPolicyMaximumError": { - "message": "Timeout exceeds the restriction set by your organization: $HOURS$ hour(s) and $MINUTES$ minute(s) maximum", + "message": "Thời gian mở kho đã vượt quá giới hạn do tổ chức của bạn đặt ra: Tối đa $HOURS$ giờ và $MINUTES$ phút", "placeholders": { "hours": { "content": "$1", @@ -12199,13 +12237,186 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { - "message": "No critical applications are selected" + "message": "Không có ứng dụng quan trọng nào được chọn" }, "confirmNoSelectedCriticalApplicationsDesc": { - "message": "Are you sure you want to continue?" + "message": "Bạn có chắc chắn muốn tiếp tục không?" }, "userVerificationFailed": { - "message": "User verification failed." + "message": "Xác minh người dùng thất bại." + }, + "recoveryDeleteCiphersTitle": { + "message": "Xóa các mục kho không thể khôi phục" + }, + "recoveryDeleteCiphersDesc": { + "message": "Một số mục trong kho của bạn không thể khôi phục được. Bạn có muốn xóa các mục không thể khôi phục này khỏi kho của bạn không?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Xóa các thư mục không thể khôi phục" + }, + "recoveryDeleteFoldersDesc": { + "message": "Một số thư mục của bạn không thể khôi phục được. Bạn có muốn xóa các thư mục không thể khôi phục này khỏi kho của bạn không?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Thay thế khóa mã hóa" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Cặp khóa mã hóa công khai của bạn không thể khôi phục được. Bạn có muốn thay thế khóa mã hóa của mình bằng một cặp khóa mới không? Việc này sẽ yêu cầu bạn thiết lập lại quyền truy cập khẩn cấp và tư cách thành viên tổ chức hiện có." + }, + "recoveryStepSyncTitle": { + "message": "Đang đồng bộ hóa dữ liệu" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Đang xác minh tính toàn vẹn của khóa mã hóa" + }, + "recoveryStepUserInfoTitle": { + "message": "Đang xác minh thông tin người dùng" + }, + "recoveryStepCipherTitle": { + "message": "Đang xác minh tính toàn vẹn của mục kho" + }, + "recoveryStepFoldersTitle": { + "message": "Đang xác minh tính toàn vẹn của thư mục" + }, + "dataRecoveryTitle": { + "message": "Khôi phục Dữ liệu và Chẩn đoán" + }, + "dataRecoveryDescription": { + "message": "Sử dụng công cụ khôi phục dữ liệu để chẩn đoán và sửa chữa các sự cố với tài khoản của bạn. Sau khi chạy chẩn đoán, bạn có tùy chọn lưu nhật ký chẩn đoán để được hỗ trợ và tùy chọn sửa chữa bất kỳ sự cố nào được phát hiện." + }, + "runDiagnostics": { + "message": "Chạy Chẩn đoán" + }, + "repairIssues": { + "message": "Sửa chữa Sự cố" + }, + "saveDiagnosticLogs": { + "message": "Lưu Nhật ký Chẩn đoán" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Cài đặt này do tổ chức của bạn quản lý." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Tổ chức của bạn đã đặt thời gian chờ phiên tối đa là $HOURS$ giờ và $MINUTES$ phút.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Tổ chức của bạn đã đặt thời gian chờ phiên mặc định là Khi làm mới trình duyệt." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Thời gian chờ tối đa không thể vượt quá $HOURS$ giờ và $MINUTES$ phút", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Khi làm mới trình duyệt" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Đặt phương thức mở khóa để thay đổi hành động khi hết thời gian chờ" + }, + "leaveConfirmationDialogTitle": { + "message": "Bạn có chắc chắn muốn rời đi không?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Bằng việc từ chối, các mục cá nhân sẽ vẫn nằm trong tài khoản của bạn, nhưng bạn sẽ mất quyền truy cập vào các mục được chia sẻ và tính năng tổ chức." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Liên hệ quản trị viên của bạn để lấy lại quyền truy cập." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Rời khỏi $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Tôi quản lý kho của mình như thế nào?" + }, + "transferItemsToOrganizationTitle": { + "message": "Chuyển các mục đến $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ yêu cầu tất cả các mục phải thuộc sở hữu của tổ chức để đảm bảo an ninh và tuân thủ. Nhấp chấp nhận để chuyển quyền sở hữu các mục của bạn.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Chấp nhận chuyển" + }, + "declineAndLeave": { + "message": "Từ chối và rời đi" + }, + "whyAmISeeingThis": { + "message": "Tại sao tôi thấy điều này?" } } diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index 7d898c79952..e6da8945be8 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -3010,7 +3010,7 @@ "message": "泄漏报告于" }, "reportError": { - "message": "加载报告时发生错误。请重试" + "message": "尝试加载报告时发生错误。请重试" }, "billing": { "message": "计费" @@ -3134,13 +3134,13 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "您的高级版订阅已结束" }, "premiumSubscriptionEndedDesc": { - "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." + "message": "要重新获取存档的访问权限,请重启您的高级版订阅。如果您在重启前编辑了存档项目的详细信息,它将被移回您的密码库中。" }, "restartPremium": { - "message": "Restart Premium" + "message": "重启高级版" }, "additionalStorageGb": { "message": "附加存储 (GB)" @@ -4627,19 +4627,19 @@ "message": "进一步了解" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "更新加密设置时发生错误。" }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "更新您的加密设置" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "新推荐的加密设置将提高您的账户安全性。输入您的主密码以立即更新。" }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "确认您的身份后继续" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "输入您的主密码" }, "updateSettings": { "message": "更新设置" @@ -5163,15 +5163,27 @@ "message": "此项目有需要修复的旧文件附件。" }, "attachmentFixDescription": { - "message": "此附件使用了过时的加密方式。请选择「修复」以下载、重新加密并重新上传附件。" + "message": "此附件使用了过时的加密方式。选择「修复」以下载、重新加密然后重新上传此附件。" }, "fix": { "message": "修复", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "修复加密" + }, + "fixEncryptionTooltip": { + "message": "此文件正在使用过时的加密方式。" + }, + "attachmentUpdated": { + "message": "附件已更新" + }, "oldAttachmentsNeedFixDesc": { "message": "需要先修复您的密码库中的旧文件附件,然后才能轮换您账户的加密密钥。" }, + "itemsTransferred": { + "message": "项目已传输" + }, "yourAccountsFingerprint": { "message": "您的账户指纹短语", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "重新邀请成功" }, + "bulkReinviteSuccessToast": { + "message": "已重新邀请 $COUNT$ 位用户", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "选中了 $SELECTEDCOUNT$ 位用户,已经重新邀请了 $LIMIT$ 位。由于邀请限制 $LIMIT$ 人,$EXCLUDEDCOUNT$ 位用户没有被邀请。", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "移除成功" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "密码库超时不在允许的范围内。" }, - "disablePersonalVaultExport": { - "message": "禁用个人密码库导出" + "disableExport": { + "message": "移除导出" }, "disablePersonalVaultExportDescription": { "message": "不允许成员从个人密码库导出数据。" @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "无效的验证码" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "以下组织的成员不再需要主密码。请与您的组织管理员确认下面的域名。" - }, "keyConnectorDomain": { "message": "Key Connector 域名" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "SSO 已启用" }, - "disabledSso": { - "message": "SSO 已关闭" + "ssoTurnedOff": { + "message": "SSO 已停用" }, "emailMustLoginWithSso": { "message": "$EMAIL$ 必须使用单点登录", @@ -8870,7 +8905,7 @@ "message": "描述" }, "errorReadingImportFile": { - "message": "尝试读取导入的文件时出错" + "message": "尝试读取导入的文件时发生错误" }, "accessedSecretWithId": { "message": "访问了标识符为 $SECRET_ID$ 的机密", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "要求 SSO 登录" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "选择的区域旗帜" }, @@ -10579,7 +10617,7 @@ "message": "无效的税务 ID,如有疑问,请联系支持。" }, "billingPreviewInvoiceError": { - "message": "预览账单时出错。请稍后再试。" + "message": "预览账单时发生错误。请稍后再试。" }, "unverified": { "message": "未验证" @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "家庭成员" }, - "planDescPremium": { - "message": "全面的在线安全防护" + "advancedOnlineSecurity": { + "message": "高级在线安全防护" }, "planDescFamiliesV2": { "message": "为您的家庭提供高级安全防护" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "未选择任何关键应用程序" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "用户验证失败。" + }, + "recoveryDeleteCiphersTitle": { + "message": "删除无法恢复的密码库项目" + }, + "recoveryDeleteCiphersDesc": { + "message": "您的部分密码库项目无法恢复。要从您的密码库中删除这些无法恢复的项目吗?" + }, + "recoveryDeleteFoldersTitle": { + "message": "删除无法恢复的文件夹" + }, + "recoveryDeleteFoldersDesc": { + "message": "您的部分文件夹无法恢复。要从您的密码库中删除这些无法恢复的文件夹吗?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "替换加密密钥" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "您的公钥加密密钥对无法恢复。要使用新的密钥对替换您的加密密钥吗?这将要求您重新设置现有的紧急访问和组织成员资格。" + }, + "recoveryStepSyncTitle": { + "message": "正在同步数据" + }, + "recoveryStepPrivateKeyTitle": { + "message": "正在验证加密密钥的完整性" + }, + "recoveryStepUserInfoTitle": { + "message": "正在验证用户信息" + }, + "recoveryStepCipherTitle": { + "message": "正在验证密码库项目的完整性" + }, + "recoveryStepFoldersTitle": { + "message": "正在验证文件夹的完整性" + }, + "dataRecoveryTitle": { + "message": "数据恢复和诊断" + }, + "dataRecoveryDescription": { + "message": "使用数据恢复工具诊断并修复您的账户问题。运行诊断程序后,您可以选择保存诊断日志以供支持使用,也可以选择修复任何检测到的问题。" + }, + "runDiagnostics": { + "message": "运行诊断程序" + }, + "repairIssues": { + "message": "修复问题" + }, + "saveDiagnosticLogs": { + "message": "保存诊断日志" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "此设置由您的组织管理。" + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "您的组织已将最大会话超时设置为 $HOURS$ 小时 $MINUTES$ 分钟。", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "您的组织已将默认会话超时设置为「浏览器刷新时」。" + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "最大超时时间不能超过 $HOURS$ 小时 $MINUTES$ 分钟", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "浏览器刷新时" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "设置一个解锁方式以更改您的超时动作" + }, + "leaveConfirmationDialogTitle": { + "message": "确定要离开吗?" + }, + "leaveConfirmationDialogContentOne": { + "message": "拒绝后,您的个人项目将保留在您的账户中,但您将失去对共享项目和组织功能的访问权限。" + }, + "leaveConfirmationDialogContentTwo": { + "message": "联系您的管理员以重新获取访问权限。" + }, + "leaveConfirmationDialogConfirmButton": { + "message": "离开 $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "我如何管理我的密码库?" + }, + "transferItemsToOrganizationTitle": { + "message": "传输项目到 $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "出于安全和合规考虑,$ORGANIZATION$ 要求所有项目的所有权均归组织所有。点击「接受」以传输您的项目的所有权。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "接受传输" + }, + "declineAndLeave": { + "message": "拒绝并离开" + }, + "whyAmISeeingThis": { + "message": "为什么我会看到这个?" } } diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json index 95c345f74d7..3479ca48f27 100644 --- a/apps/web/src/locales/zh_TW/messages.json +++ b/apps/web/src/locales/zh_TW/messages.json @@ -3063,7 +3063,7 @@ "message": "用於檔案附件的 1 GB 的加密檔案儲存空間。" }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "用於檔案附件的 $SIZE$ 加密儲存空間。", "placeholders": { "size": { "content": "$1", @@ -3134,13 +3134,13 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "您的進階版訂閱已到期" }, "premiumSubscriptionEndedDesc": { - "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." + "message": "若要重新存取您的封存項目,請重新啟用進階版訂閱。若您在重新啟用前編輯封存項目的詳細資料,它將會被移回您的密碼庫。" }, "restartPremium": { - "message": "Restart Premium" + "message": "重新啟用進階版" }, "additionalStorageGb": { "message": "額外儲存空間 (GB)" @@ -4627,19 +4627,19 @@ "message": "深入了解" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "更新加密設定時發生錯誤。" }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "更新您的加密設定" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "新的建議加密設定將提升您的帳戶安全性。請輸入主密碼以立即更新。" }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "請先確認身分後再繼續" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "輸入您的主密碼" }, "updateSettings": { "message": "更新設定" @@ -5169,9 +5169,21 @@ "message": "修正", "description": "This is a verb. ex. 'Fix The Car'" }, + "fixEncryption": { + "message": "修正加密" + }, + "fixEncryptionTooltip": { + "message": "此檔案使用了過時的加密方式。" + }, + "attachmentUpdated": { + "message": "附件已更新" + }, "oldAttachmentsNeedFixDesc": { "message": "需要先修正密碼庫中舊的檔案附件,然後才能輪換帳戶的加密金鑰。" }, + "itemsTransferred": { + "message": "Items transferred" + }, "yourAccountsFingerprint": { "message": "您帳戶的指紋短語", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." @@ -6453,6 +6465,32 @@ "bulkReinviteMessage": { "message": "已成功重新邀請。" }, + "bulkReinviteSuccessToast": { + "message": "已重新邀請 $COUNT$ 位使用者", + "placeholders": { + "count": { + "content": "$1", + "example": "12" + } + } + }, + "bulkReinviteLimitedSuccessToast": { + "message": "已重新邀請 $SELECTEDCOUNT$ 位使用者中的 $LIMIT$ 位。有 $EXCLUDEDCOUNT$ 位因達到 $LIMIT$ 的邀請上限而未被邀請。", + "placeholders": { + "limit": { + "content": "$1", + "example": "4,000" + }, + "selectedCount": { + "content": "$2", + "example": "4,005" + }, + "excludedCount": { + "content": "$3", + "example": "5" + } + } + }, "bulkRemovedMessage": { "message": "已成功移除。" }, @@ -6773,8 +6811,8 @@ "vaultTimeoutRangeError": { "message": "密碼庫逾時時間不在允許的範圍內。" }, - "disablePersonalVaultExport": { - "message": "停用個人密碼庫匯出" + "disableExport": { + "message": "Remove export" }, "disablePersonalVaultExportDescription": { "message": "不允許成員從其個人密碼庫匯出資料。" @@ -7094,9 +7132,6 @@ "invalidVerificationCode": { "message": "無效的驗證碼" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "以下組織的成員已不再需要主密碼。請與你的組織管理員確認下方的網域。" - }, "keyConnectorDomain": { "message": "Key Connector 網域" }, @@ -7154,8 +7189,8 @@ "enabledSso": { "message": "已啟用 SSO" }, - "disabledSso": { - "message": "已停用 SSO" + "ssoTurnedOff": { + "message": "SSO 已關閉" }, "emailMustLoginWithSso": { "message": "$EMAIL$ 必須使用單一登入 (SSO) 登入", @@ -9448,6 +9483,9 @@ "ssoLoginIsRequired": { "message": "需要登入 SSO" }, + "emailRequiredForSsoLogin": { + "message": "Email is required for SSO" + }, "selectedRegionFlag": { "message": "選定的區域標記" }, @@ -11961,8 +11999,8 @@ "familiesMembership": { "message": "家庭會員" }, - "planDescPremium": { - "message": "完整的線上安全" + "advancedOnlineSecurity": { + "message": "進階線上安全防護" }, "planDescFamiliesV2": { "message": "為你的家人提供進階安全" @@ -12199,6 +12237,45 @@ } } }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "未選取任何關鍵應用程式" }, @@ -12207,5 +12284,139 @@ }, "userVerificationFailed": { "message": "使用者驗證失敗。" + }, + "recoveryDeleteCiphersTitle": { + "message": "Delete unrecoverable vault items" + }, + "recoveryDeleteCiphersDesc": { + "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + }, + "recoveryDeleteFoldersTitle": { + "message": "Delete unrecoverable folders" + }, + "recoveryDeleteFoldersDesc": { + "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + }, + "recoveryReplacePrivateKeyTitle": { + "message": "Replace encryption key" + }, + "recoveryReplacePrivateKeyDesc": { + "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + }, + "recoveryStepSyncTitle": { + "message": "Synchronizing data" + }, + "recoveryStepPrivateKeyTitle": { + "message": "Verifying encryption key integrity" + }, + "recoveryStepUserInfoTitle": { + "message": "Verifying user information" + }, + "recoveryStepCipherTitle": { + "message": "Verifying vault item integrity" + }, + "recoveryStepFoldersTitle": { + "message": "Verifying folder integrity" + }, + "dataRecoveryTitle": { + "message": "Data Recovery and Diagnostics" + }, + "dataRecoveryDescription": { + "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + }, + "runDiagnostics": { + "message": "Run Diagnostics" + }, + "repairIssues": { + "message": "Repair Issues" + }, + "saveDiagnosticLogs": { + "message": "Save Diagnostic Logs" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "此設定由您的組織管理。" + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "您的組織已將最長工作階段逾時設為 $HOURS$ 小時與 $MINUTES$ 分鐘。", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "您的組織已將預設工作階段逾時設定為「在瀏覽器重新整理時」。" + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "最長逾時時間不可超過 $HOURS$ 小時 $MINUTES$ 分鐘", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "於瀏覽器重新整理時" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "設定一個解鎖方式來變更您的密碼庫逾時動作。" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } From 4b93df98c89548d4c4ac6f9d63242c6491c669e9 Mon Sep 17 00:00:00 2001 From: Todd Martin <106564991+trmartin4@users.noreply.github.com> Date: Mon, 15 Dec 2025 16:35:44 -0500 Subject: [PATCH 09/67] chore(README): Update READMEs missing H1 headers * Update READMEs missing H1 headers. * Changed casing. --- apps/web/README.md | 2 ++ libs/common/src/tools/integration/README.md | 2 ++ libs/dirt/card/README.md | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/web/README.md b/apps/web/README.md index c5e03eebb59..0640d7199af 100644 --- a/apps/web/README.md +++ b/apps/web/README.md @@ -1,3 +1,5 @@ +# Bitwarden Web App +

diff --git a/libs/common/src/tools/integration/README.md b/libs/common/src/tools/integration/README.md index 9d7edb2d360..1dc74f729e6 100644 --- a/libs/common/src/tools/integration/README.md +++ b/libs/common/src/tools/integration/README.md @@ -1,3 +1,5 @@ +# Tools Vendor Integration + This module defines interfaces and helpers for creating vendor integration sites. ## RPC diff --git a/libs/dirt/card/README.md b/libs/dirt/card/README.md index b97bfd56590..5d21a045658 100644 --- a/libs/dirt/card/README.md +++ b/libs/dirt/card/README.md @@ -1,4 +1,4 @@ -## DIRT Card +# DIRT Card Package name: `@bitwarden/dirt-card` From d130c443b8effd189cd79b0b0267b7973a3ac573 Mon Sep 17 00:00:00 2001 From: Jason Ng Date: Mon, 15 Dec 2025 18:16:04 -0500 Subject: [PATCH 10/67] [PM-26514] Archive With Non Premium User (#17820) * Add callout for archive non premium, add premium check, add archive badge to view/edit modal, update btn text --- .../vault-item-dialog.component.html | 126 ++++++++++-------- .../vault-item-dialog.component.spec.ts | 36 +++++ .../vault-item-dialog.component.ts | 24 +++- .../vault-cipher-row.component.html | 2 +- .../vault-items/vault-cipher-row.component.ts | 18 +-- .../individual-vault/vault.component.html | 30 +++-- .../vault/individual-vault/vault.component.ts | 4 + apps/web/src/locales/en/messages.json | 3 + .../src/dialog/dialog/dialog.component.html | 25 ++-- .../src/dialog/dialog/dialog.stories.ts | 40 ++++++ 10 files changed, 219 insertions(+), 89 deletions(-) diff --git a/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.html b/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.html index 6eb9b89b05b..3aa2f4b3bc1 100644 --- a/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.html +++ b/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.html @@ -2,43 +2,53 @@ {{ title }} + @if (cipherIsArchived) { + {{ "archiveNoun" | i18n }} + } +
- - - - - - + @if (showCipherView) { + + } + + @if (loadForm) { + + + + + + }
- - + @if (showRestore) { + + } + + @if (showEdit) { - + } + - - -
- -
+ + @if (showCancel) { + + } + + @if (showClose) { + + } + + @if (showDelete) { +
+ +
+ }
diff --git a/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.spec.ts b/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.spec.ts index 6716cde629a..11862b569fc 100644 --- a/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.spec.ts +++ b/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { provideNoopAnimations } from "@angular/platform-browser/animations"; import { ActivatedRoute, Router } from "@angular/router"; +import { of } from "rxjs"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { EventCollectionService } from "@bitwarden/common/abstractions/event/event-collection.service"; @@ -95,6 +96,10 @@ describe("VaultItemDialogComponent", () => { fixture = TestBed.createComponent(TestVaultItemDialogComponent); component = fixture.componentInstance; + Object.defineProperty(component, "userHasPremium$", { + get: () => of(false), + configurable: true, + }); fixture.detectChanges(); }); @@ -135,4 +140,35 @@ describe("VaultItemDialogComponent", () => { expect(component.getTestTitle()).toBe("newItemHeaderCard"); }); }); + describe("submitButtonText$", () => { + it("should return 'unArchiveAndSave' when premium is false and cipher is archived", (done) => { + jest.spyOn(component as any, "userHasPremium$", "get").mockReturnValue(of(false)); + component["cipherIsArchived"] = true; + + component["submitButtonText$"].subscribe((text) => { + expect(text).toBe("unArchiveAndSave"); + done(); + }); + }); + + it("should return 'save' when cipher is archived and user has premium", (done) => { + jest.spyOn(component as any, "userHasPremium$", "get").mockReturnValue(of(true)); + component["cipherIsArchived"] = true; + + component["submitButtonText$"].subscribe((text) => { + expect(text).toBe("save"); + done(); + }); + }); + + it("should return 'save' when cipher is not archived", (done) => { + jest.spyOn(component as any, "userHasPremium$", "get").mockReturnValue(of(false)); + component["cipherIsArchived"] = false; + + component["submitButtonText$"].subscribe((text) => { + expect(text).toBe("save"); + done(); + }); + }); + }); }); diff --git a/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.ts b/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.ts index 8508596a67b..d7b9ee97123 100644 --- a/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.ts +++ b/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.ts @@ -12,7 +12,7 @@ import { } from "@angular/core"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { Router } from "@angular/router"; -import { firstValueFrom, Subject, switchMap } from "rxjs"; +import { firstValueFrom, Observable, Subject, switchMap } from "rxjs"; import { map } from "rxjs/operators"; import { CollectionView } from "@bitwarden/admin-console/common"; @@ -222,10 +222,10 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy { protected collections?: CollectionView[]; /** - * Flag to indicate if the user has access to attachments via a premium subscription. + * Flag to indicate if the user has a premium subscription. Using for access to attachments, and archives * @protected */ - protected canAccessAttachments$ = this.accountService.activeAccount$.pipe( + protected userHasPremium$ = this.accountService.activeAccount$.pipe( switchMap((account) => this.billingAccountProfileStateService.hasPremiumFromAnySource$(account.id), ), @@ -253,6 +253,8 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy { protected showRestore: boolean; + protected cipherIsArchived: boolean; + protected get loadingForm() { return this.loadForm && !this.formReady; } @@ -278,6 +280,16 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy { return this.cipher != undefined && (this.params.mode === "view" || this.loadingForm); } + protected get submitButtonText$(): Observable { + return this.userHasPremium$.pipe( + map((hasPremium) => + this.cipherIsArchived && !hasPremium + ? this.i18nService.t("unArchiveAndSave") + : this.i18nService.t("save"), + ), + ); + } + /** * Flag to initialize/attach the form component. */ @@ -363,6 +375,7 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy { this.filter = await firstValueFrom(this.routedVaultFilterService.filter$); this.showRestore = await this.canUserRestore(); + this.cipherIsArchived = this.cipher.isArchived; this.performingInitialLoad = false; } @@ -392,6 +405,9 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy { cipherView.collectionIds?.includes(c.id), ); + // Track cipher archive state for btn text and badge updates + this.cipherIsArchived = this.cipher.isArchived; + // If the cipher was newly created (via add/clone), switch the form to edit for subsequent edits. if (this._originalFormMode === "add" || this._originalFormMode === "clone") { this.formConfig.mode = "edit"; @@ -468,7 +484,7 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy { }; openAttachmentsDialog = async () => { - const canAccessAttachments = await firstValueFrom(this.canAccessAttachments$); + const canAccessAttachments = await firstValueFrom(this.userHasPremium$); if (!canAccessAttachments) { await this.premiumUpgradeService.promptForPremium(this.cipher?.organizationId); diff --git a/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.html b/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.html index d56c9d15cff..5b9f9db3e62 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.html +++ b/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.html @@ -172,7 +172,7 @@ @if (!viewingOrgVault) { - diff --git a/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.ts b/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.ts index 92c49ac218a..a723f1e942b 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.ts +++ b/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.ts @@ -253,14 +253,6 @@ export class VaultCipherRowComponent implements OnInit ); } - protected get hasPasswordToCopy() { - return CipherViewLikeUtils.hasCopyableValue(this.cipher, "password"); - } - - protected get hasUsernameToCopy() { - return CipherViewLikeUtils.hasCopyableValue(this.cipher, "username"); - } - protected get permissionText() { if (!this.cipher.organizationId || this.cipher.collectionIds.length === 0) { return this.i18nService.t("manageCollection"); @@ -319,6 +311,9 @@ export class VaultCipherRowComponent implements OnInit } protected get isIdentityCipher() { + if (CipherViewLikeUtils.isArchived(this.cipher) && !this.userCanArchive) { + return false; + } return CipherViewLikeUtils.getType(this.cipher) === this.CipherType.Identity && !this.isDeleted; } @@ -394,6 +389,13 @@ export class VaultCipherRowComponent implements OnInit return this.organization.canEditAllCiphers || (this.cipher.edit && this.cipher.viewPassword); } + protected get showFavorite() { + if (CipherViewLikeUtils.isArchived(this.cipher) && !this.userCanArchive) { + return false; + } + return true; + } + protected toggleFavorite() { this.onEvent.emit({ type: "toggleFavorite", diff --git a/apps/web/src/app/vault/individual-vault/vault.component.html b/apps/web/src/app/vault/individual-vault/vault.component.html index 522b63c21fd..df1b727154f 100644 --- a/apps/web/src/app/vault/individual-vault/vault.component.html +++ b/apps/web/src/app/vault/individual-vault/vault.component.html @@ -31,19 +31,23 @@ >
- - {{ trashCleanupWarning }} - - -

{{ "premiumSubscriptionEndedDesc" | i18n }}

- {{ - "restartPremium" | i18n - }} -
+ @if (activeFilter.isDeleted) { + + {{ trashCleanupWarning }} + + } + + @if (showSubscriptionEndedMessaging$ | async) { + + +
+ {{ "premiumSubscriptionEndedDesc" | i18n }} +
+ {{ "restartPremium" | i18n }} +
+
+ } + implements OnInit, OnDestr this.vaultFilterService.clearOrganizationFilter(); } + async navigateToGetPremium() { + await this.router.navigate(["/settings/subscription/premium"]); + } + async onVaultItemsEvent(event: VaultItemEvent) { this.processingEvent = true; try { diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index 0f8b0c1b466..680c28f0747 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -11591,6 +11591,9 @@ "unArchive": { "message": "Unarchive" }, + "unArchiveAndSave": { + "message": "Unarchive and save" + }, "itemsInArchive": { "message": "Items in archive" }, diff --git a/libs/components/src/dialog/dialog/dialog.component.html b/libs/components/src/dialog/dialog/dialog.component.html index be946c76a57..22aa99c44cb 100644 --- a/libs/components/src/dialog/dialog/dialog.component.html +++ b/libs/components/src/dialog/dialog/dialog.component.html @@ -34,16 +34,21 @@ } - @if (!this.dialogRef?.disableClose) { - - } + +
+ + + @if (!this.dialogRef?.disableClose) { + + } +
Foobar + Dialog body text goes here. @@ -292,3 +293,42 @@ export const WithCards: Story = { disableAnimations: true, }, }; + +export const HeaderEnd: Story = { + render: (args) => ({ + props: args, + template: /*html*/ ` + + + + Archived + + + Dialog body text goes here. + + + + + + + `, + }), + args: { + dialogSize: "small", + title: "Very Long Title That Should Be Truncated After Two Lines To Test Header End Slot", + subtitle: "Subtitle", + }, +}; From a7d3056f502ce9d27f84f2793bfd26bbe90a2d6f Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 09:20:53 +0100 Subject: [PATCH 11/67] Autosync the updated translations (#17972) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/web/src/locales/af/messages.json | 15 +-- apps/web/src/locales/ar/messages.json | 15 +-- apps/web/src/locales/az/messages.json | 41 ++++---- apps/web/src/locales/be/messages.json | 15 +-- apps/web/src/locales/bg/messages.json | 15 +-- apps/web/src/locales/bn/messages.json | 15 +-- apps/web/src/locales/bs/messages.json | 15 +-- apps/web/src/locales/ca/messages.json | 15 +-- apps/web/src/locales/cs/messages.json | 15 +-- apps/web/src/locales/cy/messages.json | 15 +-- apps/web/src/locales/da/messages.json | 15 +-- apps/web/src/locales/de/messages.json | 77 +++++++-------- apps/web/src/locales/el/messages.json | 15 +-- apps/web/src/locales/en_GB/messages.json | 15 +-- apps/web/src/locales/en_IN/messages.json | 15 +-- apps/web/src/locales/eo/messages.json | 15 +-- apps/web/src/locales/es/messages.json | 15 +-- apps/web/src/locales/et/messages.json | 15 +-- apps/web/src/locales/eu/messages.json | 15 +-- apps/web/src/locales/fa/messages.json | 15 +-- apps/web/src/locales/fi/messages.json | 15 +-- apps/web/src/locales/fil/messages.json | 15 +-- apps/web/src/locales/fr/messages.json | 15 +-- apps/web/src/locales/gl/messages.json | 15 +-- apps/web/src/locales/he/messages.json | 15 +-- apps/web/src/locales/hi/messages.json | 15 +-- apps/web/src/locales/hr/messages.json | 15 +-- apps/web/src/locales/hu/messages.json | 15 +-- apps/web/src/locales/id/messages.json | 15 +-- apps/web/src/locales/it/messages.json | 15 +-- apps/web/src/locales/ja/messages.json | 15 +-- apps/web/src/locales/ka/messages.json | 15 +-- apps/web/src/locales/km/messages.json | 15 +-- apps/web/src/locales/kn/messages.json | 15 +-- apps/web/src/locales/ko/messages.json | 15 +-- apps/web/src/locales/lv/messages.json | 15 +-- apps/web/src/locales/ml/messages.json | 15 +-- apps/web/src/locales/mr/messages.json | 15 +-- apps/web/src/locales/my/messages.json | 15 +-- apps/web/src/locales/nb/messages.json | 15 +-- apps/web/src/locales/ne/messages.json | 15 +-- apps/web/src/locales/nl/messages.json | 15 +-- apps/web/src/locales/nn/messages.json | 15 +-- apps/web/src/locales/or/messages.json | 15 +-- apps/web/src/locales/pl/messages.json | 15 +-- apps/web/src/locales/pt_BR/messages.json | 77 +++++++-------- apps/web/src/locales/pt_PT/messages.json | 41 ++++---- apps/web/src/locales/ro/messages.json | 15 +-- apps/web/src/locales/ru/messages.json | 59 +++++------- apps/web/src/locales/si/messages.json | 15 +-- apps/web/src/locales/sk/messages.json | 15 +-- apps/web/src/locales/sl/messages.json | 15 +-- apps/web/src/locales/sr_CS/messages.json | 15 +-- apps/web/src/locales/sr_CY/messages.json | 115 +++++++++++------------ apps/web/src/locales/sv/messages.json | 15 +-- apps/web/src/locales/ta/messages.json | 15 +-- apps/web/src/locales/te/messages.json | 15 +-- apps/web/src/locales/th/messages.json | 15 +-- apps/web/src/locales/tr/messages.json | 15 +-- apps/web/src/locales/uk/messages.json | 15 +-- apps/web/src/locales/vi/messages.json | 15 +-- apps/web/src/locales/zh_CN/messages.json | 69 ++++++-------- apps/web/src/locales/zh_TW/messages.json | 15 +-- 63 files changed, 376 insertions(+), 943 deletions(-) diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json index b5701c01e86..d5314274775 100644 --- a/apps/web/src/locales/af/messages.json +++ b/apps/web/src/locales/af/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Stuur kluis uit" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "Lêerformaat" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Bevestig hoofwagwoord" }, - "confirmFormat": { - "message": "Bevestig formaat" - }, "filePassword": { "message": "Lêerwagwoord" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Nutsmiddels" }, + "import": { + "message": "Import" + }, "importData": { "message": "Voer data in" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Bediener" }, - "exportData": { - "message": "Stuur data uit" - }, "exportingOrganizationSecretDataTitle": { "message": "Stuur tans organisasiegeheimdata uit" }, diff --git a/apps/web/src/locales/ar/messages.json b/apps/web/src/locales/ar/messages.json index 807689cebae..c85ad682d0a 100644 --- a/apps/web/src/locales/ar/messages.json +++ b/apps/web/src/locales/ar/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "التصدير من" }, - "exportVault": { - "message": "تصدير الخزانة" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "صيغة الملف" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "تأكيد كلمة المرور الرئيسية" }, - "confirmFormat": { - "message": "تأكيد التنسيق" - }, "filePassword": { "message": "كلمة مرور الملف" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "الأدوات" }, + "import": { + "message": "Import" + }, "importData": { "message": "استيراد البيانات" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json index 77df36f5c45..9068514ce55 100644 --- a/apps/web/src/locales/az/messages.json +++ b/apps/web/src/locales/az/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Buradan xaricə köçür" }, - "exportVault": { - "message": "Seyfi xaricə köçür" - }, - "exportSecrets": { - "message": "Sirləri xaricə köçür" - }, "fileFormat": { "message": "Fayl formatı" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Ana parolu təsdiqlə" }, - "confirmFormat": { - "message": "Formatı təsdiqlə" - }, "filePassword": { "message": "Fayl parolu" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Alətlər" }, + "import": { + "message": "Daxilə köçür" + }, "importData": { "message": "Veriləri daxilə köçür" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Veriləri xaricə köçür" - }, "exportingOrganizationSecretDataTitle": { "message": "Təşkilatın Sirr Verilərini xaricə köçürmə" }, @@ -12238,43 +12229,43 @@ } }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "Təşkilatınız, artıq Bitwarden-ə giriş etmək üçün ana parol istifadə etmir. Davam etmək üçün təşkilatı və domeni doğrulayın." }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "Giriş etməyə davam" }, "doNotContinue": { - "message": "Do not continue" + "message": "Davam etmə" }, "domain": { - "message": "Domain" + "message": "Domen" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "Bu domen, hesabınızın şifrələmə açarlarını saxlayacaq, ona görə də, bu domenə güvəndiyinizə əmin olun. Əmin deyilsinizsə, adminizlə əlaqə saxlayın." }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "Giriş etmək üçün təşkilatınızı doğrulayın" }, "organizationVerified": { - "message": "Organization verified" + "message": "Təşkilat doğrulandı" }, "domainVerified": { - "message": "Domain verified" + "message": "Domen doğrulandı" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "Təşkilatınızı doğrulamasanız, təşkilata erişiminiz ləğv ediləcək." }, "leaveNow": { - "message": "Leave now" + "message": "İndi tərk et" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "Giriş etmək üçün domeninizi doğrulayın" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "Giriş prosesini davam etdirmək üçün bu domeni doğrulayın." }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "Giriş prosesini davam etdirmək üçün bu təşkilatı və domeni doğrulayın." }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Heç bir kritik tətbiq seçilməyib" diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json index c670f82a00d..b5f7a4dfa18 100644 --- a/apps/web/src/locales/be/messages.json +++ b/apps/web/src/locales/be/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Экспартаваць сховішча" - }, - "exportSecrets": { - "message": "Экспартаванне сакрэтаў" - }, "fileFormat": { "message": "Фармат файла" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Пацвердзіць асноўны пароль" }, - "confirmFormat": { - "message": "Пацвердзіць фармат" - }, "filePassword": { "message": "Пароль файла" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Інструменты" }, + "import": { + "message": "Import" + }, "importData": { "message": "Імпартаванне даных" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Сервер" }, - "exportData": { - "message": "Экспартаванне даных" - }, "exportingOrganizationSecretDataTitle": { "message": "Экспартаванне сакрэтных даных арганізацыі" }, diff --git a/apps/web/src/locales/bg/messages.json b/apps/web/src/locales/bg/messages.json index 3e3451084fc..a57f9bcebb2 100644 --- a/apps/web/src/locales/bg/messages.json +++ b/apps/web/src/locales/bg/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Изнасяне от" }, - "exportVault": { - "message": "Изнасяне на трезора" - }, - "exportSecrets": { - "message": "Изнасяне на тайните" - }, "fileFormat": { "message": "Формат на файла" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Потвърждаване на главната парола" }, - "confirmFormat": { - "message": "Потвърждаване на формата" - }, "filePassword": { "message": "Парола на файла" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Инструменти" }, + "import": { + "message": "Внасяне" + }, "importData": { "message": "Внасяне на данни" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Сървър" }, - "exportData": { - "message": "Изнасяне на данни" - }, "exportingOrganizationSecretDataTitle": { "message": "Изнасяне на тайните данни на организацията" }, diff --git a/apps/web/src/locales/bn/messages.json b/apps/web/src/locales/bn/messages.json index 4e8c53b1598..f2ff447005c 100644 --- a/apps/web/src/locales/bn/messages.json +++ b/apps/web/src/locales/bn/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/bs/messages.json b/apps/web/src/locales/bs/messages.json index defb970c237..63c22b86251 100644 --- a/apps/web/src/locales/bs/messages.json +++ b/apps/web/src/locales/bs/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/ca/messages.json b/apps/web/src/locales/ca/messages.json index 9b8bb1fce7d..7e6c8e20085 100644 --- a/apps/web/src/locales/ca/messages.json +++ b/apps/web/src/locales/ca/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exporta des de" }, - "exportVault": { - "message": "Exporta la caixa forta" - }, - "exportSecrets": { - "message": "Exporta secrets" - }, "fileFormat": { "message": "Format de fitxer" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirma la contrasenya mestra" }, - "confirmFormat": { - "message": "Confirma el format" - }, "filePassword": { "message": "Contrasenya del fitxer" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Eines" }, + "import": { + "message": "Import" + }, "importData": { "message": "Importa dades" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Servidor" }, - "exportData": { - "message": "Exportar dades" - }, "exportingOrganizationSecretDataTitle": { "message": "Exportació de dades secretes de l’organització" }, diff --git a/apps/web/src/locales/cs/messages.json b/apps/web/src/locales/cs/messages.json index 4eacb212138..923cfb66a14 100644 --- a/apps/web/src/locales/cs/messages.json +++ b/apps/web/src/locales/cs/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exportovat z" }, - "exportVault": { - "message": "Exportovat trezor" - }, - "exportSecrets": { - "message": "Exportovat tajné klíče" - }, "fileFormat": { "message": "Formát souboru" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Potvrzení hlavního hesla" }, - "confirmFormat": { - "message": "Potvrdit formát" - }, "filePassword": { "message": "Heslo souboru" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Nástroje" }, + "import": { + "message": "Importovat" + }, "importData": { "message": "Importovat data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Exportovat data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exportování tajných dat organizace" }, diff --git a/apps/web/src/locales/cy/messages.json b/apps/web/src/locales/cy/messages.json index f8839744e98..5a8845a48cc 100644 --- a/apps/web/src/locales/cy/messages.json +++ b/apps/web/src/locales/cy/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json index 3b583416b25..56ccbf6abdf 100644 --- a/apps/web/src/locales/da/messages.json +++ b/apps/web/src/locales/da/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Eksportér fra" }, - "exportVault": { - "message": "Eksportér boks" - }, - "exportSecrets": { - "message": "Eksportér hemmeligheder" - }, "fileFormat": { "message": "Filformat" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Bekræft hovedadgangskode" }, - "confirmFormat": { - "message": "Bekræft format" - }, "filePassword": { "message": "Filadgangskode" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Værktøjer" }, + "import": { + "message": "Import" + }, "importData": { "message": "Importér data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Eksportér data" - }, "exportingOrganizationSecretDataTitle": { "message": "Eksporterer organisations hemmelige data" }, diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index 6eb0b1d5dc7..d4ccac0d49f 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exportieren ab" }, - "exportVault": { - "message": "Tresor exportieren" - }, - "exportSecrets": { - "message": "Geheimnisse exportieren" - }, "fileFormat": { "message": "Dateiformat" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Master-Passwort bestätigen" }, - "confirmFormat": { - "message": "Format bestätigen" - }, "filePassword": { "message": "Dateipasswort" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Werkzeuge" }, + "import": { + "message": "Import" + }, "importData": { "message": "Daten importieren" }, @@ -6466,7 +6460,7 @@ "message": "Erfolgreich erneut eingeladen" }, "bulkReinviteSuccessToast": { - "message": "$COUNT$ users re-invited", + "message": "$COUNT$ Benutzer erneut eingeladen", "placeholders": { "count": { "content": "$1", @@ -6475,7 +6469,7 @@ } }, "bulkReinviteLimitedSuccessToast": { - "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "message": "$LIMIT$ von $SELECTEDCOUNT$ Benutzern erneut eingeladen. $EXCLUDEDCOUNT$ wurden wegen des Einladungslimits von $LIMIT$ nicht eingeladen.", "placeholders": { "limit": { "content": "$1", @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Daten exportieren" - }, "exportingOrganizationSecretDataTitle": { "message": "Geheimnisdaten der Organisation exportieren" }, @@ -12241,19 +12232,19 @@ "message": "Deine Organisation verwendet keine Master-Passwörter mehr, um sich bei Bitwarden anzumelden. Verifiziere die Organisation und Domain, um fortzufahren." }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "Mit der Anmeldung fortfahren" }, "doNotContinue": { - "message": "Do not continue" + "message": "Nicht fortfahren" }, "domain": { "message": "Domain" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "Diese Domain speichert die Verschlüsselungsschlüssel deines Kontos. Stelle daher sicher, dass du ihr vertraust. Wenn du dir nicht sicher bist, wende dich an deinen Administrator." }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "Verifiziere deine Organisation, um dich anzumelden" }, "organizationVerified": { "message": "Organisation verifiziert" @@ -12265,16 +12256,16 @@ "message": "Wenn du deine Organisation nicht verifizierst, wird dein Zugriff auf die Organisation widerrufen." }, "leaveNow": { - "message": "Leave now" + "message": "Jetzt verlassen" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "Verifiziere deine Domain, um dich anzumelden" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "Verifiziere diese Domain, um mit der Anmeldung fortzufahren." }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "Um mit der Anmeldung fortzufahren, verifiziere die Organisation und Domain." }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Es sind keine kritischen Anwendungen ausgewählt" @@ -12286,52 +12277,52 @@ "message": "Benutzerverifizierung fehlgeschlagen." }, "recoveryDeleteCiphersTitle": { - "message": "Delete unrecoverable vault items" + "message": "Nicht-wiederherstellbare Tresor-Einträge löschen" }, "recoveryDeleteCiphersDesc": { - "message": "Some of your vault items could not be recovered. Do you want to delete these unrecoverable items from your vault?" + "message": "Einige deiner Tresor-Einträge konnten nicht wiederhergestellt werden. Möchtest du diese nicht-wiederherstellbaren Einträge in deinem Tresor löschen?" }, "recoveryDeleteFoldersTitle": { - "message": "Delete unrecoverable folders" + "message": "Nicht-wiederherstellbare Ordner löschen" }, "recoveryDeleteFoldersDesc": { - "message": "Some of your folders could not be recovered. Do you want to delete these unrecoverable folders from your vault?" + "message": "Einige deiner Ordner konnten nicht wiederhergestellt werden. Möchtest du diese nicht-wiederherstellbaren Ordner in deinem Tresor löschen?" }, "recoveryReplacePrivateKeyTitle": { "message": "Verschlüsselungsschlüssel ersetzen" }, "recoveryReplacePrivateKeyDesc": { - "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." + "message": "Dein öffentliches Verschlüsselungsschlüsselpaar konnte nicht wiederhergestellt werden. Möchtest du deinen Verschlüsselungsschlüssel durch ein neues Schlüsselpaar ersetzen? Dazu musst du bestehenden Notfallzugänge und Organisationsmitgliedschaften erneut einrichten." }, "recoveryStepSyncTitle": { - "message": "Synchronizing data" + "message": "Daten werden synchronisiert" }, "recoveryStepPrivateKeyTitle": { - "message": "Verifying encryption key integrity" + "message": "Integrität des Verschlüsselungsschlüssels wird verifiziert" }, "recoveryStepUserInfoTitle": { - "message": "Verifying user information" + "message": "Benutzerinformationen werden verifiziert" }, "recoveryStepCipherTitle": { - "message": "Verifying vault item integrity" + "message": "Integrität des Tresoreintrags wird verifiziert" }, "recoveryStepFoldersTitle": { - "message": "Verifying folder integrity" + "message": "Ordnerintegrität wird verifiziert" }, "dataRecoveryTitle": { - "message": "Data Recovery and Diagnostics" + "message": "Datenwiederherstellung und Diagnose" }, "dataRecoveryDescription": { - "message": "Use the data recovery tool to diagnose and repair issues with your account. After running diagnostics you have the option to save diagnostic logs for support and the option to repair any detected issues." + "message": "Verwende das Werkzeug zur Datenwiederherstellung, um Probleme mit deinem Konto zu diagnostizieren und zu beheben. Nach dem Ausführen der Diagnose hast du die Möglichkeit, die Diagnoseprotokolle für den Support zu speichern und alle erkannten Probleme zu beheben." }, "runDiagnostics": { - "message": "Run Diagnostics" + "message": "Diagnose ausführen" }, "repairIssues": { - "message": "Repair Issues" + "message": "Probleme beheben" }, "saveDiagnosticLogs": { - "message": "Save Diagnostic Logs" + "message": "Diagnoseprotokolle speichern" }, "sessionTimeoutSettingsManagedByOrganization": { "message": "Diese Einstellung wird von deiner Organisation verwaltet." @@ -12372,16 +12363,16 @@ "message": "Stell eine Entsperrmethode ein, um deine Timeout-Aktion zu ändern" }, "leaveConfirmationDialogTitle": { - "message": "Are you sure you want to leave?" + "message": "Bist du sicher, dass du gehen willst?" }, "leaveConfirmationDialogContentOne": { "message": "Wenn du ablehnst, bleiben deine persönlichen Einträge in deinem Konto erhalten, aber du wirst den Zugriff auf geteilte Einträge und Organisationsfunktionen verlieren." }, "leaveConfirmationDialogContentTwo": { - "message": "Contact your admin to regain access." + "message": "Kontaktiere deinen Administrator, um wieder Zugriff zu erhalten." }, "leaveConfirmationDialogConfirmButton": { - "message": "Leave $ORGANIZATION$", + "message": "$ORGANIZATION$ verlassen", "placeholders": { "organization": { "content": "$1", @@ -12390,10 +12381,10 @@ } }, "howToManageMyVault": { - "message": "How do I manage my vault?" + "message": "Wie kann ich meinen Tresor verwalten?" }, "transferItemsToOrganizationTitle": { - "message": "Transfer items to $ORGANIZATION$", + "message": "Einträge zu $ORGANIZATION$ übertragen", "placeholders": { "organization": { "content": "$1", @@ -12402,7 +12393,7 @@ } }, "transferItemsToOrganizationContent": { - "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "message": "$ORGANIZATION$ erfordert zur Sicherheit und Compliance, dass alle Einträge der Organisation gehören. Klicke auf Akzeptieren, um den Besitz deiner Einträge zu übertragen.", "placeholders": { "organization": { "content": "$1", diff --git a/apps/web/src/locales/el/messages.json b/apps/web/src/locales/el/messages.json index f8efb8f78f8..92dd55f4c8b 100644 --- a/apps/web/src/locales/el/messages.json +++ b/apps/web/src/locales/el/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Εξαγωγή από" }, - "exportVault": { - "message": "Εξαγωγή Vault" - }, - "exportSecrets": { - "message": "Εξαγωγή μυστικών" - }, "fileFormat": { "message": "Μορφή Αρχείου" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Επιβεβαίωση κύριου κωδικού πρόσβασης" }, - "confirmFormat": { - "message": "Επιβεβαίωση μορφής" - }, "filePassword": { "message": "Κωδικός πρόσβασης αρχείου" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Εργαλεία" }, + "import": { + "message": "Import" + }, "importData": { "message": "Εισαγωγή Δεδομένων" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Διακομιστής" }, - "exportData": { - "message": "Εξαγωγή δεδομένων" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json index cdcf727df78..e49ac4ac0f6 100644 --- a/apps/web/src/locales/en_GB/messages.json +++ b/apps/web/src/locales/en_GB/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organisation Secret Data" }, diff --git a/apps/web/src/locales/en_IN/messages.json b/apps/web/src/locales/en_IN/messages.json index ba0927f73fc..cfcfa1681c8 100644 --- a/apps/web/src/locales/en_IN/messages.json +++ b/apps/web/src/locales/en_IN/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/eo/messages.json b/apps/web/src/locales/eo/messages.json index dbccabfe6d7..8dd7923b58a 100644 --- a/apps/web/src/locales/eo/messages.json +++ b/apps/web/src/locales/eo/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Elporti el" }, - "exportVault": { - "message": "Elporti la trezorejon" - }, - "exportSecrets": { - "message": "Elporti la sekretojn" - }, "fileFormat": { "message": "Dosierformato" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Konfirmi la ĉefpasvorton" }, - "confirmFormat": { - "message": "Konfirmu formaton" - }, "filePassword": { "message": "Pasvorto de la dosiero" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Iloj" }, + "import": { + "message": "Import" + }, "importData": { "message": "Importi Datumojn" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Servilo" }, - "exportData": { - "message": "Elporti datumon" - }, "exportingOrganizationSecretDataTitle": { "message": "En elportado de Sekretaj Datumoj de Organizo" }, diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json index 218cfea5617..b0778ef02cc 100644 --- a/apps/web/src/locales/es/messages.json +++ b/apps/web/src/locales/es/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exportar desde" }, - "exportVault": { - "message": "Exportar caja fuerte" - }, - "exportSecrets": { - "message": "Exportar secretos" - }, "fileFormat": { "message": "Formato de archivo" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirmar contraseña maestra" }, - "confirmFormat": { - "message": "Confirmar formato" - }, "filePassword": { "message": "Contraseña del archivo" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Herramientas" }, + "import": { + "message": "Import" + }, "importData": { "message": "Importar datos" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Servidor" }, - "exportData": { - "message": "Exportar datos" - }, "exportingOrganizationSecretDataTitle": { "message": "Exportando caja fuerte de la organización" }, diff --git a/apps/web/src/locales/et/messages.json b/apps/web/src/locales/et/messages.json index df1baf98bc2..03e56857413 100644 --- a/apps/web/src/locales/et/messages.json +++ b/apps/web/src/locales/et/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Ekspordi asukohast" }, - "exportVault": { - "message": "Hoidla sisu eksportimine" - }, - "exportSecrets": { - "message": "Ekspordi saladused" - }, "fileFormat": { "message": "Failivorming" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Kinnita ülemparool" }, - "confirmFormat": { - "message": "Kinnita formaat" - }, "filePassword": { "message": "Faili parool" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tööriistad" }, + "import": { + "message": "Import" + }, "importData": { "message": "Andmete importimine" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json index e633cefdbf0..f28b334e9ff 100644 --- a/apps/web/src/locales/eu/messages.json +++ b/apps/web/src/locales/eu/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Esportatu kutxa gotorra" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "Fitxategiaren formatua" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Pasahitz nagusia baieztatu" }, - "confirmFormat": { - "message": "Formatua baieztatu" - }, "filePassword": { "message": "Fitxategi pasahitza" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tresnak" }, + "import": { + "message": "Import" + }, "importData": { "message": "Inportatu datuak" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/fa/messages.json b/apps/web/src/locales/fa/messages.json index 5039584050d..75235dca1b3 100644 --- a/apps/web/src/locales/fa/messages.json +++ b/apps/web/src/locales/fa/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "برون ریزی از" }, - "exportVault": { - "message": "برون ریزی گاوصندوق" - }, - "exportSecrets": { - "message": "برون ریزی رازها" - }, "fileFormat": { "message": "فرمت پرونده" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "تأیید کلمه عبور اصلی" }, - "confirmFormat": { - "message": "فرمت را تأیید کنید" - }, "filePassword": { "message": "کلمه عبور پرونده" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "ابزار" }, + "import": { + "message": "Import" + }, "importData": { "message": "درون ریزی داده" }, @@ -8753,9 +8747,6 @@ "server": { "message": "سرور" }, - "exportData": { - "message": "برون ریزی داده" - }, "exportingOrganizationSecretDataTitle": { "message": "برون ریزی داده‌های مخفی سازمان" }, diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json index 8a70ab58fde..adda39d725b 100644 --- a/apps/web/src/locales/fi/messages.json +++ b/apps/web/src/locales/fi/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Vie lähteestä" }, - "exportVault": { - "message": "Vie holvi" - }, - "exportSecrets": { - "message": "Vie salaisuudet" - }, "fileFormat": { "message": "Tiedostomuoto" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Vahvista pääsalasana" }, - "confirmFormat": { - "message": "Vahvista muoto" - }, "filePassword": { "message": "Tiedoston salasana" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Työkalut" }, + "import": { + "message": "Import" + }, "importData": { "message": "Tuo tietoja" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Palvelin" }, - "exportData": { - "message": "Vie tietoja" - }, "exportingOrganizationSecretDataTitle": { "message": "Organisaation salaisten tietojen vienti" }, diff --git a/apps/web/src/locales/fil/messages.json b/apps/web/src/locales/fil/messages.json index cd201f852ef..1a4720094b9 100644 --- a/apps/web/src/locales/fil/messages.json +++ b/apps/web/src/locales/fil/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "I-export ang vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "Format ng file" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Kumpirmahin ang master password" }, - "confirmFormat": { - "message": "Kumpirmahin ang pag-format" - }, "filePassword": { "message": "Password ng file" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Mga Kagamitan" }, + "import": { + "message": "Import" + }, "importData": { "message": "Mag-import ng data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "I-export ang mga datos" - }, "exportingOrganizationSecretDataTitle": { "message": "Pag-eexport ng Sekretong Data ng Organisasyon" }, diff --git a/apps/web/src/locales/fr/messages.json b/apps/web/src/locales/fr/messages.json index 311f8912137..c2f107b9437 100644 --- a/apps/web/src/locales/fr/messages.json +++ b/apps/web/src/locales/fr/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exporter à partir de" }, - "exportVault": { - "message": "Exporter le coffre" - }, - "exportSecrets": { - "message": "Exporter les secrets" - }, "fileFormat": { "message": "Format de fichier" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirmer le mot de passe principal" }, - "confirmFormat": { - "message": "Confirmer le format" - }, "filePassword": { "message": "Mot de Passe du Fichier" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Outils" }, + "import": { + "message": "Importer" + }, "importData": { "message": "Importer des données" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Serveur" }, - "exportData": { - "message": "Exporter les données" - }, "exportingOrganizationSecretDataTitle": { "message": "Exportation des Données Secrètes de l'Organisation" }, diff --git a/apps/web/src/locales/gl/messages.json b/apps/web/src/locales/gl/messages.json index f882247b331..6e33295162c 100644 --- a/apps/web/src/locales/gl/messages.json +++ b/apps/web/src/locales/gl/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/he/messages.json b/apps/web/src/locales/he/messages.json index 3a56db568a7..baf7bafeb7a 100644 --- a/apps/web/src/locales/he/messages.json +++ b/apps/web/src/locales/he/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "ייצא מ־" }, - "exportVault": { - "message": "ייצא כספת" - }, - "exportSecrets": { - "message": "ייצא סודות" - }, "fileFormat": { "message": "פורמט קובץ" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "אמת סיסמה ראשית" }, - "confirmFormat": { - "message": "אשר פורמט" - }, "filePassword": { "message": "סיסמת קובץ" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "כלים" }, + "import": { + "message": "Import" + }, "importData": { "message": "ייבא נתונים" }, @@ -8753,9 +8747,6 @@ "server": { "message": "שרת" }, - "exportData": { - "message": "ייצא נתונים" - }, "exportingOrganizationSecretDataTitle": { "message": "ייצוא נתונים ארגון סודיים" }, diff --git a/apps/web/src/locales/hi/messages.json b/apps/web/src/locales/hi/messages.json index 5909b46ff33..bd4089e240f 100644 --- a/apps/web/src/locales/hi/messages.json +++ b/apps/web/src/locales/hi/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/hr/messages.json b/apps/web/src/locales/hr/messages.json index ff7cf0be88e..1716bdd25e8 100644 --- a/apps/web/src/locales/hr/messages.json +++ b/apps/web/src/locales/hr/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Izvezi iz" }, - "exportVault": { - "message": "Izvezi trezor" - }, - "exportSecrets": { - "message": "Izvezi tajne" - }, "fileFormat": { "message": "Format datoteke" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Potvrdi glavnu lozinku" }, - "confirmFormat": { - "message": "Potvrdi oblik" - }, "filePassword": { "message": "Lozinka datoteke" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Alati" }, + "import": { + "message": "Import" + }, "importData": { "message": "Uvezi podatke" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Poslužitelj" }, - "exportData": { - "message": "Izvezi podatke" - }, "exportingOrganizationSecretDataTitle": { "message": "Izvoz tajnih podataka organizacije" }, diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json index eb437dcc678..38720b614fc 100644 --- a/apps/web/src/locales/hu/messages.json +++ b/apps/web/src/locales/hu/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exportálás innen:" }, - "exportVault": { - "message": "Széf exportálása" - }, - "exportSecrets": { - "message": "Titkos adatok exportálása" - }, "fileFormat": { "message": "Fájlformátum" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Mesterjelszó megerősítése" }, - "confirmFormat": { - "message": "Formátum megerősítése" - }, "filePassword": { "message": "Fájl jelszó" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Eszközök" }, + "import": { + "message": "Importálás" + }, "importData": { "message": "Adatok importálása" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Szerver" }, - "exportData": { - "message": "Adatok exportálása" - }, "exportingOrganizationSecretDataTitle": { "message": "Szervezeti titkos adatok exportálása" }, diff --git a/apps/web/src/locales/id/messages.json b/apps/web/src/locales/id/messages.json index 74804d5db8e..165deb7b917 100644 --- a/apps/web/src/locales/id/messages.json +++ b/apps/web/src/locales/id/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Ekspor dari" }, - "exportVault": { - "message": "Ekspor Brankas" - }, - "exportSecrets": { - "message": "Ekspor rahasia" - }, "fileFormat": { "message": "Format Berkas" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Konfirmasi sandi utama" }, - "confirmFormat": { - "message": "Konfirmasi format" - }, "filePassword": { "message": "Sandi berkas" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Alat" }, + "import": { + "message": "Import" + }, "importData": { "message": "Impor Data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json index 3814df96b74..87015d32666 100644 --- a/apps/web/src/locales/it/messages.json +++ b/apps/web/src/locales/it/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Esporta da" }, - "exportVault": { - "message": "Esporta cassaforte" - }, - "exportSecrets": { - "message": "Esporta segreti" - }, "fileFormat": { "message": "Formato file" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Conferma password principale" }, - "confirmFormat": { - "message": "Conferma formato" - }, "filePassword": { "message": "Password del file" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Strumenti" }, + "import": { + "message": "Import" + }, "importData": { "message": "Importa dati" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Esporta dati" - }, "exportingOrganizationSecretDataTitle": { "message": "Esportando dati segreti dell'organizzazione" }, diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json index 930b2ddd81d..b7f3426fa6e 100644 --- a/apps/web/src/locales/ja/messages.json +++ b/apps/web/src/locales/ja/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "エクスポート元" }, - "exportVault": { - "message": "保管庫のエクスポート" - }, - "exportSecrets": { - "message": "シークレットのエクスポート" - }, "fileFormat": { "message": "ファイル形式" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "マスターパスワードの確認" }, - "confirmFormat": { - "message": "フォーマットの確認" - }, "filePassword": { "message": "ファイルパスワード" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "ツール" }, + "import": { + "message": "Import" + }, "importData": { "message": "データをインポート" }, @@ -8753,9 +8747,6 @@ "server": { "message": "サーバー" }, - "exportData": { - "message": "データのエクスポート" - }, "exportingOrganizationSecretDataTitle": { "message": "組織のシークレットデータのエクスポート" }, diff --git a/apps/web/src/locales/ka/messages.json b/apps/web/src/locales/ka/messages.json index d1f614c61d7..1018f2255fc 100644 --- a/apps/web/src/locales/ka/messages.json +++ b/apps/web/src/locales/ka/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "ექსპორტი საცავის" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "ფაილის ფორმატი" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/km/messages.json b/apps/web/src/locales/km/messages.json index fd419fe7397..26f146809b5 100644 --- a/apps/web/src/locales/km/messages.json +++ b/apps/web/src/locales/km/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/kn/messages.json b/apps/web/src/locales/kn/messages.json index 5d5c07f2baa..9b4407e3ec6 100644 --- a/apps/web/src/locales/kn/messages.json +++ b/apps/web/src/locales/kn/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "ರಫ್ತು ವಾಲ್ಟ್" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "ಫೈಲ್ ಮಾದರಿ" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "ಉಪಕರಣ" }, + "import": { + "message": "Import" + }, "importData": { "message": "ಡೇಟಾವನ್ನು ಆಮದು ಮಾಡಿ" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/ko/messages.json b/apps/web/src/locales/ko/messages.json index a3ea2982a4a..db88018ce26 100644 --- a/apps/web/src/locales/ko/messages.json +++ b/apps/web/src/locales/ko/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "보관함 내보내기" - }, - "exportSecrets": { - "message": "비밀 데이터 내보내기" - }, "fileFormat": { "message": "파일 형식" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "마스터 비밀번호 확인" }, - "confirmFormat": { - "message": "형식 확인" - }, "filePassword": { "message": "파일 암호" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "도구" }, + "import": { + "message": "Import" + }, "importData": { "message": "데이터 가져오기" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json index 42d8dc15f3c..4b1a5307179 100644 --- a/apps/web/src/locales/lv/messages.json +++ b/apps/web/src/locales/lv/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Izgūt no" }, - "exportVault": { - "message": "Izgūt glabātavas saturu" - }, - "exportSecrets": { - "message": "Izgūt noslēpumus" - }, "fileFormat": { "message": "Datnes veids" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Apstiprināt galveno paroli" }, - "confirmFormat": { - "message": "Apstiprināt veidolu" - }, "filePassword": { "message": "Datnes parole" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Rīki" }, + "import": { + "message": "Ievietot" + }, "importData": { "message": "Ievietot datus" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Serveris" }, - "exportData": { - "message": "Izgūt datus" - }, "exportingOrganizationSecretDataTitle": { "message": "Apvienības slepeno datu izgūšana" }, diff --git a/apps/web/src/locales/ml/messages.json b/apps/web/src/locales/ml/messages.json index 907dd90fa2e..5943f3630a3 100644 --- a/apps/web/src/locales/ml/messages.json +++ b/apps/web/src/locales/ml/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "വാൾട് എക്സ്പോർട്" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "ഫയൽ ഫോർമാറ്റ്" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "ഉപകരണങ്ങൾ" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import Data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/mr/messages.json b/apps/web/src/locales/mr/messages.json index d8d7999dbe2..5d938996627 100644 --- a/apps/web/src/locales/mr/messages.json +++ b/apps/web/src/locales/mr/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/my/messages.json b/apps/web/src/locales/my/messages.json index fd419fe7397..26f146809b5 100644 --- a/apps/web/src/locales/my/messages.json +++ b/apps/web/src/locales/my/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/nb/messages.json b/apps/web/src/locales/nb/messages.json index 444a13a68e1..9e5c0a6cbf4 100644 --- a/apps/web/src/locales/nb/messages.json +++ b/apps/web/src/locales/nb/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Eksport fra" }, - "exportVault": { - "message": "Eksporter hvelvet" - }, - "exportSecrets": { - "message": "Eksporter hemmeligheter" - }, "fileFormat": { "message": "Filformat" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Bekreft hovedpassord" }, - "confirmFormat": { - "message": "Bekreft format" - }, "filePassword": { "message": "Filpassord" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Verktøy" }, + "import": { + "message": "Import" + }, "importData": { "message": "Importer data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Eksporter data" - }, "exportingOrganizationSecretDataTitle": { "message": "Eksporterer organisasjonens hemmelige data" }, diff --git a/apps/web/src/locales/ne/messages.json b/apps/web/src/locales/ne/messages.json index 99f87c4fb75..9de1b17c391 100644 --- a/apps/web/src/locales/ne/messages.json +++ b/apps/web/src/locales/ne/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json index 0b648eaf204..51ac08fd814 100644 --- a/apps/web/src/locales/nl/messages.json +++ b/apps/web/src/locales/nl/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exporteren vanuit" }, - "exportVault": { - "message": "Kluis exporteren" - }, - "exportSecrets": { - "message": "Geheimen exporteren" - }, "fileFormat": { "message": "Bestandsindeling" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Nieuw hoofdwachtwoord bevestigen" }, - "confirmFormat": { - "message": "Formaat bevestigen" - }, "filePassword": { "message": "Bestandswachtwoord" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Hulpmiddelen" }, + "import": { + "message": "Importeren" + }, "importData": { "message": "Gegevens importeren" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Gegevens exporteren" - }, "exportingOrganizationSecretDataTitle": { "message": "Geheime gegevens van de organisatie exporteren" }, diff --git a/apps/web/src/locales/nn/messages.json b/apps/web/src/locales/nn/messages.json index 8d1c2d1b394..389bf4516e3 100644 --- a/apps/web/src/locales/nn/messages.json +++ b/apps/web/src/locales/nn/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/or/messages.json b/apps/web/src/locales/or/messages.json index fd419fe7397..26f146809b5 100644 --- a/apps/web/src/locales/or/messages.json +++ b/apps/web/src/locales/or/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/pl/messages.json b/apps/web/src/locales/pl/messages.json index e90d3e1ab47..18207f16ca6 100644 --- a/apps/web/src/locales/pl/messages.json +++ b/apps/web/src/locales/pl/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Eksportuj z" }, - "exportVault": { - "message": "Eksportuj sejf" - }, - "exportSecrets": { - "message": "Eksportuj sekrety" - }, "fileFormat": { "message": "Format pliku" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Potwierdź hasło główne" }, - "confirmFormat": { - "message": "Potwierdź format" - }, "filePassword": { "message": "Hasło pliku" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Narzędzia" }, + "import": { + "message": "Import" + }, "importData": { "message": "Importuj dane" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Serwer" }, - "exportData": { - "message": "Eksportuj dane" - }, "exportingOrganizationSecretDataTitle": { "message": "Eksportowanie sekretnych danych organizacji" }, diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json index 4c79ec5ecc4..297afd6f0bb 100644 --- a/apps/web/src/locales/pt_BR/messages.json +++ b/apps/web/src/locales/pt_BR/messages.json @@ -1519,7 +1519,7 @@ "message": "Pressione sua YubiKey para autenticar-se" }, "authenticationTimeout": { - "message": "Tempo limite da autenticação atingido" + "message": "Limite de tempo da autenticação atingido" }, "authenticationSessionTimedOut": { "message": "A sessão de autenticação expirou. Reinicie o processo de autenticação." @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exportar de" }, - "exportVault": { - "message": "Exportar cofre" - }, - "exportSecrets": { - "message": "Exportar segredos" - }, "fileFormat": { "message": "Formato do arquivo" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirmar senha principal" }, - "confirmFormat": { - "message": "Confirmar formato" - }, "filePassword": { "message": "Senha do arquivo" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Ferramentas" }, + "import": { + "message": "Importar" + }, "importData": { "message": "Importar dados" }, @@ -2871,7 +2865,7 @@ } }, "noExposedPasswords": { - "message": "Nenhum item em seu cofre tem senhas expostas em vazamentos de dados conhecidos." + "message": "Nenhum item no seu cofre tem senhas expostas em vazamentos de dados conhecidos." }, "checkExposedPasswords": { "message": "Conferir senhas expostas" @@ -3078,7 +3072,7 @@ "message": "Acesso de emergência" }, "premiumSignUpReports": { - "message": "Higiene de senhas, saúde da conta, e relatórios sobre vazamentos de dados para manter o seu cofre seguro." + "message": "Relatórios de higiene de senha, saúde da conta, e vazamentos de dados para manter o seu cofre seguro." }, "premiumSignUpTotp": { "message": "Gerador de código de verificação TOTP (2FA) para credenciais no seu cofre." @@ -5045,13 +5039,13 @@ "message": "Filtros" }, "vaultTimeout": { - "message": "Tempo limite do cofre" + "message": "Limite de tempo do cofre" }, "vaultTimeout1": { - "message": "Tempo limite" + "message": "Limite de tempo" }, "vaultTimeoutDesc": { - "message": "Escolha quando o seu cofre executará a ação do tempo limite do cofre." + "message": "Escolha quando o seu cofre executará a ação do limite de tempo do cofre." }, "vaultTimeoutLogoutDesc": { "message": "Escolha quando seu cofre será desconectado." @@ -5332,7 +5326,7 @@ "message": "Preferência do usuário" }, "vaultTimeoutAction": { - "message": "Ação do tempo limite do cofre" + "message": "Ação do limite de tempo do cofre" }, "vaultTimeoutActionLockDesc": { "message": "A senha principal ou outro método de desbloqueio é necessário para acessar seu cofre novamente." @@ -5409,10 +5403,10 @@ } }, "vaultTimeoutLogOutConfirmation": { - "message": "Desconectar-se irá remover todo o acesso ao seu cofre e requirirá autenticação on-line após o período de tempo limite. Tem certeza de que deseja usar esta configuração?" + "message": "Desconectar-se irá remover todo o acesso ao seu cofre e requirirá autenticação on-line após o período de limite de tempo. Tem certeza de que deseja usar esta configuração?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Confirmação de ação do tempo limite" + "message": "Confirmação de ação do limite de tempo" }, "hidePasswords": { "message": "Ocultar senhas" @@ -6703,22 +6697,22 @@ "message": "Sua organização atualizou suas opções de descriptografia. Configure uma senha principal para acessar seu cofre." }, "sessionTimeoutPolicyTitle": { - "message": "Tempo limite da sessão" + "message": "Limite de tempo da sessão" }, "sessionTimeoutPolicyDescription": { - "message": "Configure um tempo limite máximo para a sessão de todos os membros, exceto os proprietários." + "message": "Configure um limite de tempo máximo para a sessão de todos os membros, exceto os proprietários." }, "maximumAllowedTimeout": { - "message": "Tempo limite máximo permitido" + "message": "Limite de tempo máximo permitido" }, "maximumAllowedTimeoutRequired": { - "message": "Tempo limite máximo permitido é necessário." + "message": "Limite de tempo máximo permitido é necessário." }, "sessionTimeoutPolicyInvalidTime": { "message": "Tempo é inválido. Altere pelo menos um valor." }, "sessionTimeoutAction": { - "message": "Ação do tempo limite da sessão" + "message": "Ação do limite de tempo da sessão" }, "immediately": { "message": "Imediatamente" @@ -6736,7 +6730,7 @@ "message": "Minutos" }, "sessionTimeoutConfirmationNeverTitle": { - "message": "Você tem certeza de que deseja permitir um tempo limite máximo de \"Nunca\" para todos os membros?" + "message": "Você tem certeza de que deseja permitir um limite de tempo máximo de \"Nunca\" para todos os membros?" }, "sessionTimeoutConfirmationNeverDescription": { "message": "Esta opção salvará as chaves criptográficas dos seus membros em seus dispositivos. Se escolher esta opção, certifique-se de que seus dispositivos estão adequadamente protegidos." @@ -6751,7 +6745,7 @@ "message": "O aplicativo móvel e web usarão \"no reinício do aplicativo\" como tempo máximo permitido, já que a opção não é suportada." }, "vaultTimeoutPolicyInEffect": { - "message": "As políticas da sua organização configuraram o seu máximo permitido do tempo limite do cofre para $HOURS$ hora(s) e $MINUTES$ minuto(s).", + "message": "As políticas da sua organização configuraram o seu máximo permitido do limite de tempo do cofre para $HOURS$ hora(s) e $MINUTES$ minuto(s).", "placeholders": { "hours": { "content": "$1", @@ -6777,7 +6771,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "As políticas da sua organização estão afetando o tempo limite do seu cofre. \nO tempo limite máximo permitido para o cofre é $HOURS$ hora(s) e $MINUTES$ minuto(s). A ação de tempo limite do seu cofre está configurada como $ACTION$.", + "message": "As políticas da sua organização estão afetando o limite de tempo do seu cofre. \nO limite de tempo máximo permitido para o cofre é $HOURS$ hora(s) e $MINUTES$ minuto(s). A ação de limite de tempo do seu cofre está configurada como $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -6794,7 +6788,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "As políticas da sua organização configuraram a ação do tempo limite do seu cofre para $ACTION$.", + "message": "As políticas da sua organização configuraram a ação do limite de tempo do seu cofre para $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -6803,13 +6797,13 @@ } }, "vaultTimeoutToLarge": { - "message": "O tempo limite do seu cofre excede as restrições estabelecidas pela sua organização." + "message": "O limite de tempo do seu cofre excede as restrições estabelecidas pela sua organização." }, "vaultCustomTimeoutMinimum": { - "message": "O mínimo do tempo limite personalizado é de 1 minuto." + "message": "O mínimo do limite de tempo personalizado é de 1 minuto." }, "vaultTimeoutRangeError": { - "message": "Tempo limite do cofre não está dentro do intervalo permitido." + "message": "Limite de tempo do cofre não está dentro do intervalo permitido." }, "disableExport": { "message": "Remover exportação" @@ -8753,9 +8747,6 @@ "server": { "message": "Servidor" }, - "exportData": { - "message": "Exportar dados" - }, "exportingOrganizationSecretDataTitle": { "message": "Exportando dados de segredos da organização" }, @@ -9188,7 +9179,7 @@ "message": "Remover acesso" }, "checkForBreaches": { - "message": "Conferir vazamentos de dados conhecidos por esta senha" + "message": "Conferir se esta senha vazou ao público" }, "exposedMasterPassword": { "message": "Senha principal exposta" @@ -12204,28 +12195,28 @@ "message": "Um domínio deve ser reivindicado antes de ativar esta política." }, "unlockMethodNeededToChangeTimeoutActionDesc": { - "message": "Configure um método de desbloqueio para alterar a ação do tempo limite do cofre." + "message": "Configure um método de desbloqueio para alterar a ação do limite de tempo do cofre." }, "vaultTimeoutPolicyAffectingOptions": { - "message": "Os requisitos de política empresarial foram aplicados às suas opções de tempo limite" + "message": "Os requisitos de política empresarial foram aplicados às suas opções de limite de tempo" }, "vaultTimeoutTooLarge": { - "message": "O tempo limite do seu cofre excede as restrições estabelecidas pela sua organização." + "message": "O limite de tempo do seu cofre excede as restrições estabelecidas pela sua organização." }, "neverLockWarning": { "message": "Você tem certeza que deseja usar a opção \"Nunca\"? Ao usar o \"Nunca\", a chave de criptografia do seu cofre é armazenada no seu dispositivo. Se você usar esta opção, deve garantir que mantém seu dispositivo devidamente protegido." }, "sessionTimeoutSettingsAction": { - "message": "Ação do tempo limite" + "message": "Ação do limite de tempo" }, "sessionTimeoutHeader": { - "message": "Tempo limite da sessão" + "message": "Limite de tempo da sessão" }, "appearance": { "message": "Aparência" }, "vaultTimeoutPolicyMaximumError": { - "message": "O tempo limite excede a restrição configurada pela sua organização: máximo de $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "message": "O limite de tempo excede a restrição configurada pela sua organização: máximo de $HOURS$ hora(s) e $MINUTES$ minuto(s)", "placeholders": { "hours": { "content": "$1", @@ -12350,10 +12341,10 @@ } }, "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { - "message": "A sua organização configurou o tempo de limite máximo padrão da sessão para ser no recarregar do navegador." + "message": "A sua organização configurou o limite de tempo padrão da sessão para ser no recarregar do navegador." }, "sessionTimeoutSettingsPolicyMaximumError": { - "message": "O tempo limite máximo não pode exceder $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "message": "O limite de tempo máximo não pode exceder $HOURS$ hora(s) e $MINUTES$ minuto(s)", "placeholders": { "hours": { "content": "$1", @@ -12369,7 +12360,7 @@ "message": "No recarregar do navegador" }, "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { - "message": "Configure um método de desbloqueio para alterar a ação do tempo limite" + "message": "Configure um método de desbloqueio para alterar a ação do limite de tempo" }, "leaveConfirmationDialogTitle": { "message": "Tem certeza de que quer sair?" diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json index 7b0e9e8a197..a3a5a627215 100644 --- a/apps/web/src/locales/pt_PT/messages.json +++ b/apps/web/src/locales/pt_PT/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exportar de" }, - "exportVault": { - "message": "Exportar cofre" - }, - "exportSecrets": { - "message": "Exportar segredos" - }, "fileFormat": { "message": "Formato do ficheiro" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirmar a palavra-passe mestra" }, - "confirmFormat": { - "message": "Confirmar formato" - }, "filePassword": { "message": "Palavra-passe do ficheiro" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Ferramentas" }, + "import": { + "message": "Importar" + }, "importData": { "message": "Importar dados" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Servidor" }, - "exportData": { - "message": "Exportar dados" - }, "exportingOrganizationSecretDataTitle": { "message": "A exportar dados secretos da organização" }, @@ -12238,43 +12229,43 @@ } }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "A sua organização já não utiliza palavras-passe mestras para iniciar sessão no Bitwarden. Para continuar, verifique a organização e o domínio." }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "Continuar com o início de sessão" }, "doNotContinue": { - "message": "Do not continue" + "message": "Não continuar" }, "domain": { - "message": "Domain" + "message": "Domínio" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "Este domínio armazenará as chaves de encriptação da sua conta, portanto certifique-se de que confia nele. Se não tiver a certeza, verifique com o seu administrador." }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "Verifique a sua organização para iniciar sessão" }, "organizationVerified": { - "message": "Organization verified" + "message": "Organização verificada" }, "domainVerified": { - "message": "Domain verified" + "message": "Domínio verificado" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "Se não verificar a sua organização, o seu acesso à organização será revogado." }, "leaveNow": { - "message": "Leave now" + "message": "Sair agora" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "Verifique o seu domínio para iniciar sessão" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "Para continuar com o início de sessão, verifique este domínio." }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "Para continuar com o início de sessão, verifique a organização e o domínio." }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "Não foram selecionadas aplicações críticas" diff --git a/apps/web/src/locales/ro/messages.json b/apps/web/src/locales/ro/messages.json index 9ae83220ebd..1a573ef82fe 100644 --- a/apps/web/src/locales/ro/messages.json +++ b/apps/web/src/locales/ro/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export seif" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "Format fișier" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirmare parolă principală" }, - "confirmFormat": { - "message": "Confirmare format" - }, "filePassword": { "message": "Parola fișierului" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Unelte" }, + "import": { + "message": "Import" + }, "importData": { "message": "Importare date" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/ru/messages.json b/apps/web/src/locales/ru/messages.json index 7637c2baab5..0d7ccc71c00 100644 --- a/apps/web/src/locales/ru/messages.json +++ b/apps/web/src/locales/ru/messages.json @@ -1522,7 +1522,7 @@ "message": "Таймаут аутентификации" }, "authenticationSessionTimedOut": { - "message": "Сеанс аутентификации завершился по времени. Пожалуйста, попробуйте войти еще раз." + "message": "Сессия аутентификации завершилась по времени. Пожалуйста, перезапустите процесс авторизации." }, "verifyYourIdentity": { "message": "Подтвердите вашу личность" @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Экспорт из" }, - "exportVault": { - "message": "Экспорт хранилища" - }, - "exportSecrets": { - "message": "Экспорт секретов" - }, "fileFormat": { "message": "Формат файла" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Подтвердите мастер-пароль" }, - "confirmFormat": { - "message": "Подтвердить формат" - }, "filePassword": { "message": "Пароль к файлу" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Инструменты" }, + "import": { + "message": "Импорт" + }, "importData": { "message": "Импорт данных" }, @@ -4479,7 +4473,7 @@ "message": "Обновить браузер" }, "generatingYourAccessIntelligence": { - "message": "Generating your Access Intelligence..." + "message": "Ваша информация о доступе генерируется..." }, "fetchingMemberData": { "message": "Получение данных о пользователях..." @@ -5054,7 +5048,7 @@ "message": "Выберите тайм-аут для хранилища и действие, которое необходимо предпринять." }, "vaultTimeoutLogoutDesc": { - "message": "Выберите, когда сеанс хранилища будет завершен." + "message": "Выберите время выхода из хранилища." }, "oneMinute": { "message": "1 минута" @@ -6466,7 +6460,7 @@ "message": "Повторно приглашен успешно" }, "bulkReinviteSuccessToast": { - "message": "$COUNT$ users re-invited", + "message": "$COUNT$ пользователей снова приглашены", "placeholders": { "count": { "content": "$1", @@ -6475,7 +6469,7 @@ } }, "bulkReinviteLimitedSuccessToast": { - "message": "$LIMIT$ of $SELECTEDCOUNT$ users re-invited. $EXCLUDEDCOUNT$ were not invited due to the $LIMIT$ invite limit.", + "message": "$LIMIT$ из $SELECTEDCOUNT$ пользователей повторно приглашены. $EXCLUDEDCOUNT$ не был приглашен из-за лимита приглашений $LIMIT$.", "placeholders": { "limit": { "content": "$1", @@ -6685,7 +6679,7 @@ "message": "Мастер-пароль не соответствует требованиям политики этой организации. Чтобы присоединиться к организации, нужно обновить мастер-пароль. Текущая сессия будет завершена и потребуется повторная авторизация. Сессии на других устройствах могут оставаться активными в течение часа." }, "updateWeakMasterPasswordWarning": { - "message": "Ваш мастер-пароль не соответствует требованиям политики вашей организации. Для доступа к хранилищу вы должны обновить свой мастер-пароль прямо сейчас. При этом текущий сеанс будет завершен и потребуется повторная авторизация. Сеансы на других устройствах могут оставаться активными в течение часа." + "message": "Ваш мастер-пароль не соответствует требованиям политики вашей организации. Для доступа к хранилищу вы должны обновить свой мастер-пароль прямо сейчас. При этом текущая сессия будет завершена и потребуется повторная авторизация. Сессии на других устройствах могут оставаться активными в течение часа." }, "automaticAppLoginWithSSO": { "message": "Автовход с помощью SSO" @@ -6703,10 +6697,10 @@ "message": "Ваша организация обновила параметры расшифровки. Пожалуйста, установите мастер-пароль для доступа к вашему хранилищу." }, "sessionTimeoutPolicyTitle": { - "message": "Тайм-аут сеанса" + "message": "Тайм-аут сессии" }, "sessionTimeoutPolicyDescription": { - "message": "Установите максимальный тайм-аут сеанса для всех участников, кроме владельцев." + "message": "Установите максимальный тайм-аут сессии для всех участников, кроме владельцев." }, "maximumAllowedTimeout": { "message": "Максимально допустимый тайм-аут" @@ -6718,7 +6712,7 @@ "message": "Время указано неверно. Измените хотя бы одно значение." }, "sessionTimeoutAction": { - "message": "Действие при тайм-ауте сеанса" + "message": "Действие при тайм-ауте сессии" }, "immediately": { "message": "Немедленно" @@ -8753,9 +8747,6 @@ "server": { "message": "Сервер" }, - "exportData": { - "message": "Экспорт данных" - }, "exportingOrganizationSecretDataTitle": { "message": "Экспорт секретных данных организации" }, @@ -12000,7 +11991,7 @@ "message": "Членство Families" }, "advancedOnlineSecurity": { - "message": "Advanced online security" + "message": "Расширенная онлайн-безопасность" }, "planDescFamiliesV2": { "message": "Премиальная защищенность \n для вашей семьи" @@ -12210,22 +12201,22 @@ "message": "К настройкам тайм-аута были применены требования корпоративной политики" }, "vaultTimeoutTooLarge": { - "message": "Your vault timeout exceeds the restrictions set by your organization." + "message": "Тайм-аут вашего хранилища превышает ограничения, установленные вашей организацией." }, "neverLockWarning": { - "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + "message": "Вы действительно хотите отключить блокировку хранилища? В этом случае ключ шифрования вашего хранилища будет сохранен на вашем устройстве. Отключая блокировку, вы должны убедиться, что ваше устройство надежно защищено." }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "Тайм-аут действия" }, "sessionTimeoutHeader": { - "message": "Session timeout" + "message": "Тайм-аут сессии" }, "appearance": { - "message": "Appearance" + "message": "Внешний вид" }, "vaultTimeoutPolicyMaximumError": { - "message": "Timeout exceeds the restriction set by your organization: $HOURS$ hour(s) and $MINUTES$ minute(s) maximum", + "message": "Время ожидания превышает установленное организацией максимальное ограничение: $HOURS$ час. $MINUTES$ мин.", "placeholders": { "hours": { "content": "$1", @@ -12334,10 +12325,10 @@ "message": "Сохранить журналы диагностики" }, "sessionTimeoutSettingsManagedByOrganization": { - "message": "This setting is managed by your organization." + "message": "Эта настройка управляется вашей организацией." }, "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { - "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "message": "В вашей организации максимальный тайм-аут сессии установлен равным $HOURS$ час. и $MINUTES$ мин.", "placeholders": { "hours": { "content": "$1", @@ -12350,10 +12341,10 @@ } }, "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { - "message": "Your organization has set the default session timeout to On browser refresh." + "message": "Ваша организация установила тайм-аут сессии по умолчанию на При обновлении браузера." }, "sessionTimeoutSettingsPolicyMaximumError": { - "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "message": "Максимальный тайм-аут не может превышать $HOURS$ час. и $MINUTES$ мин.", "placeholders": { "hours": { "content": "$1", @@ -12366,10 +12357,10 @@ } }, "sessionTimeoutOnRestart": { - "message": "On browser refresh" + "message": "При обновлении браузера" }, "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { - "message": "Set an unlock method to change your timeout action" + "message": "Установите способ разблокировки для изменения действия при истечении тайм-аута" }, "leaveConfirmationDialogTitle": { "message": "Вы уверены, что хотите покинуть?" diff --git a/apps/web/src/locales/si/messages.json b/apps/web/src/locales/si/messages.json index 432a61608b5..f896cc8c79a 100644 --- a/apps/web/src/locales/si/messages.json +++ b/apps/web/src/locales/si/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json index 698c71f458f..cb0adb25c0a 100644 --- a/apps/web/src/locales/sk/messages.json +++ b/apps/web/src/locales/sk/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exportovať z" }, - "exportVault": { - "message": "Export trezoru" - }, - "exportSecrets": { - "message": "Exportovať položky" - }, "fileFormat": { "message": "Formát Súboru" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Potvrdiť hlavné heslo" }, - "confirmFormat": { - "message": "Potvrdiť formát" - }, "filePassword": { "message": "Heslo súboru" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Nástroje" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import dát" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Exportovať dáta" - }, "exportingOrganizationSecretDataTitle": { "message": "Exportovať tajné dáta Organizácie" }, diff --git a/apps/web/src/locales/sl/messages.json b/apps/web/src/locales/sl/messages.json index 97a3f12c606..8b86e7b6060 100644 --- a/apps/web/src/locales/sl/messages.json +++ b/apps/web/src/locales/sl/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Izvoz trezorja" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "Format datoteke" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Potrdite glavno geslo" }, - "confirmFormat": { - "message": "Potrdi format" - }, "filePassword": { "message": "Geslo datoteke" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Orodja" }, + "import": { + "message": "Import" + }, "importData": { "message": "Uvozi podatke" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/sr_CS/messages.json b/apps/web/src/locales/sr_CS/messages.json index 5527124ca73..1ff92f67064 100644 --- a/apps/web/src/locales/sr_CS/messages.json +++ b/apps/web/src/locales/sr_CS/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Izvezi trezor" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Alati" }, + "import": { + "message": "Import" + }, "importData": { "message": "Uvezi podatke" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/sr_CY/messages.json b/apps/web/src/locales/sr_CY/messages.json index 835e4081be3..e1d19054ac3 100644 --- a/apps/web/src/locales/sr_CY/messages.json +++ b/apps/web/src/locales/sr_CY/messages.json @@ -197,13 +197,13 @@ "message": "Assign at-risk members guided security tasks to update credentials." }, "feature3Title": { - "message": "Monitor progress" + "message": "Праћење напретка" }, "feature3Description": { - "message": "Track changes over time to show security improvements." + "message": "Пратите промене током времена да бисте показали безбедносна побољшања." }, "noReportsRunTitle": { - "message": "Generate report" + "message": "Генеришите извештај" }, "noReportsRunDescription": { "message": "You’re ready to start generating reports. Once you generate, you’ll be able to:" @@ -344,10 +344,10 @@ "message": "Апликације које треба прегледати" }, "newApplicationsCardTitle": { - "message": "Review new applications" + "message": "Прегледајте нове апликације" }, "newApplicationsWithCount": { - "message": "$COUNT$ new applications", + "message": "Нове апликације: $COUNT$", "placeholders": { "count": { "content": "$1", @@ -380,7 +380,7 @@ "message": "Review applications to secure the items most critical to your organization's security" }, "reviewApplications": { - "message": "Review applications" + "message": "Прегледајте апликације" }, "prioritizeCriticalApplications": { "message": "Дајте приоритет критичним апликацијама" @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Извоз од" }, - "exportVault": { - "message": "Извоз сефа" - }, - "exportSecrets": { - "message": "Извоз тајне" - }, "fileFormat": { "message": "Формат датотеке" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Потрдити Главну Лозинку" }, - "confirmFormat": { - "message": "Потврдити формат" - }, "filePassword": { "message": "Лозинка датотеке" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Алатке" }, + "import": { + "message": "Увоз" + }, "importData": { "message": "Увези податке" }, @@ -3063,7 +3057,7 @@ "message": "1ГБ шифровано складиште за прилоге." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ шифровано складиште за прилоге.", "placeholders": { "size": { "content": "$1", @@ -3134,7 +3128,7 @@ } }, "premiumSubscriptionEnded": { - "message": "Your Premium subscription ended" + "message": "Ваша Премијум претплата је завршена" }, "premiumSubscriptionEndedDesc": { "message": "To regain access to your archive, restart your Premium subscription. If you edit details for an archived item before restarting, it'll be moved back into your vault." @@ -3263,10 +3257,10 @@ "message": "Следеће пуњење" }, "nextChargeHeader": { - "message": "Next Charge" + "message": "Следеће пуњење" }, "plan": { - "message": "Plan" + "message": "План" }, "details": { "message": "Детаљи" @@ -4636,10 +4630,10 @@ "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Да бисте наставили потврдите ваш идентитет" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Унети вашу главну лозинку" }, "updateSettings": { "message": "Ажурирај подешавања" @@ -5170,19 +5164,19 @@ "description": "This is a verb. ex. 'Fix The Car'" }, "fixEncryption": { - "message": "Fix encryption" + "message": "Поправи шифровање" }, "fixEncryptionTooltip": { - "message": "This file is using an outdated encryption method." + "message": "Ова датотека користи застарели метод шифровања." }, "attachmentUpdated": { - "message": "Attachment updated" + "message": "Прилог је ажуриран" }, "oldAttachmentsNeedFixDesc": { "message": "У вашем сефу постоје стари прилози који треба поправити да бисте могли да промените кључ за шифровање свог налога." }, "itemsTransferred": { - "message": "Items transferred" + "message": "Пренете ставке" }, "yourAccountsFingerprint": { "message": "Ваша Сигурносна Фраза Сефа", @@ -8753,9 +8747,6 @@ "server": { "message": "Сервер" }, - "exportData": { - "message": "Увези податке" - }, "exportingOrganizationSecretDataTitle": { "message": "Извоз тајних података организације" }, @@ -11594,31 +11585,31 @@ "description": "Verb" }, "unArchive": { - "message": "Unarchive" + "message": "Врати из архиве" }, "itemsInArchive": { - "message": "Items in archive" + "message": "Ставке у архиви" }, "noItemsInArchive": { "message": "Нема ставка у архиви" }, "noItemsInArchiveDesc": { - "message": "Archived items will appear here and will be excluded from general search results and autofill suggestions." + "message": "Архивиране ставке ће се овде појавити и бити искључени из општих резултата претраге и сугестија о ауто-пуњењу." }, "itemWasSentToArchive": { - "message": "Item was sent to archive" + "message": "Ставка је послата у архиву" }, "itemsWereSentToArchive": { - "message": "Items were sent to archive" + "message": "Ставке су послате у архиву" }, "itemUnarchived": { - "message": "Item was unarchived" + "message": "Ставка враћена из архиве" }, "bulkArchiveItems": { - "message": "Items archived" + "message": "Ставке у архиви" }, "bulkUnarchiveItems": { - "message": "Items unarchived" + "message": "Ставке враћене из архиве" }, "archiveItem": { "message": "Archive item", @@ -12126,7 +12117,7 @@ "message": "There was an error calculating tax for your location. Please try again." }, "individualUpgradeWelcomeMessage": { - "message": "Welcome to Bitwarden" + "message": "Добродошли у Bitwarden" }, "individualUpgradeDescriptionMessage": { "message": "Unlock more security features with Premium, or start sharing items with Families" @@ -12144,7 +12135,7 @@ "message": "Upgrade your plan" }, "upgradeNow": { - "message": "Upgrade now" + "message": "Надогради сада" }, "formWillCreateNewFamiliesOrgMessage": { "message": "Completing this form will create a new Families organization. You can upgrade your Free organization from the Admin Console." @@ -12204,28 +12195,28 @@ "message": "A domain must be claimed before activating this policy." }, "unlockMethodNeededToChangeTimeoutActionDesc": { - "message": "Set up an unlock method to change your vault timeout action." + "message": "Подесите метод откључавања да бисте променили радњу временског ограничења сефа." }, "vaultTimeoutPolicyAffectingOptions": { - "message": "Enterprise policy requirements have been applied to your timeout options" + "message": "Захтеви политике предузећа су примењени на опције тајмаута" }, "vaultTimeoutTooLarge": { - "message": "Your vault timeout exceeds the restrictions set by your organization." + "message": "Време истека вашег сефа је премашило дозвољена ограничења од стране ваше организације." }, "neverLockWarning": { - "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + "message": "Да ли сте сигурни да желите да користите опцију „Никад“? Ако поставите опције закључавања на „Никада“, на вашем уређају се чува кључ за шифровање сефа. Ако користите ову опцију, осигурајте да је уређај правилно заштићен." }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "Акција тајмаута" }, "sessionTimeoutHeader": { - "message": "Session timeout" + "message": "Истек сесије" }, "appearance": { - "message": "Appearance" + "message": "Изглед" }, "vaultTimeoutPolicyMaximumError": { - "message": "Timeout exceeds the restriction set by your organization: $HOURS$ hour(s) and $MINUTES$ minute(s) maximum", + "message": "Тајмаут је већи него што је решила организација: макимум $HOURS$ сат(а) и $MINUTES$ минут(а)", "placeholders": { "hours": { "content": "$1", @@ -12238,49 +12229,49 @@ } }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "Ваша организација више не користи главне лозинке за пријаву на Bitwarden. Да бисте наставили, верификујте организацију и домен." }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "Наставити са пријавом" }, "doNotContinue": { - "message": "Do not continue" + "message": "Не настави" }, "domain": { - "message": "Domain" + "message": "Домен" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "Овај домен ће чувати кључеве за шифровање вашег налога, па се уверите да му верујете. Ако нисте сигурни, проверите код свог администратора." }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "Верификујте своју организацију да бисте се пријавили" }, "organizationVerified": { - "message": "Organization verified" + "message": "Организација верификована" }, "domainVerified": { - "message": "Domain verified" + "message": "Домен верификован" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "Ако не верификујете своју организацију, ваш приступ организацији ће бити опозван." }, "leaveNow": { - "message": "Leave now" + "message": "Напусти сада" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "Верификујте домен да бисте се пријавили" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "Да бисте наставили са пријављивањем, верификујте овај домен." }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "Да бисте наставили са пријављивањем, верификујте организацију и домен." }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "No critical applications are selected" }, "confirmNoSelectedCriticalApplicationsDesc": { - "message": "Are you sure you want to continue?" + "message": "Желите ли заиста да наставите?" }, "userVerificationFailed": { "message": "User verification failed." @@ -12304,7 +12295,7 @@ "message": "Your public-key encryption key pair could not be recovered. Do you want to replace your encryption key with a new key pair? This will require you to set up existing emergency-access and organization memberships again." }, "recoveryStepSyncTitle": { - "message": "Synchronizing data" + "message": "Усклађивање података" }, "recoveryStepPrivateKeyTitle": { "message": "Verifying encryption key integrity" @@ -12381,7 +12372,7 @@ "message": "Contact your admin to regain access." }, "leaveConfirmationDialogConfirmButton": { - "message": "Leave $ORGANIZATION$", + "message": "Напустити $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json index 57495a63fa8..7cca1d484b7 100644 --- a/apps/web/src/locales/sv/messages.json +++ b/apps/web/src/locales/sv/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Exportera från" }, - "exportVault": { - "message": "Exportera valv" - }, - "exportSecrets": { - "message": "Exportera hemligheter" - }, "fileFormat": { "message": "Filformat" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Bekräfta huvudlösenord" }, - "confirmFormat": { - "message": "Bekräfta format" - }, "filePassword": { "message": "Fillösenord" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Verktyg" }, + "import": { + "message": "Importera" + }, "importData": { "message": "Importera data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Exportera data" - }, "exportingOrganizationSecretDataTitle": { "message": "Export av hemliga organisationsdata" }, diff --git a/apps/web/src/locales/ta/messages.json b/apps/web/src/locales/ta/messages.json index 5f2a1afba42..62e28d08097 100644 --- a/apps/web/src/locales/ta/messages.json +++ b/apps/web/src/locales/ta/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "இதிலிருந்து ஏற்றுமதி" }, - "exportVault": { - "message": "பெட்டகத்தை ஏற்றுமதி செய்" - }, - "exportSecrets": { - "message": "ரகசியங்களை ஏற்றுமதி செய்" - }, "fileFormat": { "message": "கோப்பு வடிவம்" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "முதன்மை கடவுச்சொல்லை உறுதிப்படுத்தவும்" }, - "confirmFormat": { - "message": "வடிவத்தை உறுதிப்படுத்தவும்" - }, "filePassword": { "message": "கோப்பு கடவுச்சொல்" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "கருவிகள்" }, + "import": { + "message": "Import" + }, "importData": { "message": "தரவை இம்போர்ட் செய்யவும்" }, @@ -8753,9 +8747,6 @@ "server": { "message": "சேவையகம்" }, - "exportData": { - "message": "தரவை ஏற்றுமதி செய்" - }, "exportingOrganizationSecretDataTitle": { "message": "நிறுவன இரகசிய தரவை ஏற்றுமதி செய்தல்" }, diff --git a/apps/web/src/locales/te/messages.json b/apps/web/src/locales/te/messages.json index fd419fe7397..26f146809b5 100644 --- a/apps/web/src/locales/te/messages.json +++ b/apps/web/src/locales/te/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "File format" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/th/messages.json b/apps/web/src/locales/th/messages.json index 362db4faea2..431c7fc014c 100644 --- a/apps/web/src/locales/th/messages.json +++ b/apps/web/src/locales/th/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" - }, - "exportSecrets": { - "message": "Export secrets" - }, "fileFormat": { "message": "รูปแบบไฟล์" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Confirm master password" }, - "confirmFormat": { - "message": "Confirm format" - }, "filePassword": { "message": "File password" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Tools" }, + "import": { + "message": "Import" + }, "importData": { "message": "Import data" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Server" }, - "exportData": { - "message": "Export data" - }, "exportingOrganizationSecretDataTitle": { "message": "Exporting Organization Secret Data" }, diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json index dbb8eb2d299..99e1225731f 100644 --- a/apps/web/src/locales/tr/messages.json +++ b/apps/web/src/locales/tr/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Dışa aktarılacak konum" }, - "exportVault": { - "message": "Kasayı dışa aktar" - }, - "exportSecrets": { - "message": "Sırları dışa aktar" - }, "fileFormat": { "message": "Dosya biçimi" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Ana parolayı onaylayın" }, - "confirmFormat": { - "message": "Biçimi onayla" - }, "filePassword": { "message": "Dosya parolası" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Araçlar" }, + "import": { + "message": "İçe aktar" + }, "importData": { "message": "Verileri içe aktar" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Sunucu" }, - "exportData": { - "message": "Verileri dışarı aktar" - }, "exportingOrganizationSecretDataTitle": { "message": "Kuruluş Gizli Verilerini Dışa Aktarma" }, diff --git a/apps/web/src/locales/uk/messages.json b/apps/web/src/locales/uk/messages.json index 0cc96b69904..b269058799d 100644 --- a/apps/web/src/locales/uk/messages.json +++ b/apps/web/src/locales/uk/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Експортувати з" }, - "exportVault": { - "message": "Експортувати сховище" - }, - "exportSecrets": { - "message": "Експортувати секрети" - }, "fileFormat": { "message": "Формат файлу" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Підтвердьте головний пароль" }, - "confirmFormat": { - "message": "Підтвердити формат" - }, "filePassword": { "message": "Пароль файлу" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Інструменти" }, + "import": { + "message": "Import" + }, "importData": { "message": "Імпортувати дані" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Сервер" }, - "exportData": { - "message": "Експортувати дані" - }, "exportingOrganizationSecretDataTitle": { "message": "Експорт секретних даних організації" }, diff --git a/apps/web/src/locales/vi/messages.json b/apps/web/src/locales/vi/messages.json index aa32aa4254c..7397aed6f94 100644 --- a/apps/web/src/locales/vi/messages.json +++ b/apps/web/src/locales/vi/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "Xuất từ" }, - "exportVault": { - "message": "Xuất kho" - }, - "exportSecrets": { - "message": "Xuất bí mật" - }, "fileFormat": { "message": "Định dạng tập tin" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "Nhập lại mật khẩu chính" }, - "confirmFormat": { - "message": "Xác nhận định dạng" - }, "filePassword": { "message": "Mật khẩu tập tin" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "Công cụ" }, + "import": { + "message": "Import" + }, "importData": { "message": "Nhập dữ liệu" }, @@ -8753,9 +8747,6 @@ "server": { "message": "Máy chủ" }, - "exportData": { - "message": "Xuất dữ liệu" - }, "exportingOrganizationSecretDataTitle": { "message": "Xuất dữ liệu bí mật của tổ chức" }, diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index e6da8945be8..073afec7fe6 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -1375,7 +1375,7 @@ "message": "使用设备登录" }, "loginWithDeviceEnabledNote": { - "message": "必须在 Bitwarden App 的设置中启用设备登录。需要其他登录选项吗?" + "message": "必须在 Bitwarden App 的设置中启用设备登录。需要其他选项吗?" }, "needAnotherOptionV1": { "message": "需要其他选项吗?" @@ -1411,7 +1411,7 @@ "message": "通行密钥无效。请重试。" }, "twoFactorForPasskeysNotSupportedOnClientUpdateToLogIn": { - "message": "不支持通行密钥 2FA。请更新 App 再登录。" + "message": "不支持通行密钥 2FA。请更新 App 以登录。" }, "loginWithPasskeyInfo": { "message": "使用已生成的通行密钥,无需密码即可自动登录。生物识别(例如面部识别或指纹)或其他 FIDO2 安全方法将用于验证您的身份。" @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "导出自" }, - "exportVault": { - "message": "导出密码库" - }, - "exportSecrets": { - "message": "导出机密" - }, "fileFormat": { "message": "文件格式" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "确认主密码" }, - "confirmFormat": { - "message": "确认格式" - }, "filePassword": { "message": "文件密码" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "工具" }, + "import": { + "message": "导入" + }, "importData": { "message": "导入数据" }, @@ -3655,7 +3649,7 @@ "message": "确定要退出该组织吗?" }, "leftOrganization": { - "message": "您已经退出该组织。" + "message": "您已退出该组织" }, "defaultCollection": { "message": "默认集合" @@ -3718,7 +3712,7 @@ "message": "撤销成员后,他们将不再具有对组织数据的访问权限。要快速恢复此成员的访问权限,请转到「已撤销」标签页。" }, "removeUserConfirmationKeyConnector": { - "message": "警告!此用户需要 Key Connector 来管理他们的加密。从您的组织中移除此用户将永久停用他们的账户。此操作无法撤消。您要继续吗?" + "message": "警告!此用户需要 Key Connector 来管理他们的加密。从您的组织中移除此用户将永久停用他们的账户。此操作无法撤消。要继续吗?" }, "externalId": { "message": "外部 ID" @@ -4636,7 +4630,7 @@ "message": "新推荐的加密设置将提高您的账户安全性。输入您的主密码以立即更新。" }, "confirmIdentityToContinue": { - "message": "确认您的身份后继续" + "message": "确认您的身份以继续" }, "enterYourMasterPassword": { "message": "输入您的主密码" @@ -6475,7 +6469,7 @@ } }, "bulkReinviteLimitedSuccessToast": { - "message": "选中了 $SELECTEDCOUNT$ 位用户,已经重新邀请了 $LIMIT$ 位。由于邀请限制 $LIMIT$ 人,$EXCLUDEDCOUNT$ 位用户没有被邀请。", + "message": "已重新邀请 $SELECTEDCOUNT$ 位用户中的 $LIMIT$ 位。由于邀请限制为 $LIMIT$ 人,$EXCLUDEDCOUNT$ 位用户没有被邀请。", "placeholders": { "limit": { "content": "$1", @@ -8580,7 +8574,7 @@ "message": "您不能两次声明同一个域名。" }, "domainNotAvailable": { - "message": "别人正在使用 $DOMAIN$。请使用其他域名。", + "message": "别人正在使用 $DOMAIN$。请使用其他域名以继续。", "placeholders": { "DOMAIN": { "content": "$1", @@ -8753,9 +8747,6 @@ "server": { "message": "服务器" }, - "exportData": { - "message": "导出数据" - }, "exportingOrganizationSecretDataTitle": { "message": "正在导出组织机密数据" }, @@ -9484,7 +9475,7 @@ "message": "要求 SSO 登录" }, "emailRequiredForSsoLogin": { - "message": "Email is required for SSO" + "message": "SSO 要求使用电子邮箱" }, "selectedRegionFlag": { "message": "选择的区域旗帜" @@ -12238,43 +12229,43 @@ } }, "removeMasterPasswordForOrgUserKeyConnector": { - "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + "message": "您的组织已不再使用主密码登录 Bitwarden。要继续,请验证组织和域名。" }, "continueWithLogIn": { - "message": "Continue with log in" + "message": "继续登录" }, "doNotContinue": { - "message": "Do not continue" + "message": "不要继续" }, "domain": { - "message": "Domain" + "message": "域名" }, "keyConnectorDomainTooltip": { - "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + "message": "此域名将存储您的账户加密密钥,所以请确保您信任它。如果您不确定,请与您的管理员联系。" }, "verifyYourOrganization": { - "message": "Verify your organization to log in" + "message": "验证您的组织以登录" }, "organizationVerified": { - "message": "Organization verified" + "message": "组织已验证" }, "domainVerified": { - "message": "Domain verified" + "message": "域名已验证" }, "leaveOrganizationContent": { - "message": "If you don't verify your organization, your access to the organization will be revoked." + "message": "如果不验证您的组织,您对组织的访问权限将被撤销。" }, "leaveNow": { - "message": "Leave now" + "message": "立即退出" }, "verifyYourDomainToLogin": { - "message": "Verify your domain to log in" + "message": "验证您的域名以登录" }, "verifyYourDomainDescription": { - "message": "To continue with log in, verify this domain." + "message": "要继续登录,请验证此域名。" }, "confirmKeyConnectorOrganizationUserDescription": { - "message": "To continue with log in, verify the organization and domain." + "message": "要继续登录,请验证组织和域名。" }, "confirmNoSelectedCriticalApplicationsTitle": { "message": "未选择任何关键应用程序" @@ -12353,7 +12344,7 @@ "message": "您的组织已将默认会话超时设置为「浏览器刷新时」。" }, "sessionTimeoutSettingsPolicyMaximumError": { - "message": "最大超时时间不能超过 $HOURS$ 小时 $MINUTES$ 分钟", + "message": "最大超时不能超过 $HOURS$ 小时 $MINUTES$ 分钟", "placeholders": { "hours": { "content": "$1", @@ -12372,7 +12363,7 @@ "message": "设置一个解锁方式以更改您的超时动作" }, "leaveConfirmationDialogTitle": { - "message": "确定要离开吗?" + "message": "确定要退出吗?" }, "leaveConfirmationDialogContentOne": { "message": "拒绝后,您的个人项目将保留在您的账户中,但您将失去对共享项目和组织功能的访问权限。" @@ -12381,7 +12372,7 @@ "message": "联系您的管理员以重新获取访问权限。" }, "leaveConfirmationDialogConfirmButton": { - "message": "离开 $ORGANIZATION$", + "message": "退出 $ORGANIZATION$", "placeholders": { "organization": { "content": "$1", @@ -12390,7 +12381,7 @@ } }, "howToManageMyVault": { - "message": "我如何管理我的密码库?" + "message": "我该如何管理我的密码库?" }, "transferItemsToOrganizationTitle": { "message": "传输项目到 $ORGANIZATION$", @@ -12402,7 +12393,7 @@ } }, "transferItemsToOrganizationContent": { - "message": "出于安全和合规考虑,$ORGANIZATION$ 要求所有项目的所有权均归组织所有。点击「接受」以传输您的项目的所有权。", + "message": "出于安全和合规考虑,$ORGANIZATION$ 要求所有项目归组织所有。点击「接受」以传输您的项目的所有权。", "placeholders": { "organization": { "content": "$1", @@ -12414,7 +12405,7 @@ "message": "接受传输" }, "declineAndLeave": { - "message": "拒绝并离开" + "message": "拒绝并退出" }, "whyAmISeeingThis": { "message": "为什么我会看到这个?" diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json index 3479ca48f27..364389a1535 100644 --- a/apps/web/src/locales/zh_TW/messages.json +++ b/apps/web/src/locales/zh_TW/messages.json @@ -1975,12 +1975,6 @@ "exportFrom": { "message": "匯出自" }, - "exportVault": { - "message": "匯出密碼庫" - }, - "exportSecrets": { - "message": "匯出機密" - }, "fileFormat": { "message": "檔案格式" }, @@ -1993,9 +1987,6 @@ "confirmMasterPassword": { "message": "確認主密碼" }, - "confirmFormat": { - "message": "確認格式" - }, "filePassword": { "message": "檔案密碼" }, @@ -2306,6 +2297,9 @@ "tools": { "message": "工具" }, + "import": { + "message": "Import" + }, "importData": { "message": "匯入資料" }, @@ -8753,9 +8747,6 @@ "server": { "message": "伺服器" }, - "exportData": { - "message": "匯出資料" - }, "exportingOrganizationSecretDataTitle": { "message": "匯出組織機密資料" }, From 0c8c755404620ec3566d2572ed30dbae51d0f15a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 07:52:32 -0600 Subject: [PATCH 12/67] [deps]: Update codecov/codecov-action action to v5.5.2 (#17992) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index faee7220e7b..e3ba6112b7d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -190,7 +190,7 @@ jobs: path: ./apps/desktop/desktop_native - name: Upload coverage to codecov.io - uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1 + uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 with: files: | ./lcov.info From d7a7f19abdaa9aa95f0919df2e8aa8f249d6c813 Mon Sep 17 00:00:00 2001 From: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com> Date: Tue, 16 Dec 2025 14:55:40 +0100 Subject: [PATCH 13/67] [PM-29633]Discount badge misaligned on Subscription page for Organizations and MSP/BUP (#17924) * Fix the discount * Fix the spacing and alignment issue * reverted unneeded change * Changes for provider discount badge --- .../organization-subscription-cloud.component.html | 14 ++++++++------ .../provider-subscription.component.html | 9 ++++++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html index 8b9b98dc390..860f80eb346 100644 --- a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html +++ b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html @@ -14,16 +14,18 @@ >
- {{ "details" | i18n - }} + {{ "details" | i18n }} + {{ "providerDiscount" | i18n: customerDiscount?.percentOff }} + > + diff --git a/bitwarden_license/bit-web/src/app/billing/providers/subscription/provider-subscription.component.html b/bitwarden_license/bit-web/src/app/billing/providers/subscription/provider-subscription.component.html index d71dcf77170..783bd155e61 100644 --- a/bitwarden_license/bit-web/src/app/billing/providers/subscription/provider-subscription.component.html +++ b/bitwarden_license/bit-web/src/app/billing/providers/subscription/provider-subscription.component.html @@ -11,11 +11,14 @@
{{ "details" | i18n }}   + {{ "details" | i18n }} + {{ "providerDiscount" | i18n: subscription.discountPercentage }} From ede027a43e7d3ba0d7c16d089042a85abb06abef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 10:10:20 -0500 Subject: [PATCH 14/67] [deps]: Update actions/cache action to v5 (#17993) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build-desktop.yml | 26 +++++++++++++------------- .github/workflows/chromatic.yml | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index efb94e44c7a..5a7703adb78 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -246,7 +246,7 @@ jobs: npm link ../sdk-internal - name: Cache Native Module - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 id: cache with: path: | @@ -409,7 +409,7 @@ jobs: npm link ../sdk-internal - name: Cache Native Module - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 id: cache with: path: | @@ -572,7 +572,7 @@ jobs: npm link ../sdk-internal - name: Cache Native Module - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 id: cache with: path: | @@ -837,7 +837,7 @@ jobs: npm link ../sdk-internal - name: Cache Native Module - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 id: cache with: path: | @@ -1042,14 +1042,14 @@ jobs: - name: Cache Build id: build-cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Cache Safari id: safari-cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -1195,7 +1195,7 @@ jobs: npm link ../sdk-internal - name: Cache Native Module - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 id: cache with: path: | @@ -1282,14 +1282,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -1419,7 +1419,7 @@ jobs: npm link ../sdk-internal - name: Cache Native Module - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 id: cache with: path: | @@ -1557,14 +1557,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -1702,7 +1702,7 @@ jobs: npm link ../sdk-internal - name: Cache Native Module - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 id: cache with: path: | diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 677d3dfc1df..44ea21276e2 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -65,7 +65,7 @@ jobs: - name: Cache NPM id: npm-cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: "~/.npm" key: ${{ runner.os }}-npm-chromatic-${{ hashFiles('**/package-lock.json') }} From ac23878847c85c0ef3d1b0cb2753577bf84469e3 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Tue, 16 Dec 2025 16:15:34 +0100 Subject: [PATCH 15/67] [CL-934] Migrate breadcrumbs to OnPush (#17390) Migrates BreadcrumbComponent and BreadcrumbsComponent to OnPush and changes any property to computed signals. --- .../src/breadcrumbs/breadcrumb.component.html | 2 +- .../src/breadcrumbs/breadcrumb.component.ts | 42 +++++++++++--- .../breadcrumbs/breadcrumbs.component.html | 10 ++-- .../src/breadcrumbs/breadcrumbs.component.ts | 55 ++++++++++--------- .../src/breadcrumbs/breadcrumbs.stories.ts | 5 +- 5 files changed, 71 insertions(+), 43 deletions(-) diff --git a/libs/components/src/breadcrumbs/breadcrumb.component.html b/libs/components/src/breadcrumbs/breadcrumb.component.html index b0334f1ac09..bca34bb0e8b 100644 --- a/libs/components/src/breadcrumbs/breadcrumb.component.html +++ b/libs/components/src/breadcrumbs/breadcrumb.component.html @@ -1,6 +1,6 @@ @if (icon(); as icon) { - + } diff --git a/libs/components/src/breadcrumbs/breadcrumb.component.ts b/libs/components/src/breadcrumbs/breadcrumb.component.ts index 6c79b449a28..18024c0ef20 100644 --- a/libs/components/src/breadcrumbs/breadcrumb.component.ts +++ b/libs/components/src/breadcrumbs/breadcrumb.component.ts @@ -1,29 +1,55 @@ -import { Component, EventEmitter, Output, TemplateRef, input, viewChild } from "@angular/core"; +import { + ChangeDetectionStrategy, + Component, + TemplateRef, + input, + output, + viewChild, +} from "@angular/core"; import { QueryParamsHandling } from "@angular/router"; -// FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush -// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection +/** + * Individual breadcrumb item used within the `bit-breadcrumbs` component. + * Represents a single navigation step in the breadcrumb trail. + * + * This component should be used as a child of `bit-breadcrumbs` and supports both + * router navigation and custom click handlers. + */ @Component({ selector: "bit-breadcrumb", templateUrl: "./breadcrumb.component.html", + changeDetection: ChangeDetectionStrategy.OnPush, }) export class BreadcrumbComponent { + /** + * Optional icon to display before the breadcrumb text. + */ readonly icon = input(); + /** + * Router link for the breadcrumb. Can be a string or an array of route segments. + */ readonly route = input(); + /** + * Query parameters to include in the router link. + */ readonly queryParams = input>({}); + /** + * How to handle query parameters when navigating. Options include 'merge' or 'preserve'. + */ readonly queryParamsHandling = input(); - // FIXME(https://bitwarden.atlassian.net/browse/CL-903): Migrate to Signals - // eslint-disable-next-line @angular-eslint/prefer-output-emitter-ref - @Output() - click = new EventEmitter(); + /** + * Emitted when the breadcrumb is clicked. + */ + readonly click = output(); + /** Used by the BreadcrumbsComponent to access the breadcrumb content */ readonly content = viewChild(TemplateRef); onClick(args: unknown) { - this.click.next(args); + this.click.emit(args); } } diff --git a/libs/components/src/breadcrumbs/breadcrumbs.component.html b/libs/components/src/breadcrumbs/breadcrumbs.component.html index b63b21de76b..ee5ad79c739 100644 --- a/libs/components/src/breadcrumbs/breadcrumbs.component.html +++ b/libs/components/src/breadcrumbs/breadcrumbs.component.html @@ -1,4 +1,4 @@ -@for (breadcrumb of beforeOverflow; track breadcrumb; let last = $last) { +@for (breadcrumb of beforeOverflow(); track breadcrumb; let last = $last) { @if (breadcrumb.route(); as route) { 0) { +@if (hasOverflow()) { + @if (beforeOverflow().length > 0) { } - @for (breadcrumb of overflow; track breadcrumb) { + @for (breadcrumb of overflow(); track breadcrumb) { @if (breadcrumb.route(); as route) { - @for (breadcrumb of afterOverflow; track breadcrumb; let last = $last) { + @for (breadcrumb of afterOverflow(); track breadcrumb; let last = $last) { @if (breadcrumb.route(); as route) { ) { - this.breadcrumbs = value.toArray(); - } + /** Whether the breadcrumbs exceed the show limit and require an overflow menu */ + protected readonly hasOverflow = computed(() => this.breadcrumbs().length > this.show()); - protected get beforeOverflow() { - if (this.hasOverflow) { - return this.breadcrumbs.slice(0, this.show() - 1); + /** Breadcrumbs shown before the overflow menu */ + protected readonly beforeOverflow = computed(() => { + const items = this.breadcrumbs(); + const showCount = this.show(); + + if (items.length > showCount) { + return items.slice(0, showCount - 1); } + return items; + }); - return this.breadcrumbs; - } + /** Breadcrumbs hidden in the overflow menu */ + protected readonly overflow = computed(() => { + return this.breadcrumbs().slice(this.show() - 1, -1); + }); - protected get overflow() { - return this.breadcrumbs.slice(this.show() - 1, -1); - } - - protected get afterOverflow() { - return this.breadcrumbs.slice(-1); - } - - protected get hasOverflow() { - return this.breadcrumbs.length > this.show(); - } + /** The last breadcrumb, shown after the overflow menu */ + protected readonly afterOverflow = computed(() => this.breadcrumbs().slice(-1)); } diff --git a/libs/components/src/breadcrumbs/breadcrumbs.stories.ts b/libs/components/src/breadcrumbs/breadcrumbs.stories.ts index 3064ffe3cb4..d0ce221a780 100644 --- a/libs/components/src/breadcrumbs/breadcrumbs.stories.ts +++ b/libs/components/src/breadcrumbs/breadcrumbs.stories.ts @@ -1,4 +1,4 @@ -import { Component, importProvidersFrom } from "@angular/core"; +import { ChangeDetectionStrategy, Component, importProvidersFrom } from "@angular/core"; import { RouterModule } from "@angular/router"; import { Meta, StoryObj, applicationConfig, moduleMetadata } from "@storybook/angular"; @@ -18,10 +18,9 @@ interface Breadcrumb { route: string; } -// FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush -// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection @Component({ template: "", + changeDetection: ChangeDetectionStrategy.OnPush, }) class EmptyComponent {} From d2b48df9c08c4c74c0031154439ed445fb549b84 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 09:18:02 -0600 Subject: [PATCH 16/67] [deps] AC: Update core-js to v3.47.0 (#17032) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- apps/cli/package.json | 2 +- package-lock.json | 10 +++++----- package.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/cli/package.json b/apps/cli/package.json index 0ae4bf9ce30..ff74664ac76 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -69,7 +69,7 @@ "browser-hrtime": "1.1.8", "chalk": "4.1.2", "commander": "14.0.0", - "core-js": "3.45.0", + "core-js": "3.47.0", "form-data": "4.0.4", "https-proxy-agent": "7.0.6", "inquirer": "8.2.6", diff --git a/package-lock.json b/package-lock.json index a1e2f1121a7..879cda31ec7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ "bufferutil": "4.0.9", "chalk": "4.1.2", "commander": "14.0.0", - "core-js": "3.45.0", + "core-js": "3.47.0", "form-data": "4.0.4", "https-proxy-agent": "7.0.6", "inquirer": "8.2.6", @@ -205,7 +205,7 @@ "browser-hrtime": "1.1.8", "chalk": "4.1.2", "commander": "14.0.0", - "core-js": "3.45.0", + "core-js": "3.47.0", "form-data": "4.0.4", "https-proxy-agent": "7.0.6", "inquirer": "8.2.6", @@ -20457,9 +20457,9 @@ } }, "node_modules/core-js": { - "version": "3.45.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.0.tgz", - "integrity": "sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", + "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", "hasInstallScript": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index cd1262ac373..1bb7c5dbe40 100644 --- a/package.json +++ b/package.json @@ -177,7 +177,7 @@ "bufferutil": "4.0.9", "chalk": "4.1.2", "commander": "14.0.0", - "core-js": "3.45.0", + "core-js": "3.47.0", "form-data": "4.0.4", "https-proxy-agent": "7.0.6", "inquirer": "8.2.6", From b1591da1b2d9aa84a122c139462a8ebe7c3fbc93 Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 16:46:31 +0100 Subject: [PATCH 17/67] Autosync the updated translations (#17936) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/browser/src/_locales/ar/messages.json | 180 ++++++++- apps/browser/src/_locales/az/messages.json | 196 +++++++-- apps/browser/src/_locales/be/messages.json | 180 ++++++++- apps/browser/src/_locales/bg/messages.json | 178 ++++++++- apps/browser/src/_locales/bn/messages.json | 180 ++++++++- apps/browser/src/_locales/bs/messages.json | 180 ++++++++- apps/browser/src/_locales/ca/messages.json | 180 ++++++++- apps/browser/src/_locales/cs/messages.json | 180 ++++++++- apps/browser/src/_locales/cy/messages.json | 180 ++++++++- apps/browser/src/_locales/da/messages.json | 180 ++++++++- apps/browser/src/_locales/de/messages.json | 206 ++++++++-- apps/browser/src/_locales/el/messages.json | 180 ++++++++- apps/browser/src/_locales/en_GB/messages.json | 180 ++++++++- apps/browser/src/_locales/en_IN/messages.json | 180 ++++++++- apps/browser/src/_locales/es/messages.json | 180 ++++++++- apps/browser/src/_locales/et/messages.json | 180 ++++++++- apps/browser/src/_locales/eu/messages.json | 180 ++++++++- apps/browser/src/_locales/fa/messages.json | 180 ++++++++- apps/browser/src/_locales/fi/messages.json | 180 ++++++++- apps/browser/src/_locales/fil/messages.json | 180 ++++++++- apps/browser/src/_locales/fr/messages.json | 206 ++++++++-- apps/browser/src/_locales/gl/messages.json | 180 ++++++++- apps/browser/src/_locales/he/messages.json | 180 ++++++++- apps/browser/src/_locales/hi/messages.json | 180 ++++++++- apps/browser/src/_locales/hr/messages.json | 180 ++++++++- apps/browser/src/_locales/hu/messages.json | 180 ++++++++- apps/browser/src/_locales/id/messages.json | 180 ++++++++- apps/browser/src/_locales/it/messages.json | 180 ++++++++- apps/browser/src/_locales/ja/messages.json | 294 ++++++++++---- apps/browser/src/_locales/ka/messages.json | 180 ++++++++- apps/browser/src/_locales/km/messages.json | 180 ++++++++- apps/browser/src/_locales/kn/messages.json | 180 ++++++++- apps/browser/src/_locales/ko/messages.json | 180 ++++++++- apps/browser/src/_locales/lt/messages.json | 180 ++++++++- apps/browser/src/_locales/lv/messages.json | 180 ++++++++- apps/browser/src/_locales/ml/messages.json | 180 ++++++++- apps/browser/src/_locales/mr/messages.json | 180 ++++++++- apps/browser/src/_locales/my/messages.json | 180 ++++++++- apps/browser/src/_locales/nb/messages.json | 180 ++++++++- apps/browser/src/_locales/ne/messages.json | 180 ++++++++- apps/browser/src/_locales/nl/messages.json | 180 ++++++++- apps/browser/src/_locales/nn/messages.json | 180 ++++++++- apps/browser/src/_locales/or/messages.json | 180 ++++++++- apps/browser/src/_locales/pl/messages.json | 190 ++++++++- apps/browser/src/_locales/pt_BR/messages.json | 240 ++++++++--- apps/browser/src/_locales/pt_PT/messages.json | 182 ++++++++- apps/browser/src/_locales/ro/messages.json | 180 ++++++++- apps/browser/src/_locales/ru/messages.json | 188 ++++++++- apps/browser/src/_locales/si/messages.json | 180 ++++++++- apps/browser/src/_locales/sk/messages.json | 184 ++++++++- apps/browser/src/_locales/sl/messages.json | 180 ++++++++- apps/browser/src/_locales/sr/messages.json | 222 +++++++++-- apps/browser/src/_locales/sv/messages.json | 180 ++++++++- apps/browser/src/_locales/ta/messages.json | 372 ++++++++++++------ apps/browser/src/_locales/te/messages.json | 180 ++++++++- apps/browser/src/_locales/th/messages.json | 182 ++++++++- apps/browser/src/_locales/tr/messages.json | 212 ++++++++-- apps/browser/src/_locales/uk/messages.json | 180 ++++++++- apps/browser/src/_locales/vi/messages.json | 206 ++++++++-- apps/browser/src/_locales/zh_CN/messages.json | 210 ++++++++-- apps/browser/src/_locales/zh_TW/messages.json | 208 ++++++++-- 61 files changed, 10312 insertions(+), 1284 deletions(-) diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json index 452cbafe6d5..f1e2da53768 100644 --- a/apps/browser/src/_locales/ar/messages.json +++ b/apps/browser/src/_locales/ar/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "المزامنة" }, - "syncVaultNow": { - "message": "مزامنة الخزانة الآن" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "آخر مزامنة:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "تطبيق ويب Bitwarden" }, - "importItems": { - "message": "استيراد العناصر" - }, "select": { "message": "تحديد" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "التصدير من" }, - "exportVault": { - "message": "تصدير الخزانة" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "صيغة الملف" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "تم حفظ المرفقات" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "الملف" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "حدد ملفًا" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "الحجم الأقصى للملف هو 500 ميجابايت." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "لم يتم العثور على معرف فريد." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "تجاهل" }, - "importData": { - "message": "استيراد البيانات", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "خطأ في الاستيراد" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json index c4197f831d3..81c9fb6a131 100644 --- a/apps/browser/src/_locales/az/messages.json +++ b/apps/browser/src/_locales/az/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sinxr" }, - "syncVaultNow": { - "message": "Seyfi indi sinxronlaşdır" + "syncNow": { + "message": "İndi sinxr." }, "lastSync": { "message": "Son sinxr:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden veb tətbiqi" }, - "importItems": { - "message": "Elementləri daxilə köçür" - }, "select": { "message": "Seçin" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Buradan xaricə köçür" }, - "exportVault": { - "message": "Seyfi xaricə köçür" + "export": { + "message": "Xaricə köçür" + }, + "import": { + "message": "Daxilə köçür" }, "fileFormat": { "message": "Fayl formatı" @@ -1407,25 +1407,25 @@ "message": "Daha ətraflı" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Şifrələmə ayarlarını güncəlləyərkən bir xəta baş verdi." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Şifrələmə ayarlarınızı güncəlləyin" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Tövsiyə edilən yeni şifrələmə ayarları, hesabınızın təhlükəsizliyini artıracaq. İndi güncəlləmək üçün ana parolunuzu daxil edin." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Davam etmək üçün kimliyinizi təsdiqləyin" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Ana parolunuzu daxil edin" }, "updateSettings": { - "message": "Update settings" + "message": "Ayarları güncəllə" }, "later": { - "message": "Later" + "message": "Sonra" }, "authenticatorKeyTotp": { "message": "Kimlik doğrulayıcı açarı (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Qoşma saxlanıldı." }, + "fixEncryption": { + "message": "Şifrələməni düzəlt" + }, + "fixEncryptionTooltip": { + "message": "Bu fayl, köhnə bir şifrələmə üsulunu istifadə edir." + }, + "attachmentUpdated": { + "message": "Qoşma güncəllənib" + }, "file": { "message": "Fayl" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Bir fayl seçin" }, + "itemsTransferred": { + "message": "Elementlər köçürüldü" + }, "maxFileSize": { "message": "Maksimal fayl həcmi 500 MB-dır" }, @@ -1497,7 +1509,7 @@ "message": "Fayl qoşmaları üçün 1 GB şifrələnmiş anbar sahəsi" }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "Fayl qoşmaları üçün $SIZE$ şifrələnmiş anbar sahəsi.", "placeholders": { "size": { "content": "$1", @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Unikal identifikator tapılmadı." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Aşağıdakı təşkilatların üzvləri üçün artıq ana parol tələb olunmur. Lütfən aşağıdakı domeni təşkilatınızın inzibatçısı ilə təsdiqləyin." - }, "organizationName": { "message": "Təşkilat adı" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Yox say" }, - "importData": { - "message": "Veriləri daxilə köçür", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Daxilə köçürmə xətası" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Hesab güvənliyi" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Bildirişlər" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "Və daha çoxu!" }, - "planDescPremium": { - "message": "Tam onlayn təhlükəsizlik" + "advancedOnlineSecurity": { + "message": "Qabaqcıl onlayn təhlükəsizlik" }, "upgradeToPremium": { "message": "\"Premium\"a yüksəlt" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Kart nömrəsi" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Təşkilatınız, artıq Bitwarden-ə giriş etmək üçün ana parol istifadə etmir. Davam etmək üçün təşkilatı və domeni doğrulayın." + }, + "continueWithLogIn": { + "message": "Giriş etməyə davam" + }, + "doNotContinue": { + "message": "Davam etmə" + }, + "domain": { + "message": "Domen" + }, + "keyConnectorDomainTooltip": { + "message": "Bu domen, hesabınızın şifrələmə açarlarını saxlayacaq, ona görə də, bu domenə güvəndiyinizə əmin olun. Əmin deyilsinizsə, adminizlə əlaqə saxlayın." + }, + "verifyYourOrganization": { + "message": "Giriş etmək üçün təşkilatınızı doğrulayın" + }, + "organizationVerified": { + "message": "Təşkilat doğrulandı" + }, + "domainVerified": { + "message": "Domen doğrulandı" + }, + "leaveOrganizationContent": { + "message": "Təşkilatınızı doğrulamasanız, təşkilata erişiminiz ləğv ediləcək." + }, + "leaveNow": { + "message": "İndi tərk et" + }, + "verifyYourDomainToLogin": { + "message": "Giriş etmək üçün domeninizi doğrulayın" + }, + "verifyYourDomainDescription": { + "message": "Giriş prosesini davam etdirmək üçün bu domeni doğrulayın." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Giriş prosesini davam etdirmək üçün bu təşkilatı və domeni doğrulayın." + }, "sessionTimeoutSettingsAction": { "message": "Vaxt bitmə əməliyyatı" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Bu ayar, təşkilatınız tərəfindən idarə olunur." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Təşkilatınız, maksimum seyf bitmə vaxtını $HOURS$ saat $MINUTES$ dəqiqə olaraq ayarladı.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Təşkilatınız, seansın ilkin bitmə vaxtını dərhal olaraq təyin etdi." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Təşkilatınız, seansın ilkin bitmə vaxtını Sistem kilidi açılanda olaraq təyin etdi." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Təşkilatınız, seansın ilkin bitmə vaxtını Brauzer yenidən başladılanda olaraq təyin etdi." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maksimum bitmə vaxtı $HOURS$ saat $MINUTES$ dəqiqə dəyərini aşa bilməz", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Brauzer yenidən başladılanda" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Vaxt bitmə əməliyyatınızı dəyişdirmək üçün bir kilid açma üsulu qurun." + }, + "upgrade": { + "message": "Yüksəlt" + }, + "leaveConfirmationDialogTitle": { + "message": "Tərk etmək istədiyinizə əminsiniz?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Rədd cavabı versəniz, fərdi elementləriniz hesabınızda qalacaq, paylaşılan elementlərə və təşkilat özəlliklərinə erişimi itirəcəksiniz." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Erişimi təkrar qazanmaq üçün admininizlə əlaqə saxlayın." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Tərk et: $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Seyfimi necə idarə edim?" + }, + "transferItemsToOrganizationTitle": { + "message": "Elementləri bura köçür: $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$, təhlükəsizlik və riayətlilik üçün bütün elementlərin təşkilata aid olmasını tələb edir. Elementlərinizin sahibliyini transfer etmək üçün qəbul edin.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Transferi qəbul et" + }, + "declineAndLeave": { + "message": "Rədd et və tərk et" + }, + "whyAmISeeingThis": { + "message": "Bunu niyə görürəm?" } } diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json index 806aedfab27..afe26551760 100644 --- a/apps/browser/src/_locales/be/messages.json +++ b/apps/browser/src/_locales/be/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Сінхранізаваць" }, - "syncVaultNow": { - "message": "Сінхранізаваць сховішча зараз" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Апошняя сінхранізацыя:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Вэб-праграма Bitwarden" }, - "importItems": { - "message": "Імпартаванне элементаў" - }, "select": { "message": "Выбраць" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Экспартаванне з" }, - "exportVault": { - "message": "Экспартаваць сховішча" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Фармат файла" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Далучэнне захавана." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Файл" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Выберыце файл." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Максімальны памер файла 500 МБ." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Не знойдзены ўнікальны ідэнтыфікатар." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Iгнараваць" }, - "importData": { - "message": "Імпартаванне даных", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Памылка імпартавання" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Бяспеке акаўнта" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Апавяшчэнні" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json index 76b20f8bd2e..adaa86369c6 100644 --- a/apps/browser/src/_locales/bg/messages.json +++ b/apps/browser/src/_locales/bg/messages.json @@ -436,7 +436,7 @@ "sync": { "message": "Синхронизиране" }, - "syncVaultNow": { + "syncNow": { "message": "Синхронизиране сега" }, "lastSync": { @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Уеб приложение" }, - "importItems": { - "message": "Внасяне на елементи" - }, "select": { "message": "Избор" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Изнасяне от" }, - "exportVault": { - "message": "Изнасяне на трезора" + "export": { + "message": "Изнасяне" + }, + "import": { + "message": "Внасяне" }, "fileFormat": { "message": "Формат на файла" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Прикаченият файл е запазен." }, + "fixEncryption": { + "message": "Поправяне на шифроването" + }, + "fixEncryptionTooltip": { + "message": "Този файл използва остарял метод на шифроване." + }, + "attachmentUpdated": { + "message": "Прикаченият файл е актуализиран" + }, "file": { "message": "Файл" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Изберете файл." }, + "itemsTransferred": { + "message": "Елементите са прехвърлени" + }, "maxFileSize": { "message": "Големината на файла е най-много 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Няма намерен уникален идентификатор." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "За членовете на следната организация вече не се изисква главна парола. Потвърдете домейна по-долу с администратора на организацията си." - }, "organizationName": { "message": "Име на организацията" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Пренебрегване" }, - "importData": { - "message": "Внасяне на данни", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Грешка при внасянето" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Защита на регистрацията" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Известия" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "И още!" }, - "planDescPremium": { - "message": "Пълна сигурност в Интернет" + "advancedOnlineSecurity": { + "message": "Разширена сигурност в Интернет" }, "upgradeToPremium": { "message": "Надградете до Платения план" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Номер на картата" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Вашата организация вече не използва главни пароли за вписване в Битуорден. За да продължите, потвърдете организацията и домейна." + }, + "continueWithLogIn": { + "message": "Продължаване с вписването" + }, + "doNotContinue": { + "message": "Не продължавам" + }, + "domain": { + "message": "Домейн" + }, + "keyConnectorDomainTooltip": { + "message": "Този домейн ще съхранява ключовете за шифроване на акаунта Ви, така че се уверете, че му имате доверие. Ако имате съмнения, свържете се с администратора си." + }, + "verifyYourOrganization": { + "message": "Потвърдете организацията си, за да се впишете" + }, + "organizationVerified": { + "message": "Организацията е потвърдена" + }, + "domainVerified": { + "message": "Домейнът е потвърден" + }, + "leaveOrganizationContent": { + "message": "Ако не потвърдите организацията, достъпът Ви до нея ще бъде преустановен." + }, + "leaveNow": { + "message": "Напускане сега" + }, + "verifyYourDomainToLogin": { + "message": "Потвърдете домейна си, за да се впишете" + }, + "verifyYourDomainDescription": { + "message": "За да продължите с вписването, потвърдете този домейн." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "За да продължите с вписването, потвърдете организацията и домейна." + }, "sessionTimeoutSettingsAction": { "message": "Действие при изтичането на времето за достъп" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Тази настройка се управлява от организацията Ви." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Организацията Ви е настроила максималното разрешено време за достъп на [%1$i] час(а) и [%2$i] минути.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Организацията Ви е настроила стандартното разрешено време за достъп да бъде нула." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Организацията Ви е настроила стандартното разрешено време за достъп да бъде до заключване на системата." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Организацията Ви е настроила стандартното разрешено време за достъп да бъде до рестартиране на браузъра." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Максималното време на достъп не може да превишава $HOURS$ час(а) и $MINUTES$ минути", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "При рестартиране на браузъра" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Задайте метод за отключване, за да може да промените действието при изтичане на времето за достъп" + }, + "upgrade": { + "message": "Надграждане" + }, + "leaveConfirmationDialogTitle": { + "message": "Наистина ли искате да напуснете?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ако откажете, Вашите собствени елементи ще останат в акаунта Ви, но ще загубите достъп до споделените елементи и функционалностите на организацията." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Свържете се с администратор, за да получите достъп отново." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Напускане на $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Как да управлявам трезора си?" + }, + "transferItemsToOrganizationTitle": { + "message": "Прехвърляне на елементи към $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ изисква всички елементи да станат притежание на организацията, за по-добра сигурност и съвместимост. Изберете, че приемате, за да прехвърлите собствеността на елементите си към организацията.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Приемане на прехвърлянето" + }, + "declineAndLeave": { + "message": "Отказване и напускане" + }, + "whyAmISeeingThis": { + "message": "Защо виждам това?" } } diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json index 4845282e825..9b2248da59b 100644 --- a/apps/browser/src/_locales/bn/messages.json +++ b/apps/browser/src/_locales/bn/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "সিঙ্ক" }, - "syncVaultNow": { - "message": "এখনই ভল্ট সিঙ্ক করুন" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "শেষ সিঙ্ক:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "বস্তু আমদানি" - }, "select": { "message": "নির্বাচন করুন" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "ভল্ট রফতানি" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "ফাইলের ধরণ" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "সংযুক্তিটি সংরক্ষণ করা হয়েছে।" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "ফাইল" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "একটি ফাইল নির্বাচন করুন।" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "সর্বোচ্চ ফাইলের আকার ১০০ এমবি।" }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json index cff1dd150cb..5c3c01a0ab5 100644 --- a/apps/browser/src/_locales/bs/messages.json +++ b/apps/browser/src/_locales/bs/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sync" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json index ff0e2de51af..61a12bfb50c 100644 --- a/apps/browser/src/_locales/ca/messages.json +++ b/apps/browser/src/_locales/ca/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sincronització" }, - "syncVaultNow": { - "message": "Sincronitza la caixa forta ara" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Última sincronització:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Aplicació web Bitwarden" }, - "importItems": { - "message": "Importa elements" - }, "select": { "message": "Selecciona" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exporta des de" }, - "exportVault": { - "message": "Exporta caixa forta" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format de fitxer" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "S'ha guardat el fitxer adjunt" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Fitxer" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Seleccioneu un fitxer" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "La mida màxima del fitxer és de 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No s'ha trobat cap identificador únic." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignora" }, - "importData": { - "message": "Importa dades", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Error d'importació" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Seguretat del compte" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notificacions" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json index fa8dc426c05..309c7361de2 100644 --- a/apps/browser/src/_locales/cs/messages.json +++ b/apps/browser/src/_locales/cs/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synchronizace" }, - "syncVaultNow": { - "message": "Synchronizovat trezor nyní" + "syncNow": { + "message": "Synchronizovat nyní" }, "lastSync": { "message": "Poslední synchronizace:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Webová aplikace Bitwardenu" }, - "importItems": { - "message": "Importovat položky" - }, "select": { "message": "Vybrat" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exportovat z" }, - "exportVault": { - "message": "Exportovat trezor" + "export": { + "message": "Exportovat" + }, + "import": { + "message": "Importovat" }, "fileFormat": { "message": "Formát souboru" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Příloha byla uložena" }, + "fixEncryption": { + "message": "Opravit šifrování" + }, + "fixEncryptionTooltip": { + "message": "Tento soubor používá zastaralou šifrovací metodu." + }, + "attachmentUpdated": { + "message": "Příloha byla aktualizována" + }, "file": { "message": "Soubor" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Zvolte soubor" }, + "itemsTransferred": { + "message": "Převedené položky" + }, "maxFileSize": { "message": "Maximální velikost souboru je 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Nenalezen žádný jedinečný identifikátor." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hlavní heslo již není vyžadováno pro členy následující organizace. Potvrďte níže uvedenou doménu u správce Vaší organizace." - }, "organizationName": { "message": "Název organizace" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorovat" }, - "importData": { - "message": "Importovat data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Chyba importu" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Zabezpečení účtu" }, + "phishingBlocker": { + "message": "Blokování phishingu" + }, + "enablePhishingDetection": { + "message": "Detekce phishingu" + }, + "enablePhishingDetectionDesc": { + "message": "Zobrazí varování před přístupem k podezřelým phishingovým stránkám." + }, "notifications": { "message": "Oznámení" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "A ještě více!" }, - "planDescPremium": { - "message": "Dokončit online zabezpečení" + "advancedOnlineSecurity": { + "message": "Pokročilé zabezpečení online" }, "upgradeToPremium": { "message": "Aktualizovat na Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Číslo karty" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Vaše organizace již k přihlášení do Bitwardenu nepoužívá hlavní hesla. Chcete-li pokračovat, ověřte organizaci a doménu." + }, + "continueWithLogIn": { + "message": "Pokračovat s přihlášením" + }, + "doNotContinue": { + "message": "Nepokračovat" + }, + "domain": { + "message": "Doména" + }, + "keyConnectorDomainTooltip": { + "message": "Tato doména uloží šifrovací klíče Vašeho účtu, takže se ujistěte, že jí věříte. Pokud si nejste jisti, kontaktujte Vašeho správce." + }, + "verifyYourOrganization": { + "message": "Ověřte svou organizaci pro přihlášení" + }, + "organizationVerified": { + "message": "Organizace byla ověřena" + }, + "domainVerified": { + "message": "Doména byla ověřena" + }, + "leaveOrganizationContent": { + "message": "Pokud neověříte svou organizaci, Váš přístup k organizaci bude zrušen." + }, + "leaveNow": { + "message": "Opustit hned" + }, + "verifyYourDomainToLogin": { + "message": "Ověřte svou doménu pro přihlášení" + }, + "verifyYourDomainDescription": { + "message": "Chcete-li pokračovat v přihlášení, ověřte tuto doménu." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Chcete-li pokračovat v přihlášení, ověřte organizaci a doménu." + }, "sessionTimeoutSettingsAction": { "message": "Akce vypršení časového limitu" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Tato nastavení je spravováno Vaší organizací." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Vaše organizace nastavila maximální časový limit relace na $HOURS$ hodin a $MINUTES$ minut.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Vaše organizace nastavila výchozí časový limit relace na Okamžitě." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Vaše organizace nastavila výchozí časový limit relace na Při uzamknutí systému." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Vaše organizace nastavila výchozí časový limit relace na Při restartu prohlížeče." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximální časový limit nesmí překročit $HOURS$ hodin a $MINUTES$ minut", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Při restartu prohlížeče" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Nastavte metodu odemknutí, abyste změnili akci při vypršení časového limitu" + }, + "upgrade": { + "message": "Aktualizovat" + }, + "leaveConfirmationDialogTitle": { + "message": "Opravdu chcete odejít?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Odmítnutím zůstanou Vaše osobní položky ve Vašem účtu, ale ztratíte přístup ke sdíleným položkám a funkcím organizace." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Obraťte se na svého správce, abyste znovu získali přístup." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Opustit $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Jak mohu spravovat svůj trezor?" + }, + "transferItemsToOrganizationTitle": { + "message": "Přenést položky do $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ vyžaduje, aby byly všechny položky vlastněny organizací z důvodu bezpečnosti a shody. Klepnutím na tlačítko pro převod vlastnictví Vašich položek.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Přijmout převod" + }, + "declineAndLeave": { + "message": "Odmítnout a opustit" + }, + "whyAmISeeingThis": { + "message": "Proč se mi toto zobrazuje?" } } diff --git a/apps/browser/src/_locales/cy/messages.json b/apps/browser/src/_locales/cy/messages.json index 45f91f5ccc7..b5d090cc505 100644 --- a/apps/browser/src/_locales/cy/messages.json +++ b/apps/browser/src/_locales/cy/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Cysoni" }, - "syncVaultNow": { - "message": "Cysoni'r gell nawr" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Wedi'i chysoni ddiwethaf:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Mewnforio eitemau" - }, "select": { "message": "Dewis" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Allforio'r gell" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Fformat y ffeil" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Ffeil" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Dewis ffeil" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Anwybyddu" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Diogelwch eich cyfrif" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Hysbysiadau" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index 50d79ff1f9d..0627c97766f 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synkronisér" }, - "syncVaultNow": { - "message": "Synkronisér boks nu" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Seneste synkronisering:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web-app" }, - "importItems": { - "message": "Importér elementer" - }, "select": { "message": "Vælg" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Eksportér fra" }, - "exportVault": { - "message": "Eksportér boks" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Filformat" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Vedhæftning gemt" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Fil" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Vælg en fil" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maksimum filstørrelse er 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Ingen entydig identifikator fundet." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorér" }, - "importData": { - "message": "Importér data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Importfejl" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Kontosikkerhed" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifikationer" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json index 969f8c63de3..dc972697dc6 100644 --- a/apps/browser/src/_locales/de/messages.json +++ b/apps/browser/src/_locales/de/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synchronisierung" }, - "syncVaultNow": { - "message": "Tresor jetzt synchronisieren" + "syncNow": { + "message": "Jetzt synchronisieren" }, "lastSync": { "message": "Zuletzt synchronisiert:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden Web-App" }, - "importItems": { - "message": "Einträge importieren" - }, "select": { "message": "Auswählen" }, @@ -562,7 +559,7 @@ "description": "Verb" }, "unArchive": { - "message": "Wiederherstellen" + "message": "Nicht mehr archivieren" }, "itemsInArchive": { "message": "Einträge im Archiv" @@ -577,7 +574,7 @@ "message": "Eintrag wurde archiviert" }, "itemUnarchived": { - "message": "Eintrag wurde wiederhergestellt" + "message": "Eintrag wird nicht mehr archiviert" }, "archiveItem": { "message": "Eintrag archivieren" @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export aus" }, - "exportVault": { - "message": "Tresor exportieren" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Dateiformat" @@ -1407,25 +1407,25 @@ "message": "Erfahre mehr" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Beim Aktualisieren der Verschlüsselungseinstellungen ist ein Fehler aufgetreten." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Aktualisiere deine Verschlüsselungseinstellungen" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Die neuen empfohlenen Verschlüsselungseinstellungen verbessern deine Kontosicherheit. Gib dein Master-Passwort ein, um sie zu aktualisieren." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Bestätige deine Identität, um fortzufahren" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Gib dein Master-Passwort ein" }, "updateSettings": { - "message": "Update settings" + "message": "Einstellungen aktualisieren" }, "later": { - "message": "Later" + "message": "Später" }, "authenticatorKeyTotp": { "message": "Authentifizierungsschlüssel (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Anhang gespeichert" }, + "fixEncryption": { + "message": "Verschlüsselung reparieren" + }, + "fixEncryptionTooltip": { + "message": "Diese Datei verwendet eine veraltete Verschlüsselungsmethode." + }, + "attachmentUpdated": { + "message": "Anhang aktualisiert" + }, "file": { "message": "Datei" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Wähle eine Datei" }, + "itemsTransferred": { + "message": "Einträge wurden übertragen" + }, "maxFileSize": { "message": "Die maximale Dateigröße beträgt 500 MB." }, @@ -1904,7 +1916,7 @@ "message": "Ablaufjahr" }, "monthly": { - "message": "Monatlich" + "message": "Monat" }, "expiration": { "message": "Gültig bis" @@ -2678,7 +2690,7 @@ "description": "A category title describing the concept of web domains" }, "blockedDomains": { - "message": "Gesperrte Domains" + "message": "Blockierte Domains" }, "learnMoreAboutBlockedDomains": { "message": "Erfahre mehr über blockierte Domains" @@ -2696,7 +2708,7 @@ "message": "Automatisches Ausfüllen und andere zugehörige Funktionen werden für diese Webseiten nicht angeboten. Du musst die Seite neu laden, damit die Änderungen wirksam werden." }, "autofillBlockedNoticeV2": { - "message": "Automatisches Ausfüllen ist für diese Website gesperrt." + "message": "Automatisches Ausfüllen ist für diese Website blockiert." }, "autofillBlockedNoticeGuidance": { "message": "Dies in den Einstellungen ändern" @@ -2850,7 +2862,7 @@ } }, "blockedDomainsSavedSuccess": { - "message": "Änderungen gesperrter Domains gespeichert" + "message": "Änderungen blockierter Domains gespeichert" }, "excludedDomainsSavedSuccess": { "message": "Änderungen der ausgeschlossenen Domain gespeichert" @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Keine eindeutige Kennung gefunden." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Für Mitglieder der folgenden Organisation ist kein Master-Passwort mehr erforderlich. Bitte bestätige die folgende Domain bei deinem Organisations-Administrator." - }, "organizationName": { "message": "Name der Organisation" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorieren" }, - "importData": { - "message": "Daten importieren", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Importfehler" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Kontosicherheit" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Benachrichtigungen" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "Und mehr!" }, - "planDescPremium": { - "message": "Umfassende Online-Sicherheit" + "advancedOnlineSecurity": { + "message": "Erweiterte Online-Sicherheit" }, "upgradeToPremium": { "message": "Upgrade auf Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Kartennummer" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Deine Organisation verwendet keine Master-Passwörter mehr, um sich bei Bitwarden anzumelden. Verifiziere die Organisation und Domain, um fortzufahren." + }, + "continueWithLogIn": { + "message": "Mit der Anmeldung fortfahren" + }, + "doNotContinue": { + "message": "Nicht fortfahren" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "Diese Domain speichert die Verschlüsselungsschlüssel deines Kontos. Stelle daher sicher, dass du ihr vertraust. Wenn du dir nicht sicher bist, wende dich an deinen Administrator." + }, + "verifyYourOrganization": { + "message": "Verifiziere deine Organisation, um dich anzumelden" + }, + "organizationVerified": { + "message": "Organisation verifiziert" + }, + "domainVerified": { + "message": "Domain verifiziert" + }, + "leaveOrganizationContent": { + "message": "Wenn du deine Organisation nicht verifizierst, wird dein Zugriff auf die Organisation widerrufen." + }, + "leaveNow": { + "message": "Jetzt verlassen" + }, + "verifyYourDomainToLogin": { + "message": "Verifiziere deine Domain, um dich anzumelden" + }, + "verifyYourDomainDescription": { + "message": "Verifiziere diese Domain, um mit der Anmeldung fortzufahren." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Um mit der Anmeldung fortzufahren, verifiziere die Organisation und Domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout-Aktion" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Diese Einstellung wird von deiner Organisation verwaltet." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Deine Organisation hat das maximale Sitzungs-Timeout auf $HOURS$ Stunde(n) und $MINUTES$ Minute(n) festgelegt.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Deine Organisation hat das Standard-Sitzungs-Timeout auf \"Sofort\" gesetzt." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Deine Organisation hat das Standard-Sitzungs-Timeout auf \"Wenn System gesperrt\" gesetzt." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Deine Organisation hat das Standard-Sitzungs-Timeout auf \"Bei Neustart des Browsers\" gesetzt." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Das maximale Timeout darf $HOURS$ Stunde(n) und $MINUTES$ Minute(n) nicht überschreiten", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Bei Neustart des Browsers" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Stell eine Entsperrmethode ein, um deine Timeout-Aktion zu ändern" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Bist du sicher, dass du gehen willst?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Wenn du ablehnst, bleiben deine persönlichen Einträge in deinem Konto erhalten, aber du wirst den Zugriff auf geteilte Einträge und Organisationsfunktionen verlieren." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Kontaktiere deinen Administrator, um wieder Zugriff zu erhalten." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "$ORGANIZATION$ verlassen", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Wie kann ich meinen Tresor verwalten?" + }, + "transferItemsToOrganizationTitle": { + "message": "Einträge zu $ORGANIZATION$ übertragen", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ erfordert zur Sicherheit und Compliance, dass alle Einträge der Organisation gehören. Klicke auf Akzeptieren, um den Besitz deiner Einträge zu übertragen.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Übertragung annehmen" + }, + "declineAndLeave": { + "message": "Ablehnen und verlassen" + }, + "whyAmISeeingThis": { + "message": "Warum wird mir das angezeigt?" } } diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json index 2be53da65ec..e4b7b28a512 100644 --- a/apps/browser/src/_locales/el/messages.json +++ b/apps/browser/src/_locales/el/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Συγχρονισμός" }, - "syncVaultNow": { - "message": "Συγχρονισμός θησαυ/κιου τώρα" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Τελευταίος συγχρονισμός:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Διαδικτυακή εφαρμογή Bitwarden" }, - "importItems": { - "message": "Εισαγωγή στοιχείων" - }, "select": { "message": "Επιλογή" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Εξαγωγή από" }, - "exportVault": { - "message": "Εξαγωγή Vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Τύπος αρχείου" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Το συνημμένο αποθηκεύτηκε" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Αρχείο" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Επιλέξτε αρχείο" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Το μέγιστο μέγεθος αρχείου είναι 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Δε βρέθηκε μοναδικό αναγνωριστικό." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Όνομα οργανισμού" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Παράβλεψη" }, - "importData": { - "message": "Εισαγωγή δεδομένων", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Σφάλμα εισαγωγής" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Ασφάλεια λογαριασμού" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Ειδοποιήσεις" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json index 63d9214632a..1abb01fcb14 100644 --- a/apps/browser/src/_locales/en_GB/messages.json +++ b/apps/browser/src/_locales/en_GB/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sync" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organisation. Please confirm the domain below with your organisation administrator." - }, "organizationName": { "message": "Organisation name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organisation is no longer using master passwords to log into Bitwarden. To continue, verify the organisation and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organisation to log in" + }, + "organizationVerified": { + "message": "Organisation verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organisation, your access to the organisation will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organisation and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organisation has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organisation has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organisation has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organisation has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organisation features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organisation for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json index 9ef5cb2a061..8b5d976a5e9 100644 --- a/apps/browser/src/_locales/en_IN/messages.json +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sync" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "The attachment has been saved." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organisation. Please confirm the domain below with your organisation administrator." - }, "organizationName": { "message": "Organisation name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organisation is no longer using master passwords to log into Bitwarden. To continue, verify the organisation and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organisation to log in" + }, + "organizationVerified": { + "message": "Organisation verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organisation, your access to the organisation will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organisation and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organisation has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organisation has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organisation has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organisation has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organisation features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organisation for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json index 92f6226a3de..80139915ff0 100644 --- a/apps/browser/src/_locales/es/messages.json +++ b/apps/browser/src/_locales/es/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sincronizar" }, - "syncVaultNow": { - "message": "Sincronizar caja fuerte" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Última sincronización:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Aplicación web de Bitwarden" }, - "importItems": { - "message": "Importar elementos" - }, "select": { "message": "Seleccionar" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exportar desde" }, - "exportVault": { - "message": "Exportar caja fuerte" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Formato de archivo" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "El adjunto se ha guardado." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Archivo" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Selecciona un archivo." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "El tamaño máximo de archivo es de 500MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Identificador único no encontrado." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Ya no es necesaria una contraseña maestra para los miembros de la siguiente organización. Confirma el dominio que aparece a continuación con el administrador de tu organización." - }, "organizationName": { "message": "Nombre de la organización" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorar" }, - "importData": { - "message": "Importar datos", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Error al importar" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Seguridad de la cuenta" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notificaciones" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json index bade6b0dff9..113336c18cb 100644 --- a/apps/browser/src/_locales/et/messages.json +++ b/apps/browser/src/_locales/et/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sünkroniseeri" }, - "syncVaultNow": { - "message": "Sünkroniseeri hoidla" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Viimane sünkronisatsioon:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwardeni veebirakendus" }, - "importItems": { - "message": "Impordi andmed" - }, "select": { "message": "Vali" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Ekspordi hoidla" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Failivorming" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Manus on salvestatud." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Fail" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Vali fail." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maksimaalne faili suurus on 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Unikaalset identifikaatorit ei leitud." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json index 90cfc13f6ef..87469554bea 100644 --- a/apps/browser/src/_locales/eu/messages.json +++ b/apps/browser/src/_locales/eu/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sinkronizatu" }, - "syncVaultNow": { - "message": "Sinkronizatu kutxa gotorra orain" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Azken sinkronizazioa:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Inportatu elementuak" - }, "select": { "message": "Hautatu" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Esportatu kutxa gotorra" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Fitxategiaren formatua" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Eranskina gorde da." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Fitxategia" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Hautatu fitxategia." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Eranskinaren gehienezko tamaina 500MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Ez da identifikatzaile bakarrik aurkitu." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ezikusi" }, - "importData": { - "message": "Inportatu datuak", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Errorea inportatzerakoan" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json index 7a4c8744429..5d4ff7a6d2b 100644 --- a/apps/browser/src/_locales/fa/messages.json +++ b/apps/browser/src/_locales/fa/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "همگام‌سازی" }, - "syncVaultNow": { - "message": "همگام‌سازی گاوصندوق" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "آخرین همگام‌سازی:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "برنامه وب Bitwarden" }, - "importItems": { - "message": "درون ریزی موارد" - }, "select": { "message": "انتخاب" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "برون ریزی از" }, - "exportVault": { - "message": "برون ریزی گاوصندوق" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "فرمت پرونده" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "پیوست ذخیره شد" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "پرونده" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "ﺍﻧﺘﺨﺎﺏ یک ﭘﺮﻭﻧﺪﻩ" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "بیشترین حجم پرونده ۵۰۰ مگابایت است." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "شناسه منحصر به فردی یافت نشد." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "برای اعضای سازمان زیر، کلمه عبور اصلی دیگر لازم نیست. لطفاً دامنه زیر را با مدیر سازمان خود تأیید کنید." - }, "organizationName": { "message": "نام سازمان" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "نادیده گرفتن" }, - "importData": { - "message": "وارد کردن اطلاعات", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "خطای درون ریزی" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "امنیت حساب کاربری" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "اعلان‌ها" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json index d7f0f600b9e..06157846f90 100644 --- a/apps/browser/src/_locales/fi/messages.json +++ b/apps/browser/src/_locales/fi/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synkronointi" }, - "syncVaultNow": { - "message": "Synkronoi holvi nyt" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Viimeisin synkronointi:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden Verkkosovellus" }, - "importItems": { - "message": "Tuo kohteita" - }, "select": { "message": "Valitse" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Vie lähteestä" }, - "exportVault": { - "message": "Vie holvi" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Tiedostomuoto" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Tiedostoliite tallennettiin" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Tiedosto" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Valitse tiedosto." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Tiedoston enimmäiskoko on 500 Mt." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Yksilöllistä tunnistetta ei löytynyt." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Pääsalasanaa ei enää tarvita tämän organisaation jäsenille. Ole hyvä ja vahvista alla oleva verkkotunnus organisaation ylläpitäjän kanssa." - }, "organizationName": { "message": "Organisaation nimi" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ohita" }, - "importData": { - "message": "Tuo tietoja", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Tuontivirhe" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Tilin suojaus" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Ilmoitukset" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Kortin numero" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json index 50964716ad0..918acdac775 100644 --- a/apps/browser/src/_locales/fil/messages.json +++ b/apps/browser/src/_locales/fil/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Ikintal" }, - "syncVaultNow": { - "message": "Isingit ang Vault ngayon" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Huling sinkronisasyon:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Isingit ang Vault ngayon" - }, "select": { "message": "Piliin" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "I-export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format ng file" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment na nai-save" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Mag-file" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Pumili ng File" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum na laki ng file ay 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Walang natagpuang natatanging nag-identipikar." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json index 6ddf7ea5873..cb611df41a1 100644 --- a/apps/browser/src/_locales/fr/messages.json +++ b/apps/browser/src/_locales/fr/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synchronisation" }, - "syncVaultNow": { - "message": "Synchroniser le coffre maintenant" + "syncNow": { + "message": "Synchroniser maintenant" }, "lastSync": { "message": "Dernière synchronisation :" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Application web Bitwarden" }, - "importItems": { - "message": "Importer des éléments" - }, "select": { "message": "Sélectionner" }, @@ -586,7 +583,7 @@ "message": "Les éléments archivés sont exclus des résultats de recherche généraux et des suggestions de remplissage automatique. Êtes-vous sûr de vouloir archiver cet élément ?" }, "upgradeToUseArchive": { - "message": "A premium membership is required to use Archive." + "message": "Une adhésion premium est requise pour utiliser Archive." }, "edit": { "message": "Modifier" @@ -598,7 +595,7 @@ "message": "Tout afficher" }, "showAll": { - "message": "Show all" + "message": "Tout afficher" }, "viewLess": { "message": "Afficher moins" @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exporter à partir de" }, - "exportVault": { - "message": "Exporter le coffre" + "export": { + "message": "Exporter" + }, + "import": { + "message": "Importer" }, "fileFormat": { "message": "Format de fichier" @@ -1407,25 +1407,25 @@ "message": "En savoir plus" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Une erreur s'est produite lors de la mise à jour des paramètres de chiffrement." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Mettre à jour vos paramètres de chiffrement" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Les nouveaux paramètres de chiffrement recommandés amélioreront la sécurité de votre compte. Entrez votre mot de passe principal pour faire la mise à jour maintenant." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Confirmez votre identité pour continuer" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Entrez votre mot de passe principal" }, "updateSettings": { - "message": "Update settings" + "message": "Mettre à jour les paramètres" }, "later": { - "message": "Later" + "message": "Plus tard" }, "authenticatorKeyTotp": { "message": "Clé Authenticator (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "La pièce jointe a été enregistrée." }, + "fixEncryption": { + "message": "Corriger le chiffrement" + }, + "fixEncryptionTooltip": { + "message": "Ce fichier utilise une méthode de chiffrement obsolète." + }, + "attachmentUpdated": { + "message": "Pièce jointe mise à jour" + }, "file": { "message": "Fichier" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Sélectionnez un fichier." }, + "itemsTransferred": { + "message": "Éléments transférés" + }, "maxFileSize": { "message": "La taille maximale du fichier est de 500 Mo." }, @@ -1497,7 +1509,7 @@ "message": "1 Go de stockage chiffré pour les fichiers joints." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "Stockage chiffré de $SIZE$ pour les pièces jointes.", "placeholders": { "size": { "content": "$1", @@ -1904,7 +1916,7 @@ "message": "Année d'expiration" }, "monthly": { - "message": "month" + "message": "mois" }, "expiration": { "message": "Expiration" @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Aucun identifiant unique trouvé." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Un mot de passe principal n’est plus requis pour les membres de l’organisation suivante. Veuillez confirmer le domaine ci-dessous auprès de l'administrateur de votre organisation." - }, "organizationName": { "message": "Nom de l'organisation" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorer" }, - "importData": { - "message": "Importer des données", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Erreur lors de l'importation" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Sécurité du compte" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,17 +5862,17 @@ "andMoreFeatures": { "message": "Et encore plus !" }, - "planDescPremium": { - "message": "Sécurité en ligne complète" + "advancedOnlineSecurity": { + "message": "Sécurité en ligne avancée" }, "upgradeToPremium": { "message": "Mettre à niveau vers Premium" }, "unlockAdvancedSecurity": { - "message": "Unlock advanced security features" + "message": "Débloquer les fonctionnalités de sécurité avancées" }, "unlockAdvancedSecurityDesc": { - "message": "A Premium subscription gives you more tools to stay secure and in control" + "message": "Un abonnement Premium vous donne plus d'outils pour rester en sécurité et en contrôle" }, "explorePremium": { "message": "Explorer Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Numéro de carte" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Votre organisation n'utilise plus les mots de passe principaux pour se connecter à Bitwarden. Pour continuer, vérifiez l'organisation et le domaine." + }, + "continueWithLogIn": { + "message": "Continuer avec la connexion" + }, + "doNotContinue": { + "message": "Ne pas continuer" + }, + "domain": { + "message": "Domaine" + }, + "keyConnectorDomainTooltip": { + "message": "Ce domaine stockera les clés de chiffrement de votre compte, alors assurez-vous que vous lui faites confiance. Si vous n'êtes pas sûr, vérifiez auprès de votre administrateur." + }, + "verifyYourOrganization": { + "message": "Vérifiez votre organisation pour vous connecter" + }, + "organizationVerified": { + "message": "Organisation vérifiée" + }, + "domainVerified": { + "message": "Domaine vérifié" + }, + "leaveOrganizationContent": { + "message": "Si vous ne vérifiez pas votre organisation, votre accès à l'organisation sera révoqué." + }, + "leaveNow": { + "message": "Quitter maintenant" + }, + "verifyYourDomainToLogin": { + "message": "Vérifiez votre domaine pour vous connecter" + }, + "verifyYourDomainDescription": { + "message": "Pour continuer à vous connecter, vérifiez ce domaine." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Pour continuer à vous connecter, vérifiez l'organisation et le domaine." + }, "sessionTimeoutSettingsAction": { "message": "Action à l’expiration" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Ce paramètre est géré par votre organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Votre organisation a réglé le délai d'expiration de session maximal à $HOURS$ heure(s) et $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Votre organisation a défini le délai d'expiration de session par défaut sur Immédiat." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Votre organisation a défini le délai d'expiration de session par défaut sur Au verrouillage du système." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Votre organisation a défini le délai d'expiration de session par défaut sur Au redémarrage du navigateur." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Le délai d'expiration de session maximal ne peut pas dépasser $HOURS$ heure(s) et $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Au redémarrage du navigateur" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Configurez une méthode de déverrouillage pour changer le délai d'expiration de votre coffre" + }, + "upgrade": { + "message": "Mettre à jour" + }, + "leaveConfirmationDialogTitle": { + "message": "Êtes-vous sûr de vouloir quitter ?" + }, + "leaveConfirmationDialogContentOne": { + "message": "En refusant, vos éléments personnels resteront dans votre compte, mais vous perdrez l'accès aux éléments partagés et aux fonctionnalités de l'organisation." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contactez votre administrateur pour regagner l'accès." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Quitter $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Comment gérer mon coffre ?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transférer les éléments vers $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ exige que tous les éléments soient détenus par l’organisation pour des raisons de sécurité et de conformité. Cliquez sur Accepter pour transférer la propriété de vos éléments.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/gl/messages.json b/apps/browser/src/_locales/gl/messages.json index 5695ae16035..e83baff136f 100644 --- a/apps/browser/src/_locales/gl/messages.json +++ b/apps/browser/src/_locales/gl/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sincronizar" }, - "syncVaultNow": { - "message": "Sincronizar caixa forte agora" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Última sincronización:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Aplicación web de Bitwarden" }, - "importItems": { - "message": "Importar entradas" - }, "select": { "message": "Seleccionar" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exportar dende" }, - "exportVault": { - "message": "Exportar caixa forte" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Formato de ficheiro" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Anexo gardado" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Arquivo" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Selecciona un arquivo" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "O tamaño máximo é de 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Non se atopou ningún identificador único." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorar" }, - "importData": { - "message": "Importar datos", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Erro ó importar" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Seguridade da conta" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notificacións" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json index 67ca71338b2..64dddc4db04 100644 --- a/apps/browser/src/_locales/he/messages.json +++ b/apps/browser/src/_locales/he/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "סנכרן" }, - "syncVaultNow": { - "message": "סנכרן את הכספת עכשיו" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "סנכרון אחרון:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "יישום הרשת של Bitwarden" }, - "importItems": { - "message": "ייבא פריטים" - }, "select": { "message": "בחר" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "ייצא מ־" }, - "exportVault": { - "message": "ייצא כספת" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "פורמט הקובץ" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "הצרופה נשמרה" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "קובץ" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "בחר קובץ" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "גודל הקובץ המרבי הוא 500MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "לא נמצא מזהה ייחודי." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "סיסמה ראשית אינה נדרשת עוד עבור חברים בארגון הבא. נא לאשר את הדומיין שלהלן עם מנהל הארגון שלך." - }, "organizationName": { "message": "שם הארגון" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "התעלם" }, - "importData": { - "message": "ייבא נתונים", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "שגיאת ייבוא" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "אבטחת החשבון" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "התראות" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "ועוד!" }, - "planDescPremium": { - "message": "השלם אבטחה מקוונת" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "שדרג לפרימיום" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "מספר כרטיס" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "פעולת פסק זמן" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json index b839e31cd96..4602d099b59 100644 --- a/apps/browser/src/_locales/hi/messages.json +++ b/apps/browser/src/_locales/hi/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "सिंक" }, - "syncVaultNow": { - "message": "Sync Vault Now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last Sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import Items" - }, "select": { "message": "चयन करें" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export Vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File Format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "अटैचमेंट बच गया है।" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "फ़ाइल" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "फ़ाइल का चयन करें।" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "अधिकतम फाइल आकार 500 MB है।" }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "उन्नत ऑनलाइन सुरक्षा" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json index da78924b1eb..3a42b22eb45 100644 --- a/apps/browser/src/_locales/hr/messages.json +++ b/apps/browser/src/_locales/hr/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sinkronizacija" }, - "syncVaultNow": { - "message": "Odmah sinkroniziraj trezor" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Posljednja sinkronizacija:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web trezor" }, - "importItems": { - "message": "Uvoz stavki" - }, "select": { "message": "Odaberi" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Izvezi iz" }, - "exportVault": { - "message": "Izvezi trezor" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format datoteke" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Privitak spremljen" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Datoteka" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Odaberi datoteku." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Najveća veličina datoteke je 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Nije nađen jedinstveni identifikator." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Glavna lozinka više nije obavezna za članove sljedeće organizacije. Provjeri prikazanu domenu sa svojim administratorom." - }, "organizationName": { "message": "Naziv Organizacije" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Zanemari" }, - "importData": { - "message": "Uvezi podatke", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Greška prilikom uvoza" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Sigurnost računa" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Obavijesti" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "I više!" }, - "planDescPremium": { - "message": "Dovrši online sigurnost" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": " Nadogradi na Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Broj kartice" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Radnja kod isteka" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json index 388a069e05a..dc34f3b2166 100644 --- a/apps/browser/src/_locales/hu/messages.json +++ b/apps/browser/src/_locales/hu/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Szinkronizálás" }, - "syncVaultNow": { - "message": "Széf szinkronizálása most" + "syncNow": { + "message": "Szinkronizálás most" }, "lastSync": { "message": "Utolsó szinkronizálás:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden webes alkalmazás" }, - "importItems": { - "message": "Elemek importálása" - }, "select": { "message": "Kiválaszt" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exportálás innen:" }, - "exportVault": { - "message": "Széf exportálása" + "export": { + "message": "Exportálás" + }, + "import": { + "message": "Importálás" }, "fileFormat": { "message": "Fájlformátum" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "A melléklet mentésre került." }, + "fixEncryption": { + "message": "Titkosítás javítása" + }, + "fixEncryptionTooltip": { + "message": "Ez a fájl elavult titkosítási módszert használ." + }, + "attachmentUpdated": { + "message": "A melléklet frissítésre került." + }, "file": { "message": "Fájl" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Válasszunk egy fájlt." }, + "itemsTransferred": { + "message": "Az elemek átvitelre kerültek." + }, "maxFileSize": { "message": "A naximális fájlméret 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Nincs egyedi azonosító." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A következő szervezet tagjai számára már nincs szükség mesterjelszóra. Erősítsük meg az alábbi tartományt a szervezet adminisztrátorával." - }, "organizationName": { "message": "Szervezet neve" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Mellőz" }, - "importData": { - "message": "Adatok importálása", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Importálási hiba" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Fiókbiztonság" }, + "phishingBlocker": { + "message": "Adathalászat blokkoló" + }, + "enablePhishingDetection": { + "message": "Adathalászat érzékelés" + }, + "enablePhishingDetectionDesc": { + "message": "Figyelmeztetés megjelenítése a gyanús adathalász webhelyek elérése előtt." + }, "notifications": { "message": "Értesítések" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "És még több!" }, - "planDescPremium": { - "message": "Teljes körű online biztonság" + "advancedOnlineSecurity": { + "message": "Bővített online biztonság" }, "upgradeToPremium": { "message": "Áttérés Prémium csomagra" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Kártya szám" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "A szervezet már nem használ mesterjelszavakat a Bitwardenbe bejelentkezéshez. A folytatáshoz ellenőrizzük a szervezetet és a tartományt." + }, + "continueWithLogIn": { + "message": "Folytatás bejelentkezéssel" + }, + "doNotContinue": { + "message": "Nincs folytatás" + }, + "domain": { + "message": "Tartomány" + }, + "keyConnectorDomainTooltip": { + "message": "Ez a tartomány tárolja a fiók titkosítási kulcsait, ezért győződjünk meg róla, hogy megbízunk-e benne. Ha nem vagyunk biztos benne, érdeklődjünk adminisztrátornál." + }, + "verifyYourOrganization": { + "message": "Szervezet ellenőrzése a bejelentkezéshez" + }, + "organizationVerified": { + "message": "A szervezet ellenőrzésre került." + }, + "domainVerified": { + "message": "A tartomány ellenőrzésre került." + }, + "leaveOrganizationContent": { + "message": "Ha nem ellenőrizzük a szervezetet, a szervezethez hozzáférés visszavonásra kerül." + }, + "leaveNow": { + "message": "Elhagyás most" + }, + "verifyYourDomainToLogin": { + "message": "Tartomány ellenőrzése a bejelentkezéshez" + }, + "verifyYourDomainDescription": { + "message": "A bejelentkezés folytatásához ellenőrizzük ezt a tartományt." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "A bejelentkezés folytatásához ellenőrizzük a szervezetet és a tartományt." + }, "sessionTimeoutSettingsAction": { "message": "Időkifutási művelet" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Ezt a beállítást a szervezet lezeli." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "A szervezet a munkamenet maximális munkamenet időkifutását $HOURS$ órára és $MINUTES$ percre állította be.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "A szervezet az alapértelmezett munkamenet időkifutást Azonnal értékre állította." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "A szervezet az alapértelmezett munkamenet időkifutástr Rendszerzár be értékre állította." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "A szervezet az alapértelmezett munkamenet időkifutást a Böngésző újraindításakor értékre állította." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "A maximális időtúllépés nem haladhatja meg a $HOURS$ óra és $MINUTES$ perc értéket.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Böngésző újraindításkor" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Állítsunk be egy feloldási módot a széf időkifutási műveletének módosításához." + }, + "upgrade": { + "message": "Áttérés" + }, + "leaveConfirmationDialogTitle": { + "message": "Biztosan szeretnénk kilépni?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Az elutasítással a személyes elemek a fiókban maradnak, de elveszítjük hozzáférést a megosztott elemekhez és a szervezeti funkciókhoz." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Lépjünk kapcsolatba az adminisztrátorral a hozzáférés visszaszerzéséért." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "$ORGANIZATION$ elhagyása", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Hogyan kezeljem a széfet?" + }, + "transferItemsToOrganizationTitle": { + "message": "Elemek átvitele $ORGANIZATION$ szervezethez", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ megköveteli, hogy minden elem a szervezet tulajdonában legyen a biztonság és a megfelelőség érdekében. Kattintás az elfogadásra az elemek tulajdonjogának átruházásához.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Átvitel elfogadása" + }, + "declineAndLeave": { + "message": "Elutasítás és kilépés" + }, + "whyAmISeeingThis": { + "message": "Miért látható ez?" } } diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json index d18b25c51ed..36df2e733f8 100644 --- a/apps/browser/src/_locales/id/messages.json +++ b/apps/browser/src/_locales/id/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sinkronisasi" }, - "syncVaultNow": { - "message": "Sinkronkan Brankas Sekarang" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Sinkronisasi Terakhir:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Aplikasi web Bitwarden" }, - "importItems": { - "message": "Impor Item" - }, "select": { "message": "Pilih" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Ekspor dari" }, - "exportVault": { - "message": "Ekspor Brankas" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format Berkas" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Lampiran telah disimpan." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Berkas" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Pilih berkas." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Ukuran berkas maksimal adalah 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Tidak ada pengidentifikasi unik yang ditemukan." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Sebuah kata sandi utama tidak lagi dibutuhkan untuk para anggota dari organisasi berikut. Silakan konfirmasi domain berikut kepada pengelola organisasi Anda." - }, "organizationName": { "message": "Nama organisasi" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Abaikan" }, - "importData": { - "message": "Impor data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Kesalahan impor" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Keamanan akun" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Pemberitahuan" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json index 9bb75d7f449..a64b3e0f351 100644 --- a/apps/browser/src/_locales/it/messages.json +++ b/apps/browser/src/_locales/it/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sincronizza" }, - "syncVaultNow": { - "message": "Sincronizza cassaforte ora" + "syncNow": { + "message": "Sincronizza" }, "lastSync": { "message": "Ultima sincronizzazione:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Importa elementi" - }, "select": { "message": "Seleziona" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Esporta da" }, - "exportVault": { - "message": "Esporta cassaforte" + "export": { + "message": "Esporta" + }, + "import": { + "message": "Importa" }, "fileFormat": { "message": "Formato file" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Allegato salvato" }, + "fixEncryption": { + "message": "Correggi la crittografia" + }, + "fixEncryptionTooltip": { + "message": "Questo file usa un metodo di crittografia obsoleto." + }, + "attachmentUpdated": { + "message": "Allegato aggiornato" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Seleziona un file" }, + "itemsTransferred": { + "message": "Elementi trasferiti" + }, "maxFileSize": { "message": "La dimensione massima del file è 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Nessun identificatore univoco trovato." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "La password principale non è più richiesta per i membri dell'organizzazione. Per favore, conferma il dominio qui sotto con l'amministratore." - }, "organizationName": { "message": "Nome organizzazione" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignora" }, - "importData": { - "message": "Importa dati", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Errore di importazione" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Sicurezza dell'account" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifiche" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "E molto altro!" }, - "planDescPremium": { - "message": "Sicurezza online completa" + "advancedOnlineSecurity": { + "message": "Sicurezza online avanzata" }, "upgradeToPremium": { "message": "Aggiorna a Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Numero di carta" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "La tua organizzazione non utilizza più le password principali per accedere a Bitwarden. Per continuare, verifica l'organizzazione e il dominio." + }, + "continueWithLogIn": { + "message": "Accedi e continua" + }, + "doNotContinue": { + "message": "Non continuare" + }, + "domain": { + "message": "Dominio" + }, + "keyConnectorDomainTooltip": { + "message": "Questo dominio memorizzerà le chiavi di crittografia del tuo account, quindi assicurati di impostarlo come affidabile. Se non hai la certezza che lo sia, verifica con l'amministratore." + }, + "verifyYourOrganization": { + "message": "Verifica la tua organizzazione per accedere" + }, + "organizationVerified": { + "message": "Organizzazione verificata" + }, + "domainVerified": { + "message": "Dominio verificato" + }, + "leaveOrganizationContent": { + "message": "Se non verifichi l'organizzazione, il tuo accesso sarà revocato." + }, + "leaveNow": { + "message": "Abbandona" + }, + "verifyYourDomainToLogin": { + "message": "Verifica il tuo dominio per accedere" + }, + "verifyYourDomainDescription": { + "message": "Per continuare con l'accesso, verifica questo dominio." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Per continuare con l'accesso, verifica l'organizzazione e il dominio." + }, "sessionTimeoutSettingsAction": { "message": "Azione al timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Questa impostazione è gestita dalla tua organizzazione." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "La tua organizzazione ha impostato $HOURS$ ora/e e $MINUTES$ minuto/i come durata massima della sessione.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "In base alle impostazioni della tua organizzazione, la sessione terminerà immediatamente." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "In base alle impostazioni della tua organizzazione, la sessione terminerà al blocco del dispositivo." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "In base alle impostazioni della tua organizzazione, la sessione terminerà ogni volta che la pagina sarà chiusa o ricaricata." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "La durata della sessione non può superare $HOURS$ ora/e e $MINUTES$ minuto/i", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Al riavvio del browser" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Imposta un metodo di sblocco per modificare l'azione al timeout" + }, + "upgrade": { + "message": "Aggiorna" + }, + "leaveConfirmationDialogTitle": { + "message": "Vuoi davvero abbandonare?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Se rifiuti, tutti gli elementi esistenti resteranno nel tuo account, ma perderai l'accesso agli oggetti condivisi e alle funzioni organizzative." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contatta il tuo amministratore per recuperare l'accesso." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Abbandona $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Come si gestisce la cassaforte?" + }, + "transferItemsToOrganizationTitle": { + "message": "Trasferisci gli elementi in $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ richiede che tutti gli elementi siano di proprietà dell'organizzazione per motivi di conformità e sicurezza. Clicca su 'Accetta' per trasferire la proprietà.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accetta il trasferimento" + }, + "declineAndLeave": { + "message": "Rifiuta e abbandona" + }, + "whyAmISeeingThis": { + "message": "Perché vedo questo avviso?" } } diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json index 0b0883beaf3..e89c58ae4c3 100644 --- a/apps/browser/src/_locales/ja/messages.json +++ b/apps/browser/src/_locales/ja/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "同期" }, - "syncVaultNow": { - "message": "保管庫を同期する" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "前回の同期:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden ウェブアプリ" }, - "importItems": { - "message": "アイテムのインポート" - }, "select": { "message": "選択" }, @@ -551,7 +548,7 @@ "message": "保管庫を検索" }, "resetSearch": { - "message": "Reset search" + "message": "検索をリセット" }, "archiveNoun": { "message": "アーカイブ", @@ -565,28 +562,28 @@ "message": "アーカイブ解除" }, "itemsInArchive": { - "message": "Items in archive" + "message": "アーカイブ済みのアイテム" }, "noItemsInArchive": { - "message": "No items in archive" + "message": "アーカイブにアイテムがありません" }, "noItemsInArchiveDesc": { - "message": "Archived items will appear here and will be excluded from general search results and autofill suggestions." + "message": "アーカイブされたアイテムはここに表示され、通常の検索結果および自動入力の候補から除外されます。" }, "itemWasSentToArchive": { - "message": "Item was sent to archive" + "message": "アイテムはアーカイブに送信されました" }, "itemUnarchived": { - "message": "Item was unarchived" + "message": "アイテムはアーカイブから解除されました" }, "archiveItem": { - "message": "Archive item" + "message": "アイテムをアーカイブ" }, "archiveItemConfirmDesc": { - "message": "Archived items are excluded from general search results and autofill suggestions. Are you sure you want to archive this item?" + "message": "アーカイブされたアイテムはここに表示され、通常の検索結果および自動入力の候補から除外されます。このアイテムをアーカイブしますか?" }, "upgradeToUseArchive": { - "message": "A premium membership is required to use Archive." + "message": "アーカイブを使用するにはプレミアムメンバーシップが必要です。" }, "edit": { "message": "編集" @@ -595,13 +592,13 @@ "message": "表示" }, "viewAll": { - "message": "View all" + "message": "すべて表示" }, "showAll": { - "message": "Show all" + "message": "すべて表示" }, "viewLess": { - "message": "View less" + "message": "表示を減らす" }, "viewLogin": { "message": "ログイン情報を表示" @@ -749,7 +746,7 @@ "message": "マスターパスワードが間違っています" }, "invalidMasterPasswordConfirmEmailAndHost": { - "message": "Invalid master password. Confirm your email is correct and your account was created on $HOST$.", + "message": "マスターパスワードが正しくありません。メールアドレスが正しく、アカウントが $HOST$ で作成されたことを確認してください。", "placeholders": { "host": { "content": "$1", @@ -806,10 +803,10 @@ "message": "ロック時" }, "onIdle": { - "message": "On system idle" + "message": "アイドル時" }, "onSleep": { - "message": "On system sleep" + "message": "スリープ時" }, "onRestart": { "message": "ブラウザ再起動時" @@ -955,7 +952,7 @@ "message": "以下の手順に従ってログインを完了してください。" }, "followTheStepsBelowToFinishLoggingInWithSecurityKey": { - "message": "Follow the steps below to finish logging in with your security key." + "message": "セキュリティキーでログインを完了するには、以下の手順に従ってください。" }, "restartRegistration": { "message": "登録を再度始める" @@ -1140,7 +1137,7 @@ "message": "このパスワードを Bitwarden に保存しますか?" }, "notificationAddSave": { - "message": "保存する" + "message": "保存" }, "notificationViewAria": { "message": "View $ITEMNAME$, opens in new window", @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "エクスポート元" }, - "exportVault": { - "message": "保管庫のエクスポート" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "ファイル形式" @@ -1407,25 +1407,25 @@ "message": "さらに詳しく" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "暗号化設定の更新中にエラーが発生しました。" }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "暗号化設定を更新する" }, "updateEncryptionSettingsDesc": { "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "続行するには本人確認を行ってください" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "マスターパスワードを入力" }, "updateSettings": { - "message": "Update settings" + "message": "設定を更新" }, "later": { - "message": "Later" + "message": "後で" }, "authenticatorKeyTotp": { "message": "認証キー (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "添付ファイルを保存しました。" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "ファイル" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "ファイルを選択してください。" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "最大ファイルサイズ: 500 MB" }, @@ -1473,7 +1485,7 @@ "message": "サービスが利用できません" }, "legacyEncryptionUnsupported": { - "message": "Legacy encryption is no longer supported. Please contact support to recover your account." + "message": "従来の暗号化はサポートされていません。アカウントを復元するにはサポートにお問い合わせください。" }, "premiumMembership": { "message": "プレミアム会員" @@ -1497,7 +1509,7 @@ "message": "1GB の暗号化されたファイルストレージ" }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ の暗号化されたファイルストレージ。", "placeholders": { "size": { "content": "$1", @@ -1740,16 +1752,16 @@ "message": "Confirm autofill" }, "confirmAutofillDesc": { - "message": "This site doesn't match your saved login details. Before you fill in your login credentials, make sure it's a trusted site." + "message": "このサイトは保存されたログイン情報と一致しません。ログイン情報を入力する前に、信頼できるサイトであることを確認してください。" }, "showInlineMenuLabel": { "message": "フォームフィールドに自動入力の候補を表示する" }, "howDoesBitwardenProtectFromPhishing": { - "message": "How does Bitwarden protect your data from phishing?" + "message": "Bitwarden はどのようにフィッシングからデータを保護しますか?" }, "currentWebsite": { - "message": "Current website" + "message": "現在のウェブサイト" }, "autofillAndAddWebsite": { "message": "Autofill and add this website" @@ -1904,7 +1916,7 @@ "message": "有効期限年" }, "monthly": { - "message": "month" + "message": "月" }, "expiration": { "message": "有効期限" @@ -2078,7 +2090,7 @@ "description": "Header for new text send" }, "newItemHeaderFileSend": { - "message": "New File Send", + "message": "新しい Send ファイル", "description": "Header for new file send" }, "editItemHeaderLogin": { @@ -2090,7 +2102,7 @@ "description": "Header for edit card item type" }, "editItemHeaderIdentity": { - "message": "Edit Identity", + "message": "ID を編集", "description": "Header for edit identity item type" }, "editItemHeaderNote": { @@ -2106,7 +2118,7 @@ "description": "Header for edit text send" }, "editItemHeaderFileSend": { - "message": "Edit File Send", + "message": "Send ファイルを編集", "description": "Header for edit file send" }, "viewItemHeaderLogin": { @@ -2118,7 +2130,7 @@ "description": "Header for view card item type" }, "viewItemHeaderIdentity": { - "message": "View Identity", + "message": "ID を表示", "description": "Header for view identity item type" }, "viewItemHeaderNote": { @@ -2252,7 +2264,7 @@ "message": "種類" }, "allItems": { - "message": "全てのアイテム" + "message": "すべてのアイテム" }, "noPasswordsInList": { "message": "表示するパスワードがありません" @@ -2334,7 +2346,7 @@ "message": "Bitwarden のロックを解除するための PIN コードを設定します。アプリから完全にログアウトすると、PIN 設定はリセットされます。" }, "setPinCode": { - "message": "You can use this PIN to unlock Bitwarden. Your PIN will be reset if you ever fully log out of the application." + "message": "Bitwarden のロックを解除するために PIN を使用使用することができます。アプリからログアウトすると PIN はリセットされます。" }, "pinRequired": { "message": "PIN コードが必要です。" @@ -2755,7 +2767,7 @@ } }, "atRiskChangePrompt": { - "message": "Your password for this site is at-risk. $ORGANIZATION$ has requested that you change it.", + "message": "このサイトのパスワードは危険です。$ORGANIZATION$ が変更を要求しています。", "placeholders": { "organization": { "content": "$1", @@ -3100,7 +3112,7 @@ "message": "この機能を使用するにはメールアドレスを確認する必要があります。ウェブ保管庫でメールアドレスを確認できます。" }, "masterPasswordSuccessfullySet": { - "message": "Master password successfully set" + "message": "マスターパスワードを設定しました" }, "updatedMasterPassword": { "message": "マスターパスワードを更新しました" @@ -3240,14 +3252,11 @@ "copyCustomFieldNameNotUnique": { "message": "一意の識別子が見つかりませんでした。" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "組織名" }, "keyConnectorDomain": { - "message": "Key Connector domain" + "message": "キーコネクタードメイン" }, "leaveOrganization": { "message": "組織から脱退する" @@ -3304,7 +3313,7 @@ } }, "exportingOrganizationVaultFromPasswordManagerWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported.", + "message": "$ORGANIZATION$ に関連付けられた組織の保管庫のみがエクスポートされます。", "placeholders": { "organization": { "content": "$1", @@ -3328,7 +3337,7 @@ "message": "復号エラー" }, "errorGettingAutoFillData": { - "message": "Error getting autofill data" + "message": "自動入力データの取得に失敗しました" }, "couldNotDecryptVaultItemsBelow": { "message": "Bitwarden は以下の保管庫のアイテムを復号できませんでした。" @@ -3883,7 +3892,7 @@ "message": "ログインを完了できません" }, "loginOnTrustedDeviceOrAskAdminToAssignPassword": { - "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + "message": "信頼できるデバイスにログインするか、管理者にパスワードの割り当てを依頼する必要があります。" }, "ssoIdentifierRequired": { "message": "組織の SSO ID が必要です。" @@ -3947,7 +3956,7 @@ "message": "信頼されたデバイス" }, "trustOrganization": { - "message": "Trust organization" + "message": "組織を信頼" }, "trust": { "message": "信頼する" @@ -3968,7 +3977,7 @@ "message": "This organization has an Enterprise policy that will enroll you in account recovery. Enrollment will allow organization administrators to change your password. Only proceed if you recognize this organization and the fingerprint phrase displayed below matches the organization's fingerprint." }, "trustUser": { - "message": "Trust user" + "message": "ユーザーを信頼" }, "sendsTitleNoItems": { "message": "機密情報を安全に送信", @@ -4206,10 +4215,6 @@ "ignore": { "message": "無視" }, - "importData": { - "message": "データのインポート", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "インポート エラー" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "アカウントのセキュリティ" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "通知" }, @@ -4918,7 +4932,7 @@ "message": "モバイルアプリを入手" }, "getTheMobileAppDesc": { - "message": "Access your passwords on the go with the Bitwarden mobile app." + "message": "Bitwarden モバイルアプリで外出先からでもパスワードにアクセスしましょう。" }, "getTheDesktopApp": { "message": "デスクトップアプリを入手" @@ -5305,7 +5319,7 @@ "message": "アカウントへのアクセスが要求されました" }, "confirmAccessAttempt": { - "message": "Confirm access attempt for $EMAIL$", + "message": "$EMAIL$ のログイン試行を確認", "placeholders": { "email": { "content": "$1", @@ -5692,16 +5706,16 @@ "message": "保管庫へようこそ!" }, "phishingPageTitleV2": { - "message": "Phishing attempt detected" + "message": "フィッシングの試行が検出されました" }, "phishingPageSummary": { - "message": "The site you are attempting to visit is a known malicious site and a security risk." + "message": "訪問しようとしているサイトは既知の悪意のあるサイトであり、セキュリティ上のリスクがあります。" }, "phishingPageCloseTabV2": { "message": "このタブを閉じる" }, "phishingPageContinueV2": { - "message": "Continue to this site (not recommended)" + "message": "このサイトに進む (非推奨)" }, "phishingPageExplanation1": { "message": "This site was found in ", @@ -5757,13 +5771,13 @@ "message": "With cards, easily autofill payment forms securely and accurately." }, "newIdentityNudgeTitle": { - "message": "Simplify creating accounts" + "message": "アカウント作成を簡素化" }, "newIdentityNudgeBody": { "message": "With identities, quickly autofill long registration or contact forms." }, "newNoteNudgeTitle": { - "message": "Keep your sensitive data safe" + "message": "機密データを安全に保管" }, "newNoteNudgeBody": { "message": "With notes, securely store sensitive data like banking or insurance details." @@ -5785,7 +5799,7 @@ "message": "パスワードをすばやく作成" }, "generatorNudgeBodyOne": { - "message": "Easily create strong and unique passwords by clicking on", + "message": "クリックすることで、強力でユニークなパスワードを簡単に作成できます", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, @@ -5808,7 +5822,7 @@ "message": "You do not have permissions to view this page. Try logging in with a different account." }, "wasmNotSupported": { - "message": "WebAssembly is not supported on your browser or is not enabled. WebAssembly is required to use the Bitwarden app.", + "message": "WebAssembly はお使いのブラウザでサポートされていないか、有効になっていません。WebAssembly は Bitwarden アプリを使用するために必要です。", "description": "'WebAssembly' is a technical term and should not be translated." }, "showMore": { @@ -5837,7 +5851,7 @@ "message": "認証機を内蔵" }, "secureFileStorage": { - "message": "Secure file storage" + "message": "セキュアなファイルストレージ" }, "emergencyAccess": { "message": "緊急アクセス" @@ -5846,10 +5860,10 @@ "message": "Breach monitoring" }, "andMoreFeatures": { - "message": "And more!" + "message": "などなど!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "プレミアムにアップグレード" @@ -5864,10 +5878,10 @@ "message": "Explore Premium" }, "loadingVault": { - "message": "Loading vault" + "message": "保管庫の読み込み中" }, "vaultLoaded": { - "message": "Vault loaded" + "message": "保管庫が読み込まれました" }, "settingDisabledByPolicy": { "message": "This setting is disabled by your organization's policy.", @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "カード番号" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "タイムアウト時のアクション" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json index ebb01f095f3..6e1a5c556d9 100644 --- a/apps/browser/src/_locales/ka/messages.json +++ b/apps/browser/src/_locales/ka/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "სინქრონიზაცია" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "ბოლო სინქი:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "არჩევა" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "ფაილი" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "აირჩიეთ ფაილი" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "იგნორი" }, - "importData": { - "message": "მონაცემების შემოტანა", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "შემოტანის შეცდომა" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "ანგარიშის უსაფრთხოება" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "გაფრთხილებები" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json index 684a04d9175..02945c6ff9b 100644 --- a/apps/browser/src/_locales/km/messages.json +++ b/apps/browser/src/_locales/km/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sync" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json index 05ea413b522..5d37dbf41b7 100644 --- a/apps/browser/src/_locales/kn/messages.json +++ b/apps/browser/src/_locales/kn/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "ಸಿಂಕ್" }, - "syncVaultNow": { - "message": "ವಾಲ್ಟ್ ಅನ್ನು ಈಗ ಸಿಂಕ್ ಮಾಡಿ" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "ಕೊನೆಯ ಸಿಂಕ್" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "ವಸ್ತುಗಳನ್ನು ಆಮದು ಮಾಡಿ" - }, "select": { "message": "ಆಯ್ಕೆಮಾಡಿ" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "ರಫ್ತು ವಾಲ್ಟ್" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "ಕಡತದ ಮಾದರಿ" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "ಲಗತ್ತನ್ನು ಉಳಿಸಲಾಗಿದೆ." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "ಫೈಲ್" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "ಕಡತವನ್ನು ಆಯ್ಕೆಮಾಡು." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "ಗರಿಷ್ಠ ಫೈಲ್ ಗಾತ್ರ 500 ಎಂಬಿ." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json index b35fe8283f7..247133a4295 100644 --- a/apps/browser/src/_locales/ko/messages.json +++ b/apps/browser/src/_locales/ko/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "동기화" }, - "syncVaultNow": { - "message": "지금 보관함 동기화" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "마지막 동기화:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden 웹 앱" }, - "importItems": { - "message": "항목 가져오기" - }, "select": { "message": "선택" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "~(으)로부터 내보내기" }, - "exportVault": { - "message": "보관함 내보내기" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "파일 형식" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "첨부 파일을 저장했습니다." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "파일" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "파일을 선택하세요." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "최대 파일 크기는 500MB입니다." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "고유 식별자를 찾을 수 없습니다." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "무시하기" }, - "importData": { - "message": "데이터 가져오기", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "가져오기 오류" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "계정 보안" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "알림" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index 7fcc2df0330..25c830574c6 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sinchronizuoti" }, - "syncVaultNow": { - "message": "Sinchronizuoti saugyklą dabar" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Paskutinis sinchronizavimas:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden Interneto svetainė" }, - "importItems": { - "message": "Importuoti elementus" - }, "select": { "message": "Pasirinkti" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Eksportuoti saugyklą" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Failo formatas" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Priedas išsaugotas" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Failas" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Pasirinkite failą." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Didžiausias failo dydis – 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Unikalus identifikatorius nerastas." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignoruoti" }, - "importData": { - "message": "Importuoti duomenis", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Importavimo klaida" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Paskyros saugumas" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Pranešimai" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json index a719320fc8c..65c4591db80 100644 --- a/apps/browser/src/_locales/lv/messages.json +++ b/apps/browser/src/_locales/lv/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sinhronizēt" }, - "syncVaultNow": { - "message": "Sinhronizēt glabātavu" + "syncNow": { + "message": "Sinhronizēt tūlīt" }, "lastSync": { "message": "Pēdējā sinhronizēšana:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden tīmekļa lietotne" }, - "importItems": { - "message": "Ievietot vienumus" - }, "select": { "message": "Izvēlēties" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Izgūt no" }, - "exportVault": { - "message": "Izgūt glabātavas saturu" + "export": { + "message": "Izgūt" + }, + "import": { + "message": "Ievietot" }, "fileFormat": { "message": "Datnes veids" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Pielikums tika saglabāts." }, + "fixEncryption": { + "message": "Salabot šifrēšanu" + }, + "fixEncryptionTooltip": { + "message": "Šī datne izmanto novecojušu šifrēšanas veidu." + }, + "attachmentUpdated": { + "message": "Pielikums atjaunināts" + }, "file": { "message": "Datne" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Atlasīt datni" }, + "itemsTransferred": { + "message": "Vienumi pārcelti" + }, "maxFileSize": { "message": "Lielākais pieļaujamais datnes izmērs ir 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Nav atrasts neviens neatkārtojams identifikators" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Galvenā parole vairs nav nepieciešama turpmāk minētās apvienības dalībniekiem. Lūgums saskaņot zemāk esošo domēnu ar savas apvienības pārvaldītāju." - }, "organizationName": { "message": "Apvienības nosaukums" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Neņemt vērā" }, - "importData": { - "message": "Ievietot datus", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Ievietošanas kļūda" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Konta drošība" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Paziņojumi" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "Un vēl!" }, - "planDescPremium": { - "message": "Pilnīga drošība tiešsaistē" + "advancedOnlineSecurity": { + "message": "Izvērsta tiešsaistes drošība" }, "upgradeToPremium": { "message": "Uzlabot uz Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Kartes numurs" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Apvienība vairs neizmanto galvenās paroles, lai pieteiktos Bitwarden. Lai turpinātu, jāapliecina apvienība un domēns." + }, + "continueWithLogIn": { + "message": "Turpināt ar pieteikšanos" + }, + "doNotContinue": { + "message": "Neturpināt" + }, + "domain": { + "message": "Domēns" + }, + "keyConnectorDomainTooltip": { + "message": "Šajā domēnā tiks glabātas konta šifrēšanas atslēgas, tādēļ jāpārliecinās par uzticamību. Ja nav pārliecības, jāsazinās ar savu pārvaldītāju." + }, + "verifyYourOrganization": { + "message": "Jāapliecina apvienība, lai pieteiktos" + }, + "organizationVerified": { + "message": "Apvienība apliecināta" + }, + "domainVerified": { + "message": "Domēns ir apliecināts" + }, + "leaveOrganizationContent": { + "message": "Ja neapliecināsi apvienību, tiks atsaukta piekļuve tai." + }, + "leaveNow": { + "message": "Pamest tagad" + }, + "verifyYourDomainToLogin": { + "message": "Jāapliecina domēns, lai pieteiktos" + }, + "verifyYourDomainDescription": { + "message": "Lai turpinātu pieteikšanos, jāapliecina šis domēns." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Lai turpinātu pieteikšanos, jāapliecina apvienība un domēns." + }, "sessionTimeoutSettingsAction": { "message": "Noildzes darbība" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Uzlabot" + }, + "leaveConfirmationDialogTitle": { + "message": "Vai tiešām pamest?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Pēc noraidīšanas personīgie vienumi paliks Tavā kontā, bet Tu zaudēsi piekļvuvi kopīgotajiem vienumiem un apvienību iespējām." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Jāsazinās ar savu pārvaldītāju, lai atgūtu piekļuvi." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Pamest $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Kā es varu pārvaldīt savu glabātavu?" + }, + "transferItemsToOrganizationTitle": { + "message": "Pārcelt vienumus uz $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json index b72d82cd93f..895ae7baa01 100644 --- a/apps/browser/src/_locales/ml/messages.json +++ b/apps/browser/src/_locales/ml/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "സമന്വയിപ്പിക്കുക" }, - "syncVaultNow": { - "message": "വാൾട് ഇപ്പോൾ സമന്വയിപ്പിക്കുക" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "അവസാന സമന്വയം:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "ഇനങ്ങൾ ഇമ്പോർട് ചെയ്യുക" - }, "select": { "message": "തിരഞ്ഞെടുക്കുക" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "വാൾട് എക്സ്പോർട്" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "ഫയൽ ഫോർമാറ്റ്" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "അറ്റാച്ചുമെന്റ് സംരക്ഷിച്ചു." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "ഫയൽ" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "ഒരു ഫയൽ തിരഞ്ഞെടുക്കുക" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "പരമാവധി ഫയൽ വലുപ്പം 500 MB ആണ്." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/mr/messages.json b/apps/browser/src/_locales/mr/messages.json index 03c3b4a70ae..2f2f9bbefe8 100644 --- a/apps/browser/src/_locales/mr/messages.json +++ b/apps/browser/src/_locales/mr/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "संकालन" }, - "syncVaultNow": { - "message": "तिजोरी संकालन आता करा" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "शेवटचे संकालन:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "वस्तू आयात करा" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/my/messages.json b/apps/browser/src/_locales/my/messages.json index 684a04d9175..02945c6ff9b 100644 --- a/apps/browser/src/_locales/my/messages.json +++ b/apps/browser/src/_locales/my/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sync" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json index 6226d26312f..027e28d1f2c 100644 --- a/apps/browser/src/_locales/nb/messages.json +++ b/apps/browser/src/_locales/nb/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synkroniser" }, - "syncVaultNow": { - "message": "Synkroniser hvelvet nå" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Forrige synkronisering:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwardens nett-app" }, - "importItems": { - "message": "Importer elementer" - }, "select": { "message": "Velg" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Eksporter fra" }, - "exportVault": { - "message": "Eksporter hvelvet" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Filformat" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Vedlegget har blitt lagret." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Fil" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Velg en fil." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Den maksimale filstørrelsen er 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Ingen unik identifikator ble funnet." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organisasjonens navn" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorer" }, - "importData": { - "message": "Importer data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Importeringsfeil" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Kontosikkerhet" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Varsler" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/ne/messages.json b/apps/browser/src/_locales/ne/messages.json index 684a04d9175..02945c6ff9b 100644 --- a/apps/browser/src/_locales/ne/messages.json +++ b/apps/browser/src/_locales/ne/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sync" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json index 04e6e1bb7f3..f91f28e5c1c 100644 --- a/apps/browser/src/_locales/nl/messages.json +++ b/apps/browser/src/_locales/nl/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synchroniseren" }, - "syncVaultNow": { - "message": "Kluis nu synchroniseren" + "syncNow": { + "message": "Nu synchroniseren" }, "lastSync": { "message": "Laatste synchronisatie:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden webapp" }, - "importItems": { - "message": "Items importeren" - }, "select": { "message": "Selecteren" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exporteren vanuit" }, - "exportVault": { - "message": "Kluis exporteren" + "export": { + "message": "Exporteren" + }, + "import": { + "message": "Importeren" }, "fileFormat": { "message": "Bestandsindeling" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Bijlage opgeslagen" }, + "fixEncryption": { + "message": "Versleuteling repareren" + }, + "fixEncryptionTooltip": { + "message": "Dit bestand gebruikt een verouderde versleutelingsmethode." + }, + "attachmentUpdated": { + "message": "Bijlagen bijgewerkt" + }, "file": { "message": "Bestand" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Selecteer een bestand" }, + "itemsTransferred": { + "message": "Items overgedragen" + }, "maxFileSize": { "message": "Maximale bestandsgrootte is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Geen unieke id gevonden." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Voor leden van de volgende organisatie is een hoofdwachtwoord niet langer nodig. Bevestig het domein hieronder met de beheerder van je organisatie." - }, "organizationName": { "message": "Organisatienaam" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Negeren" }, - "importData": { - "message": "Data importeren", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Fout bij importeren" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Accountbeveiliging" }, + "phishingBlocker": { + "message": "Phishing-blocker" + }, + "enablePhishingDetection": { + "message": "Phishingdetectie" + }, + "enablePhishingDetectionDesc": { + "message": "Waarschuwing weergeven voor het benaderen van vermoedelijke phishingsites" + }, "notifications": { "message": "Meldingen" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "En meer!" }, - "planDescPremium": { - "message": "Online beveiliging voltooien" + "advancedOnlineSecurity": { + "message": "Geavanceerde online beveiliging" }, "upgradeToPremium": { "message": "Opwaarderen naar Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Kaartnummer" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Je organisatie maakt niet langer gebruik van hoofdwachtwoorden om in te loggen op Bitwarden. Controleer de organisatie en het domein om door te gaan." + }, + "continueWithLogIn": { + "message": "Doorgaan met inloggen" + }, + "doNotContinue": { + "message": "Niet verder gaan" + }, + "domain": { + "message": "Domein" + }, + "keyConnectorDomainTooltip": { + "message": "Dit domein zal de encryptiesleutels van je account opslaan, dus zorg ervoor dat je het vertrouwt. Als je het niet zeker weet, controleer dan bij je beheerder." + }, + "verifyYourOrganization": { + "message": "Verifieer je organisatie om in te loggen" + }, + "organizationVerified": { + "message": "Organisatie geverifieerd" + }, + "domainVerified": { + "message": "Domein geverifieerd" + }, + "leaveOrganizationContent": { + "message": "Als je je organisatie niet verifieert, wordt je toegang tot de organisatie ingetrokken." + }, + "leaveNow": { + "message": "Nu verlaten" + }, + "verifyYourDomainToLogin": { + "message": "Verifieer je domein om in te loggen" + }, + "verifyYourDomainDescription": { + "message": "Bevestig dit domein om verder te gaan met inloggen." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Bevestig organisatie en domein om verder te gaan met inloggen." + }, "sessionTimeoutSettingsAction": { "message": "Time-out actie" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Deze instelling wordt beheerd door je organisatie." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Je organisatie heeft de maximale sessietime-out ingesteld op $HOURS$ uur en $MINUTES$ minuten.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Je organisatie heeft de standaard sessie time-out ingesteld op Onmiddellijk." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Je organisatie heeft de standaard sessietime-out ingesteld op Systeem vergrendelen." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Je organisatie heeft de standaard sessietime-out ingesteld op Browser verversen." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximale time-out kan niet langer zijn dan $HOURS$ uur en $MINUTES$ minu(u) t(en)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Browser herstart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Stel een ontgrendelingsmethode in om je kluis time-out actie te wijzigen" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Weet je zeker dat je wilt verlaten?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Door te weigeren, blijven je persoonlijke items in je account, maar verlies je toegang tot gedeelde items en organisatiefunctionaliteit." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Neem contact op met je beheerder om weer toegang te krijgen." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "$ORGANIZATION$ verlaten", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Hoe beheer ik mijn kluis?" + }, + "transferItemsToOrganizationTitle": { + "message": "Items overdragen aan $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ vereist dat alle items eigendom zijn van de organisatie voor veiligheid en naleving. Klik op accepteren voor het overdragen van eigendom van je items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Overdacht accepteren" + }, + "declineAndLeave": { + "message": "Weigeren en verlaten" + }, + "whyAmISeeingThis": { + "message": "Waarom zie ik dit?" } } diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json index 684a04d9175..02945c6ff9b 100644 --- a/apps/browser/src/_locales/nn/messages.json +++ b/apps/browser/src/_locales/nn/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sync" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/or/messages.json b/apps/browser/src/_locales/or/messages.json index 684a04d9175..02945c6ff9b 100644 --- a/apps/browser/src/_locales/or/messages.json +++ b/apps/browser/src/_locales/or/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sync" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index 24729a2331b..c8e452d7190 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synchronizacja" }, - "syncVaultNow": { - "message": "Synchronizuj sejf" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Ostatnia synchronizacja:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Aplikacja internetowa Bitwarden" }, - "importItems": { - "message": "Importuj elementy" - }, "select": { "message": "Wybierz" }, @@ -598,7 +595,7 @@ "message": "Pokaż wszystko" }, "showAll": { - "message": "Show all" + "message": "Pokaż wszystko" }, "viewLess": { "message": "Pokaż mniej" @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Eksportuj z" }, - "exportVault": { - "message": "Eksportuj sejf" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format pliku" @@ -1407,10 +1407,10 @@ "message": "Dowiedz się więcej" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Wystąpił błąd podczas aktualizacji ustawień szyfrowania." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Zaktualizuj ustawienia szyfrowania" }, "updateEncryptionSettingsDesc": { "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." @@ -1425,7 +1425,7 @@ "message": "Update settings" }, "later": { - "message": "Later" + "message": "Później" }, "authenticatorKeyTotp": { "message": "Klucz uwierzytelniający (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Załącznik został zapisany" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Plik" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Wybierz plik" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maksymalny rozmiar pliku to 500 MB." }, @@ -1904,7 +1916,7 @@ "message": "Rok wygaśnięcia" }, "monthly": { - "message": "month" + "message": "miesiąc" }, "expiration": { "message": "Data wygaśnięcia" @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Nie znaleziono unikatowego identyfikatora." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hasło główne nie jest już wymagane dla członków następującej organizacji. Potwierdź poniższą domenę z administratorem organizacji." - }, "organizationName": { "message": "Nazwa organizacji" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignoruj" }, - "importData": { - "message": "Importuj dane", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Błąd importowania" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Bezpieczeństwo konta" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Powiadomienia" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "I jeszcze więcej!" }, - "planDescPremium": { - "message": "Pełne bezpieczeństwo w Internecie" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Ulepsz do Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Numer karty" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domena" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Akcja przekroczenia limitu czasu" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json index c7a5300a873..20c1a7e098d 100644 --- a/apps/browser/src/_locales/pt_BR/messages.json +++ b/apps/browser/src/_locales/pt_BR/messages.json @@ -68,7 +68,7 @@ "message": "Uma dica de senha principal pode ajudá-lo(a) a lembrá-la caso você esqueça." }, "masterPassHintText": { - "message": "Se você esquecer sua senha, a dica de senha pode ser enviada ao seu e-mail. $CURRENT$/$MAXIMUM$ caracteres máximos.", + "message": "Se você esquecer sua senha, a dica da senha pode ser enviada ao seu e-mail. $CURRENT$ do máximo de $MAXIMUM$ caracteres.", "placeholders": { "current": { "content": "$1", @@ -436,8 +436,8 @@ "sync": { "message": "Sincronizar" }, - "syncVaultNow": { - "message": "Sincronizar cofre agora" + "syncNow": { + "message": "Sincronizar agora" }, "lastSync": { "message": "Última sincronização:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Aplicativo web do Bitwarden" }, - "importItems": { - "message": "Importar itens" - }, "select": { "message": "Selecionar" }, @@ -688,16 +685,16 @@ "message": "Opções de desbloqueio" }, "unlockMethodNeededToChangeTimeoutActionDesc": { - "message": "Configure um método de desbloqueio para alterar a ação do tempo limite do cofre." + "message": "Configure um método de desbloqueio para alterar a ação do limite de tempo do cofre." }, "unlockMethodNeeded": { "message": "Configure um método de desbloqueio nas Configurações" }, "sessionTimeoutHeader": { - "message": "Tempo limite da sessão" + "message": "Limite de tempo da sessão" }, "vaultTimeoutHeader": { - "message": "Tempo limite do cofre" + "message": "Limite de tempo do cofre" }, "otherOptions": { "message": "Outras opções" @@ -758,10 +755,10 @@ } }, "vaultTimeout": { - "message": "Tempo limite do cofre" + "message": "Limite de tempo do cofre" }, "vaultTimeout1": { - "message": "Tempo limite" + "message": "Limite de tempo" }, "lockNow": { "message": "Bloquear agora" @@ -1126,7 +1123,7 @@ "message": "Clique em itens na tela do Cofre para preencher automaticamente" }, "clickToAutofill": { - "message": "Clique em um item para preenchê-lo automaticamente" + "message": "Clicar itens na sugestão para preenchê-lo" }, "clearClipboard": { "message": "Limpar área de transferência", @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exportar de" }, - "exportVault": { - "message": "Exportar cofre" + "export": { + "message": "Exportar" + }, + "import": { + "message": "Importar" }, "fileFormat": { "message": "Formato do arquivo" @@ -1367,7 +1367,7 @@ "message": "Confirmar exportação do cofre" }, "exportWarningDesc": { - "message": "Esta exportação contém os dados do seu cofre em um formato não criptografado. Você não deve armazenar ou enviar o arquivo exportado por canais inseguros (como e-mail). Apague o arquivo imediatamente após terminar de usá-lo." + "message": "Esta exportação contém os dados do seu cofre em um formato sem criptografia. Você não deve armazenar ou enviar o arquivo exportado por canais inseguros (como e-mail). Apague o arquivo imediatamente após terminar de usá-lo." }, "encExportKeyWarningDesc": { "message": "Esta exportação criptografa seus dados usando a chave de criptografia da sua conta. Se você rotacionar a chave de criptografia da sua conta, você deve exportar novamente, já que você não será capaz de descriptografar este arquivo de exportação." @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Anexo salvo" }, + "fixEncryption": { + "message": "Corrigir criptografia" + }, + "fixEncryptionTooltip": { + "message": "Este arquivo está usando um método de criptografia desatualizado." + }, + "attachmentUpdated": { + "message": "Anexo atualizado" + }, "file": { "message": "Arquivo" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Selecione um arquivo" }, + "itemsTransferred": { + "message": "Itens transferidos" + }, "maxFileSize": { "message": "O tamanho máximo do arquivo é de 500 MB." }, @@ -1569,7 +1581,7 @@ "message": "Pedir biometria ao abrir" }, "authenticationTimeout": { - "message": "Tempo limite da autenticação atingido" + "message": "Limite de tempo da autenticação atingido" }, "authenticationSessionTimedOut": { "message": "A sessão de autenticação expirou. Reinicie o processo de autenticação." @@ -2405,10 +2417,10 @@ "message": "Personalização do cofre" }, "vaultTimeoutAction": { - "message": "Ação do tempo limite do cofre" + "message": "Ação do limite de tempo do cofre" }, "vaultTimeoutAction1": { - "message": "Ação do tempo limite" + "message": "Ação do limite de tempo" }, "lock": { "message": "Bloquear", @@ -2440,10 +2452,10 @@ "message": "Já tem uma conta?" }, "vaultTimeoutLogOutConfirmation": { - "message": "Desconectar-se irá remover todo o acesso ao seu cofre e requirirá autenticação online após o período de tempo limite. Tem certeza de que deseja usar esta configuração?" + "message": "Desconectar-se irá remover todo o acesso ao seu cofre e requirirá autenticação online após o período de limite de tempo. Tem certeza de que deseja usar esta configuração?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Confirmação da ação do tempo limite" + "message": "Confirmação da ação do limite de tempo" }, "autoFillAndSave": { "message": "Preencher automaticamente e salvar" @@ -3158,10 +3170,10 @@ "message": "Minutos" }, "vaultTimeoutPolicyAffectingOptions": { - "message": "Os requisitos de política empresarial foram aplicados às suas opções de tempo limite" + "message": "Os requisitos de política empresarial foram aplicados às suas opções de limite de tempo" }, "vaultTimeoutPolicyInEffect": { - "message": "As políticas da sua organização configuraram o seu máximo permitido do tempo limite do cofre para $HOURS$ hora(s) e $MINUTES$ minuto(s).", + "message": "As políticas da sua organização configuraram o seu máximo permitido do limite de tempo do cofre para $HOURS$ hora(s) e $MINUTES$ minuto(s).", "placeholders": { "hours": { "content": "$1", @@ -3187,7 +3199,7 @@ } }, "vaultTimeoutPolicyMaximumError": { - "message": "Tempo limite excede a restrição definida pela sua organização: máximo de $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "message": "Limite de tempo excede a restrição definida pela sua organização: máximo de $HOURS$ hora(s) e $MINUTES$ minuto(s)", "placeholders": { "hours": { "content": "$1", @@ -3200,7 +3212,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "As políticas da sua organização estão afetando o tempo limite do seu cofre. \nO tempo limite máximo permitido para o cofre é $HOURS$ hora(s) e $MINUTES$ minuto(s). A ação de tempo limite do seu cofre está configurada como $ACTION$.", + "message": "As políticas da sua organização estão afetando o limite de tempo do seu cofre. \nO limite de tempo máximo permitido para o cofre é $HOURS$ hora(s) e $MINUTES$ minuto(s). A ação de limite de tempo do seu cofre está configurada como $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -3217,7 +3229,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "As políticas da sua organização configuraram a ação do tempo limite do seu cofre para $ACTION$.", + "message": "As políticas da sua organização configuraram a ação do limite de tempo do seu cofre para $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -3226,7 +3238,7 @@ } }, "vaultTimeoutTooLarge": { - "message": "O tempo limite do seu cofre excede as restrições estabelecidas pela sua organização." + "message": "O limite de tempo do seu cofre excede as restrições estabelecidas pela sua organização." }, "vaultExportDisabled": { "message": "Exportação de cofre indisponível" @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Nenhum identificador único encontrado." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Uma senha principal não é mais necessária para os membros da seguinte organização. Confirme o domínio abaixo com o administrador da sua organização." - }, "organizationName": { "message": "Nome da organização" }, @@ -3497,7 +3506,7 @@ } }, "forwarderNoAccountId": { - "message": "Não foi possível obter o ID da conta de e-mail mascarado $SERVICENAME$.", + "message": "Não é possível obter o ID da conta de e-mail mascarado do $SERVICENAME$.", "description": "Displayed when the forwarding service fails to return an account ID.", "placeholders": { "servicename": { @@ -3656,7 +3665,7 @@ "message": "Solicitação enviada" }, "loginRequestApprovedForEmailOnDevice": { - "message": "Solicitação de autenticação aprovada para $EMAIL$ em $DEVICE$", + "message": "Solicitação de acesso aprovada para $EMAIL$ em $DEVICE$", "placeholders": { "email": { "content": "$1", @@ -3669,7 +3678,7 @@ } }, "youDeniedLoginAttemptFromAnotherDevice": { - "message": "Você negou uma tentativa de autenticação de outro dispositivo. Se era você, tente se conectar com o dispositivo novamente." + "message": "Você negou uma tentativa de acesso de outro dispositivo. Se era você, tente se conectar com o dispositivo novamente." }, "device": { "message": "Dispositivo" @@ -3693,7 +3702,7 @@ "message": "Senha fraca identificada e encontrada em um vazamento de dados. Use uma senha forte e única para proteger a sua conta. Tem certeza de que deseja usar essa senha?" }, "checkForBreaches": { - "message": "Conferir vazamentos de dados conhecidos por esta senha" + "message": "Conferir se esta senha vazou ao público" }, "important": { "message": "Importante:" @@ -3838,13 +3847,13 @@ "message": "Tipo do dispositivo" }, "loginRequest": { - "message": "Solicitação de autenticação" + "message": "Solicitação de acesso" }, "thisRequestIsNoLongerValid": { "message": "Esta solicitação não é mais válida." }, "loginRequestHasAlreadyExpired": { - "message": "A solicitação de autenticação já expirou." + "message": "A solicitação de acesso já expirou." }, "justNow": { "message": "Agora há pouco" @@ -3935,7 +3944,7 @@ "message": "Problemas para acessar?" }, "loginApproved": { - "message": "Autenticação aprovada" + "message": "Acesso aprovado" }, "userEmailMissing": { "message": "E-mail do usuário ausente" @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorar" }, - "importData": { - "message": "Importar dados", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Erro ao importar" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Segurança da conta" }, + "phishingBlocker": { + "message": "Bloqueador de phishing" + }, + "enablePhishingDetection": { + "message": "Detecção de phishing" + }, + "enablePhishingDetectionDesc": { + "message": "Exiba um aviso antes de acessar sites suspeitos de phishing" + }, "notifications": { "message": "Notificações" }, @@ -5299,7 +5313,7 @@ "message": "Ações da conta" }, "showNumberOfAutofillSuggestions": { - "message": "Mostrar número de sugestões de preenchimento automático de credenciais no ícone da extensão" + "message": "Mostrar número de sugestões de preenchimento no ícone da extensão" }, "accountAccessRequested": { "message": "Acesso à conta solicitado" @@ -5350,7 +5364,7 @@ "message": "Tentar novamente" }, "vaultCustomTimeoutMinimum": { - "message": "Tempo limite mínimo personalizado é 1 minuto." + "message": "Limite de tempo mínimo personalizado é 1 minuto." }, "fileSavedToDevice": { "message": "Arquivo salvo no dispositivo. Gerencie a partir dos downloads do seu dispositivo." @@ -5413,7 +5427,7 @@ "message": "Desbloqueie seu cofre em segundos" }, "unlockVaultDesc": { - "message": "Você pode personalizar suas configurações de desbloqueio e tempo limite para acessar seu cofre mais rapidamente." + "message": "Você pode personalizar suas configurações de desbloqueio e limite de tempo para acessar seu cofre mais rapidamente." }, "unlockPinSet": { "message": "PIN de desbloqueio configurado" @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "E mais!" }, - "planDescPremium": { - "message": "Segurança on-line completa" + "advancedOnlineSecurity": { + "message": "Segurança on-line avançada" }, "upgradeToPremium": { "message": "Faça upgrade para o Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Número do cartão" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "A sua organização não está mais usando senhas principais para se conectar ao Bitwarden. Para continuar, verifique a organização e o domínio." + }, + "continueWithLogIn": { + "message": "Continuar acessando" + }, + "doNotContinue": { + "message": "Não continuar" + }, + "domain": { + "message": "Domínio" + }, + "keyConnectorDomainTooltip": { + "message": "Este domínio armazenará as chaves de criptografia da sua conta, então certifique-se que confia nele. Se não tiver certeza, verifique com o seu administrador." + }, + "verifyYourOrganization": { + "message": "Verifique sua organização para se conectar" + }, + "organizationVerified": { + "message": "Organização verificada" + }, + "domainVerified": { + "message": "Domínio verificado" + }, + "leaveOrganizationContent": { + "message": "Se você não verificar a sua organização, o seu acesso à organização será revogado." + }, + "leaveNow": { + "message": "Sair agora" + }, + "verifyYourDomainToLogin": { + "message": "Verifique seu domínio para se conectar" + }, + "verifyYourDomainDescription": { + "message": "Para continuar se conectando, verifique este domínio." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Para continuar se conectando, verifique a organização e o domínio." + }, "sessionTimeoutSettingsAction": { - "message": "Ação do tempo limite" + "message": "Ação do limite de tempo" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Esta configuração é gerenciada pela sua organização." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "A sua organização configurou o limite de tempo máximo da sessão para $HOURS$ hora(s) e $MINUTES$ minuto(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "A sua organização configurou o limite de tempo padrão da sessão para imediatamente." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "A sua organização configurou o limite de tempo padrão da sessão para ser no bloqueio do sistema." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "A sua organização configurou o limite de tempo padrão da sessão para ser no reinício do navegador." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "O limite de tempo máximo não pode exceder $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "No reinício do navegador" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Configure um método de desbloqueio para alterar a ação do limite de tempo" + }, + "upgrade": { + "message": "Fazer upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Tem certeza de que quer sair?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Se recusar, seus itens pessoais continuarão na sua conta, mas você perderá o acesso aos itens compartilhados e os recursos de organização." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Entre em contato com o seu administrador para recuperar o acesso." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Sair de $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Como gerencio meu cofre?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transferir itens para $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ exige que todos os itens sejam propriedade da organização por segurança e conformidade. Clique em aceitar para transferir a propriedade dos seus itens.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Aceitar transferência" + }, + "declineAndLeave": { + "message": "Recusar e sair" + }, + "whyAmISeeingThis": { + "message": "Por que estou vendo isso?" } } diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json index c03f3038f98..e0cbf43a813 100644 --- a/apps/browser/src/_locales/pt_PT/messages.json +++ b/apps/browser/src/_locales/pt_PT/messages.json @@ -200,7 +200,7 @@ "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": { - "message": "Preencher automaticamente" + "message": "Preenchimento automático" }, "autoFillLogin": { "message": "Preencher automaticamente credencial" @@ -436,8 +436,8 @@ "sync": { "message": "Sincronizar" }, - "syncVaultNow": { - "message": "Sincronizar o cofre agora" + "syncNow": { + "message": "Sincronizar agora" }, "lastSync": { "message": "Última sincronização:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Aplicação web Bitwarden" }, - "importItems": { - "message": "Importar itens" - }, "select": { "message": "Selecionar" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exportar de" }, - "exportVault": { - "message": "Exportar cofre" + "export": { + "message": "Exportar" + }, + "import": { + "message": "Importar" }, "fileFormat": { "message": "Formato do ficheiro" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Anexo guardado" }, + "fixEncryption": { + "message": "Corrigir encriptação" + }, + "fixEncryptionTooltip": { + "message": "Este ficheiro está a utilizar um método de encriptação desatualizado." + }, + "attachmentUpdated": { + "message": "Anexo atualizado" + }, "file": { "message": "Ficheiro" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Selecionar um ficheiro" }, + "itemsTransferred": { + "message": "Itens transferidos" + }, "maxFileSize": { "message": "O tamanho máximo do ficheiro é de 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Não foi encontrado um identificador único." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Já não é necessária uma palavra-passe mestra para os membros da seguinte organização. Por favor, confirme o domínio abaixo com o administrador da sua organização." - }, "organizationName": { "message": "Nome da organização" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorar" }, - "importData": { - "message": "Importar dados", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Erro de importação" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Segurança da conta" }, + "phishingBlocker": { + "message": "Bloqueador de phishing" + }, + "enablePhishingDetection": { + "message": "Deteção de phishing" + }, + "enablePhishingDetectionDesc": { + "message": "Mostrar aviso antes de aceder a sites suspeitos de phishing" + }, "notifications": { "message": "Notificações" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "E muito mais!" }, - "planDescPremium": { - "message": "Segurança total online" + "advancedOnlineSecurity": { + "message": "Segurança online avançada" }, "upgradeToPremium": { "message": "Atualizar para o Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Número do cartão" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "A sua organização já não utiliza palavras-passe mestras para iniciar sessão no Bitwarden. Para continuar, verifique a organização e o domínio." + }, + "continueWithLogIn": { + "message": "Continuar com o início de sessão" + }, + "doNotContinue": { + "message": "Não continuar" + }, + "domain": { + "message": "Domínio" + }, + "keyConnectorDomainTooltip": { + "message": "Este domínio armazenará as chaves de encriptação da sua conta, portanto certifique-se de que confia nele. Se não tiver a certeza, verifique com o seu administrador." + }, + "verifyYourOrganization": { + "message": "Verifique a sua organização para iniciar sessão" + }, + "organizationVerified": { + "message": "Organização verificada" + }, + "domainVerified": { + "message": "Domínio verificado" + }, + "leaveOrganizationContent": { + "message": "Se não verificar a sua organização, o seu acesso à organização será revogado." + }, + "leaveNow": { + "message": "Sair agora" + }, + "verifyYourDomainToLogin": { + "message": "Verifique o seu domínio para iniciar sessão" + }, + "verifyYourDomainDescription": { + "message": "Para continuar com o início de sessão, verifique este domínio." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Para continuar com o início de sessão, verifique a organização e o domínio." + }, "sessionTimeoutSettingsAction": { "message": "Ação de tempo limite" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Esta configuração é gerida pela sua organização." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "A sua organização definiu o tempo limite máximo da sessão para $HOURS$ hora(s) e $MINUTES$ minuto(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "A sua organização definiu o tempo limite predefinido da sessão como Imediatamente." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "A sua organização definiu o tempo limite de sessão predefinido para Ao bloquear o sistema." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "A sua organização definiu o tempo limite de sessão predefinido para Ao reiniciar o navegador." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "O tempo limite máximo não pode ser superior a $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Ao reiniciar o navegador" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Configure um método de desbloqueio para alterar a sua ação de tempo limite" + }, + "upgrade": { + "message": "Atualizar" + }, + "leaveConfirmationDialogTitle": { + "message": "Tem a certeza de que pretende sair?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ao recusar, os seus itens pessoais permanecerão na sua conta, mas perderá o acesso aos itens partilhados e às funcionalidades da organização." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Entre em contacto com o seu administrador para recuperar o acesso." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Sair de $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Como posso gerir o meu cofre?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transferir itens para $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ exige que todos os itens sejam propriedade da organização por motivos de segurança e conformidade. Clique em Aceitar para transferir a propriedade dos seus itens.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Aceitar transferência" + }, + "declineAndLeave": { + "message": "Recusar e sair" + }, + "whyAmISeeingThis": { + "message": "Porque é que estou a ver isto?" } } diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json index 85db8d8a4f3..d6d32804dcb 100644 --- a/apps/browser/src/_locales/ro/messages.json +++ b/apps/browser/src/_locales/ro/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sincronizare" }, - "syncVaultNow": { - "message": "Sincronizare seif acum" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Ultima sincronizare:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Aplicația web Bitwarden" }, - "importItems": { - "message": "Import de articole" - }, "select": { "message": "Selectare" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export seif" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format fișier" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Atașamentul a fost salvat" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Fișier" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Selectare fișier" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Mărimea maximă a fișierului este de 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Nu a fost găsit niciun identificator unic." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json index 58f2b372459..575b29350fd 100644 --- a/apps/browser/src/_locales/ru/messages.json +++ b/apps/browser/src/_locales/ru/messages.json @@ -436,7 +436,7 @@ "sync": { "message": "Синхронизация" }, - "syncVaultNow": { + "syncNow": { "message": "Синхронизировать" }, "lastSync": { @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Веб-приложение Bitwarden" }, - "importItems": { - "message": "Импорт элементов" - }, "select": { "message": "Выбрать" }, @@ -931,7 +928,7 @@ "message": "Вы вышли из своего аккаунта." }, "loginExpired": { - "message": "Истек срок действия вашего сеанса." + "message": "Истек срок действия вашей сессии." }, "logIn": { "message": "Войти" @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Экспорт из" }, - "exportVault": { - "message": "Экспорт хранилища" + "export": { + "message": "Экспорт" + }, + "import": { + "message": "Импорт" }, "fileFormat": { "message": "Формат файла" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Вложение сохранено." }, + "fixEncryption": { + "message": "Исправить шифрование" + }, + "fixEncryptionTooltip": { + "message": "Этот файл использует устаревший метод шифрования." + }, + "attachmentUpdated": { + "message": "Вложение обновлено" + }, "file": { "message": "Файл" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Выбрать файл" }, + "itemsTransferred": { + "message": "Элементы переданы" + }, "maxFileSize": { "message": "Максимальный размер файла 500 МБ." }, @@ -1572,7 +1584,7 @@ "message": "Таймаут аутентификации" }, "authenticationSessionTimedOut": { - "message": "Сеанс аутентификации завершился по времени. Пожалуйста, попробуйте войти еще раз." + "message": "Сессия аутентификации завершилась по времени. Пожалуйста, перезапустите процесс авторизации." }, "verificationCodeEmailSent": { "message": "Отправлено письмо подтверждения на $EMAIL$.", @@ -3109,10 +3121,10 @@ "message": "Обновить мастер-пароль" }, "updateMasterPasswordWarning": { - "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущий сеанс будет завершен, потребуется повторный вход. Сеансы на других устройствах могут оставаться активными в течение одного часа." + "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущая сессия будет завершена, потребуется повторный вход. Сессии на других устройствах могут оставаться активными в течение одного часа." }, "updateWeakMasterPasswordWarning": { - "message": "Ваш мастер-пароль не соответствует требованиям политики вашей организации. Для доступа к хранилищу вы должны обновить свой мастер-пароль прямо сейчас. При этом текущий сеанс будет завершен и потребуется повторная авторизация. Сеансы на других устройствах могут оставаться активными в течение часа." + "message": "Ваш мастер-пароль не соответствует требованиям политики вашей организации. Для доступа к хранилищу вы должны обновить свой мастер-пароль прямо сейчас. При этом текущая сессия будет завершена и потребуется повторная авторизация. Сессии на других устройствах могут оставаться активными в течение часа." }, "tdeDisabledMasterPasswordRequired": { "message": "В вашей организации отключено шифрование доверенных устройств. Пожалуйста, установите мастер-пароль для доступа к вашему хранилищу." @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Уникальный идентификатор не найден." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Мастер-пароль больше не требуется для членов следующей организации. Пожалуйста, подтвердите указанный ниже домен у администратора вашей организации." - }, "organizationName": { "message": "Название организации" }, @@ -3268,7 +3277,7 @@ "message": "Показать количество символов" }, "sessionTimeout": { - "message": "Время вашего сеанса истекло. Пожалуйста, вернитесь и попробуйте войти снова." + "message": "Время вашей сессии истекло. Пожалуйста, вернитесь и попробуйте войти снова." }, "exportingPersonalVaultTitle": { "message": "Экспорт личного хранилища" @@ -4206,10 +4215,6 @@ "ignore": { "message": "Игнорировать" }, - "importData": { - "message": "Импорт данных", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Ошибка импорта" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Безопасность аккаунта" }, + "phishingBlocker": { + "message": "Блокировщик фишинга" + }, + "enablePhishingDetection": { + "message": "Обнаружение фишинга" + }, + "enablePhishingDetectionDesc": { + "message": "Отображать предупреждение перед доступом к подозрительным фишинговым сайтам" + }, "notifications": { "message": "Уведомления" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "И многое другое!" }, - "planDescPremium": { - "message": "Полная онлайн-защищенность" + "advancedOnlineSecurity": { + "message": "Расширенная онлайн-безопасность" }, "upgradeToPremium": { "message": "Обновить до Премиум" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Номер карты" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Ваша организация больше не использует мастер-пароли для входа в Bitwarden. Чтобы продолжить, подтвердите организацию и домен." + }, + "continueWithLogIn": { + "message": "Продолжить с логином" + }, + "doNotContinue": { + "message": "Не продолжать" + }, + "domain": { + "message": "Домен" + }, + "keyConnectorDomainTooltip": { + "message": "В этом домене будут храниться ключи шифрования вашего аккаунта, поэтому убедитесь, что вы ему доверяете. Если вы не уверены, обратитесь к своему администратору." + }, + "verifyYourOrganization": { + "message": "Подтвердите свою организацию для входа" + }, + "organizationVerified": { + "message": "Организация подтверждена" + }, + "domainVerified": { + "message": "Домен верифицирован" + }, + "leaveOrganizationContent": { + "message": "Если вы не подтвердите свою организацию, ваш доступ к ней будет аннулирован." + }, + "leaveNow": { + "message": "Покинуть" + }, + "verifyYourDomainToLogin": { + "message": "Подтвердите свой домен для входа" + }, + "verifyYourDomainDescription": { + "message": "Чтобы продолжить с логином, подтвердите этот домен." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Чтобы продолжить с логином, подтвердите организацию и домен." + }, "sessionTimeoutSettingsAction": { "message": "Тайм-аут действия" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Эта настройка управляется вашей организацией." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "В вашей организации максимальный тайм-аут сессии установлен равным $HOURS$ час. и $MINUTES$ мин.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Ваша организация не установила тайм-аут сессии на Немедленно." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Ваша организация установила тайм-аут сессии по умолчанию на При блокировке системы." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Ваша организация установила тайм-аут сессии по умолчанию на При перезапуске браузера." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Максимальный тайм-аут не может превышать $HOURS$ час. и $MINUTES$ мин.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "При перезапуске браузера" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Установите способ разблокировки для изменения действия при истечении тайм-аута" + }, + "upgrade": { + "message": "Перейти" + }, + "leaveConfirmationDialogTitle": { + "message": "Вы уверены, что хотите покинуть?" + }, + "leaveConfirmationDialogContentOne": { + "message": "В случае отказа ваши личные данные останутся в вашем аккаунте, но вы потеряете доступ к общим элементам и возможностям организации." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Свяжитесь с вашим администратором для восстановления доступа." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Покинуть $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Как я могу управлять своим хранилищем?" + }, + "transferItemsToOrganizationTitle": { + "message": "Перенести элементы в $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ требует, чтобы все элементы принадлежали организации для обеспечения безопасности и соответствия требованиям. Нажмите Принять, чтобы передать собственность на ваши элементы.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Принять передачу" + }, + "declineAndLeave": { + "message": "Отклонить и покинуть" + }, + "whyAmISeeingThis": { + "message": "Почему я это вижу?" } } diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json index ead646d0ac0..d4fb646f471 100644 --- a/apps/browser/src/_locales/si/messages.json +++ b/apps/browser/src/_locales/si/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "සමමුහූර්තනය" }, - "syncVaultNow": { - "message": "සුරක්ෂිතාගාරය දැන් සමමුහුර්ත කරන්න" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "අවසන් සමමුහුර්ත කරන්න:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "ආනයන අයිතම" - }, "select": { "message": "තෝරන්න" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "අපනයන සුරක්ෂිතාගාරය" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "ගොනු ආකෘතිය" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "ඇමුණුම ගැලවීම කර ඇත." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "ගොනුව" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "ගොනුවක් තෝරන්න." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "උපරිම ගොනු ප්රමාණය 500 MB වේ." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "අද්විතීය හඳුනාගැනීමක් සොයාගත නොහැකි විය." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json index 70620e6c5e5..c32da5e7adb 100644 --- a/apps/browser/src/_locales/sk/messages.json +++ b/apps/browser/src/_locales/sk/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synchronizácia" }, - "syncVaultNow": { - "message": "Synchronizovať trezor teraz" + "syncNow": { + "message": "Synchronizovať teraz" }, "lastSync": { "message": "Posledná synchronizácia:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Webová aplikácia Bitwarden" }, - "importItems": { - "message": "Importovať položky" - }, "select": { "message": "Vybrať" }, @@ -803,7 +800,7 @@ "message": "4 hodiny" }, "onLocked": { - "message": "Keď je systém uzamknutý" + "message": "Pri uzamknutí systému" }, "onIdle": { "message": "Pri nečinnosti systému" @@ -812,7 +809,7 @@ "message": "V režime spánku" }, "onRestart": { - "message": "Po reštarte prehliadača" + "message": "Pri reštarte prehliadača" }, "never": { "message": "Nikdy" @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exportovať z" }, - "exportVault": { - "message": "Export trezoru" + "export": { + "message": "Exportovať" + }, + "import": { + "message": "Importovať" }, "fileFormat": { "message": "Formát súboru" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Príloha bola uložená" }, + "fixEncryption": { + "message": "Opraviť šifrovanie" + }, + "fixEncryptionTooltip": { + "message": "Tento súbor používa zastaranú metódu šifrovania." + }, + "attachmentUpdated": { + "message": "Príloha bola aktualizovaná" + }, "file": { "message": "Súbor" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Vyberte súbor" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximálna veľkosť súboru je 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Nenašiel sa žiadny jedinečný identifikátor." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hlavné heslo sa už nevyžaduje pre členov tejto organizácie. Nižšie uvedenú doménu potvrďte u správcu organizácie." - }, "organizationName": { "message": "Názov organizácie" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorovať" }, - "importData": { - "message": "Import údajov", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Chyba importu" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Zabezpečenie účtu" }, + "phishingBlocker": { + "message": "Blokovač phishingu" + }, + "enablePhishingDetection": { + "message": "Detekcia phishingu" + }, + "enablePhishingDetectionDesc": { + "message": "Zobrazí upozornenie pred prístupom na podozrivé phishingové stránky" + }, "notifications": { "message": "Upozornenia" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "A ešte viac!" }, - "planDescPremium": { - "message": "Úplné online zabezpečenie" + "advancedOnlineSecurity": { + "message": "Pokročilá online ochrana" }, "upgradeToPremium": { "message": "Upgradovať na Prémium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Číslo karty" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Vaša organizácia už nepoužíva hlavné heslá na prihlásenie do Bitwardenu. Ak chcete pokračovať, overte organizáciu a doménu." + }, + "continueWithLogIn": { + "message": "Pokračujte prihlásením" + }, + "doNotContinue": { + "message": "Nepokračovať" + }, + "domain": { + "message": "Doména" + }, + "keyConnectorDomainTooltip": { + "message": "Táto doména bude ukladať šifrovacie kľúče vášho účtu, takže sa uistite, že jej dôverujete. Ak si nie ste istí, overte si to u správcu." + }, + "verifyYourOrganization": { + "message": "Na prihlásenie overte organizáciu" + }, + "organizationVerified": { + "message": "Organizácia je overená" + }, + "domainVerified": { + "message": "Doména je overená" + }, + "leaveOrganizationContent": { + "message": "Ak organizáciu neoveríte, váš prístup k nej bude zrušený." + }, + "leaveNow": { + "message": "Opustiť teraz" + }, + "verifyYourDomainToLogin": { + "message": "Na prihlásenie overte doménu" + }, + "verifyYourDomainDescription": { + "message": "Na pokračovanie prihlásením, overte túto doménu." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Na pokračovanie prihlásením, overte organizáciu a doménu." + }, "sessionTimeoutSettingsAction": { "message": "Akcia pri vypršaní časového limitu" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Toto nastavenie spravuje vaša organizácia." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Vaša organizácia nastavila maximálny časový limit relácie na $HOURS$ hod. a $MINUTES$ min.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Vaša organizácia nastavila predvolený časový limit relácie na Okamžite." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Vaša organizácia nastavila predvolený časový limit relácie na Pri uzamknutí systému." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Vaša organizácia nastavila predvolený časový limit relácie na Pri reštarte prehliadača." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximálny časový limit nesmie prekročiť $HOURS$ hod. a $MINUTES$ min.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Pri reštarte prehliadača" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Nastavte metódu odomknutia, aby ste zmenili akciu pri vypršaní časového limitu" + }, + "upgrade": { + "message": "Upgradovať" + }, + "leaveConfirmationDialogTitle": { + "message": "Naozaj chcete odísť?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ak odmietnete, vaše osobné položky zostanú vo vašom účte, ale stratíte prístup k zdieľaným položkám a funkciám organizácie." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Ak chcete obnoviť prístup, obráťte sa na správcu." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Opustiť $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Ako môžem spravovať svoj trezor?" + }, + "transferItemsToOrganizationTitle": { + "message": "Prenos položiek do $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ vyžaduje, aby všetky položky boli vo vlastníctve organizácie z dôvodu bezpečnosti a dodržiavania predpisov. Ak chcete previesť vlastníctvo položiek, kliknite na tlačidlo Prijať.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Prijať prenos" + }, + "declineAndLeave": { + "message": "Zamietnuť a odísť" + }, + "whyAmISeeingThis": { + "message": "Prečo to vidím?" } } diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json index 4867f4b89f2..fcfa6857588 100644 --- a/apps/browser/src/_locales/sl/messages.json +++ b/apps/browser/src/_locales/sl/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sinhronizacija" }, - "syncVaultNow": { - "message": "Sinhroniziraj trezor zdaj" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Zadnja sinhronizacija:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Uvozi elemente" - }, "select": { "message": "Izberi" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Izvoz trezorja" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format datoteke" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Priponka je bila shranjena." }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Datoteka" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Izberite datoteko." }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Največja velikost datoteke je 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json index c04c113caca..fa3e918bc01 100644 --- a/apps/browser/src/_locales/sr/messages.json +++ b/apps/browser/src/_locales/sr/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Синхронизација" }, - "syncVaultNow": { - "message": "Одмах синхронизуј сеф" + "syncNow": { + "message": "Синхронизуј сада" }, "lastSync": { "message": "Задња синронизација:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden веб апликација" }, - "importItems": { - "message": "Увоз ставки" - }, "select": { "message": "Изабери" }, @@ -586,7 +583,7 @@ "message": "Архивиране ставке су искључене из општих резултата претраге и предлога за ауто попуњавање. Јесте ли сигурни да желите да архивирате ову ставку?" }, "upgradeToUseArchive": { - "message": "A premium membership is required to use Archive." + "message": "Премијум чланство је неопходно за употребу Архиве." }, "edit": { "message": "Уреди" @@ -598,10 +595,10 @@ "message": "Прегледај све" }, "showAll": { - "message": "Show all" + "message": "Прикажи све" }, "viewLess": { - "message": "View less" + "message": "Прикажи мање" }, "viewLogin": { "message": "Преглед пријаве" @@ -806,10 +803,10 @@ "message": "На закључавање система" }, "onIdle": { - "message": "On system idle" + "message": "На мировање система" }, "onSleep": { - "message": "On system sleep" + "message": "Након спавања система" }, "onRestart": { "message": "На покретање прегледача" @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Извоз од" }, - "exportVault": { - "message": "Извоз сефа" + "export": { + "message": "Извези" + }, + "import": { + "message": "Увоз" }, "fileFormat": { "message": "Формат датотеке" @@ -1407,25 +1407,25 @@ "message": "Сазнај више" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Дошло је до грешке при ажурирању подешавања шифровања." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Ажурирај своје поставке за шифровање" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Нова препоручена подешавања шифрирања побољшаће вашу сигурност налога. Унесите своју главну лозинку за ажурирање." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Да бисте наставили потврдите ваш идентитет" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Унети вашу главну лозинку" }, "updateSettings": { - "message": "Update settings" + "message": "Ажурирај подешавања" }, "later": { - "message": "Later" + "message": "Касније" }, "authenticatorKeyTotp": { "message": "Једнократни код" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Прилог је сачуван." }, + "fixEncryption": { + "message": "Поправи шифровање" + }, + "fixEncryptionTooltip": { + "message": "Ова датотека користи застарели метод шифровања." + }, + "attachmentUpdated": { + "message": "Прилог је ажуриран" + }, "file": { "message": "Датотека" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Изабери датотеку." }, + "itemsTransferred": { + "message": "Пренете ставке" + }, "maxFileSize": { "message": "Максимална величина је 500МБ." }, @@ -1497,7 +1509,7 @@ "message": "1ГБ шифровано складиште за прилоге." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ шифровано складиште за прилоге.", "placeholders": { "size": { "content": "$1", @@ -1904,7 +1916,7 @@ "message": "Година истека" }, "monthly": { - "message": "month" + "message": "месец" }, "expiration": { "message": "Истек" @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Није пронађен ниједан јединствени идентификатор." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Главна лозинка више није потребна за чланове следеће организације. Молимо потврдите домен са администратором организације." - }, "organizationName": { "message": "Назив организације" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Игнориши" }, - "importData": { - "message": "Увези податке", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Грешка при увозу" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Безбедност налога" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Обавештења" }, @@ -4942,7 +4956,7 @@ "message": "Премијум" }, "unlockFeaturesWithPremium": { - "message": "Unlock reporting, emergency access, and more security features with Premium." + "message": "Откључајте извештавање, приступ хитним случајевима и више безбедносних функција уз Премиум." }, "freeOrgsCannotUseAttachments": { "message": "Бесплатне организације не могу да користе прилоге" @@ -5848,26 +5862,26 @@ "andMoreFeatures": { "message": "И још више!" }, - "planDescPremium": { - "message": "Потпуна онлајн безбедност" + "advancedOnlineSecurity": { + "message": "Напредна онлајн безбедност" }, "upgradeToPremium": { "message": "Надоградите на Premium" }, "unlockAdvancedSecurity": { - "message": "Unlock advanced security features" + "message": "Откључајте напредне безбедносне функције" }, "unlockAdvancedSecurityDesc": { - "message": "A Premium subscription gives you more tools to stay secure and in control" + "message": "Премиум претплата вам даје више алата да останете сигурни и под контролом" }, "explorePremium": { - "message": "Explore Premium" + "message": "Прегледати Премијум" }, "loadingVault": { - "message": "Loading vault" + "message": "Учитавање сефа" }, "vaultLoaded": { - "message": "Vault loaded" + "message": "Сеф учитан" }, "settingDisabledByPolicy": { "message": "Ово подешавање је онемогућено смерницама ваше организације.", @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Број картице" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Ваша организација више не користи главне лозинке за пријаву на Bitwarden. Да бисте наставили, верификујте организацију и домен." + }, + "continueWithLogIn": { + "message": "Наставити са пријавом" + }, + "doNotContinue": { + "message": "Не настави" + }, + "domain": { + "message": "Домен" + }, + "keyConnectorDomainTooltip": { + "message": "Овај домен ће чувати кључеве за шифровање вашег налога, па се уверите да му верујете. Ако нисте сигурни, проверите код свог администратора." + }, + "verifyYourOrganization": { + "message": "Верификујте своју организацију да бисте се пријавили" + }, + "organizationVerified": { + "message": "Организација верификована" + }, + "domainVerified": { + "message": "Домен верификован" + }, + "leaveOrganizationContent": { + "message": "Ако не верификујете своју организацију, ваш приступ организацији ће бити опозван." + }, + "leaveNow": { + "message": "Напусти сада" + }, + "verifyYourDomainToLogin": { + "message": "Верификујте домен да бисте се пријавили" + }, + "verifyYourDomainDescription": { + "message": "Да бисте наставили са пријављивањем, верификујте овај домен." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Да бисте наставили са пријављивањем, верификујте организацију и домен." + }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "Акција тајмаута" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Овим подешавањем управља ваша организација." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Ваша организација је подесила максимално временско ограничење сесије на $HOURS$ сати и $MINUTES$ минута.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Ваша организација је поставила подразумевано временско ограничење сесије на Одмах." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Ваша организација је поставила подразумевано временско ограничење сесије на Блокирање система." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Ваша организација је поставила подразумевано временско ограничење сесије на При рестартовању прегледача." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Максимално временско ограничење не може да пређе $HOURS$ сат(а) и $MINUTES$ минут(а)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "На покретање прегледача" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Подесите метод откључавања да бисте променили радњу временског ограничења" + }, + "upgrade": { + "message": "Надогради" + }, + "leaveConfirmationDialogTitle": { + "message": "Да ли сте сигурни да желите да напустите?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ако одбијете, ваши лични предмети ће остати на вашем налогу, али ћете изгубити приступ дељеним ставкама и организационим функцијама." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Контактирајте свог администратора да бисте поново добили приступ." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Напустити $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Како да управљам својим сефом?" + }, + "transferItemsToOrganizationTitle": { + "message": "Премести ставке у $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ захтева да све ставке буду у власништву организације ради безбедности и усклађености. Кликните на прихвати да бисте пренели власништво над својим ставкама.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Прихвати трансфер" + }, + "declineAndLeave": { + "message": "Одбиј и напусти" + }, + "whyAmISeeingThis": { + "message": "Зашто видите ово?" } } diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json index a6cf12541fd..bb1e65f82fa 100644 --- a/apps/browser/src/_locales/sv/messages.json +++ b/apps/browser/src/_locales/sv/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Synkronisera" }, - "syncVaultNow": { - "message": "Synkronisera valv nu" + "syncNow": { + "message": "Synkronisera nu" }, "lastSync": { "message": "Senaste synkronisering:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden webbapp" }, - "importItems": { - "message": "Importera objekt" - }, "select": { "message": "Välj" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Exportera från" }, - "exportVault": { - "message": "Exportera valv" + "export": { + "message": "Exportera" + }, + "import": { + "message": "Importera" }, "fileFormat": { "message": "Filformat" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Bilaga sparad" }, + "fixEncryption": { + "message": "Fixa kryptering" + }, + "fixEncryptionTooltip": { + "message": "Denna fil använder en föråldrad krypteringsmetod." + }, + "attachmentUpdated": { + "message": "Bilaga uppdaterad" + }, "file": { "message": "Fil" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Välj en fil" }, + "itemsTransferred": { + "message": "Objekt överförda" + }, "maxFileSize": { "message": "Filen får vara maximalt 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Ingen unik identifierare hittades." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Ett huvudlösenord krävs inte längre för medlemmar i följande organisation. Vänligen bekräfta domänen nedan med din organisationsadministratör." - }, "organizationName": { "message": "Organisationsnamn" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignorera" }, - "importData": { - "message": "Importera data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Fel vid import" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Kontosäkerhet" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Aviseringar" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "och mer!" }, - "planDescPremium": { - "message": "Komplett säkerhet online" + "advancedOnlineSecurity": { + "message": "Avancerad säkerhet online" }, "upgradeToPremium": { "message": "Uppgradera till Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Kortnummer" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Din organisation använder inte längre huvudlösenord för att logga in på Bitwarden. För att fortsätta, verifiera organisationen och domänen." + }, + "continueWithLogIn": { + "message": "Fortsätt med inloggning" + }, + "doNotContinue": { + "message": "Fortsätt inte" + }, + "domain": { + "message": "Domän" + }, + "keyConnectorDomainTooltip": { + "message": "Denna domän kommer att lagra dina krypteringsnycklar, så se till att du litar på den. Om du inte är säker, kontrollera med din administratör." + }, + "verifyYourOrganization": { + "message": "Verifiera din organisation för att logga in" + }, + "organizationVerified": { + "message": "Organisation verifierad" + }, + "domainVerified": { + "message": "Domän verifierad" + }, + "leaveOrganizationContent": { + "message": "Om du inte verifierar din organisation kommer din åtkomst till organisationen att återkallas." + }, + "leaveNow": { + "message": "Lämna nu" + }, + "verifyYourDomainToLogin": { + "message": "Verifiera din domän för att logga in" + }, + "verifyYourDomainDescription": { + "message": "För att fortsätta med inloggning, verifiera denna domän." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "För att fortsätta logga in, verifiera organisationen och domänen." + }, "sessionTimeoutSettingsAction": { "message": "Tidsgränsåtgärd" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Den här inställningen hanteras av din organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Din organisation har ställt in maximal sessionstidsgräns till $HOURS$ timmar och $MINUTES$ minut(er).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Din organisation har ställt in tidsgräns för standardsessionen till Omedelbart." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Din organisation har ställt in tidsgräns för standardsessionen till Vid systemlåsning." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Din organisation har ställt in tidsgräns för standardsessionen till Vid omstart av webbläsaren." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximal tidsgräns får inte överstiga $HOURS$ timmar och $MINUTES$ minut(er)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Vid omstart av webbläsaren" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Ställ in en upplåsningsmetod för att ändra din tidsgränsåtgärd" + }, + "upgrade": { + "message": "Uppgradera" + }, + "leaveConfirmationDialogTitle": { + "message": "Är du säker på att du vill lämna?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Genom att avböja kommer dina personliga objekt att stanna på ditt konto, men du kommer att förlora åtkomst till delade objekt och organisationsfunktioner." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Kontakta administratören för att återfå åtkomst." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Lämna $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Hur hanterar jag mitt valv?" + }, + "transferItemsToOrganizationTitle": { + "message": "Överför objekt till $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ kräver att alla objekt ägs av organisationen för säkerhet och efterlevnad. Klicka på godkänn för att överföra ägarskapet för dina objekt.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Godkänn överföring" + }, + "declineAndLeave": { + "message": "Avböj och lämna" + }, + "whyAmISeeingThis": { + "message": "Varför ser jag det här?" } } diff --git a/apps/browser/src/_locales/ta/messages.json b/apps/browser/src/_locales/ta/messages.json index 934cb8e1a01..9856e53591d 100644 --- a/apps/browser/src/_locales/ta/messages.json +++ b/apps/browser/src/_locales/ta/messages.json @@ -32,7 +32,7 @@ "message": "ஒற்றை உள்நுழைவைப் பயன்படுத்தவும்" }, "yourOrganizationRequiresSingleSignOn": { - "message": "Your organization requires single sign-on." + "message": "உங்கள் நிறுவனத்திற்கு ஒற்றை உள்நுழைவு தேவை." }, "welcomeBack": { "message": "மீண்டும் வருக" @@ -436,8 +436,8 @@ "sync": { "message": "ஒத்திசை" }, - "syncVaultNow": { - "message": "இப்போது வால்ட்டை ஒத்திசை" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "கடைசி ஒத்திசைவு:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden வலை பயன்பாடு" }, - "importItems": { - "message": "உருப்படிகளை இறக்குமதிசெய்" - }, "select": { "message": "தேர்ந்தெடு" }, @@ -554,39 +551,39 @@ "message": "தேடலை மீட்டமை" }, "archiveNoun": { - "message": "Archive", + "message": "காப்பகம்", "description": "Noun" }, "archiveVerb": { - "message": "Archive", + "message": "காப்பகப்படுத்து", "description": "Verb" }, "unArchive": { - "message": "Unarchive" + "message": "காப்பகத்தை அகற்று" }, "itemsInArchive": { - "message": "Items in archive" + "message": "காப்பகத்தில் உள்ள உருப்படிகள்" }, "noItemsInArchive": { - "message": "No items in archive" + "message": "காப்பகத்தில் எந்த உருப்படிகளும் இல்லை" }, "noItemsInArchiveDesc": { - "message": "Archived items will appear here and will be excluded from general search results and autofill suggestions." + "message": "காப்பகப்படுத்தப்பட்ட உருப்படிகள் இங்கே தோன்றும், மேலும் அவை பொதுவான தேடல் முடிவுகள் மற்றும் தானியங்குநிரப்பு பரிந்துரைகளிலிருந்து விலக்கப்படும்." }, "itemWasSentToArchive": { - "message": "Item was sent to archive" + "message": "ஆவணம் காப்பகத்திற்கு அனுப்பப்பட்டது" }, "itemUnarchived": { - "message": "Item was unarchived" + "message": "காப்பகம் மீட்டெடுக்கப்பட்டது" }, "archiveItem": { - "message": "Archive item" + "message": "உருப்படியைக் காப்பகப்படுத்து" }, "archiveItemConfirmDesc": { - "message": "Archived items are excluded from general search results and autofill suggestions. Are you sure you want to archive this item?" + "message": "காப்பகப்படுத்தப்பட்ட உருப்படிகள் பொதுவான தேடல் முடிவுகள் மற்றும் தானியங்குநிரப்பு பரிந்துரைகளிலிருந்து விலக்கப்பட்டுள்ளன. இந்த உருப்படியை காப்பகப்படுத்த விரும்புகிறீர்களா?" }, "upgradeToUseArchive": { - "message": "A premium membership is required to use Archive." + "message": "காப்பகத்தைப் பயன்படுத்த பிரீமியம் உறுப்பினர் தேவை." }, "edit": { "message": "திருத்து" @@ -595,13 +592,13 @@ "message": "காண்" }, "viewAll": { - "message": "View all" + "message": "அனைத்தையும் காண்க" }, "showAll": { - "message": "Show all" + "message": "அனைத்தையும் காட்டு" }, "viewLess": { - "message": "View less" + "message": "குறைவாகக் காண்க" }, "viewLogin": { "message": "உள்நுழைவைக் காண்க" @@ -749,7 +746,7 @@ "message": "தவறான முதன்மை கடவுச்சொல்" }, "invalidMasterPasswordConfirmEmailAndHost": { - "message": "Invalid master password. Confirm your email is correct and your account was created on $HOST$.", + "message": "தவறான முதன்மை கடவுச்சொல். உங்கள் மின்னஞ்சல் முகவரி சரியானதா என்பதையும், உங்கள் கணக்கு $HOST$ இல் உருவாக்கப்பட்டது என்பதையும் உறுதிப்படுத்தவும்.", "placeholders": { "host": { "content": "$1", @@ -806,10 +803,10 @@ "message": "சிஸ்டம் பூட்டப்பட்டவுடன்" }, "onIdle": { - "message": "On system idle" + "message": "கணினி செயலற்ற நிலையில்" }, "onSleep": { - "message": "On system sleep" + "message": "கணினி உறக்கநிலையில்" }, "onRestart": { "message": "உலாவி மறுதொடக்கம் செய்யப்பட்டவுடன்" @@ -1050,10 +1047,10 @@ "message": "உருப்படி சேமிக்கப்பட்டது" }, "savedWebsite": { - "message": "Saved website" + "message": "சேமிக்கப்பட்ட வலைத்தளம்" }, "savedWebsites": { - "message": "Saved websites ( $COUNT$ )", + "message": "சேமிக்கப்பட்ட வலைத்தளங்கள் ( $COUNT$ )", "placeholders": { "count": { "content": "$1", @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "இதிலிருந்து ஏற்றுமதிசெய்" }, - "exportVault": { - "message": "வால்ட்டை ஏற்றுமதிசெய்" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "கோப்பு வடிவம்" @@ -1407,25 +1407,25 @@ "message": "மேலும் அறிக" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "குறியாக்க அமைப்புகளைப் புதுப்பிக்கும்போது பிழை ஏற்பட்டது." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "உங்கள் குறியாக்க அமைப்புகளைப் புதுப்பிக்கவும்" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "பரிந்துரைக்கப்பட்ட புதிய குறியாக்க அமைப்புகள் உங்கள் கணக்கு பாதுகாப்பை மேம்படுத்தும். இப்போதே புதுப்பிக்க உங்கள் முதன்மை கடவுச்சொல்லை உள்ளிடவும்." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "தொடர உங்கள் அடையாளத்தை உறுதிப்படுத்தவும்" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "உங்கள் முதன்மை கடவுச்சொல்லை உள்ளிடவும்" }, "updateSettings": { - "message": "Update settings" + "message": "அமைப்புகளைப் புதுப்பிக்கவும்" }, "later": { - "message": "Later" + "message": "பின்னர்" }, "authenticatorKeyTotp": { "message": "அங்கீகரிப்பு விசை (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "இணைப்பு சேமிக்கப்பட்டது" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "கோப்பு" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "ஒரு கோப்பைத் தேர்ந்தெடுக்கவும்" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "அதிகபட்ச கோப்பு அளவு 500 MB ஆகும்." }, @@ -1497,7 +1509,7 @@ "message": "கோப்பு இணைப்புகளுக்கு 1 GB என்க்ரிப்ட் செய்யப்பட்ட ஸ்டோரேஜ்." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "கோப்பு இணைப்புகளுக்கான $SIZE$ மறைகுறியாக்கப்பட்ட சேமிப்பிடம்.", "placeholders": { "size": { "content": "$1", @@ -1606,13 +1618,13 @@ "message": "பாதுகாப்பு விசையைப் படி" }, "readingPasskeyLoading": { - "message": "Reading passkey..." + "message": "கடவுச்சொற்களைப் படிக்கிறது..." }, "passkeyAuthenticationFailed": { - "message": "Passkey authentication failed" + "message": "கடவுச்சொல் அங்கீகாரம் தோல்வியடைந்தது" }, "useADifferentLogInMethod": { - "message": "Use a different log in method" + "message": "வேறு உள்நுழைவு முறையைப் பயன்படுத்தவும்" }, "awaitingSecurityKeyInteraction": { "message": "பாதுகாப்பு விசை தொடர்புகொள்ளக் காத்திருக்கிறது..." @@ -1681,7 +1693,7 @@ "message": "நீங்கள் பேஸ் சர்வர் URL-ஐ அல்லது குறைந்தது ஒரு தனிப்பயன் சூழலைச் சேர்க்க வேண்டும்." }, "selfHostedEnvMustUseHttps": { - "message": "URLs must use HTTPS." + "message": "URLகள் HTTPS ஐப் பயன்படுத்த வேண்டும்." }, "customEnvironment": { "message": "தனிப்பயன் சூழல்" @@ -1737,28 +1749,28 @@ "message": "ஆட்டோஃபில்லை முடக்கு" }, "confirmAutofill": { - "message": "Confirm autofill" + "message": "தானியங்கு நிரப்புதலை உறுதிப்படுத்தவும்" }, "confirmAutofillDesc": { - "message": "This site doesn't match your saved login details. Before you fill in your login credentials, make sure it's a trusted site." + "message": "இந்த தளம் உங்கள் சேமிக்கப்பட்ட உள்நுழைவு விவரங்களுடன் பொருந்தவில்லை. உங்கள் உள்நுழைவு சான்றுகளை நிரப்புவதற்கு முன், அது நம்பகமான தளம்தானா என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்." }, "showInlineMenuLabel": { "message": "படிவப் புலங்களில் ஆட்டோஃபில் பரிந்துரைகளைக் காட்டு" }, "howDoesBitwardenProtectFromPhishing": { - "message": "How does Bitwarden protect your data from phishing?" + "message": "Bitwarden உங்கள் தரவை ஃபிஷிங்கிலிருந்து எவ்வாறு பாதுகாக்கிறது?" }, "currentWebsite": { - "message": "Current website" + "message": "தற்போதைய வலைத்தளம்" }, "autofillAndAddWebsite": { - "message": "Autofill and add this website" + "message": "இந்த வலைத்தளத்தைத் தானாக நிரப்பிச் சேர்க்கவும்" }, "autofillWithoutAdding": { - "message": "Autofill without adding" + "message": "சேர்க்காமல் தானாக நிரப்பு" }, "doNotAutofill": { - "message": "Do not autofill" + "message": "தானாக நிரப்ப வேண்டாம்" }, "showInlineMenuIdentitiesLabel": { "message": "பரிந்துரைகளாக அடையாளங்களைக் காட்டு" @@ -1886,7 +1898,7 @@ "message": "உங்கள் சரிபார்ப்புக் குறியீட்டிற்கான உங்கள் மின்னஞ்சலைச் சரிபார்க்க, பாப்அப் சாளரத்திற்கு வெளியே கிளிக் செய்வதால், இந்த பாப்அப் மூடப்படும். இந்த பாப்அப் மூடாமல் இருக்க, புதிய சாளரத்தில் திறக்க விரும்புகிறீர்களா?" }, "showIconsChangePasswordUrls": { - "message": "Show website icons and retrieve change password URLs" + "message": "வலைத்தள ஐகான்களைக் காண்பி, கடவுச்சொல் மாற்று URLகளை மீட்டெடுக்கவும்" }, "cardholderName": { "message": "அட்டைதாரர் பெயர்" @@ -1904,7 +1916,7 @@ "message": "காலாவதி ஆண்டு" }, "monthly": { - "message": "month" + "message": "மாதம்" }, "expiration": { "message": "காலாவதி" @@ -2054,79 +2066,79 @@ "message": "குறிப்பு" }, "newItemHeaderLogin": { - "message": "New Login", + "message": "புதிய உள்நுழைவு", "description": "Header for new login item type" }, "newItemHeaderCard": { - "message": "New Card", + "message": "புதிய அட்டை", "description": "Header for new card item type" }, "newItemHeaderIdentity": { - "message": "New Identity", + "message": "புதிய அடையாளம்", "description": "Header for new identity item type" }, "newItemHeaderNote": { - "message": "New Note", + "message": "புதிய குறிப்பு", "description": "Header for new note item type" }, "newItemHeaderSshKey": { - "message": "New SSH key", + "message": "புதிய SSH விசை", "description": "Header for new SSH key item type" }, "newItemHeaderTextSend": { - "message": "New Text Send", + "message": "புதிய உரை அனுப்புதல்", "description": "Header for new text send" }, "newItemHeaderFileSend": { - "message": "New File Send", + "message": "புதிய கோப்பு அனுப்புதல்", "description": "Header for new file send" }, "editItemHeaderLogin": { - "message": "Edit Login", + "message": "உள்நுழைவைத் திருத்து", "description": "Header for edit login item type" }, "editItemHeaderCard": { - "message": "Edit Card", + "message": "கார்டைத் திருத்து", "description": "Header for edit card item type" }, "editItemHeaderIdentity": { - "message": "Edit Identity", + "message": "அடையாளத்தைத் திருத்து", "description": "Header for edit identity item type" }, "editItemHeaderNote": { - "message": "Edit Note", + "message": "குறிப்பைத் திருத்து", "description": "Header for edit note item type" }, "editItemHeaderSshKey": { - "message": "Edit SSH key", + "message": "SSH விசையைத் திருத்து", "description": "Header for edit SSH key item type" }, "editItemHeaderTextSend": { - "message": "Edit Text Send", + "message": "உரை அனுப்புதலைத் திருத்து", "description": "Header for edit text send" }, "editItemHeaderFileSend": { - "message": "Edit File Send", + "message": "கோப்பைத் திருத்து அனுப்பு", "description": "Header for edit file send" }, "viewItemHeaderLogin": { - "message": "View Login", + "message": "உள்நுழைவைக் காண்க", "description": "Header for view login item type" }, "viewItemHeaderCard": { - "message": "View Card", + "message": "கார்டைப் பார்க்கவும்", "description": "Header for view card item type" }, "viewItemHeaderIdentity": { - "message": "View Identity", + "message": "அடையாளத்தைக் காண்க", "description": "Header for view identity item type" }, "viewItemHeaderNote": { - "message": "View Note", + "message": "குறிப்பைக் காண்க", "description": "Header for view note item type" }, "viewItemHeaderSshKey": { - "message": "View SSH key", + "message": "SSH விசையைக் காண்க", "description": "Header for view SSH key item type" }, "passwordHistory": { @@ -2476,7 +2488,7 @@ } }, "topLayerHijackWarning": { - "message": "This page is interfering with the Bitwarden experience. The Bitwarden inline menu has been temporarily disabled as a safety measure." + "message": "இந்தப் பக்கம் பிட்வார்டன் அனுபவத்தில் குறுக்கிடுகிறது. பாதுகாப்பு நடவடிக்கையாக பிட்வார்டன் இன்லைன் மெனு தற்காலிகமாக முடக்கப்பட்டுள்ளது." }, "setMasterPassword": { "message": "முதன்மை கடவுச்சொல்லை அமை" @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "தனிப்பட்ட அடையாளங்காட்டி எதுவும் இல்லை." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "பின்வரும் நிறுவனத்தின் உறுப்பினர்களுக்கு இனி ஒரு முதன்மை கடவுச்சொல் தேவையில்லை. உங்கள் நிறுவன நிர்வாகியுடன் கீழே உள்ள டொமைனை உறுதிப்படுத்தவும்." - }, "organizationName": { "message": "நிறுவன பெயர்" }, @@ -3304,7 +3313,7 @@ } }, "exportingOrganizationVaultFromPasswordManagerWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported.", + "message": "$ORGANIZATION$ உடன் தொடர்புடைய நிறுவன பெட்டகம் மட்டுமே ஏற்றுமதி செய்யப்படும்.", "placeholders": { "organization": { "content": "$1", @@ -3313,7 +3322,7 @@ } }, "exportingOrganizationVaultFromAdminConsoleWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. My items collections will not be included.", + "message": "$ORGANIZATION$ உடன் தொடர்புடைய நிறுவன பெட்டகம் மட்டுமே ஏற்றுமதி செய்யப்படும். எனது பொருட்களின் தொகுப்புகள் சேர்க்கப்படாது.", "placeholders": { "organization": { "content": "$1", @@ -3328,7 +3337,7 @@ "message": "குறியாக்கம் நீக்கப் பிழை" }, "errorGettingAutoFillData": { - "message": "Error getting autofill data" + "message": "தானியங்குநிரப்பு தரவைப் பெறுவதில் பிழை" }, "couldNotDecryptVaultItemsBelow": { "message": "Bitwarden கீழே பட்டியலிடப்பட்ட பெட்டக பொருளை குறியாக்கம் நீக்க முடியவில்லை." @@ -4102,13 +4111,13 @@ "description": "Toast message for informing the user that autofill on page load has been set to the default setting." }, "cannotAutofill": { - "message": "Cannot autofill" + "message": "தானாக நிரப்ப முடியாது" }, "cannotAutofillExactMatch": { - "message": "Default matching is set to 'Exact Match'. The current website does not exactly match the saved login details for this item." + "message": "இயல்புநிலை பொருத்தம் 'சரியான பொருத்தம்' என அமைக்கப்பட்டுள்ளது. தற்போதைய வலைத்தளம் இந்த உருப்படிக்கான சேமிக்கப்பட்ட உள்நுழைவு விவரங்களுடன் சரியாகப் பொருந்தவில்லை." }, "okay": { - "message": "Okay" + "message": "சரி" }, "toggleSideNavigation": { "message": "பக்க வழிசெலுத்தலை மாற்று" @@ -4206,10 +4215,6 @@ "ignore": { "message": "புறக்கணி" }, - "importData": { - "message": "தரவை இறக்குமதி செய்", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "இறக்குமதி பிழை" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "கணக்கு பாதுகாப்பு" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "அறிவிப்புகள்" }, @@ -4942,7 +4956,7 @@ "message": "பிரீமியம்" }, "unlockFeaturesWithPremium": { - "message": "Unlock reporting, emergency access, and more security features with Premium." + "message": "Premium மூலம் அறிக்கையிடல், அவசரகால அணுகல் மற்றும் கூடுதல் பாதுகாப்பு அம்சங்களைத் திறக்கவும்." }, "freeOrgsCannotUseAttachments": { "message": "இலவச நிறுவனங்கள் இணைப்புகளைப் பயன்படுத்த முடியாது" @@ -5029,7 +5043,7 @@ } }, "defaultLabelWithValue": { - "message": "Default ( $VALUE$ )", + "message": "இயல்புநிலை ($VALUE$ )", "description": "A label that indicates the default value for a field with the current default value in parentheses.", "placeholders": { "value": { @@ -5692,30 +5706,30 @@ "message": "உங்கள் சேமிப்பு பெட்டகத்திற்கு நல்வரவு!" }, "phishingPageTitleV2": { - "message": "Phishing attempt detected" + "message": "ஃபிஷிங் முயற்சி கண்டறியப்பட்டது" }, "phishingPageSummary": { - "message": "The site you are attempting to visit is a known malicious site and a security risk." + "message": "நீங்கள் பார்வையிட முயற்சிக்கும் தளம் ஒரு அறியப்பட்ட தீங்கிழைக்கும் தளம் மற்றும் பாதுகாப்பு அபாயத்தைக் கொண்டுள்ளது." }, "phishingPageCloseTabV2": { - "message": "Close this tab" + "message": "இந்த தாவலை மூடு" }, "phishingPageContinueV2": { - "message": "Continue to this site (not recommended)" + "message": "இந்த தளத்திற்குத் தொடரவும் (பரிந்துரைக்கப்படவில்லை)" }, "phishingPageExplanation1": { - "message": "This site was found in ", + "message": "இந்த தளம் காணப்பட்ட இடம் ", "description": "This is in multiple parts to allow for bold text in the middle of the sentence. A proper name follows this." }, "phishingPageExplanation2": { - "message": ", an open-source list of known phishing sites used for stealing personal and sensitive information.", + "message": ", தனிப்பட்ட மற்றும் முக்கியமான தகவல்களைத் திருடப் பயன்படுத்தப்படும் அறியப்பட்ட ஃபிஷிங் தளங்களின் திறந்த மூல பட்டியல்.", "description": "This is in multiple parts to allow for bold text in the middle of the sentence. A proper name precedes this." }, "phishingPageLearnMore": { - "message": "Learn more about phishing detection" + "message": "ஃபிஷிங் கண்டறிதல் பற்றி மேலும் அறிக" }, "protectedBy": { - "message": "Protected by $PRODUCT$", + "message": "$PRODUCT$ ஆல் பாதுகாக்கப்பட்டது", "placeholders": { "product": { "content": "$1", @@ -5799,10 +5813,10 @@ "description": "Aria label for the body content of the generator nudge" }, "aboutThisSetting": { - "message": "About this setting" + "message": "இந்த அமைப்பைப் பற்றி" }, "permitCipherDetailsDescription": { - "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service." + "message": "உங்கள் அனுபவத்தை மேம்படுத்த எந்த ஐகான் அல்லது கடவுச்சொல்லை மாற்ற URL ஐப் பயன்படுத்த வேண்டும் என்பதை அடையாளம் காண பிட்வார்டன் சேமிக்கப்பட்ட உள்நுழைவு URIகளைப் பயன்படுத்தும். நீங்கள் இந்த சேவையைப் பயன்படுத்தும்போது எந்த தகவலும் சேகரிக்கப்படாது அல்லது சேமிக்கப்படாது." }, "noPermissionsViewPage": { "message": "இந்த பக்கத்தைக் காண உங்களுக்கு அனுமதிகள் இல்லை. வேறு கணக்குடன் உள்நுழைய முயற்சிக்கவும்." @@ -5828,58 +5842,192 @@ "message": "Key Connector டொமைனை உறுதிப்படுத்து" }, "atRiskLoginsSecured": { - "message": "Great job securing your at-risk logins!" + "message": "உங்கள் ஆபத்தில் உள்ள உள்நுழைவுகளைப் பாதுகாப்பது மிகச் சிறந்த வேலை!" }, "upgradeNow": { - "message": "Upgrade now" + "message": "இப்போதே மேம்படுத்து" }, "builtInAuthenticator": { - "message": "Built-in authenticator" + "message": "உள்ளமைக்கப்பட்ட அங்கீகரிப்பான்" }, "secureFileStorage": { - "message": "Secure file storage" + "message": "பாதுகாப்பான கோப்பு சேமிப்பு" }, "emergencyAccess": { - "message": "Emergency access" + "message": "அவசர அணுகல்" }, "breachMonitoring": { - "message": "Breach monitoring" + "message": "மீறல் கண்காணிப்பு" }, "andMoreFeatures": { - "message": "And more!" + "message": "இன்னமும் அதிகமாக!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "மேம்பட்ட ஆன்லைன் பாதுகாப்பு" }, "upgradeToPremium": { - "message": "Upgrade to Premium" + "message": "பிரீமியத்திற்கு மேம்படுத்து" }, "unlockAdvancedSecurity": { - "message": "Unlock advanced security features" + "message": "மேம்பட்ட பாதுகாப்பு அம்சங்களைத் திறக்கவும்" }, "unlockAdvancedSecurityDesc": { - "message": "A Premium subscription gives you more tools to stay secure and in control" + "message": "பிரீமியம் சந்தா உங்களுக்குப் பாதுகாப்பாகவும் கட்டுப்பாட்டிலும் இருக்க கூடுதல் கருவிகளை வழங்குகிறது" }, "explorePremium": { - "message": "Explore Premium" + "message": "பிரீமியத்தை ஆராயுங்கள்" }, "loadingVault": { - "message": "Loading vault" + "message": "பெட்டகத்தை ஏற்றுகிறது" }, "vaultLoaded": { - "message": "Vault loaded" + "message": "பெட்டகம் ஏற்றப்பட்டது" }, "settingDisabledByPolicy": { - "message": "This setting is disabled by your organization's policy.", + "message": "இந்த அமைப்பு உங்கள் நிறுவனத்தின் கொள்கையால் முடக்கப்பட்டுள்ளது.", "description": "This hint text is displayed when a user setting is disabled due to an organization policy." }, "zipPostalCodeLabel": { - "message": "ZIP / Postal code" + "message": "அஞ்சல் குறியீடு" }, "cardNumberLabel": { - "message": "Card number" + "message": "அட்டை எண்" + }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "காலாவதி நடவடிக்கை" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "இந்த அமைப்பை உங்கள் நிறுவனம் நிர்வகிக்கிறது." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "உங்கள் நிறுவனம் அதிகபட்ச அமர்வு நேர முடிவை $HOURS$ மணிநேரம்(கள்) மற்றும் $MINUTES$ நிமிடம்(கள்) என அமைத்துள்ளது.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "உங்கள் நிறுவனம் இயல்புநிலை அமர்வு நேர முடிவை உடனடியாக அமைத்துள்ளது." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "உங்கள் நிறுவனம் இயல்புநிலை அமர்வு நேர முடிவை கணினி பூட்டிற்கு அமைத்துள்ளது." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "உங்கள் நிறுவனம் இயல்புநிலை அமர்வு நேர முடிவை உலாவி மறுதொடக்கம் ஆன் என அமைத்துள்ளது." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "அதிகபட்ச நேர முடிவு $HOURS$ மணிநேரம்(கள்) மற்றும் $MINUTES$ நிமிடம்(கள்) ஐ விட அதிகமாக இருக்கக்கூடாது", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "உலாவியை மறுதொடக்கம் செய்யும்போது" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "உங்கள் காலாவதி செயலை மாற்ற ஒரு திறத்தல் முறையை அமைக்கவும்" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/te/messages.json b/apps/browser/src/_locales/te/messages.json index 684a04d9175..02945c6ff9b 100644 --- a/apps/browser/src/_locales/te/messages.json +++ b/apps/browser/src/_locales/te/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Sync" }, - "syncVaultNow": { - "message": "Sync vault now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import items" - }, "select": { "message": "Select" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Attachment saved" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "File" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Select a file" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Account security" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json index bade59ad99b..a07b23793b7 100644 --- a/apps/browser/src/_locales/th/messages.json +++ b/apps/browser/src/_locales/th/messages.json @@ -1,6 +1,6 @@ { "appName": { - "message": "bitwarden" + "message": "Bitwarden" }, "appLogoLabel": { "message": "โลโก้ Bitwarden" @@ -436,8 +436,8 @@ "sync": { "message": "ซิงค์" }, - "syncVaultNow": { - "message": "Sync Vault Now" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Last Sync:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web app" }, - "importItems": { - "message": "Import Items" - }, "select": { "message": "เลือก" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export Vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File Format" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "บันทึกไฟล์แนบแล้ว" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "ไฟล์" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "เลือกไฟล์" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "ขนาดไฟล์สูงสุด คือ 500 MB" }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "No unique identifier found." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ignore" }, - "importData": { - "message": "Import data", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Import error" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "ความปลอดภัยของบัญชี" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Notifications" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Card number" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json index 0ba7e2ffec3..70e9a5c0afe 100644 --- a/apps/browser/src/_locales/tr/messages.json +++ b/apps/browser/src/_locales/tr/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Eşitle" }, - "syncVaultNow": { - "message": "Kasayı şimdi eşitle" + "syncNow": { + "message": "Şimdi eşitle" }, "lastSync": { "message": "Son eşitleme:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden web uygulaması" }, - "importItems": { - "message": "Hesapları içe aktar" - }, "select": { "message": "Seç" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Dışa aktarılacak konum" }, - "exportVault": { - "message": "Kasayı dışa aktar" + "export": { + "message": "Dışa aktar" + }, + "import": { + "message": "İçe aktar" }, "fileFormat": { "message": "Dosya biçimi" @@ -1407,25 +1407,25 @@ "message": "Daha fazla bilgi al" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Şifreleme ayarları güncellenirken bir hata oluştu." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Şifreleme ayarlarınızı güncelleyin" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Önerilen yeni şifreleme ayarları hesap güvenliğinizi artıracaktır. Şimdi güncellemek için ana parolanızı girin." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Devam etmek için kimliğinizi doğrulayın" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Ana parolanızı girin" }, "updateSettings": { - "message": "Update settings" + "message": "Ayarları güncelle" }, "later": { - "message": "Later" + "message": "Daha sonra" }, "authenticatorKeyTotp": { "message": "Kimlik doğrulama anahtarı (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Dosya kaydedildi" }, + "fixEncryption": { + "message": "Şifrelemeyi düzelt" + }, + "fixEncryptionTooltip": { + "message": "Bu dosya eski bir şifreleme yöntemi kullanıyor." + }, + "attachmentUpdated": { + "message": "Ek güncellendi" + }, "file": { "message": "Dosya" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Bir dosya seçin" }, + "itemsTransferred": { + "message": "Kayıtlar aktarıldı" + }, "maxFileSize": { "message": "Maksimum dosya boyutu 500 MB'dir." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Benzersiz tanımlayıcı bulunamadı." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Aşağıdaki organizasyonun üyeleri için artık ana parola gerekmemektedir. Lütfen alan adını organizasyon yöneticinizle doğrulayın." - }, "organizationName": { "message": "Kuruluş adı" }, @@ -4105,7 +4114,7 @@ "message": "Otomatik doldurulamıyor" }, "cannotAutofillExactMatch": { - "message": "Default matching is set to 'Exact Match'. The current website does not exactly match the saved login details for this item." + "message": "Varsayılan eşleştirme \"Tam eşleşme\" olarak ayarlı. Geçerli web sitesi, bu kayıt için kaydedilen hesap bilgileriyle tam olarak eşleşmiyor." }, "okay": { "message": "Tamam" @@ -4206,10 +4215,6 @@ "ignore": { "message": "Yok say" }, - "importData": { - "message": "Verileri içe aktar", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "İçe aktarma hatası" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Hesap güvenliği" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Bildirimler" }, @@ -4942,7 +4956,7 @@ "message": "Premium" }, "unlockFeaturesWithPremium": { - "message": "Unlock reporting, emergency access, and more security features with Premium." + "message": "Raporlama, acil erişim ve daha fazla güvenlik özelliğinin kilidini Premium ile açın." }, "freeOrgsCannotUseAttachments": { "message": "Ücretsiz kuruluşlar dosya eklerini kullanamaz" @@ -5704,18 +5718,18 @@ "message": "Siteye devam et (önerilmez)" }, "phishingPageExplanation1": { - "message": "This site was found in ", + "message": "Bu site şurada bulundu ", "description": "This is in multiple parts to allow for bold text in the middle of the sentence. A proper name follows this." }, "phishingPageExplanation2": { - "message": ", an open-source list of known phishing sites used for stealing personal and sensitive information.", + "message": ", kişisel ve hassas bilgileri çalmak için kullanılan bilinen oltalama sitelerini içeren açık kaynaklı bir liste.", "description": "This is in multiple parts to allow for bold text in the middle of the sentence. A proper name precedes this." }, "phishingPageLearnMore": { - "message": "Learn more about phishing detection" + "message": "Oltalama tespiti hakkında daha fazla bilgi edinin" }, "protectedBy": { - "message": "Protected by $PRODUCT$", + "message": "$PRODUCT$ tarafından korunuyor", "placeholders": { "product": { "content": "$1", @@ -5828,7 +5842,7 @@ "message": "Key Connector alan adını doğrulayın" }, "atRiskLoginsSecured": { - "message": "Great job securing your at-risk logins!" + "message": "Risk altındaki hesaplarınızı güvene alarak harika bir iş çıkardınız!" }, "upgradeNow": { "message": "Şimdi yükselt" @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "Ve daha fazlası!" }, - "planDescPremium": { - "message": "Eksiksiz çevrimiçi güvenlik" + "advancedOnlineSecurity": { + "message": "Gelişmiş çevrimiçi güvenlik" }, "upgradeToPremium": { "message": "Premium'a yükselt" @@ -5861,7 +5875,7 @@ "message": "Premium abonelik size daha fazla güvenlik ve kontrol olanağı sunan ek araçlara erişmenizi sağlar" }, "explorePremium": { - "message": "Explore Premium" + "message": "Premium’u keşfet" }, "loadingVault": { "message": "Kasa yükleniyor" @@ -5870,7 +5884,7 @@ "message": "Kasa yüklendi" }, "settingDisabledByPolicy": { - "message": "This setting is disabled by your organization's policy.", + "message": "Bu ayar, kuruluşunuzun ilkesi tarafından devre dışı bırakıldı.", "description": "This hint text is displayed when a user setting is disabled due to an organization policy." }, "zipPostalCodeLabel": { @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Kart numarası" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Zaman aşımı eylemi" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Bu ayar kuruluşunuz tarafından yönetiliyor." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Kuruluşunuz maksimum kasa zaman aşımını $HOURS$ saat $MINUTES$ dakika olarak belirlemiş.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Kuruluşunuz varsayılan oturum zaman aşımını “Hemen” olarak ayarlamış." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Kuruluşunuz varsayılan oturum zaman aşımını “Sistem kilitlenince” olarak ayarlamış." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Kuruluşunuz varsayılan oturum zaman aşımını “Tarayıcı yeniden başlatılınca” olarak ayarlamış." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maksimum zaman aşımı en fazla $HOURS$ saat $MINUTES$ dakika olabilir", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Tarayıcı yeniden başlatılınca" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Zaman aşımı eyleminizi değiştirmek için kilit açma yönteminizi ayarlayın" + }, + "upgrade": { + "message": "Yükselt" + }, + "leaveConfirmationDialogTitle": { + "message": "Ayrılmak istediğinizden emin misiniz?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Reddederseniz kişisel kayıtlarınız hesabınızda kalır, ancak paylaşılan kayıtlara ve kuruluş özelliklerine erişiminizi kaybedersiniz." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Erişiminizi yeniden kazanmak için yöneticinizle iletişime geçin." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "$ORGANIZATION$ kuruluşundan ayrıl", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Kasamı nasıl yönetebilirim?" + }, + "transferItemsToOrganizationTitle": { + "message": "Kayıtları $ORGANIZATION$ kuruluşuna aktar", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$, güvenlik ve mevzuata uyum amacıyla tüm kayıtların kuruluşa ait olmasını zorunlu kılıyor. Kayıtlarınızın sahipliğini devretmek için \"Kabul et\"e tıklayın.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Aktarımı kabul et" + }, + "declineAndLeave": { + "message": "Reddet ve ayrıl" + }, + "whyAmISeeingThis": { + "message": "Bunu neden görüyorum?" } } diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json index 147e63cce02..8d040513d67 100644 --- a/apps/browser/src/_locales/uk/messages.json +++ b/apps/browser/src/_locales/uk/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Синхронізація" }, - "syncVaultNow": { - "message": "Синхронізувати зараз" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Остання синхронізація:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Вебпрограма Bitwarden" }, - "importItems": { - "message": "Імпортувати записи" - }, "select": { "message": "Обрати" }, @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Експортувати з" }, - "exportVault": { - "message": "Експортувати сховище" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Формат файлу" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Вкладення збережено" }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "file": { "message": "Файл" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Оберіть файл" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "Максимальний розмір файлу 500 МБ." }, @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Не знайдено унікальний ідентифікатор." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Головний пароль більше не є обов'язковим для учасників зазначеної організації. Підтвердьте вказаний нижче домен з адміністратором вашої організації." - }, "organizationName": { "message": "Назва організації" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Ігнорувати" }, - "importData": { - "message": "Імпортувати дані", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Помилка імпорту" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Безпека облікового запису" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Сповіщення" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "Інші можливості!" }, - "planDescPremium": { - "message": "Повна онлайн-безпека" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Покращити до Premium" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Номер картки" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Your organization has set the default session timeout to Immediately." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On browser restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On browser restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json index a94a38ffb63..4049af21e06 100644 --- a/apps/browser/src/_locales/vi/messages.json +++ b/apps/browser/src/_locales/vi/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "Đồng bộ" }, - "syncVaultNow": { - "message": "Đồng bộ kho lưu trữ ngay" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "Đồng bộ lần cuối:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Ứng dụng web Bitwarden" }, - "importItems": { - "message": "Nhập vào kho" - }, "select": { "message": "Chọn" }, @@ -586,7 +583,7 @@ "message": "Các mục đã lưu trữ sẽ bị loại khỏi kết quả tìm kiếm chung và gợi ý tự động điền. Bạn có chắc chắn muốn lưu trữ mục này không?" }, "upgradeToUseArchive": { - "message": "Cần là thành viên premium để sử dụng Archive." + "message": "Cần là thành viên cao cấp để sử dụng tính năng Lưu trữ." }, "edit": { "message": "Sửa" @@ -806,7 +803,7 @@ "message": "Mỗi khi khóa máy" }, "onIdle": { - "message": "Khi hệ thống rãnh rỗi" + "message": "Khi hệ thống nhàn rỗi" }, "onSleep": { "message": "Khi hệ thống ngủ" @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "Xuất từ" }, - "exportVault": { - "message": "Xuất kho" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Định dạng tập tin" @@ -1407,25 +1407,25 @@ "message": "Tìm hiểu thêm" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Đã xảy ra lỗi khi cập nhật cài đặt mã hóa." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Cập nhật cài đặt mã hóa của bạn" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Cài đặt mã hóa được khuyến nghị sẽ cải thiện bảo mật cho tài khoản của bạn. Nhập mật khẩu chính để cập nhật ngay." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Xác minh danh tính để tiếp tục" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Nhập mật khẩu chính của bạn" }, "updateSettings": { - "message": "Update settings" + "message": "Cập nhật cài đặt" }, "later": { - "message": "Later" + "message": "Để sau" }, "authenticatorKeyTotp": { "message": "Khóa xác thực (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "Đã lưu tệp đính kèm" }, + "fixEncryption": { + "message": "Sửa mã hóa" + }, + "fixEncryptionTooltip": { + "message": "Tệp này đang sử dụng phương pháp mã hóa lỗi thời." + }, + "attachmentUpdated": { + "message": "Tệp đính kèm đã được cập nhật" + }, "file": { "message": "Tập tin" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "Chọn tập tin" }, + "itemsTransferred": { + "message": "Các mục đã chuyển" + }, "maxFileSize": { "message": "Kích thước tối đa của tập tin là 500MB." }, @@ -2476,7 +2488,7 @@ } }, "topLayerHijackWarning": { - "message": "Trang này đang cản trở trải nghiệm Bitwarden. Menu nội tuyến Bitwarden đã tạm thời bị vô hiệu hóa như một biện pháp an toàn." + "message": "Trang này đang làm gián đoạn trải nghiệm Bitwarden. Menu nội tuyến của Bitwarden đã tạm thời bị tắt để đảm bảo an toàn." }, "setMasterPassword": { "message": "Đặt mật khẩu chính" @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "Không tìm thấy danh tính duy nhất." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Mật khẩu chính không còn được yêu cầu đối với các thành viên của tổ chức sau đây. Vui lòng xác nhận tên miền bên dưới với quản trị viên của tổ chức." - }, "organizationName": { "message": "Tên tổ chức" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "Bỏ qua" }, - "importData": { - "message": "Nhập dữ liệu", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "Lỗi khi nhập" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "Bảo mật tài khoản" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "Thông báo" }, @@ -4942,7 +4956,7 @@ "message": "Cao cấp" }, "unlockFeaturesWithPremium": { - "message": "Mở khóa tính năng báo cáo, quyền truy cập khẩn cấp và nhiều tính năng bảo mật khác với Premium." + "message": "Mở khóa tính năng báo cáo, quyền truy cập khẩn cấp và nhiều tính năng bảo mật khác với gói Cao cấp." }, "freeOrgsCannotUseAttachments": { "message": "Các tổ chức miễn phí không thể sử dụng tệp đính kèm" @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "Và nhiều hơn nữa!" }, - "planDescPremium": { - "message": "Bảo mật trực tuyến toàn diện" + "advancedOnlineSecurity": { + "message": "Bảo mật trực tuyến nâng cao" }, "upgradeToPremium": { "message": "Nâng cấp lên gói Cao cấp" @@ -5858,10 +5872,10 @@ "message": "Mở khóa các tính năng bảo mật nâng cao" }, "unlockAdvancedSecurityDesc": { - "message": "Đăng ký Premium cung cấp cho bạn nhiều công cụ hơn để luôn an toàn và kiểm soát" + "message": "Đăng ký gói Cao cấp cung cấp nhiều công cụ để bạn luôn an toàn và kiểm soát tốt hơn" }, "explorePremium": { - "message": "Khám phá Premium" + "message": "Khám phá gói Cao cấp" }, "loadingVault": { "message": "Đang tải kho" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "Số thẻ" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Hành động sau khi đóng kho" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Cài đặt này do tổ chức của bạn quản lý." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Tổ chức của bạn đã đặt thời gian chờ phiên tối đa là $HOURS$ giờ và $MINUTES$ phút.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "Tổ chức của bạn đã đặt thời gian chờ phiên mặc định là Ngay lập tức." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Tổ chức của bạn đã đặt thời gian chờ phiên mặc định là Mỗi khi khóa máy." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Tổ chức của bạn đã đặt thời gian chờ phiên mặc định là Mỗi khi khởi động lại trình duyệt." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Thời gian chờ tối đa không thể vượt quá $HOURS$ giờ và $MINUTES$ phút", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Mỗi khi khởi động lại trình duyệt" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Đặt phương thức mở khóa để thay đổi hành động khi hết thời gian chờ" + }, + "upgrade": { + "message": "Nâng cấp" + }, + "leaveConfirmationDialogTitle": { + "message": "Bạn có chắc chắn muốn rời đi không?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Bằng việc từ chối, các mục cá nhân sẽ vẫn nằm trong tài khoản của bạn, nhưng bạn sẽ mất quyền truy cập vào các mục được chia sẻ và tính năng tổ chức." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Liên hệ quản trị viên của bạn để lấy lại quyền truy cập." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Rời khỏi $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Tôi quản lý kho của mình như thế nào?" + }, + "transferItemsToOrganizationTitle": { + "message": "Chuyển các mục đến $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ yêu cầu tất cả các mục phải thuộc sở hữu của tổ chức để đảm bảo an ninh và tuân thủ. Nhấp chấp nhận để chuyển quyền sở hữu các mục của bạn.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Chấp nhận chuyển" + }, + "declineAndLeave": { + "message": "Từ chối và rời đi" + }, + "whyAmISeeingThis": { + "message": "Tại sao tôi thấy điều này?" } } diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index fd4b6380b1b..4ebfaca7ef8 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "同步" }, - "syncVaultNow": { - "message": "立即同步密码库" + "syncNow": { + "message": "立即同步" }, "lastSync": { "message": "上次同步:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden 网页 App" }, - "importItems": { - "message": "导入项目" - }, "select": { "message": "选择" }, @@ -601,7 +598,7 @@ "message": "显示全部" }, "viewLess": { - "message": "查看更少" + "message": "显示更少" }, "viewLogin": { "message": "查看登录" @@ -991,7 +988,7 @@ "message": "文件夹已添加" }, "twoStepLoginConfirmation": { - "message": "两步登录要求您从其他设备(例如安全密钥、验证器 App、短信、电话或者电子邮件)来验证您的登录,这能使您的账户更加安全。两步登录需要在 bitwarden.com 网页版密码库中设置。现在访问此网站吗?" + "message": "两步登录要求您从其他设备(例如安全密钥、验证器 App、短信、电话或者电子邮件)来验证您的登录,这能使您的账户更加安全。两步登录需要在 bitwarden.com 网页版密码库中设置。现在要访问此网站吗?" }, "twoStepLoginConfirmationContent": { "message": "在 Bitwarden 网页 App 中设置两步登录,让您的账户更加安全。" @@ -1275,7 +1272,7 @@ "message": "询问保存新的通行密钥或使用存储在密码库中的通行密钥登录。适用于所有已登录的账户。" }, "notificationChangeDesc": { - "message": "是否要在 Bitwarden 中更新此密码?" + "message": "要在 Bitwarden 中更新此密码吗?" }, "notificationChangeSave": { "message": "更新" @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "导出自" }, - "exportVault": { - "message": "导出密码库" + "export": { + "message": "导出" + }, + "import": { + "message": "导入" }, "fileFormat": { "message": "文件格式" @@ -1407,25 +1407,25 @@ "message": "进一步了解" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "更新加密设置时发生错误。" }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "更新您的加密设置" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "新推荐的加密设置将提高您的账户安全性。输入您的主密码以立即更新。" }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "确认您的身份以继续" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "输入您的主密码" }, "updateSettings": { - "message": "Update settings" + "message": "更新设置" }, "later": { - "message": "Later" + "message": "稍后" }, "authenticatorKeyTotp": { "message": "验证器密钥 (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "附件已保存" }, + "fixEncryption": { + "message": "修复加密" + }, + "fixEncryptionTooltip": { + "message": "此文件正在使用过时的加密方式。" + }, + "attachmentUpdated": { + "message": "附件已更新" + }, "file": { "message": "文件" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "选择一个文件" }, + "itemsTransferred": { + "message": "项目已传输" + }, "maxFileSize": { "message": "文件最大为 500 MB。" }, @@ -1482,7 +1494,7 @@ "message": "管理会员资格" }, "premiumManageAlert": { - "message": "您可以在 bitwarden.com 网页版密码库管理您的会员资格。现在要访问吗?" + "message": "您可以在 bitwarden.com 网页版密码库管理您的会员资格。现在要访问此网站吗?" }, "premiumRefresh": { "message": "刷新会员资格" @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "未找到唯一的标识符。" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "以下组织的成员不再需要主密码。请与您的组织管理员确认下面的域名。" - }, "organizationName": { "message": "组织名称" }, @@ -3895,10 +3904,10 @@ "message": "检查您的电子邮箱" }, "followTheLinkInTheEmailSentTo": { - "message": "点击发送到电子邮件中的链接" + "message": "点击发送到" }, "andContinueCreatingYourAccount": { - "message": "然后继续创建您的账户。" + "message": "的电子邮件中的链接,然后继续创建您的账户。" }, "noEmail": { "message": "没收到电子邮件吗?" @@ -4206,10 +4215,6 @@ "ignore": { "message": "忽略" }, - "importData": { - "message": "导入数据", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "导入出错" }, @@ -4395,7 +4400,7 @@ "message": "此站点没有匹配的登录" }, "searchSavePasskeyNewLogin": { - "message": "搜索或将通行密钥保存为一个新的登录" + "message": "搜索或将通行密钥保存为新的登录" }, "confirm": { "message": "确认" @@ -4404,7 +4409,7 @@ "message": "保存通行密钥" }, "savePasskeyNewLogin": { - "message": "作为新的登录项目保存通行密钥" + "message": "将通行密钥保存为新的登录" }, "chooseCipherForPasskeySave": { "message": "选择一个用于保存此通行密钥的登录项目" @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "账户安全" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "通知" }, @@ -5848,8 +5862,8 @@ "andMoreFeatures": { "message": "以及更多!" }, - "planDescPremium": { - "message": "全面的在线安全防护" + "advancedOnlineSecurity": { + "message": "高级在线安全防护" }, "upgradeToPremium": { "message": "升级为高级版" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "卡号" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "您的组织已不再使用主密码登录 Bitwarden。要继续,请验证组织和域名。" + }, + "continueWithLogIn": { + "message": "继续登录" + }, + "doNotContinue": { + "message": "不要继续" + }, + "domain": { + "message": "域名" + }, + "keyConnectorDomainTooltip": { + "message": "此域名将存储您的账户加密密钥,所以请确保您信任它。如果您不确定,请与您的管理员联系。" + }, + "verifyYourOrganization": { + "message": "验证您的组织以登录" + }, + "organizationVerified": { + "message": "组织已验证" + }, + "domainVerified": { + "message": "域名已验证" + }, + "leaveOrganizationContent": { + "message": "如果不验证您的组织,您对组织的访问权限将被撤销。" + }, + "leaveNow": { + "message": "立即退出" + }, + "verifyYourDomainToLogin": { + "message": "验证您的域名以登录" + }, + "verifyYourDomainDescription": { + "message": "要继续登录,请验证此域名。" + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "要继续登录,请验证组织和域名。" + }, "sessionTimeoutSettingsAction": { "message": "超时动作" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "此设置由您的组织管理。" + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "您的组织已将最大会话超时设置为 $HOURS$ 小时 $MINUTES$ 分钟。", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "您的组织已将默认会话超时设置为「立即」。" + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "您的组织已将默认会话超时设置为「系统锁定时」。" + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "您的组织已将默认会话超时设置为「浏览器重启时」。" + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "最大超时不能超过 $HOURS$ 小时 $MINUTES$ 分钟", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "浏览器重启时" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "设置一个解锁方式以更改您的超时动作" + }, + "upgrade": { + "message": "升级" + }, + "leaveConfirmationDialogTitle": { + "message": "确定要退出吗?" + }, + "leaveConfirmationDialogContentOne": { + "message": "拒绝后,您的个人项目将保留在您的账户中,但您将失去对共享项目和组织功能的访问权限。" + }, + "leaveConfirmationDialogContentTwo": { + "message": "联系您的管理员以重新获取访问权限。" + }, + "leaveConfirmationDialogConfirmButton": { + "message": "退出 $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "我该如何管理我的密码库?" + }, + "transferItemsToOrganizationTitle": { + "message": "传输项目到 $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "出于安全和合规考虑,$ORGANIZATION$ 要求所有项目归组织所有。点击「接受」以传输您的项目的所有权。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "接受传输" + }, + "declineAndLeave": { + "message": "拒绝并退出" + }, + "whyAmISeeingThis": { + "message": "为什么我会看到这个?" } } diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json index de78e415fa6..e0b69c212b5 100644 --- a/apps/browser/src/_locales/zh_TW/messages.json +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -436,8 +436,8 @@ "sync": { "message": "同步" }, - "syncVaultNow": { - "message": "立即同步密碼庫" + "syncNow": { + "message": "Sync now" }, "lastSync": { "message": "上次同步於:" @@ -455,9 +455,6 @@ "bitWebVaultApp": { "message": "Bitwarden 網頁應用程式" }, - "importItems": { - "message": "匯入項目" - }, "select": { "message": "選擇" }, @@ -586,7 +583,7 @@ "message": "封存的項目將不會出現在一般搜尋結果或自動填入建議中。確定要封存此項目嗎?" }, "upgradeToUseArchive": { - "message": "A premium membership is required to use Archive." + "message": "需要進階版會員才能使用封存功能。" }, "edit": { "message": "編輯" @@ -598,7 +595,7 @@ "message": "檢視全部" }, "showAll": { - "message": "Show all" + "message": "顯示全部" }, "viewLess": { "message": "顯示較少" @@ -1325,8 +1322,11 @@ "exportFrom": { "message": "匯出自" }, - "exportVault": { - "message": "匯出密碼庫" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "檔案格式" @@ -1407,25 +1407,25 @@ "message": "深入了解" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "更新加密設定時發生錯誤。" }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "更新您的加密設定" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "新的建議加密設定將提升您的帳戶安全性。請輸入主密碼以立即更新。" }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "請先確認身分後再繼續" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "輸入您的主密碼" }, "updateSettings": { - "message": "Update settings" + "message": "更新設定" }, "later": { - "message": "Later" + "message": "以後再說" }, "authenticatorKeyTotp": { "message": "驗證器金鑰 (TOTP)" @@ -1457,6 +1457,15 @@ "attachmentSaved": { "message": "附件已儲存" }, + "fixEncryption": { + "message": "修正加密" + }, + "fixEncryptionTooltip": { + "message": "此檔案使用了過時的加密方式。" + }, + "attachmentUpdated": { + "message": "附件已更新" + }, "file": { "message": "檔案" }, @@ -1466,6 +1475,9 @@ "selectFile": { "message": "選取檔案" }, + "itemsTransferred": { + "message": "Items transferred" + }, "maxFileSize": { "message": "檔案最大為 500MB。" }, @@ -1497,7 +1509,7 @@ "message": "用於檔案附件的 1 GB 加密儲存空間。" }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "用於檔案附件的 $SIZE$ 加密儲存空間。", "placeholders": { "size": { "content": "$1", @@ -1904,7 +1916,7 @@ "message": "逾期年份" }, "monthly": { - "message": "month" + "message": "月" }, "expiration": { "message": "逾期" @@ -3240,9 +3252,6 @@ "copyCustomFieldNameNotUnique": { "message": "找不到唯一識別碼。" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "以下組織的成員已不再需要主密碼。請與你的組織管理員確認下方的網域。" - }, "organizationName": { "message": "組織名稱" }, @@ -4206,10 +4215,6 @@ "ignore": { "message": "忽略" }, - "importData": { - "message": "匯入資料", - "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" - }, "importError": { "message": "匯入時發生錯誤" }, @@ -4796,6 +4801,15 @@ "accountSecurity": { "message": "帳戶安全性" }, + "phishingBlocker": { + "message": "Phishing Blocker" + }, + "enablePhishingDetection": { + "message": "Phishing detection" + }, + "enablePhishingDetectionDesc": { + "message": "Display warning before accessing suspected phishing sites" + }, "notifications": { "message": "通知" }, @@ -4942,7 +4956,7 @@ "message": "進階版" }, "unlockFeaturesWithPremium": { - "message": "Unlock reporting, emergency access, and more security features with Premium." + "message": "使用進階版解鎖報告、緊急存取及更多安全功能。" }, "freeOrgsCannotUseAttachments": { "message": "免費組織無法使用附檔" @@ -5848,17 +5862,17 @@ "andMoreFeatures": { "message": "以及其他功能功能!" }, - "planDescPremium": { - "message": "完整的線上安全" + "advancedOnlineSecurity": { + "message": "進階線上安全防護" }, "upgradeToPremium": { "message": "升級到 Premium" }, "unlockAdvancedSecurity": { - "message": "Unlock advanced security features" + "message": "解鎖進階安全功能" }, "unlockAdvancedSecurityDesc": { - "message": "A Premium subscription gives you more tools to stay secure and in control" + "message": "進階版訂閱可為您提供更多工具,協助維持安全並掌握主控權" }, "explorePremium": { "message": "探索進階版" @@ -5879,7 +5893,141 @@ "cardNumberLabel": { "message": "支付卡號碼" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "逾時後動作" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "此設定由您的組織管理。" + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "您的組織已將最長工作階段逾時設為 $HOURS$ 小時與 $MINUTES$ 分鐘。", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToImmediately": { + "message": "您的組織已將預設工作階段逾時設定為「立即」。" + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "您的組織已將預設工作階段逾時設定為「在系統鎖定時」。" + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "您的組織已將預設工作階段逾時設定為「在瀏覽器重新啟動時」。" + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "最長逾時時間不可超過 $HOURS$ 小時 $MINUTES$ 分鐘", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "於瀏覽器重新啟動時" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "設定一個解鎖方式來變更您的密碼庫逾時動作。" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } From a987494300fc2d745efc4a6c675f86a8eedb797b Mon Sep 17 00:00:00 2001 From: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com> Date: Tue, 16 Dec 2025 10:13:18 -0600 Subject: [PATCH 18/67] [PM-29607] Create `@bitwarden/subscription` (#17997) * Create @bitwarden/subscription * Fix changed import in tsconfig.base.json --- .github/CODEOWNERS | 1 + jest.config.js | 1 + libs/subscription/README.md | 5 ++++ libs/subscription/eslint.config.mjs | 3 ++ libs/subscription/jest.config.js | 10 +++++++ libs/subscription/package.json | 11 +++++++ libs/subscription/project.json | 34 ++++++++++++++++++++++ libs/subscription/src/index.ts | 1 + libs/subscription/src/subscription.spec.ts | 8 +++++ libs/subscription/tsconfig.eslint.json | 6 ++++ libs/subscription/tsconfig.json | 13 +++++++++ libs/subscription/tsconfig.lib.json | 10 +++++++ libs/subscription/tsconfig.spec.json | 10 +++++++ package-lock.json | 9 ++++++ tsconfig.base.json | 1 + 15 files changed, 123 insertions(+) create mode 100644 libs/subscription/README.md create mode 100644 libs/subscription/eslint.config.mjs create mode 100644 libs/subscription/jest.config.js create mode 100644 libs/subscription/package.json create mode 100644 libs/subscription/project.json create mode 100644 libs/subscription/src/index.ts create mode 100644 libs/subscription/src/subscription.spec.ts create mode 100644 libs/subscription/tsconfig.eslint.json create mode 100644 libs/subscription/tsconfig.json create mode 100644 libs/subscription/tsconfig.lib.json create mode 100644 libs/subscription/tsconfig.spec.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 89fff27b217..99efec2fbbb 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -232,3 +232,4 @@ libs/pricing @bitwarden/team-billing-dev .claude/ @bitwarden/team-ai-sme .github/workflows/respond.yml @bitwarden/team-ai-sme .github/workflows/review-code.yml @bitwarden/team-ai-sme +libs/subscription @bitwarden/team-billing-dev diff --git a/jest.config.js b/jest.config.js index e5aeb536172..37d15eb8f92 100644 --- a/jest.config.js +++ b/jest.config.js @@ -59,6 +59,7 @@ module.exports = { "/libs/tools/send/send-ui/jest.config.js", "/libs/user-core/jest.config.js", "/libs/vault/jest.config.js", + "/libs/subscription/jest.config.js", ], // Workaround for a memory leak that crashes tests in CI: diff --git a/libs/subscription/README.md b/libs/subscription/README.md new file mode 100644 index 00000000000..be3d5044b4f --- /dev/null +++ b/libs/subscription/README.md @@ -0,0 +1,5 @@ +# Subscription + +Owned by: billing + +Components and services for managing Bitwarden subscriptions. diff --git a/libs/subscription/eslint.config.mjs b/libs/subscription/eslint.config.mjs new file mode 100644 index 00000000000..9c37d10e3ff --- /dev/null +++ b/libs/subscription/eslint.config.mjs @@ -0,0 +1,3 @@ +import baseConfig from "../../eslint.config.mjs"; + +export default [...baseConfig]; diff --git a/libs/subscription/jest.config.js b/libs/subscription/jest.config.js new file mode 100644 index 00000000000..a78ad5c2fc3 --- /dev/null +++ b/libs/subscription/jest.config.js @@ -0,0 +1,10 @@ +module.exports = { + displayName: "subscription", + preset: "../../jest.preset.js", + testEnvironment: "node", + transform: { + "^.+\\.[tj]s$": ["ts-jest", { tsconfig: "/tsconfig.spec.json" }], + }, + moduleFileExtensions: ["ts", "js", "html"], + coverageDirectory: "../../coverage/libs/subscription", +}; diff --git a/libs/subscription/package.json b/libs/subscription/package.json new file mode 100644 index 00000000000..67861a8891f --- /dev/null +++ b/libs/subscription/package.json @@ -0,0 +1,11 @@ +{ + "name": "@bitwarden/subscription", + "version": "0.0.1", + "description": "Components and services for managing Bitwarden subscriptions.", + "private": true, + "type": "commonjs", + "main": "index.js", + "types": "index.d.ts", + "license": "GPL-3.0", + "author": "billing" +} diff --git a/libs/subscription/project.json b/libs/subscription/project.json new file mode 100644 index 00000000000..ebd7b1cb73e --- /dev/null +++ b/libs/subscription/project.json @@ -0,0 +1,34 @@ +{ + "name": "subscription", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/subscription/src", + "projectType": "library", + "tags": [], + "targets": { + "build": { + "executor": "@nx/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/libs/subscription", + "main": "libs/subscription/src/index.ts", + "tsConfig": "libs/subscription/tsconfig.lib.json", + "assets": ["libs/subscription/*.md"], + "rootDir": "libs/subscription/src" + } + }, + "lint": { + "executor": "@nx/eslint:lint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/subscription/**/*.ts"] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/subscription/jest.config.js" + } + } + } +} diff --git a/libs/subscription/src/index.ts b/libs/subscription/src/index.ts new file mode 100644 index 00000000000..3deb7c89d41 --- /dev/null +++ b/libs/subscription/src/index.ts @@ -0,0 +1 @@ +export type Placeholder = unknown; diff --git a/libs/subscription/src/subscription.spec.ts b/libs/subscription/src/subscription.spec.ts new file mode 100644 index 00000000000..7f0836a5063 --- /dev/null +++ b/libs/subscription/src/subscription.spec.ts @@ -0,0 +1,8 @@ +import * as lib from "./index"; + +describe("subscription", () => { + // This test will fail until something is exported from index.ts + it("should work", () => { + expect(lib).toBeDefined(); + }); +}); diff --git a/libs/subscription/tsconfig.eslint.json b/libs/subscription/tsconfig.eslint.json new file mode 100644 index 00000000000..3daf120441a --- /dev/null +++ b/libs/subscription/tsconfig.eslint.json @@ -0,0 +1,6 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": ["src/**/*.ts", "src/**/*.js"], + "exclude": ["**/build", "**/dist"] +} diff --git a/libs/subscription/tsconfig.json b/libs/subscription/tsconfig.json new file mode 100644 index 00000000000..62ebbd94647 --- /dev/null +++ b/libs/subscription/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/subscription/tsconfig.lib.json b/libs/subscription/tsconfig.lib.json new file mode 100644 index 00000000000..9cbf6736007 --- /dev/null +++ b/libs/subscription/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["jest.config.js", "src/**/*.spec.ts"] +} diff --git a/libs/subscription/tsconfig.spec.json b/libs/subscription/tsconfig.spec.json new file mode 100644 index 00000000000..1275f148a18 --- /dev/null +++ b/libs/subscription/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "moduleResolution": "node10", + "types": ["jest", "node"] + }, + "include": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"] +} diff --git a/package-lock.json b/package-lock.json index 879cda31ec7..6d67a0172bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -628,6 +628,11 @@ "version": "0.0.1", "license": "GPL-3.0" }, + "libs/subscription": { + "name": "@bitwarden/subscription", + "version": "0.0.1", + "license": "GPL-3.0" + }, "libs/tools/export/vault-export/vault-export-core": { "name": "@bitwarden/vault-export-core", "version": "0.0.0", @@ -5011,6 +5016,10 @@ "resolved": "libs/storage-test-utils", "link": true }, + "node_modules/@bitwarden/subscription": { + "resolved": "libs/subscription", + "link": true + }, "node_modules/@bitwarden/ui-common": { "resolved": "libs/ui/common", "link": true diff --git a/tsconfig.base.json b/tsconfig.base.json index ae4b9f5f601..2f6499eb374 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -58,6 +58,7 @@ "@bitwarden/state-test-utils": ["libs/state-test-utils/src/index.ts"], "@bitwarden/storage-core": ["libs/storage-core/src/index.ts"], "@bitwarden/storage-test-utils": ["libs/storage-test-utils/src/index.ts"], + "@bitwarden/subscription": ["libs/subscription/src/index.ts"], "@bitwarden/ui-common": ["./libs/ui/common/src"], "@bitwarden/ui-common/setup-jest": ["./libs/ui/common/src/setup-jest"], "@bitwarden/user-core": ["libs/user-core/src/index.ts"], From 25bd2a4c347719aa641378db43591141ad9733a9 Mon Sep 17 00:00:00 2001 From: Nick Krantz <125900171+nick-livefront@users.noreply.github.com> Date: Tue, 16 Dec 2025 12:08:03 -0600 Subject: [PATCH 19/67] move archive check into conditional to avoid undefined error (#18000) --- .../vault-item-dialog/vault-item-dialog.component.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.ts b/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.ts index d7b9ee97123..15e62eaf93e 100644 --- a/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.ts +++ b/apps/web/src/app/vault/components/vault-item-dialog/vault-item-dialog.component.ts @@ -253,7 +253,7 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy { protected showRestore: boolean; - protected cipherIsArchived: boolean; + protected cipherIsArchived: boolean = false; protected get loadingForm() { return this.loadForm && !this.formReady; @@ -350,6 +350,8 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy { return; } + this.cipherIsArchived = this.cipher.isArchived; + this.collections = this.formConfig.collections.filter((c) => this.cipher.collectionIds?.includes(c.id), ); @@ -375,7 +377,6 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy { this.filter = await firstValueFrom(this.routedVaultFilterService.filter$); this.showRestore = await this.canUserRestore(); - this.cipherIsArchived = this.cipher.isArchived; this.performingInitialLoad = false; } From 78784f509d34749c17562ba44f49c0ce29a9105f Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 19:11:06 +0100 Subject: [PATCH 20/67] Autosync the updated translations (#17935) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/desktop/src/locales/af/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ar/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/az/messages.json | 254 ++++++++++++++-- apps/desktop/src/locales/be/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/bg/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/bn/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/bs/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ca/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/cs/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/cy/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/da/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/de/messages.json | 256 ++++++++++++++-- apps/desktop/src/locales/el/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/en_GB/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/en_IN/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/eo/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/es/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/et/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/eu/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/fa/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/fi/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/fil/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/fr/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/gl/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/he/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/hi/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/hr/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/hu/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/id/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/it/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ja/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ka/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/km/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/kn/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ko/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/lt/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/lv/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/me/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ml/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/mr/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/my/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/nb/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ne/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/nl/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/nn/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/or/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/pl/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/pt_BR/messages.json | 294 ++++++++++++++++--- apps/desktop/src/locales/pt_PT/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ro/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ru/messages.json | 256 ++++++++++++++-- apps/desktop/src/locales/si/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/sk/messages.json | 242 ++++++++++++++- apps/desktop/src/locales/sl/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/sr/messages.json | 258 ++++++++++++++-- apps/desktop/src/locales/sv/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/ta/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/te/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/th/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/tr/messages.json | 290 +++++++++++++++--- apps/desktop/src/locales/uk/messages.json | 240 ++++++++++++++- apps/desktop/src/locales/vi/messages.json | 262 +++++++++++++++-- apps/desktop/src/locales/zh_CN/messages.json | 268 +++++++++++++++-- apps/desktop/src/locales/zh_TW/messages.json | 254 ++++++++++++++-- 64 files changed, 14645 insertions(+), 949 deletions(-) diff --git a/apps/desktop/src/locales/af/messages.json b/apps/desktop/src/locales/af/messages.json index a4230a128c5..73a05ce79a6 100644 --- a/apps/desktop/src/locales/af/messages.json +++ b/apps/desktop/src/locales/af/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "'n Onverwagte fout het voorgekom." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Iteminligting" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Volg Ons" }, - "syncVault": { - "message": "Sichroniseer Kluis" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Verander Hoofwagwoord" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Stuur Kluis Uit" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Lêerformaat" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Hoofwagwoord is verwyder" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Invoer data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Invoer fout" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/ar/messages.json b/apps/desktop/src/locales/ar/messages.json index 54a9425c901..7373bb671fa 100644 --- a/apps/desktop/src/locales/ar/messages.json +++ b/apps/desktop/src/locales/ar/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "حدث خطأ غير متوقع." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "معلومات العنصر" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "تابعنا" }, - "syncVault": { - "message": "مزامنة الخزانة" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "تغيير كلمة المرور الرئيسية" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "تصدير من" }, - "exportVault": { - "message": "تصدير الخزانة" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "صيغة الملف" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "تمت إزالة كلمة المرور الرئيسية." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "الاسم البديل للنطاق" }, - "importData": { - "message": "استيراد البيانات", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "خطأ في الاستيراد" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "تم حفظ الملف على الجهاز. إدارة من تنزيلات جهازك." }, + "importantNotice": { + "message": "Important notice" + }, + "setupTwoStepLogin": { + "message": "Set up two-step login" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access." + }, + "remindMeLater": { + "message": "Remind me later" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Do you have reliable access to your email, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "No, I do not" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Yes, I can reliably access my email" + }, + "turnOnTwoStepLogin": { + "message": "Turn on two-step login" + }, + "changeAcctEmail": { + "message": "Change account email" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/az/messages.json b/apps/desktop/src/locales/az/messages.json index 9e8c77aa76a..fb818fac642 100644 --- a/apps/desktop/src/locales/az/messages.json +++ b/apps/desktop/src/locales/az/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Qoşma əlavə et" }, + "itemsTransferred": { + "message": "Elementlər köçürüldü" + }, + "fixEncryption": { + "message": "Şifrələməni düzəlt" + }, + "fixEncryptionTooltip": { + "message": "Bu fayl, köhnə bir şifrələmə üsulunu istifadə edir." + }, + "attachmentUpdated": { + "message": "Qoşma güncəllənib" + }, "maxFileSizeSansPunctuation": { "message": "Maksimal fayl həcmi 500 MB-dır" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Gözlənilməz bir səhv baş verdi." }, + "unexpectedErrorShort": { + "message": "Gözlənilməz xəta" + }, + "closeThisBitwardenWindow": { + "message": "Bu Bitwarden pəncərəsini bağlayıb yenidən sınayın." + }, "itemInformation": { "message": "Element məlumatları" }, @@ -1094,22 +1112,22 @@ "message": "Daha ətraflı" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Şifrələmə ayarlarını güncəlləyərkən bir xəta baş verdi." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Şifrələmə ayarlarınızı güncəlləyin" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Tövsiyə edilən yeni şifrələmə ayarları, hesabınızın təhlükəsizliyini artıracaq. İndi güncəlləmək üçün ana parolunuzu daxil edin." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Davam etmək üçün kimliyinizi təsdiqləyin" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Ana parolunuzu daxil edin" }, "updateSettings": { - "message": "Update settings" + "message": "Ayarları güncəllə" }, "featureUnavailable": { "message": "Özəllik əlçatmazdır" @@ -1180,8 +1198,8 @@ "followUs": { "message": "Bizi izləyin" }, - "syncVault": { - "message": "Seyfi sinxronlaşdır" + "syncNow": { + "message": "İndi sinxr." }, "changeMasterPass": { "message": "Ana parolu dəyişdir" @@ -1509,7 +1527,7 @@ "message": "Fayl qoşmaları üçün 1 GB şifrələnmiş saxlama sahəsi." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "Fayl qoşmaları üçün $SIZE$ şifrələnmiş anbar sahəsi.", "placeholders": { "size": { "content": "$1", @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Buradan xaricə köçür" }, - "exportVault": { - "message": "Seyfi xaricə köçür" + "export": { + "message": "Xaricə köçür" + }, + "import": { + "message": "Daxilə köçür" }, "fileFormat": { "message": "Fayl formatı" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Ana parol silindi." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Aşağıdakı təşkilatların üzvləri üçün artıq ana parol tələb olunmur. Lütfən aşağıdakı domeni təşkilatınızın inzibatçısı ilə təsdiqləyin." - }, "organizationName": { "message": "Təşkilat adı" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Domen ləqəbi" }, - "importData": { - "message": "Veriləri daxilə köçür", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Daxilə köçürmə xətası" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Fayl cihazda saxlanıldı. Endirilənləri cihazınızdan idarə edin." }, + "importantNotice": { + "message": "Vacib bildiriş" + }, + "setupTwoStepLogin": { + "message": "İki addımlı girişi qur" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden, 2025-ci ilin Fevral ayından etibarən yeni cihazlardan gələn girişləri doğrulamaq üçün hesabınızın e-poçtuna bir kod göndərəcək." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Hesabınızı qorumaq üçün alternativ bir yol kimi iki addımlı girişi qura və ya e-poçtunuzu erişə biləcəyiniz bir e-poçtla dəyişdirə bilərsiniz." + }, + "remindMeLater": { + "message": "Daha sonra xatırlat" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "$EMAIL$ e-poçtunuza güvənli şəkildə erişə bilirsiniz?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Xeyr, bilmirəm" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Bəli, e-poçtuma güvənli şəkildə erişə bilirəm" + }, + "turnOnTwoStepLogin": { + "message": "İki addımlı girişi işə sal" + }, + "changeAcctEmail": { + "message": "Hesabın e-poçtunu dəyişdir" + }, + "passkeyLogin": { + "message": "Keçid açarı ilə giriş edilsin?" + }, + "savePasskeyQuestion": { + "message": "Keçid açarı saxlanılsın?" + }, + "saveNewPasskey": { + "message": "Yeni giriş kimi saxla" + }, + "savePasskeyNewLogin": { + "message": "Keçid açarını yeni bir giriş olaraq saxla" + }, + "noMatchingLoginsForSite": { + "message": "Bu sayt üçün uyuşan giriş məlumatı yoxdur" + }, + "overwritePasskey": { + "message": "Keçid açarının üzərinə yazılsın?" + }, + "unableToSavePasskey": { + "message": "Keçid açarı saxlanıla bilmir" + }, + "alreadyContainsPasskey": { + "message": "Bu elementdə artıq bir keçid açarı var. Hazırkı keçid açarının üzərinə yazmaq istədiyinizə əminsiniz?" + }, + "passkeyAlreadyExists": { + "message": "Bu tətbiq üçün bir keçid açarı artıq mövcuddur." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Bu tətbiq, təkrarları dəstəkləmir." + }, + "closeThisWindow": { + "message": "Bu pəncərəni bağla" + }, "allowScreenshots": { "message": "Ekranı çəkməyə icazə ver" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "Və daha çoxu!" }, - "planDescPremium": { - "message": "Tam onlayn təhlükəsizlik" + "advancedOnlineSecurity": { + "message": "Qabaqcıl onlayn təhlükəsizlik" }, "upgradeToPremium": { "message": "\"Premium\"a yüksəlt" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Təşkilatınız, artıq Bitwarden-ə giriş etmək üçün ana parol istifadə etmir. Davam etmək üçün təşkilatı və domeni doğrulayın." + }, + "continueWithLogIn": { + "message": "Giriş etməyə davam" + }, + "doNotContinue": { + "message": "Davam etmə" + }, + "domain": { + "message": "Domen" + }, + "keyConnectorDomainTooltip": { + "message": "Bu domen, hesabınızın şifrələmə açarlarını saxlayacaq, ona görə də, bu domenə güvəndiyinizə əmin olun. Əmin deyilsinizsə, adminizlə əlaqə saxlayın." + }, + "verifyYourOrganization": { + "message": "Giriş etmək üçün təşkilatınızı doğrulayın" + }, + "organizationVerified": { + "message": "Təşkilat doğrulandı" + }, + "domainVerified": { + "message": "Domen doğrulandı" + }, + "leaveOrganizationContent": { + "message": "Təşkilatınızı doğrulamasanız, təşkilata erişiminiz ləğv ediləcək." + }, + "leaveNow": { + "message": "İndi tərk et" + }, + "verifyYourDomainToLogin": { + "message": "Giriş etmək üçün domeninizi doğrulayın" + }, + "verifyYourDomainDescription": { + "message": "Giriş prosesini davam etdirmək üçün bu domeni doğrulayın." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Giriş prosesini davam etdirmək üçün bu təşkilatı və domeni doğrulayın." + }, "sessionTimeoutSettingsAction": { "message": "Vaxt bitmə əməliyyatı" }, "sessionTimeoutHeader": { "message": "Sessiya vaxt bitməsi" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Bu ayar, təşkilatınız tərəfindən idarə olunur." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Təşkilatınız, maksimum seyf bitmə vaxtını $HOURS$ saat $MINUTES$ dəqiqə olaraq ayarladı.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Təşkilatınız, seansın ilkin bitmə vaxtını Sistem kilidi açılanda olaraq təyin etdi." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Təşkilatınız, seansın ilkin bitmə vaxtını Yenidən başladılanda olaraq təyin etdi." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maksimum bitmə vaxtı $HOURS$ saat $MINUTES$ dəqiqə dəyərini aşa bilməz", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Yenidən başladılanda" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Vaxt bitmə əməliyyatınızı dəyişdirmək üçün bir kilid açma üsulu qurun" + }, + "upgrade": { + "message": "Yüksəlt" + }, + "leaveConfirmationDialogTitle": { + "message": "Tərk etmək istədiyinizə əminsiniz?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Rədd cavabı versəniz, fərdi elementləriniz hesabınızda qalacaq, paylaşılan elementlərə və təşkilat özəlliklərinə erişimi itirəcəksiniz." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Erişimi təkrar qazanmaq üçün admininizlə əlaqə saxlayın." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Tərk et: $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Seyfimi necə idarə edim?" + }, + "transferItemsToOrganizationTitle": { + "message": "Elementləri bura köçür: $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$, təhlükəsizlik və riayətlilik üçün bütün elementlərin təşkilata aid olmasını tələb edir. Elementlərinizin sahibliyini transfer etmək üçün qəbul edin.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Transferi qəbul et" + }, + "declineAndLeave": { + "message": "Rədd et və tərk et" + }, + "whyAmISeeingThis": { + "message": "Bunu niyə görürəm?" } } diff --git a/apps/desktop/src/locales/be/messages.json b/apps/desktop/src/locales/be/messages.json index e9b3834a9f7..982c5ba2956 100644 --- a/apps/desktop/src/locales/be/messages.json +++ b/apps/desktop/src/locales/be/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Адбылася нечаканая памылка." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Звесткі аб элеменце" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Сачыце за намі" }, - "syncVault": { - "message": "Сінхранізаваць сховішча" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Змяніць асноўны пароль" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Экспартаваць сховішча" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Фармат файла" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Асноўны пароль выдалены." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/bg/messages.json b/apps/desktop/src/locales/bg/messages.json index f27fb467c0c..b223a4d42b3 100644 --- a/apps/desktop/src/locales/bg/messages.json +++ b/apps/desktop/src/locales/bg/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Добавяне на прикачен файл" }, + "itemsTransferred": { + "message": "Елементите са прехвърлени" + }, + "fixEncryption": { + "message": "Поправяне на шифроването" + }, + "fixEncryptionTooltip": { + "message": "Този файл използва остарял метод на шифроване." + }, + "attachmentUpdated": { + "message": "Прикаченият файл е актуализиран" + }, "maxFileSizeSansPunctuation": { "message": "Максималният размер на файла е 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Неочаквана грешка." }, + "unexpectedErrorShort": { + "message": "Неочаквана грешка" + }, + "closeThisBitwardenWindow": { + "message": "Затворете прозореца на Битуорден и опитайте отново." + }, "itemInformation": { "message": "Сведения за елемента" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Следвайте ни" }, - "syncVault": { - "message": "Синхронизиране" + "syncNow": { + "message": "Синхронизиране сега" }, "changeMasterPass": { "message": "Промяна на главната парола" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Изнасяне от" }, - "exportVault": { - "message": "Изнасяне на трезора" + "export": { + "message": "Изнасяне" + }, + "import": { + "message": "Внасяне" }, "fileFormat": { "message": "Формат на файла" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Главната парола е премахната." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "За членовете на следната организация вече не се изисква главна парола. Потвърдете домейна по-долу с администратора на организацията си." - }, "organizationName": { "message": "Име на организацията" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Псевдонимен домейн" }, - "importData": { - "message": "Внасяне на данни", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Грешка при внасянето" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Файлът е запазен на устройството. Можете да го намерите в мястото за сваляния на устройството." }, + "importantNotice": { + "message": "Важно съобщение" + }, + "setupTwoStepLogin": { + "message": "Настройте двустепенно удостоверяване" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Битуорден ще изпрати код до е-пощата Ви, за потвърждаване на вписването от нови устройства. Това ще започне от февруари 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Можете да настроите двустепенно удостоверяване, като различен метод на защита, или ако е необходимо да промените е-пощата си с такава, до която имате достъп." + }, + "remindMeLater": { + "message": "Напомнете ми по-късно" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Имате ли сигурен достъп до е-пощата си – $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Не, нямам" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Да, имам достъп до е-пощата си" + }, + "turnOnTwoStepLogin": { + "message": "Включване на двустепенното удостоверяване" + }, + "changeAcctEmail": { + "message": "Промяна на е-пощата" + }, + "passkeyLogin": { + "message": "Вписване със секретен ключ?" + }, + "savePasskeyQuestion": { + "message": "Да се запази на секретният ключ?" + }, + "saveNewPasskey": { + "message": "Запазване като нов елемент за вписване" + }, + "savePasskeyNewLogin": { + "message": "Запазване на секретния ключ като нов елемент за вписване" + }, + "noMatchingLoginsForSite": { + "message": "Няма записи за вписване отговарящи на този уеб сайт" + }, + "overwritePasskey": { + "message": "Да се замени ли секретният ключ?" + }, + "unableToSavePasskey": { + "message": "Секретният ключ не може да бъде запазен" + }, + "alreadyContainsPasskey": { + "message": "Този елемент вече съдържа секретен ключ. Наистина ли искате да замените текущия секретен ключ?" + }, + "passkeyAlreadyExists": { + "message": "За това приложение вече съществува секретен ключ." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Това приложение не поддържа дубликати." + }, + "closeThisWindow": { + "message": "Затворете този прозорец" + }, "allowScreenshots": { "message": "Позволяване на заснемането на екрана" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "И още!" }, - "planDescPremium": { - "message": "Пълна сигурност в Интернет" + "advancedOnlineSecurity": { + "message": "Разширена сигурност в Интернет" }, "upgradeToPremium": { "message": "Надградете до Платения план" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Вашата организация вече не използва главни пароли за вписване в Битуорден. За да продължите, потвърдете организацията и домейна." + }, + "continueWithLogIn": { + "message": "Продължаване с вписването" + }, + "doNotContinue": { + "message": "Не продължавам" + }, + "domain": { + "message": "Домейн" + }, + "keyConnectorDomainTooltip": { + "message": "Този домейн ще съхранява ключовете за шифроване на акаунта Ви, така че се уверете, че му имате доверие. Ако имате съмнения, свържете се с администратора си." + }, + "verifyYourOrganization": { + "message": "Потвърдете организацията си, за да се впишете" + }, + "organizationVerified": { + "message": "Организацията е потвърдена" + }, + "domainVerified": { + "message": "Домейнът е потвърден" + }, + "leaveOrganizationContent": { + "message": "Ако не потвърдите организацията, достъпът Ви до нея ще бъде преустановен." + }, + "leaveNow": { + "message": "Напускане сега" + }, + "verifyYourDomainToLogin": { + "message": "Потвърдете домейна си, за да се впишете" + }, + "verifyYourDomainDescription": { + "message": "За да продължите с вписването, потвърдете този домейн." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "За да продължите с вписването, потвърдете организацията и домейна." + }, "sessionTimeoutSettingsAction": { "message": "Действие при изтичането на времето за достъп" }, "sessionTimeoutHeader": { "message": "Изтичане на времето за сесията" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Тази настройка се управлява от организацията Ви." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Организацията Ви е настроила максималното разрешено време за достъп на [%1$i] час(а) и [%2$i] минути.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Организацията Ви е настроила стандартното разрешено време за достъп да бъде до заключване на системата." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Организацията Ви е настроила стандартното разрешено време за достъп да бъде до рестартиране." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Максималното време на достъп не може да превишава $HOURS$ час(а) и $MINUTES$ минути", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "При рестартиране" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Задайте метод за отключване, за да може да промените действието при изтичане на времето за достъп" + }, + "upgrade": { + "message": "Надграждане" + }, + "leaveConfirmationDialogTitle": { + "message": "Наистина ли искате да напуснете?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ако откажете, Вашите собствени елементи ще останат в акаунта Ви, но ще загубите достъп до споделените елементи и функционалностите на организацията." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Свържете се с администратор, за да получите достъп отново." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Напускане на $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Как да управлявам трезора си?" + }, + "transferItemsToOrganizationTitle": { + "message": "Прехвърляне на елементи към $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ изисква всички елементи да станат притежание на организацията, за по-добра сигурност и съвместимост. Изберете, че приемате, за да прехвърлите собствеността на елементите си към организацията.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Приемане на прехвърлянето" + }, + "declineAndLeave": { + "message": "Отказване и напускане" + }, + "whyAmISeeingThis": { + "message": "Защо виждам това?" } } diff --git a/apps/desktop/src/locales/bn/messages.json b/apps/desktop/src/locales/bn/messages.json index f9f072f290e..07233587ba8 100644 --- a/apps/desktop/src/locales/bn/messages.json +++ b/apps/desktop/src/locales/bn/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "একটি অপ্রত্যাশিত ত্রুটি ঘটেছে।" }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "বস্তু তথ্য" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "ভল্ট সিঙ্ক করুন" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "মূল পাসওয়ার্ড পরিবর্তন" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "ভল্ট রফতানি" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "ফাইলের ধরণ" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/bs/messages.json b/apps/desktop/src/locales/bs/messages.json index b8798320a98..432f466ebe1 100644 --- a/apps/desktop/src/locales/bs/messages.json +++ b/apps/desktop/src/locales/bs/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Neočekivana greška se dogodila." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informacije o stavki" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Pratite nas" }, - "syncVault": { - "message": "Sinhronizujte trezor sada" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Promijenite glavnu lozinku" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Izvezi trezor" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format datoteke" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Uvoz podataka", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Greška pri uvozu" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/ca/messages.json b/apps/desktop/src/locales/ca/messages.json index a7674cbc753..b91438416dd 100644 --- a/apps/desktop/src/locales/ca/messages.json +++ b/apps/desktop/src/locales/ca/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Afig adjunt" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "La mida màxima del fitxer és de 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "S'ha produït un error inesperat." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informació de l'element" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Seguiu-nos" }, - "syncVault": { - "message": "Sincronitza la caixa forta" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Canvia la contrasenya mestra" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exporta des de" }, - "exportVault": { - "message": "Exporta caixa forta" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format de fitxer" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "S'ha suprimit la contrasenya mestra." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Ja no cal contrasenya mestra per als membres de la següent organització. Confirmeu el domini següent amb l'administrador de l'organització." - }, "organizationName": { "message": "Nom de l'organització" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Domini d'àlies" }, - "importData": { - "message": "Importa dades", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Error d'importació" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Permet capturar la pantalla" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/cs/messages.json b/apps/desktop/src/locales/cs/messages.json index b93e5d0f513..dffe7b34f8f 100644 --- a/apps/desktop/src/locales/cs/messages.json +++ b/apps/desktop/src/locales/cs/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Přidat přílohu" }, + "itemsTransferred": { + "message": "Převedené položky" + }, + "fixEncryption": { + "message": "Opravit šifrování" + }, + "fixEncryptionTooltip": { + "message": "Tento soubor používá zastaralou šifrovací metodu." + }, + "attachmentUpdated": { + "message": "Příloha byla aktualizována" + }, "maxFileSizeSansPunctuation": { "message": "Maximální velikost souboru je 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Vyskytla se neočekávaná chyba." }, + "unexpectedErrorShort": { + "message": "Neočekávaná chyba" + }, + "closeThisBitwardenWindow": { + "message": "Zavřete toto okno Bitwardenu a zkuste to znovu." + }, "itemInformation": { "message": "Informace o položce" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Sledujte nás" }, - "syncVault": { - "message": "Synchronizovat trezor" + "syncNow": { + "message": "Synchronizovat nyní" }, "changeMasterPass": { "message": "Změnit hlavní heslo" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exportovat z" }, - "exportVault": { - "message": "Exportovat trezor" + "export": { + "message": "Exportovat" + }, + "import": { + "message": "Importovat" }, "fileFormat": { "message": "Formát souboru" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Hlavní heslo bylo odebráno" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hlavní heslo již není vyžadováno pro členy následující organizace. Potvrďte níže uvedenou doménu u správce Vaší organizace." - }, "organizationName": { "message": "Název organizace" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Doména aliasu" }, - "importData": { - "message": "Importovat data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Chyba importu" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Soubor byl uložen. Můžete jej nalézt ve stažené složce v zařízení." }, + "importantNotice": { + "message": "Důležité upozornění" + }, + "setupTwoStepLogin": { + "message": "Nastavit dvoufázové přihlášení" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden odešle kód na e-mail Vašeho účtu pro ověření přihlášení z nových zařízení počínaje únorem 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Dvoufázové přihlášení můžete nastavit jako alternativní způsob ochrany Vašeho účtu nebo změnit svůj e-mail na ten, k němuž můžete přistupovat." + }, + "remindMeLater": { + "message": "Připomenout později" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Máte spolehlivý přístup ke svému e-mailu $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Ne, nemám" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Ano, ke svému e-mailu mám přístup" + }, + "turnOnTwoStepLogin": { + "message": "Zapnout dvoufázové přihlášení" + }, + "changeAcctEmail": { + "message": "Změnit e-mail účtu" + }, + "passkeyLogin": { + "message": "Přihlásit se pomocí přístupového klíče?" + }, + "savePasskeyQuestion": { + "message": "Uložit přístupový klíč?" + }, + "saveNewPasskey": { + "message": "Uložit jako nové přihlašovací údaje" + }, + "savePasskeyNewLogin": { + "message": "Uložit přístupový klíč jako nové přihlášení" + }, + "noMatchingLoginsForSite": { + "message": "Žádné odpovídající přihlašovací údaje pro tento web" + }, + "overwritePasskey": { + "message": "Přepsat přístupový klíč?" + }, + "unableToSavePasskey": { + "message": "Nelze uložit přístupový klíč" + }, + "alreadyContainsPasskey": { + "message": "Tato položka již obsahuje přístupový klíč. Jste si jisti, že chcete přepsat aktuální přístupový klíč?" + }, + "passkeyAlreadyExists": { + "message": "Přístupový klíč pro tuto aplikaci již existuje." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Tato aplikace nepodporuje duplikáty." + }, + "closeThisWindow": { + "message": "Zavřít toto okno" + }, "allowScreenshots": { "message": "Povolit záznam obrazovky" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "A ještě více!" }, - "planDescPremium": { - "message": "Dokončit online zabezpečení" + "advancedOnlineSecurity": { + "message": "Pokročilé zabezpečení online" }, "upgradeToPremium": { "message": "Aktualizovat na Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Vaše organizace již k přihlášení do Bitwardenu nepoužívá hlavní hesla. Chcete-li pokračovat, ověřte organizaci a doménu." + }, + "continueWithLogIn": { + "message": "Pokračovat s přihlášením" + }, + "doNotContinue": { + "message": "Nepokračovat" + }, + "domain": { + "message": "Doména" + }, + "keyConnectorDomainTooltip": { + "message": "Tato doména uloží šifrovací klíče Vašeho účtu, takže se ujistěte, že jí věříte. Pokud si nejste jisti, kontaktujte Vašeho správce." + }, + "verifyYourOrganization": { + "message": "Ověřte svou organizaci pro přihlášení" + }, + "organizationVerified": { + "message": "Organizace byla ověřena" + }, + "domainVerified": { + "message": "Doména byla ověřena" + }, + "leaveOrganizationContent": { + "message": "Pokud neověříte svou organizaci, Váš přístup k organizaci bude zrušen." + }, + "leaveNow": { + "message": "Opustit hned" + }, + "verifyYourDomainToLogin": { + "message": "Ověřte svou doménu pro přihlášení" + }, + "verifyYourDomainDescription": { + "message": "Chcete-li pokračovat v přihlášení, ověřte tuto doménu." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Chcete-li pokračovat v přihlášení, ověřte organizaci a doménu." + }, "sessionTimeoutSettingsAction": { "message": "Akce vypršení časového limitu" }, "sessionTimeoutHeader": { "message": "Časový limit relace" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Tato nastavení je spravováno Vaší organizací." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Vaše organizace nastavila maximální časový limit relace na $HOURS$ hodin a $MINUTES$ minut.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Vaše organizace nastavila výchozí časový limit relace na Při uzamknutí systému." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Vaše organizace nastavila výchozí časový limit relace na Při restartu." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximální časový limit nesmí překročit $HOURS$ hodin a $MINUTES$ minut", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Při restartu" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Nastavte metodu odemknutí, abyste změnili akci při vypršení časového limitu" + }, + "upgrade": { + "message": "Aktualizovat" + }, + "leaveConfirmationDialogTitle": { + "message": "Opravdu chcete odejít?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Odmítnutím zůstanou Vaše osobní položky ve Vašem účtu, ale ztratíte přístup ke sdíleným položkám a funkcím organizace." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Obraťte se na svého správce, abyste znovu získali přístup." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Opustit $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Jak mohu spravovat svůj trezor?" + }, + "transferItemsToOrganizationTitle": { + "message": "Přenést položky do $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ vyžaduje, aby byly všechny položky vlastněny organizací z důvodu bezpečnosti a shody. Klepnutím na tlačítko pro převod vlastnictví Vašich položek.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Přijmout převod" + }, + "declineAndLeave": { + "message": "Odmítnout a odejít" + }, + "whyAmISeeingThis": { + "message": "Proč se mi toto zobrazuje?" } } diff --git a/apps/desktop/src/locales/cy/messages.json b/apps/desktop/src/locales/cy/messages.json index 5a00ad90bbd..45461838f58 100644 --- a/apps/desktop/src/locales/cy/messages.json +++ b/apps/desktop/src/locales/cy/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/da/messages.json b/apps/desktop/src/locales/da/messages.json index 622c9e9187d..38396658400 100644 --- a/apps/desktop/src/locales/da/messages.json +++ b/apps/desktop/src/locales/da/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "En uventet fejl opstod." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Emneinformation" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Følg os" }, - "syncVault": { - "message": "Synk boks" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Skift hovedadgangskode" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Eksportér fra" }, - "exportVault": { - "message": "Eksportér boks" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Filformat" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Hovedadgangskode fjernet." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Aliasdomæne" }, - "importData": { - "message": "Dataimport", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Importfejl" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Fil gemt på enheden. Håndtér fra enhedens downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/de/messages.json b/apps/desktop/src/locales/de/messages.json index 2743ec21c8a..52e92a9dbfe 100644 --- a/apps/desktop/src/locales/de/messages.json +++ b/apps/desktop/src/locales/de/messages.json @@ -70,7 +70,7 @@ } }, "noEditPermissions": { - "message": "Keine Berechtigung zum Bearbeiten dieses Eintrags" + "message": "Du bist nicht berechtigt, diesen Eintrag zu bearbeiten" }, "welcomeBack": { "message": "Willkommen zurück" @@ -708,6 +708,18 @@ "addAttachment": { "message": "Anhang hinzufügen" }, + "itemsTransferred": { + "message": "Einträge wurden übertragen" + }, + "fixEncryption": { + "message": "Verschlüsselung reparieren" + }, + "fixEncryptionTooltip": { + "message": "Diese Datei verwendet eine veraltete Verschlüsselungsmethode." + }, + "attachmentUpdated": { + "message": "Anhang aktualisiert" + }, "maxFileSizeSansPunctuation": { "message": "Die maximale Dateigröße beträgt 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Ein unerwarteter Fehler ist aufgetreten." }, + "unexpectedErrorShort": { + "message": "Unerwarteter Fehler" + }, + "closeThisBitwardenWindow": { + "message": "Schließe dieses Bitwarden-Fenster und versuche es erneut." + }, "itemInformation": { "message": "Eintragsinformationen" }, @@ -1094,22 +1112,22 @@ "message": "Mehr erfahren" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Beim Aktualisieren der Verschlüsselungseinstellungen ist ein Fehler aufgetreten." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Aktualisiere deine Verschlüsselungseinstellungen" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Die neuen empfohlenen Verschlüsselungseinstellungen verbessern deine Kontosicherheit. Gib dein Master-Passwort ein, um sie zu aktualisieren." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Bestätige deine Identität, um fortzufahren" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Gib dein Master-Passwort ein" }, "updateSettings": { - "message": "Update settings" + "message": "Einstellungen aktualisieren" }, "featureUnavailable": { "message": "Funktion nicht verfügbar" @@ -1180,8 +1198,8 @@ "followUs": { "message": "Folge uns" }, - "syncVault": { - "message": "Tresor synchronisieren" + "syncNow": { + "message": "Jetzt synchronisieren" }, "changeMasterPass": { "message": "Master-Passwort ändern" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export aus" }, - "exportVault": { - "message": "Tresor exportieren" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Dateiformat" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master-Passwort entfernt" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Für Mitglieder der folgenden Organisation ist kein Master-Passwort mehr erforderlich. Bitte bestätige die folgende Domain bei deinem Organisations-Administrator." - }, "organizationName": { "message": "Name der Organisation" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias-Domain" }, - "importData": { - "message": "Daten importieren", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Importfehler" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Datei auf Gerät gespeichert. Greife darauf über die Downloads deines Geräts zu." }, + "importantNotice": { + "message": "Wichtiger Hinweis" + }, + "setupTwoStepLogin": { + "message": "Zwei-Faktor-Authentifizierung einrichten" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Ab Februar 2025 wird Bitwarden einen Code an deine Konto-E-Mail-Adresse senden, um Anmeldungen von neuen Geräten zu verifizieren." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Du kannst die Zwei-Faktor-Authentifizierung als eine alternative Methode einrichten, um dein Konto zu schützen, oder deine E-Mail-Adresse zu einer anderen ändern, auf die du zugreifen kannst." + }, + "remindMeLater": { + "message": "Erinnere mich später" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Hast du zuverlässigen Zugriff auf deine E-Mail-Adresse $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Nein, habe ich nicht" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Ja, ich kann zuverlässig auf meine E-Mails zugreifen" + }, + "turnOnTwoStepLogin": { + "message": "Zwei-Faktor-Authentifizierung aktivieren" + }, + "changeAcctEmail": { + "message": "E-Mail-Adresse des Kontos ändern" + }, + "passkeyLogin": { + "message": "Mit Passkey anmelden?" + }, + "savePasskeyQuestion": { + "message": "Passkey speichern?" + }, + "saveNewPasskey": { + "message": "Als neue Zugangsdaten speichern" + }, + "savePasskeyNewLogin": { + "message": "Passkey als neue Zugangsdaten speichern" + }, + "noMatchingLoginsForSite": { + "message": "Keine passenden Zugangsdaten für diese Seite" + }, + "overwritePasskey": { + "message": "Passkey überschreiben?" + }, + "unableToSavePasskey": { + "message": "Passkey konnte nicht gespeichert werden" + }, + "alreadyContainsPasskey": { + "message": "Dieser Eintrag enthält bereits einen Passkey. Bist du sicher, dass du den aktuellen Passkey überschreiben möchtest?" + }, + "passkeyAlreadyExists": { + "message": "Für diese Anwendung existiert bereits ein Passkey." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Diese Anwendung unterstützt keine mehrfachen Instanzen." + }, + "closeThisWindow": { + "message": "Dieses Fenster schließen" + }, "allowScreenshots": { "message": "Bildschirmaufnahme erlauben" }, @@ -4212,7 +4295,7 @@ "message": "Eintrag wurde archiviert" }, "itemWasUnarchived": { - "message": "Eintrag wurde wiederhergestellt" + "message": "Eintrag wird nicht mehr archiviert" }, "archiveItem": { "message": "Eintrag archivieren" @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "Und vieles mehr!" }, - "planDescPremium": { - "message": "Kompletter Online-Sicherheitsplan" + "advancedOnlineSecurity": { + "message": "Erweiterte Online-Sicherheit" }, "upgradeToPremium": { "message": "Auf Premium upgraden" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Deine Organisation verwendet keine Master-Passwörter mehr, um sich bei Bitwarden anzumelden. Verifiziere die Organisation und Domain, um fortzufahren." + }, + "continueWithLogIn": { + "message": "Mit der Anmeldung fortfahren" + }, + "doNotContinue": { + "message": "Nicht fortfahren" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "Diese Domain speichert die Verschlüsselungsschlüssel deines Kontos. Stelle daher sicher, dass du ihr vertraust. Wenn du dir nicht sicher bist, wende dich an deinen Administrator." + }, + "verifyYourOrganization": { + "message": "Verifiziere deine Organisation, um dich anzumelden" + }, + "organizationVerified": { + "message": "Organisation verifiziert" + }, + "domainVerified": { + "message": "Domain verifiziert" + }, + "leaveOrganizationContent": { + "message": "Wenn du deine Organisation nicht verifizierst, wird dein Zugriff auf die Organisation widerrufen." + }, + "leaveNow": { + "message": "Jetzt verlassen" + }, + "verifyYourDomainToLogin": { + "message": "Verifiziere deine Domain, um dich anzumelden" + }, + "verifyYourDomainDescription": { + "message": "Verifiziere diese Domain, um mit der Anmeldung fortzufahren." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Um mit der Anmeldung fortzufahren, verifiziere die Organisation und Domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout-Aktion" }, "sessionTimeoutHeader": { "message": "Sitzungs-Timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Diese Einstellung wird von deiner Organisation verwaltet." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Deine Organisation hat das maximale Sitzungs-Timeout auf $HOURS$ Stunde(n) und $MINUTES$ Minute(n) festgelegt.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Deine Organisation hat das Standard-Sitzungs-Timeout auf \"Wenn System gesperrt\" gesetzt." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Deine Organisation hat das Standard-Sitzungs-Timeout auf \"Beim Neustart der App\" gesetzt." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Das maximale Timeout darf $HOURS$ Stunde(n) und $MINUTES$ Minute(n) nicht überschreiten", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Beim Neustart der App" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Stell eine Entsperrmethode ein, um deine Timeout-Aktion zu ändern" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Bist du sicher, dass du gehen willst?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Wenn du ablehnst, bleiben deine persönlichen Einträge in deinem Konto erhalten, aber du wirst den Zugriff auf geteilte Einträge und Organisationsfunktionen verlieren." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Kontaktiere deinen Administrator, um wieder Zugriff zu erhalten." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "$ORGANIZATION$ verlassen", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Wie kann ich meinen Tresor verwalten?" + }, + "transferItemsToOrganizationTitle": { + "message": "Einträge zu $ORGANIZATION$ übertragen", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ erfordert zur Sicherheit und Compliance, dass alle Einträge der Organisation gehören. Klicke auf Akzeptieren, um den Besitz deiner Einträge zu übertragen.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Übertragung annehmen" + }, + "declineAndLeave": { + "message": "Ablehnen und verlassen" + }, + "whyAmISeeingThis": { + "message": "Warum wird mir das angezeigt?" } } diff --git a/apps/desktop/src/locales/el/messages.json b/apps/desktop/src/locales/el/messages.json index bd8269db4ea..cc6d1909e94 100644 --- a/apps/desktop/src/locales/el/messages.json +++ b/apps/desktop/src/locales/el/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Προσθήκη συνημμένου" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Το μέγιστο μέγεθος αρχείου είναι 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Παρουσιάστηκε ένα μη αναμενόμενο σφάλμα." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Πληροφορίες αντικειμένου" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Ακολουθήστε μας" }, - "syncVault": { - "message": "Συγχρονισμός κρύπτης" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Αλλαγή κύριου κωδικού πρόσβασης" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Εξαγωγή από" }, - "exportVault": { - "message": "Εξαγωγή κρύπτης" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Τύπος αρχείου" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Ο κύριος κωδικός αφαιρέθηκε" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Ψευδώνυμο τομέα" }, - "importData": { - "message": "Εισαγωγή δεδομένων", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Σφάλμα κατά την εισαγωγή" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Το αρχείο αποθηκεύτηκε στη συσκευή. Διαχείριση από τις λήψεις της συσκευής σας." }, + "importantNotice": { + "message": "Important notice" + }, + "setupTwoStepLogin": { + "message": "Set up two-step login" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access." + }, + "remindMeLater": { + "message": "Remind me later" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Do you have reliable access to your email, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "No, I do not" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Yes, I can reliably access my email" + }, + "turnOnTwoStepLogin": { + "message": "Turn on two-step login" + }, + "changeAcctEmail": { + "message": "Change account email" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/en_GB/messages.json b/apps/desktop/src/locales/en_GB/messages.json index 4e1f8569caf..66840673b77 100644 --- a/apps/desktop/src/locales/en_GB/messages.json +++ b/apps/desktop/src/locales/en_GB/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organisation. Please confirm the domain below with your organisation administrator." - }, "organizationName": { "message": "Organisation name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organisation is no longer using master passwords to log into Bitwarden. To continue, verify the organisation and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organisation to log in" + }, + "organizationVerified": { + "message": "Organisation verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organisation, your access to the organisation will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organisation and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organisation has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organisation has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organisation has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organisation features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organisation for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/en_IN/messages.json b/apps/desktop/src/locales/en_IN/messages.json index 1413debe49c..50e6671b2fa 100644 --- a/apps/desktop/src/locales/en_IN/messages.json +++ b/apps/desktop/src/locales/en_IN/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organisation. Please confirm the domain below with your organisation administrator." - }, "organizationName": { "message": "Organisation name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organisation is no longer using master passwords to log into Bitwarden. To continue, verify the organisation and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organisation to log in" + }, + "organizationVerified": { + "message": "Organisation verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organisation, your access to the organisation will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organisation and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organisation has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organisation has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organisation has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organisation features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organisation for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/eo/messages.json b/apps/desktop/src/locales/eo/messages.json index 5cb6995eeb6..a9ed68bffd8 100644 --- a/apps/desktop/src/locales/eo/messages.json +++ b/apps/desktop/src/locales/eo/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informo de ero" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Sekvu nin" }, - "syncVault": { - "message": "Speguli la trezorejon" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Ŝanĝi la ĉefan pasvorton" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Elporti el" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Dosierformato" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "La ĉefa pasvorto foriĝis" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Nomo de la organizo" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Enporti datumon", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Enporti eraron" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "La dosiero konserviĝis en la aparato. La elŝutojn administru de via aparato." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/es/messages.json b/apps/desktop/src/locales/es/messages.json index af90b40af65..e8bf822b015 100644 --- a/apps/desktop/src/locales/es/messages.json +++ b/apps/desktop/src/locales/es/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Ha ocurrido un error inesperado." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Información del elemento" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Síguenos" }, - "syncVault": { - "message": "Sincronizar caja fuerte" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Cambiar contraseña maestra" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exportar desde" }, - "exportVault": { - "message": "Exportar caja fuerte" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Formato de archivo" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Contraseña maestra eliminada." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Ya no es necesaria una contraseña maestra para los miembros de la siguiente organización. Por favor, confirma el dominio que aparece a continuación con el administrador de tu organización." - }, "organizationName": { "message": "Nombre de la organización" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias de dominio" }, - "importData": { - "message": "Importar datos", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Error de importación" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Permitir captura de pantalla" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/et/messages.json b/apps/desktop/src/locales/et/messages.json index 8ab2818f7ea..3b92748908b 100644 --- a/apps/desktop/src/locales/et/messages.json +++ b/apps/desktop/src/locales/et/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Tekkis ootamatu viga." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Kirje andmed" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Jälgi meid" }, - "syncVault": { - "message": "Sünkroniseeri hoidla" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Muuda ülemparooli" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Ekspordi asukohast" }, - "exportVault": { - "message": "Ekspordi hoidla" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Failivorming" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Ülemparool on eemaldatud." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Varidomeen" }, - "importData": { - "message": "Impordi andmed", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Tõrge importimisel" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Fail salvestatud. Halda oma seadmesse allalaaditud faile." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/eu/messages.json b/apps/desktop/src/locales/eu/messages.json index 451e77c4ec0..831636ee240 100644 --- a/apps/desktop/src/locales/eu/messages.json +++ b/apps/desktop/src/locales/eu/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Ustekabeko akatsa gertatu da." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Elementuaren informazioa" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Jarraitu gaitzazu" }, - "syncVault": { - "message": "Sinkronizatu kutxa gotorra" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Aldatu pasahitz nagusia" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Esportatu kutxa gotorra" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Fitxategiaren formatua" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Pasahitz nagusia ezabatua." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json index f7dedc42542..3f2b28cece0 100644 --- a/apps/desktop/src/locales/fa/messages.json +++ b/apps/desktop/src/locales/fa/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "افزودن پیوست" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "حداکثر حجم فایل ۵۰۰ مگابایت است" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "یک خطای غیر منتظره رخ داده است." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "اطلاعات مورد" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "ﻣﺎ ﺭﺍ ﺩﻧﺒﺎﻝ ﮐﻨﻴﺪ" }, - "syncVault": { - "message": "همگام‌سازی گاوصندوق" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "تغییر کلمه عبور اصلی" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "برون ریزی از" }, - "exportVault": { - "message": "برون ریزی گاوصندوق" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "فرمت پرونده" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "کلمه عبور اصلی حذف شد" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "برای اعضای سازمان زیر، کلمه عبور اصلی دیگر لازم نیست. لطفاً دامنه زیر را با مدیر سازمان خود تأیید کنید." - }, "organizationName": { "message": "نام سازمان" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "دامنه مستعار" }, - "importData": { - "message": "درون ریزی داده", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "خطای درون ریزی" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "پرونده در دستگاه ذخیره شد. از بخش بارگیری‌های دستگاه خود مدیریت کنید." }, + "importantNotice": { + "message": "Important notice" + }, + "setupTwoStepLogin": { + "message": "Set up two-step login" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access." + }, + "remindMeLater": { + "message": "Remind me later" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Do you have reliable access to your email, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "No, I do not" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Yes, I can reliably access my email" + }, + "turnOnTwoStepLogin": { + "message": "Turn on two-step login" + }, + "changeAcctEmail": { + "message": "Change account email" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "اجازه ضبط صفحه" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "و بیشتر!" }, - "planDescPremium": { - "message": "امنیت آنلاین کامل" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "ارتقا به نسخه پرمیوم" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "اقدام وقفه زمانی" }, "sessionTimeoutHeader": { "message": "وقفه زمانی نشست" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/fi/messages.json b/apps/desktop/src/locales/fi/messages.json index 2021248bae4..d93e08e759c 100644 --- a/apps/desktop/src/locales/fi/messages.json +++ b/apps/desktop/src/locales/fi/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Tapahtui odottamaton virhe." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Kohteen tiedot" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Seuraa meitä" }, - "syncVault": { - "message": "Synkronoi holvi" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Vaihda pääsalasana" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Vie lähteestä" }, - "exportVault": { - "message": "Vie holvi" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Tiedostomuoto" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Pääsalasana poistettiin" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Aliaksen verkkotunnus" }, - "importData": { - "message": "Tuo tietoja", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Tuontivirhe" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Tiedosto tallennettiin laitteelle. Hallitse sitä laitteesi latauksista." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Salli kuvankaappaus" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/fil/messages.json b/apps/desktop/src/locales/fil/messages.json index 9c8bbaf0a34..e82e5698f9f 100644 --- a/apps/desktop/src/locales/fil/messages.json +++ b/apps/desktop/src/locales/fil/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Isang hindi inaasahang error ang naganap." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Impormasyon ng item" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Sundin mo kami" }, - "syncVault": { - "message": "Vault ng Sync" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Palitan ang master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "I-export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format ng file" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Tinanggal ang password ng master" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/fr/messages.json b/apps/desktop/src/locales/fr/messages.json index 8f7bfc39c4a..b7792522567 100644 --- a/apps/desktop/src/locales/fr/messages.json +++ b/apps/desktop/src/locales/fr/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Ajouter une pièce jointe" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "La taille maximale des fichiers est de 500 Mo" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Une erreur inattendue est survenue." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informations sur l'élément" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Suivez-nous" }, - "syncVault": { - "message": "Synchroniser le coffre" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Changer le mot de passe principal" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exporter depuis" }, - "exportVault": { - "message": "Exporter le coffre" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format de fichier" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Mot de passe principal supprimé" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Un mot de passe maître n'est plus requis pour les membres de l'organisation suivante. Veuillez confirmer le domaine ci-dessous avec l'administrateur de votre organisation." - }, "organizationName": { "message": "Nom de l'organisation" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Domaine de l'alias" }, - "importData": { - "message": "Importer des données", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Erreur lors de l'importation" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Fichier enregistré sur l'appareil. Gérez à partir des téléchargements de votre appareil." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Autoriser les captures d'écran" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "Et encore plus !" }, - "planDescPremium": { - "message": "Sécurité en ligne complète" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Mettre à niveau vers Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Action à l’expiration" }, "sessionTimeoutHeader": { "message": "Délai d'expiration de la session" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/gl/messages.json b/apps/desktop/src/locales/gl/messages.json index 0211550b08d..315272ae464 100644 --- a/apps/desktop/src/locales/gl/messages.json +++ b/apps/desktop/src/locales/gl/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/he/messages.json b/apps/desktop/src/locales/he/messages.json index 5881405c190..5a6d486d723 100644 --- a/apps/desktop/src/locales/he/messages.json +++ b/apps/desktop/src/locales/he/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "הוסף צרופה" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "גודל הקובץ המרבי הוא 500MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "אירעה שגיאה לא צפויה." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "מידע על הפריט" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "עקוב אחרינו" }, - "syncVault": { - "message": "סנכרון כספת" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "החלף סיסמה ראשית" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "ייצוא מ־" }, - "exportVault": { - "message": "יצוא כספת" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "תבנית קובץ" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "הסיסמה הראשית הוסרה" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "סיסמה ראשית אינה נדרשת עוד עבור חברים בארגון הבא. נא לאשר את הדומיין שלהלן עם מנהל הארגון שלך." - }, "organizationName": { "message": "שם הארגון" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "דומיין כינוי" }, - "importData": { - "message": "ייבא נתונים", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "שגיאת ייבוא" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "הקובץ נשמר למכשיר. נהל מהורדות המכשיר שלך." }, + "importantNotice": { + "message": "Important notice" + }, + "setupTwoStepLogin": { + "message": "Set up two-step login" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access." + }, + "remindMeLater": { + "message": "Remind me later" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Do you have reliable access to your email, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "No, I do not" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Yes, I can reliably access my email" + }, + "turnOnTwoStepLogin": { + "message": "Turn on two-step login" + }, + "changeAcctEmail": { + "message": "Change account email" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "אפשר לכידת מסך" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "ועוד!" }, - "planDescPremium": { - "message": "השלם אבטחה מקוונת" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "שדרג לפרימיום" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "פעולת פסק זמן" }, "sessionTimeoutHeader": { "message": "פסק זמן להפעלה" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/hi/messages.json b/apps/desktop/src/locales/hi/messages.json index 2fac0a369fd..b193e645425 100644 --- a/apps/desktop/src/locales/hi/messages.json +++ b/apps/desktop/src/locales/hi/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/hr/messages.json b/apps/desktop/src/locales/hr/messages.json index 07effb638b8..4c7ceb732e7 100644 --- a/apps/desktop/src/locales/hr/messages.json +++ b/apps/desktop/src/locales/hr/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Dodaj privitak" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Najveća veličina datoteke je 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Došlo je do neočekivane pogreške." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informacije o stavci" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Prati nas" }, - "syncVault": { - "message": "Sinkronizraj trezor" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Promjeni glavnu lozinku" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Izvezi iz" }, - "exportVault": { - "message": "Izvezi trezor" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format datoteke" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Glavna lozinka uklonjena." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Glavna lozinka više nije obavezna za članove ove organizacije. Provjeri prikazanu domenu sa svojim administratorom." - }, "organizationName": { "message": "Naziv Organizacije" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domene" }, - "importData": { - "message": "Uvezi podatke", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Greška prilikom uvoza" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Datoteka spremljena na uređaj. Upravljaj u preuzimanjima svog uređaja." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Dozvoli snimanje zaslona" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "I više!" }, - "planDescPremium": { - "message": "Dovrši online sigurnost" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": " Nadogradi na Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Radnja nakon isteka" }, "sessionTimeoutHeader": { "message": "Istek sesije" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/hu/messages.json b/apps/desktop/src/locales/hu/messages.json index 583d5b86a59..ca03a7d11a9 100644 --- a/apps/desktop/src/locales/hu/messages.json +++ b/apps/desktop/src/locales/hu/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Melléklet hozzáadása" }, + "itemsTransferred": { + "message": "Az elemek átvitelre kerültek." + }, + "fixEncryption": { + "message": "Titkosítás javítása" + }, + "fixEncryptionTooltip": { + "message": "Ez a fájl elavult titkosítási módszert használ." + }, + "attachmentUpdated": { + "message": "A melléklet frissítésre került." + }, "maxFileSizeSansPunctuation": { "message": "A maximális fájlméret 500 MB." }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Váratlan hiba történt." }, + "unexpectedErrorShort": { + "message": "Váratlan hiba" + }, + "closeThisBitwardenWindow": { + "message": "Zárjuk be ezt a Bitwarden ablakot és próbáljuk újra." + }, "itemInformation": { "message": "Elem információ" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Követés" }, - "syncVault": { - "message": "Széf szinkronizálása" + "syncNow": { + "message": "Szinkronizálás most" }, "changeMasterPass": { "message": "Mesterjelszó módosítása" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exportálás innen:" }, - "exportVault": { - "message": "Széf exportálása" + "export": { + "message": "Exportálás" + }, + "import": { + "message": "Importálás" }, "fileFormat": { "message": "Fájlformátum" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "A mesterjelszó eltávolításra került." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A következő szervezet tagjai számára már nincs szükség mesterjelszóra. Erősítsük meg az alábbi tartományt a szervezet adminisztrátorával." - }, "organizationName": { "message": "Szervezet neve" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Áldomain" }, - "importData": { - "message": "Adatok importálása", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Importálási hiba" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "A fájl mentésre került az eszközre. Kezeljük az eszközről a letöltéseket." }, + "importantNotice": { + "message": "Fontos megjegyzés" + }, + "setupTwoStepLogin": { + "message": "Kétlépéses bejelentkezés beüzemelése" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "A Bitwarden 2025 februárjától kódot küld a fiókhoz tartozó email címre, amellyel ellenőrizhetők az új eszközökről történő bejelentkezések." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "A fiók védelmének alternatív módjaként beállíthatunk kétlépéses bejelentkezést vagy módosíthatjuk az email címet egy elérhetőre." + }, + "remindMeLater": { + "message": "Emlékeztetés később" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Megbízható a hozzáférés $EMAIL$ email címhez?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Nem, nem érem el" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Igen, megbízhatóan hozzáférek az email címhez" + }, + "turnOnTwoStepLogin": { + "message": "Kétlépéses bejelentkezés bekapcsolása" + }, + "changeAcctEmail": { + "message": "Fiók email cím megváltoztatása" + }, + "passkeyLogin": { + "message": "Bejelentkezés belépőkulccsal?" + }, + "savePasskeyQuestion": { + "message": "Belépőkulcs mentése?" + }, + "saveNewPasskey": { + "message": "Mentés új bejelentkezésként" + }, + "savePasskeyNewLogin": { + "message": "Belépőkulcs mentése új bejelentkezésként" + }, + "noMatchingLoginsForSite": { + "message": "Nincsenek egyező bejelentkezések ehhez a webhelyhez." + }, + "overwritePasskey": { + "message": "Belépőkulcs felülírása?" + }, + "unableToSavePasskey": { + "message": "Nem lehet menteni a belépőkulcsot." + }, + "alreadyContainsPasskey": { + "message": "Ez az elem már tartalmaz egy belépőkulcsot. Biztosan felülírásra kerüljön az aktuális belépőkulcs?" + }, + "passkeyAlreadyExists": { + "message": "Ehhez az alkalmazáshoz már létezik belépőkulcs." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Ez az alkalmazás nem támogatja a másolatokat." + }, + "closeThisWindow": { + "message": "Ezen ablak bezárása" + }, "allowScreenshots": { "message": "Képernyőrögzítés engedélyezése" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "És még több!" }, - "planDescPremium": { - "message": "Teljes körű online biztonság" + "advancedOnlineSecurity": { + "message": "Bővített online biztonság" }, "upgradeToPremium": { "message": "Áttérés Prémium csomagra" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "A szervezet már nem használ mesterjelszavakat a Bitwardenbe bejelentkezéshez. A folytatáshoz ellenőrizzük a szervezetet és a tartományt." + }, + "continueWithLogIn": { + "message": "Folytatás bejelentkezéssel" + }, + "doNotContinue": { + "message": "Nincs folytatás" + }, + "domain": { + "message": "Tartomány" + }, + "keyConnectorDomainTooltip": { + "message": "Ez a tartomány tárolja a fiók titkosítási kulcsait, ezért győződjünk meg róla, hogy megbízunk-e benne. Ha nem vagyunk biztos benne, érdeklődjünk adminisztrátornál." + }, + "verifyYourOrganization": { + "message": "Szervezet ellenőrzése a bejelentkezéshez" + }, + "organizationVerified": { + "message": "A szervezet ellenőrzésre került." + }, + "domainVerified": { + "message": "A tartomány ellenőrzésre került." + }, + "leaveOrganizationContent": { + "message": "Ha nem ellenőrizzük a szervezetet, a szervezethez hozzáférés visszavonásra kerül." + }, + "leaveNow": { + "message": "Elhagyás most" + }, + "verifyYourDomainToLogin": { + "message": "Tartomány ellenőrzése a bejelentkezéshez" + }, + "verifyYourDomainDescription": { + "message": "A bejelentkezés folytatásához ellenőrizzük ezt a tartományt." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "A bejelentkezés folytatásához ellenőrizzük a szervezetet és a tartományt." + }, "sessionTimeoutSettingsAction": { "message": "Időkifutási művelet" }, "sessionTimeoutHeader": { "message": "Munkamenet időkifutás" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Ezt a beállítást a szervezet lezeli." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "A szervezet a munkamenet maximális munkamenet időkifutását $HOURS$ órára és $MINUTES$ percre állította be.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "A szervezet az alapértelmezett munkamenet időkifutástr Rendszerzár be értékre állította." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "A szervezet a maximális munkamenet időkifutást Újraindításkor értékre állította." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "A maximális időtúllépés nem haladhatja meg a $HOURS$ óra és $MINUTES$ perc értéket.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Újraindításkor" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Állítsunk be egy feloldási módot a széf időkifutási műveletének módosításához." + }, + "upgrade": { + "message": "Áttérés" + }, + "leaveConfirmationDialogTitle": { + "message": "Biztosan szeretnénk kilépni?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Az elutasítással a személyes elemek a fiókban maradnak, de elveszítjük hozzáférést a megosztott elemekhez és a szervezeti funkciókhoz." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Lépjünk kapcsolatba az adminisztrátorral a hozzáférés visszaszerzéséért." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "$ORGANIZATION$ elhagyása", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Hogyan kezeljem a széfet?" + }, + "transferItemsToOrganizationTitle": { + "message": "Elemek átvitele $ORGANIZATION$ szervezethez", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ megköveteli, hogy minden elem a szervezet tulajdonában legyen a biztonság és a megfelelőség érdekében. Kattintás az elfogadásra az elemek tulajdonjogának átruházásához.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Átvitel elfogadása" + }, + "declineAndLeave": { + "message": "Elutasítás és kilépés" + }, + "whyAmISeeingThis": { + "message": "Miért látható ez?" } } diff --git a/apps/desktop/src/locales/id/messages.json b/apps/desktop/src/locales/id/messages.json index fbbb1440990..9da92c35d11 100644 --- a/apps/desktop/src/locales/id/messages.json +++ b/apps/desktop/src/locales/id/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Terjadi kesalahan yang tak diduga." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informasi Item" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Ikuti Kami" }, - "syncVault": { - "message": "Sinkronisasi Brankas" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Ubah Kata Sandi Utama" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Ekspor Brankas" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File Format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Sandi utama dihapus" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/it/messages.json b/apps/desktop/src/locales/it/messages.json index 64e31e4136f..ed46bd2763a 100644 --- a/apps/desktop/src/locales/it/messages.json +++ b/apps/desktop/src/locales/it/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Aggiungi allegato" }, + "itemsTransferred": { + "message": "Elementi trasferiti" + }, + "fixEncryption": { + "message": "Correggi la crittografia" + }, + "fixEncryptionTooltip": { + "message": "Questo file usa un metodo di crittografia obsoleto." + }, + "attachmentUpdated": { + "message": "Allegato aggiornato" + }, "maxFileSizeSansPunctuation": { "message": "La dimensione massima consentita è 500 MB." }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Si è verificato un errore imprevisto." }, + "unexpectedErrorShort": { + "message": "Errore inaspettato" + }, + "closeThisBitwardenWindow": { + "message": "Chiudi questa finestra di Bitwarden e riprova." + }, "itemInformation": { "message": "Informazioni sull'elemento" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Seguici" }, - "syncVault": { - "message": "Sincronizza cassaforte" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Cambia password principale" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Esporta da" }, - "exportVault": { - "message": "Esporta cassaforte" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Formato file" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Password principale rimossa" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "La password principale non è più richiesta per i membri dell'organizzazione. Per favore, conferma il dominio qui sotto con l'amministratore." - }, "organizationName": { "message": "Nome dell'organizzazione" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Dominio alias" }, - "importData": { - "message": "Importa dati", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Errore di importazione" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File salvato sul dispositivo. Gestisci dai download del dispositivo." }, + "importantNotice": { + "message": "Avviso importante" + }, + "setupTwoStepLogin": { + "message": "Imposta l'accesso in due passaggi" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden invierà un codice all'email del tuo account per verificare gli accessi da nuovi dispositivi." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Puoi impostare l'accesso in due passaggi per proteggere il tuo account, oppure scegliere una email alla quale hai accesso." + }, + "remindMeLater": { + "message": "Ricordamelo in seguito" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Confermi di poter accedere all'email $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "No" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Sì, ho accesso all'email" + }, + "turnOnTwoStepLogin": { + "message": "Attiva l'accesso in due passaggi" + }, + "changeAcctEmail": { + "message": "Cambia l'email dell'account" + }, + "passkeyLogin": { + "message": "Vuoi accedere con la passkey?" + }, + "savePasskeyQuestion": { + "message": "Vuoi salvare la passkey?" + }, + "saveNewPasskey": { + "message": "Salva come nuovo login" + }, + "savePasskeyNewLogin": { + "message": "Salva la passkey come nuovo elemento" + }, + "noMatchingLoginsForSite": { + "message": "Nessun login salvato per questa pagina" + }, + "overwritePasskey": { + "message": "Vuoi sovrascrivere la passkey?" + }, + "unableToSavePasskey": { + "message": "Impossibile salvare la passkey" + }, + "alreadyContainsPasskey": { + "message": "Questo elemento contiene già una passkey. Vuoi sovrascriverla?" + }, + "passkeyAlreadyExists": { + "message": "Esiste già una passkey per questa applicazione." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Questa applicazione non supporta duplicati." + }, + "closeThisWindow": { + "message": "Chiudi questa finestra" + }, "allowScreenshots": { "message": "Permetti cattura dello schermo" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "E molto altro!" }, - "planDescPremium": { - "message": "Sicurezza online completa" + "advancedOnlineSecurity": { + "message": "Sicurezza online avanzata" }, "upgradeToPremium": { "message": "Aggiorna a Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Azione al timeout" }, "sessionTimeoutHeader": { "message": "Timeout della sessione" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Questa impostazione è gestita dalla tua organizzazione." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "La tua organizzazione ha impostato $HOURS$ ora/e e $MINUTES$ minuto/i come durata massima della sessione.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "In base alle impostazioni della tua organizzazione, la sessione terminerà al blocco del dispositivo." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "In base alle impostazioni della tua organizzazione, la sessione terminerà al riavvio dell'applicazione." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "La durata della sessione non può superare $HOURS$ ora/e e $MINUTES$ minuto/i", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Al riavvio" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Imposta un metodo di sblocco per modificare l'azione al timeout" + }, + "upgrade": { + "message": "Aggiorna" + }, + "leaveConfirmationDialogTitle": { + "message": "Vuoi davvero abbandonare?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Se rifiuti, tutti gli elementi esistenti resteranno nel tuo account, ma perderai l'accesso agli oggetti condivisi e alle funzioni organizzative." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contatta il tuo amministratore per recuperare l'accesso." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Abbandona $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Come si gestisce la cassaforte?" + }, + "transferItemsToOrganizationTitle": { + "message": "Trasferisci gli elementi in $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ richiede che tutti gli elementi siano di proprietà dell'organizzazione per motivi di conformità e sicurezza. Clicca su 'Accetta' per trasferire la proprietà.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accetta il trasferimento" + }, + "declineAndLeave": { + "message": "Rifiuta e abbandona" + }, + "whyAmISeeingThis": { + "message": "Perché vedo questo avviso?" } } diff --git a/apps/desktop/src/locales/ja/messages.json b/apps/desktop/src/locales/ja/messages.json index 5accef2b5ee..d930bd22b9c 100644 --- a/apps/desktop/src/locales/ja/messages.json +++ b/apps/desktop/src/locales/ja/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "予期せぬエラーが発生しました。" }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "アイテム情報" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "フォロー" }, - "syncVault": { - "message": "保管庫の同期" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "マスターパスワードの変更" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "エクスポート元" }, - "exportVault": { - "message": "保管庫のエクスポート" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "ファイル形式" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "マスターパスワードを削除しました。" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "エイリアスドメイン" }, - "importData": { - "message": "データのインポート", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "インポート エラー" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "ファイルをデバイスに保存しました。デバイスのダウンロードで管理できます。" }, + "importantNotice": { + "message": "Important notice" + }, + "setupTwoStepLogin": { + "message": "Set up two-step login" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access." + }, + "remindMeLater": { + "message": "Remind me later" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Do you have reliable access to your email, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "No, I do not" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Yes, I can reliably access my email" + }, + "turnOnTwoStepLogin": { + "message": "Turn on two-step login" + }, + "changeAcctEmail": { + "message": "Change account email" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "スクリーンショットを許可" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/ka/messages.json b/apps/desktop/src/locales/ka/messages.json index cca3ab548cf..d4fae58fca4 100644 --- a/apps/desktop/src/locales/ka/messages.json +++ b/apps/desktop/src/locales/ka/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "მონაცემების შემოტანა", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "შემოტანის შეცდომა" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/km/messages.json b/apps/desktop/src/locales/km/messages.json index 0211550b08d..315272ae464 100644 --- a/apps/desktop/src/locales/km/messages.json +++ b/apps/desktop/src/locales/km/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/kn/messages.json b/apps/desktop/src/locales/kn/messages.json index 4ef1f0edd05..0f880c88f1f 100644 --- a/apps/desktop/src/locales/kn/messages.json +++ b/apps/desktop/src/locales/kn/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "ಅನಿರೀಕ್ಷಿತ ದೋಷ ಸಂಭವಿಸಿದೆ." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "ಐಟಂ ಮಾಹಿತಿ" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "ನಮ್ಮನ್ನು ಅನುಸರಿಸಿ" }, - "syncVault": { - "message": "ಸಿಂಕ್ ವಾಲ್ಟ್" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಿ" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "ರಫ್ತು ವಾಲ್ಟ್" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "ಕಡತದ ಮಾದರಿ" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/ko/messages.json b/apps/desktop/src/locales/ko/messages.json index 9f6153cb314..2d3c0bba871 100644 --- a/apps/desktop/src/locales/ko/messages.json +++ b/apps/desktop/src/locales/ko/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "예기치 못한 오류가 발생했습니다." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "항목 정보" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "팔로우하기" }, - "syncVault": { - "message": "보관함 동기화" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "마스터 비밀번호 변경" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "보관함 내보내기" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "파일 형식" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "마스터 비밀번호가 제거되었습니다." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "데이터 가져오기", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/lt/messages.json b/apps/desktop/src/locales/lt/messages.json index d7612765f1a..cce5cd5d223 100644 --- a/apps/desktop/src/locales/lt/messages.json +++ b/apps/desktop/src/locales/lt/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Įvyko netikėta klaida." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Elemento informacija" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Sekite mus" }, - "syncVault": { - "message": "Sinchronizuoti saugyklą" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Keisti pagrindinį slaptažodį" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Eksportuoti saugyklą" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Failo formatas" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Pagrindinis slaptažodis pašalintas" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domenas" }, - "importData": { - "message": "Importuoti duomenis", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Importavimo klaida" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/lv/messages.json b/apps/desktop/src/locales/lv/messages.json index 5624f89f5db..edfab735fbd 100644 --- a/apps/desktop/src/locales/lv/messages.json +++ b/apps/desktop/src/locales/lv/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Pievienot pielikumu" }, + "itemsTransferred": { + "message": "Vienumi pārcelti" + }, + "fixEncryption": { + "message": "Salabot šifrēšanu" + }, + "fixEncryptionTooltip": { + "message": "Šī datne izmanto novecojušu šifrēšanas veidu." + }, + "attachmentUpdated": { + "message": "Pielikums atjaunināts" + }, "maxFileSizeSansPunctuation": { "message": "Lielākais pieļaujamais datnes izmērs ir 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Atgadījās neparedzēta kļūda." }, + "unexpectedErrorShort": { + "message": "Neparedzēta kļūda" + }, + "closeThisBitwardenWindow": { + "message": "Šis Bitwarden logs jāaizver un jāmēģina vēlreiz." + }, "itemInformation": { "message": "Vienuma informācija" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Sekot mums" }, - "syncVault": { - "message": "Sinhronizēt glabātavu" + "syncNow": { + "message": "Sinhronizēt tūlīt" }, "changeMasterPass": { "message": "Mainīt galveno paroli" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Izgūt no" }, - "exportVault": { - "message": "Izgūt glabātavas saturu" + "export": { + "message": "Izgūt" + }, + "import": { + "message": "Ievietot" }, "fileFormat": { "message": "Datnes veids" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Galvenā parole tika noņemta." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Galvenā parole vairs nav nepieciešama turpmāk minētās apvienības dalībniekiem. Lūgums saskaņot zemāk esošo domēnu ar savas apvienības pārvaldītāju." - }, "organizationName": { "message": "Apvienības nosaukums" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Aizstājdomēns" }, - "importData": { - "message": "Ievietot datus", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Ievietošanas kļūda" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Datne saglabāta ierīcē. Tā ir atrodama ierīces lejupielāžu mapē." }, + "importantNotice": { + "message": "Svarīgs paziņojums" + }, + "setupTwoStepLogin": { + "message": "Iestatīt divpakāpju pieteikšanos" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden, sākot ar 2025. gada februāri, nosūtīs kodu uz konta e-pasta adresi, lai apliecinātu pieteikšanos jaunās ierīcēs." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Var iestatīt divpakāpju pieteikšanos kā citu veidu, kā aizsargāt savu kontu, vai iestatīt savu e-pasta adresi uz tādu, kurai ir piekļuve." + }, + "remindMeLater": { + "message": "Atgādināt man vēlāk" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Vai ir uzticama piekļuve savai e-pasta adresei $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Nē, nav" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Jā, varu uzticami piekļūt savam e-pastam" + }, + "turnOnTwoStepLogin": { + "message": "Ieslēgt divpakāpju pieteikšanos" + }, + "changeAcctEmail": { + "message": "Mainīt konta e-pasta adresi" + }, + "passkeyLogin": { + "message": "Pieteikties ar piekļuves atslēgu?" + }, + "savePasskeyQuestion": { + "message": "Saglabāt piekļuves atslēgu?" + }, + "saveNewPasskey": { + "message": "Saglabāt kā jaunu pieteikšanās vienumu" + }, + "savePasskeyNewLogin": { + "message": "Saglabāt piekļuves atslēgu kā jaunu pieteikšanās vienumu" + }, + "noMatchingLoginsForSite": { + "message": "Šai vietnei nav atbilstošu pieteikšanās vietnumu" + }, + "overwritePasskey": { + "message": "Pārrakstīt piekļuves atslēgu?" + }, + "unableToSavePasskey": { + "message": "Nevar saglabāt piekļuves atslēgu" + }, + "alreadyContainsPasskey": { + "message": "Šis vienums jau satur piekļuves atslēgu. Vai tiešām pārrakstīt pašreizējo piekļuves atslēgu?" + }, + "passkeyAlreadyExists": { + "message": "Šai lietotnei jau pastāv piekļuves atslēga." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Aizvērt šo logu" + }, "allowScreenshots": { "message": "Atļaut ekrāna tveršanu" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "Un vēl!" }, - "planDescPremium": { - "message": "Pilnīga drošība tiešsaistē" + "advancedOnlineSecurity": { + "message": "Izvērsta tiešsaistes drošība" }, "upgradeToPremium": { "message": "Uzlabot uz Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Apvienība vairs neizmanto galvenās paroles, lai pieteiktos Bitwarden. Lai turpinātu, jāapliecina apvienība un domēns." + }, + "continueWithLogIn": { + "message": "Turpināt ar pieteikšanos" + }, + "doNotContinue": { + "message": "Neturpināt" + }, + "domain": { + "message": "Domēns" + }, + "keyConnectorDomainTooltip": { + "message": "Šajā domēnā tiks glabātas konta šifrēšanas atslēgas, tādēļ jāpārliecinās par uzticamību. Ja nav pārliecības, jāsazinās ar savu pārvaldītāju." + }, + "verifyYourOrganization": { + "message": "Jāapliecina apvienība, lai pieteiktos" + }, + "organizationVerified": { + "message": "Apvienība apliecināta" + }, + "domainVerified": { + "message": "Domēns ir apliecināts" + }, + "leaveOrganizationContent": { + "message": "Ja neapliecināsi apvienību, tiks atsaukta piekļuve tai." + }, + "leaveNow": { + "message": "Pamest tagad" + }, + "verifyYourDomainToLogin": { + "message": "Jāapliecina domēns, lai pieteiktos" + }, + "verifyYourDomainDescription": { + "message": "Lai turpinātu pieteikšanos, jāapliecina šis domēns." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Lai turpinātu pieteikšanos, jāapliecina apvienība un domēns." + }, "sessionTimeoutSettingsAction": { "message": "Noildzes darbība" }, "sessionTimeoutHeader": { "message": "Sesijas noildze" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Šo iestatījumu pārvalda apvienība." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Uzlabot" + }, + "leaveConfirmationDialogTitle": { + "message": "Vai tiešām pamest?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Pēc noraidīšanas personīgie vienumi paliks Tavā kontā, bet Tu zaudēsi piekļvuvi kopīgotajiem vienumiem un apvienību iespējām." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Jāsazinās ar savu pārvaldītāju, lai atgūtu piekļuvi." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Pamest $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Kā es varu pārvaldīt savu glabātavu?" + }, + "transferItemsToOrganizationTitle": { + "message": "Pārcelt vienumus uz $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/me/messages.json b/apps/desktop/src/locales/me/messages.json index 684c4682aa0..f2e8df3449b 100644 --- a/apps/desktop/src/locales/me/messages.json +++ b/apps/desktop/src/locales/me/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Došlo je do neočekivane greške." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informacija o stavki" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Prati nas" }, - "syncVault": { - "message": "Sinhronizacija trezora" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Promjena glavne lozinke" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Izvezi trezor" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format datoteke" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/ml/messages.json b/apps/desktop/src/locales/ml/messages.json index e91ca21a686..97294b878fd 100644 --- a/apps/desktop/src/locales/ml/messages.json +++ b/apps/desktop/src/locales/ml/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "ഒരു അപ്രതീക്ഷിത പിശക് സംഭവിച്ചു." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "വിവരം" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "ഞങ്ങളെ പിന്തുടരുക" }, - "syncVault": { - "message": "വാൾട് സമന്വയിപ്പിക്കുക" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "പ്രാഥമിക പാസ്‌വേഡ് മാറ്റുക" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "വാൾട് എക്സ്പോർട്" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "ഫയൽ ഫോർമാറ്റ്" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/mr/messages.json b/apps/desktop/src/locales/mr/messages.json index 0211550b08d..315272ae464 100644 --- a/apps/desktop/src/locales/mr/messages.json +++ b/apps/desktop/src/locales/mr/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/my/messages.json b/apps/desktop/src/locales/my/messages.json index 969e67d3560..78cce9590cb 100644 --- a/apps/desktop/src/locales/my/messages.json +++ b/apps/desktop/src/locales/my/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/nb/messages.json b/apps/desktop/src/locales/nb/messages.json index 35bd7750481..01bab1584af 100644 --- a/apps/desktop/src/locales/nb/messages.json +++ b/apps/desktop/src/locales/nb/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "En uventet feil har oppstått." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Objektsinformasjon" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Følg oss" }, - "syncVault": { - "message": "Synkroniser hvelvet" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Endre hovedpassordet" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Eksporter fra" }, - "exportVault": { - "message": "Eksporter hvelvet" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Filformat" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Hovedpassordet er fjernet." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organisasjonens navn" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias-domene" }, - "importData": { - "message": "Importer data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Importeringsfeil" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Tillat skjermklipp/-opptak" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/ne/messages.json b/apps/desktop/src/locales/ne/messages.json index b8038093f90..a3d42ed7f57 100644 --- a/apps/desktop/src/locales/ne/messages.json +++ b/apps/desktop/src/locales/ne/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/nl/messages.json b/apps/desktop/src/locales/nl/messages.json index 8833f59489a..0e8b96d747d 100644 --- a/apps/desktop/src/locales/nl/messages.json +++ b/apps/desktop/src/locales/nl/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Bijlage toevoegen" }, + "itemsTransferred": { + "message": "Items overgedragen" + }, + "fixEncryption": { + "message": "Versleuteling repareren" + }, + "fixEncryptionTooltip": { + "message": "Dit bestand gebruikt een verouderde versleutelingsmethode." + }, + "attachmentUpdated": { + "message": "Bijlagen bijgewerkt" + }, "maxFileSizeSansPunctuation": { "message": "Maximale bestandsgrootte is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Er is een onverwachte fout opgetreden." }, + "unexpectedErrorShort": { + "message": "Onverwachte fout" + }, + "closeThisBitwardenWindow": { + "message": "Sluit dit Bitwarden-venster en probeer het opnieuw." + }, "itemInformation": { "message": "Item-informatie" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Volg ons" }, - "syncVault": { - "message": "Kluis synchroniseren" + "syncNow": { + "message": "Nu synchroniseren" }, "changeMasterPass": { "message": "Hoofdwachtwoord wijzigen" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exporteren vanuit" }, - "exportVault": { - "message": "Kluis exporteren" + "export": { + "message": "Exporteren" + }, + "import": { + "message": "Importeren" }, "fileFormat": { "message": "Bestandsindeling" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Hoofdwachtwoord verwijderd." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Voor leden van de volgende organisatie is een hoofdwachtwoord niet langer nodig. Bevestig het domein hieronder met de beheerder van je organisatie." - }, "organizationName": { "message": "Organisatienaam" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Aliasdomein" }, - "importData": { - "message": "Data importeren", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Fout bij importeren" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Bestand op apparaat opgeslagen. Beheer vanaf de downloads op je apparaat." }, + "importantNotice": { + "message": "Belangrijke melding" + }, + "setupTwoStepLogin": { + "message": "Tweestapsaanmelding instellen" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Vanaf februari 2025 stuurt Bitwarden een code naar het e-mailadres van je account om inloggen op nieuwe apparaten te verifiëren." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Je kunt tweestapsaanmelding instellen als een alternatieve manier om je account te beschermen of je e-mailadres te veranderen naar een waar je toegang toe hebt." + }, + "remindMeLater": { + "message": "Herinner me later" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Heb je betrouwbare toegang tot je e-mail, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Nee, dat heb ik niet" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Ja, ik heb betrouwbare toegang tot mijn e-mail" + }, + "turnOnTwoStepLogin": { + "message": "Tweestapsaanmelding inschakelen" + }, + "changeAcctEmail": { + "message": "E-mailadres van het account veranderen" + }, + "passkeyLogin": { + "message": "Inloggen met passkey?" + }, + "savePasskeyQuestion": { + "message": "Passkey opslaan?" + }, + "saveNewPasskey": { + "message": "Opslaan als nieuwe login" + }, + "savePasskeyNewLogin": { + "message": "Passkey als nieuwe login opslaan" + }, + "noMatchingLoginsForSite": { + "message": "Geen overeenkomende logins voor deze site" + }, + "overwritePasskey": { + "message": "Passkey overschrijven?" + }, + "unableToSavePasskey": { + "message": "Kon passkey niet opslaan" + }, + "alreadyContainsPasskey": { + "message": "Dit item heeft al een passkey. Weet je zeker dat je de huidige passkey wilt overschrijven?" + }, + "passkeyAlreadyExists": { + "message": "Er bestaat al een passkey voor deze applicatie." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Deze applicatie ondersteunt geen duplicaten." + }, + "closeThisWindow": { + "message": "Sluit dit venster" + }, "allowScreenshots": { "message": "Schermopname toestaan" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "En meer!" }, - "planDescPremium": { - "message": "Online beveiliging voltooien" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Opwaarderen naar Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Je organisatie maakt niet langer gebruik van hoofdwachtwoorden om in te loggen op Bitwarden. Controleer de organisatie en het domein om door te gaan." + }, + "continueWithLogIn": { + "message": "Doorgaan met inloggen" + }, + "doNotContinue": { + "message": "Niet verder gaan" + }, + "domain": { + "message": "Domein" + }, + "keyConnectorDomainTooltip": { + "message": "Dit domein zal de encryptiesleutels van je account opslaan, dus zorg ervoor dat je het vertrouwt. Als je het niet zeker weet, controleer dan bij je beheerder." + }, + "verifyYourOrganization": { + "message": "Verifieer je organisatie om in te loggen" + }, + "organizationVerified": { + "message": "Organisatie geverifieerd" + }, + "domainVerified": { + "message": "Domein geverifieerd" + }, + "leaveOrganizationContent": { + "message": "Als je je organisatie niet verifieert, wordt je toegang tot de organisatie ingetrokken." + }, + "leaveNow": { + "message": "Nu verlaten" + }, + "verifyYourDomainToLogin": { + "message": "Verifieer je domein om in te loggen" + }, + "verifyYourDomainDescription": { + "message": "Bevestig dit domein om verder te gaan met inloggen." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Bevestig organisatie en domein om verder te gaan met inloggen." + }, "sessionTimeoutSettingsAction": { "message": "Time-out actie" }, "sessionTimeoutHeader": { "message": "Sessietime-out" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Deze instelling wordt beheerd door je organisatie." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Je organisatie heeft de maximale sessietime-out ingesteld op $HOURS$ uur en $MINUTES$ minuten.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Je organisatie heeft de standaard sessietime-out ingesteld op Systeem vergrendelen." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Je organisatie heeft de standaard sessietime-out ingesteld op Herstarten applicatie." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximale time-out kan niet langer zijn dan $HOURS$ uur en $MINUTES$ minu(u)t(en)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Herstarten" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Stel een ontgrendelingsmethode in om je kluis time-out actie te wijzigen" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Weet je zeker dat je wilt verlaten?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Door te weigeren, blijven je persoonlijke items in je account, maar verlies je toegang tot gedeelde items en organisatiefunctionaliteit." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Neem contact op met je beheerder om weer toegang te krijgen." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "$ORGANIZATION$ verlaten", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Hoe beheer ik mijn kluis?" + }, + "transferItemsToOrganizationTitle": { + "message": "Items overdragen aan $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ vereist dat alle items eigendom zijn van de organisatie voor veiligheid en naleving. Klik op accepteren voor het overdragen van eigendom van je items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Overdacht accepteren" + }, + "declineAndLeave": { + "message": "Weigeren en verlaten" + }, + "whyAmISeeingThis": { + "message": "Waarom zie ik dit?" } } diff --git a/apps/desktop/src/locales/nn/messages.json b/apps/desktop/src/locales/nn/messages.json index 5264ce8c561..5354db9004f 100644 --- a/apps/desktop/src/locales/nn/messages.json +++ b/apps/desktop/src/locales/nn/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Det har oppstått ein feil." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Elementinformasjon" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Følg oss" }, - "syncVault": { - "message": "Synkroniser kvelven" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Endre hovudpassord" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Filformat" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/or/messages.json b/apps/desktop/src/locales/or/messages.json index b145306e14d..2447b568d49 100644 --- a/apps/desktop/src/locales/or/messages.json +++ b/apps/desktop/src/locales/or/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/pl/messages.json b/apps/desktop/src/locales/pl/messages.json index 4cb6650e2c7..ad0610aad5c 100644 --- a/apps/desktop/src/locales/pl/messages.json +++ b/apps/desktop/src/locales/pl/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Dodaj załącznik" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maksymalny rozmiar pliku to 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Wystąpił nieoczekiwany błąd." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informacje o elemencie" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Obserwuj nas" }, - "syncVault": { - "message": "Synchronizuj sejf" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Zmień hasło główne" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Eksportuj z" }, - "exportVault": { - "message": "Eksportuj sejf" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format pliku" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Hasło główne zostało usunięte" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hasło główne nie jest już wymagane dla członków następującej organizacji. Potwierdź poniższą domenę z administratorem organizacji." - }, "organizationName": { "message": "Nazwa organizacji" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Domena aliasu" }, - "importData": { - "message": "Importuj dane", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Błąd importowania" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Plik zapisany na urządzeniu. Zarządzaj plikiem na swoim urządzeniu." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Zezwalaj na wykonywanie zrzutów ekranu" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/pt_BR/messages.json b/apps/desktop/src/locales/pt_BR/messages.json index dc64f1b701b..8350392709c 100644 --- a/apps/desktop/src/locales/pt_BR/messages.json +++ b/apps/desktop/src/locales/pt_BR/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Adicionar anexo" }, + "itemsTransferred": { + "message": "Itens transferidos" + }, + "fixEncryption": { + "message": "Corrigir criptografia" + }, + "fixEncryptionTooltip": { + "message": "Este arquivo está usando um método de criptografia desatualizado." + }, + "attachmentUpdated": { + "message": "Anexo atualizado" + }, "maxFileSizeSansPunctuation": { "message": "O tamanho máximo do arquivo é de 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Ocorreu um erro inesperado." }, + "unexpectedErrorShort": { + "message": "Erro inesperado" + }, + "closeThisBitwardenWindow": { + "message": "Feche esta janela do Bitwarden e tente novamente." + }, "itemInformation": { "message": "Informações do item" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Siga-nos" }, - "syncVault": { - "message": "Sincronizar cofre" + "syncNow": { + "message": "Sincronizar agora" }, "changeMasterPass": { "message": "Alterar senha principal" @@ -1265,19 +1283,19 @@ "message": "Autenticação em duas etapas" }, "vaultTimeoutHeader": { - "message": "Tempo limite do cofre" + "message": "Limite de tempo do cofre" }, "vaultTimeout": { - "message": "Tempo limite do cofre" + "message": "Limite de tempo do cofre" }, "vaultTimeout1": { - "message": "Tempo limite" + "message": "Limite de tempo" }, "vaultTimeoutAction1": { - "message": "Ação do tempo limite" + "message": "Ação do limite de tempo" }, "vaultTimeoutDesc": { - "message": "Escolha quando o seu cofre executará a ação do tempo limite do cofre." + "message": "Escolha quando o seu cofre executará a ação do limite de tempo do cofre." }, "immediately": { "message": "Imediatamente" @@ -1521,7 +1539,7 @@ "message": "Opções proprietárias de autenticação em duas etapas como YubiKey e Duo." }, "premiumSignUpReports": { - "message": "Higiene de senha, saúde da conta, e relatórios de brechas de dados para manter o seu cofre seguro." + "message": "Relatórios de higiene de senha, saúde da conta, e vazamentos de dados para manter o seu cofre seguro." }, "premiumSignUpTotp": { "message": "Gerador de códigos de verificação TOTP (2FA) para credenciais no seu cofre." @@ -1677,7 +1695,7 @@ "message": "Confira se a senha foi exposta." }, "passwordExposed": { - "message": "Esta senha foi exposta $VALUE$ vez(es) em brechas de dados. Você deve alterá-la.", + "message": "Esta senha foi exposta $VALUE$ vez(es) em vazamentos de dados. Você deve alterá-la.", "placeholders": { "value": { "content": "$1", @@ -1686,7 +1704,7 @@ } }, "passwordSafe": { - "message": "Esta senha não foi encontrada em brechas de dados conhecidas. Deve ser segura de usar." + "message": "Esta senha não foi encontrada em vazamentos de dados conhecidos. Deve ser segura de usar." }, "baseDomain": { "message": "Domínio de base", @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exportar de" }, - "exportVault": { - "message": "Exportar cofre" + "export": { + "message": "Exportar" + }, + "import": { + "message": "Importar" }, "fileFormat": { "message": "Formato do arquivo" @@ -1807,7 +1828,7 @@ "message": "Confirmar exportação do cofre" }, "exportWarningDesc": { - "message": "Esta exportação contém os dados do seu cofre em um formato não criptografado. Você não deve armazenar ou enviar o arquivo exportado por canais inseguros (como e-mail). Apague o arquivo imediatamente após terminar de usá-lo." + "message": "Esta exportação contém os dados do seu cofre em um formato sem criptografia. Você não deve armazenar ou enviar o arquivo exportado por canais inseguros (como e-mail). Apague o arquivo imediatamente após terminar de usá-lo." }, "encExportKeyWarningDesc": { "message": "Esta exportação criptografa seus dados usando a chave de criptografia da sua conta. Se você rotacionar a chave de criptografia da sua conta, você deve exportar novamente, já que você não será capaz de descriptografar este arquivo de exportação." @@ -1962,7 +1983,7 @@ "message": "Uma ou mais políticas da organização estão afetando as configurações do seu gerador." }, "vaultTimeoutAction": { - "message": "Ação do tempo limite do cofre" + "message": "Ação do limite de tempo do cofre" }, "vaultTimeoutActionLockDesc": { "message": "A senha principal ou outro método de desbloqueio é necessário para acessar seu cofre novamente." @@ -1971,7 +1992,7 @@ "message": "Reautenticação é necessária para acessar seu cofre novamente." }, "unlockMethodNeededToChangeTimeoutActionDesc": { - "message": "Configure um método de desbloqueio para alterar a ação do tempo limite do cofre." + "message": "Configure um método de desbloqueio para alterar a ação do limite de tempo do cofre." }, "lock": { "message": "Bloquear", @@ -2000,10 +2021,10 @@ "message": "Apagar para sempre" }, "vaultTimeoutLogOutConfirmation": { - "message": "Ao desconectar-se, todo o seu acesso ao cofre será removido e será necessário autenticação on-line após o período do tempo limite. Tem certeza que quer usar esta configuração?" + "message": "Ao desconectar-se, todo o seu acesso ao cofre será removido e será necessário autenticação on-line após o período do limite de tempo. Tem certeza que quer usar esta configuração?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Confirmação de ação do tempo limite" + "message": "Confirmação de ação do limite de tempo" }, "enterpriseSingleSignOn": { "message": "Autenticação única empresarial" @@ -2535,7 +2556,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "As políticas da sua organização estão afetando o tempo limite do seu cofre. O máximo permitido do tempo limite do cofre é $HOURS$ hora(s) e $MINUTES$ minuto(s). A ação de tempo limite do seu cofre está configurada para $ACTION$.", + "message": "As políticas da sua organização estão afetando o limite de tempo do seu cofre. O máximo permitido do limite de tempo do cofre é $HOURS$ hora(s) e $MINUTES$ minuto(s). A ação de limite de tempo do seu cofre está configurada para $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -2552,7 +2573,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "As políticas da sua organização configuraram a ação do tempo limite do seu cofre para $ACTION$.", + "message": "As políticas da sua organização configuraram a ação do limite de tempo do seu cofre para $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -2561,13 +2582,13 @@ } }, "vaultTimeoutTooLarge": { - "message": "O tempo limite do seu cofre excede as restrições definidas por sua organização." + "message": "O limite de tempo do seu cofre excede as restrições definidas por sua organização." }, "vaultTimeoutPolicyAffectingOptions": { - "message": "Os requisitos das políticas corporativas foram aplicados às suas opções de tempo limite" + "message": "Os requisitos das políticas corporativas foram aplicados às suas opções de limite de tempo" }, "vaultTimeoutPolicyInEffect": { - "message": "As políticas da sua organização configuraram o seu máximo permitido do tempo limite do cofre para $HOURS$ hora(s) e $MINUTES$ minuto(s).", + "message": "As políticas da sua organização configuraram o seu máximo permitido do limite de tempo do cofre para $HOURS$ hora(s) e $MINUTES$ minuto(s).", "placeholders": { "hours": { "content": "$1", @@ -2580,7 +2601,7 @@ } }, "vaultTimeoutPolicyMaximumError": { - "message": "O tempo limite excede a restrição definida pela sua organização: máximo de $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "message": "O limite de tempo excede a restrição definida pela sua organização: máximo de $HOURS$ hora(s) e $MINUTES$ minuto(s)", "placeholders": { "hours": { "content": "$1", @@ -2593,7 +2614,7 @@ } }, "vaultCustomTimeoutMinimum": { - "message": "O mínimo do tempo limite personalizado é de 1 minuto." + "message": "O mínimo do limite de tempo personalizado é de 1 minuto." }, "inviteAccepted": { "message": "Convite aceito" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Senha principal removida" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Uma senha principal não é mais necessária para membros da seguinte organização. Confirme o domínio abaixo com o administrador da sua organização." - }, "organizationName": { "message": "Nome da organização" }, @@ -3105,7 +3123,7 @@ } }, "loginRequestApprovedForEmailOnDevice": { - "message": "Solicitação de autenticação aprovada para $EMAIL$ em $DEVICE$", + "message": "Solicitação de acesso aprovada para $EMAIL$ em $DEVICE$", "placeholders": { "email": { "content": "$1", @@ -3118,7 +3136,7 @@ } }, "youDeniedLoginAttemptFromAnotherDevice": { - "message": "Você negou uma tentativa de autenticação por outro dispositivo. Se foi você, tente conectar-se com o dispositivo novamente." + "message": "Você negou uma tentativa de acesso de outro dispositivo. Se era você, tente se conectar com o dispositivo novamente." }, "webApp": { "message": "Aplicativo web" @@ -3146,7 +3164,7 @@ "message": "Servidor" }, "loginRequest": { - "message": "Solicitação de autenticação" + "message": "Solicitação de acesso" }, "deviceType": { "message": "Tipo do dispositivo" @@ -3230,7 +3248,7 @@ "message": "Senha fraca identificada e encontrada em um vazamento de dados. Use uma senha forte e única para proteger a sua conta. Tem certeza de que deseja usar essa senha?" }, "checkForBreaches": { - "message": "Conferir vazamentos de dados conhecidos por esta senha" + "message": "Conferir se esta senha vazou ao público" }, "loggedInExclamation": { "message": "Conectado!" @@ -3324,7 +3342,7 @@ "message": "Problemas para acessar?" }, "loginApproved": { - "message": "Autenticação aprovada" + "message": "Acesso aprovado" }, "userEmailMissing": { "message": "E-mail do usuário ausente" @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Domínio de alias" }, - "importData": { - "message": "Importar dados", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Erro ao importar" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Arquivo salvo no dispositivo. Gerencie a partir das transferências do seu dispositivo." }, + "importantNotice": { + "message": "Aviso importante" + }, + "setupTwoStepLogin": { + "message": "Configurar autenticação em duas etapas" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "O Bitwarden enviará um código no e-mail da sua conta para verificar o acesso de novos dispositivos começando em fevereiro de 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Você pode configurar a autenticação em duas etapas como um método alternativo de proteção da sua conta, ou você pode alterar o seu e-mail para um que possa acessar." + }, + "remindMeLater": { + "message": "Lembre-me depois" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Você tem acesso adequado ao seu e-mail, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Não tenho" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Sim, consigo acessar meu e-mail adequadamente" + }, + "turnOnTwoStepLogin": { + "message": "Ativar autenticação em duas etapas" + }, + "changeAcctEmail": { + "message": "Alterar e-mail da conta" + }, + "passkeyLogin": { + "message": "Conectar-se com chave de acesso?" + }, + "savePasskeyQuestion": { + "message": "Salvar chave de acesso?" + }, + "saveNewPasskey": { + "message": "Salvar como nova credencial" + }, + "savePasskeyNewLogin": { + "message": "Salvar chave de acesso como nova credencial" + }, + "noMatchingLoginsForSite": { + "message": "Nenhuma credencial correspondente para este site" + }, + "overwritePasskey": { + "message": "Substituir chave de acesso?" + }, + "unableToSavePasskey": { + "message": "Não é possível salvar a chave de acesso" + }, + "alreadyContainsPasskey": { + "message": "Este item já contém uma chave de acesso. Tem certeza que deseja substituir a atual?" + }, + "passkeyAlreadyExists": { + "message": "Uma chave de acesso já existe para este aplicativo." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Este aplicativo não suporta duplicatas." + }, + "closeThisWindow": { + "message": "Fechar esta janela" + }, "allowScreenshots": { "message": "Permitir captura de tela" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "E mais!" }, - "planDescPremium": { - "message": "Segurança on-line completa" + "advancedOnlineSecurity": { + "message": "Segurança on-line avançada" }, "upgradeToPremium": { "message": "Faça upgrade para o Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "A sua organização não está mais usando senhas principais para se conectar ao Bitwarden. Para continuar, verifique a organização e o domínio." + }, + "continueWithLogIn": { + "message": "Continuar acessando" + }, + "doNotContinue": { + "message": "Não continuar" + }, + "domain": { + "message": "Domínio" + }, + "keyConnectorDomainTooltip": { + "message": "Este domínio armazenará as chaves de criptografia da sua conta, então certifique-se que confia nele. Se não tiver certeza, verifique com o seu administrador." + }, + "verifyYourOrganization": { + "message": "Verifique sua organização para se conectar" + }, + "organizationVerified": { + "message": "Organização verificada" + }, + "domainVerified": { + "message": "Domínio verificado" + }, + "leaveOrganizationContent": { + "message": "Se você não verificar a sua organização, o seu acesso à organização será revogado." + }, + "leaveNow": { + "message": "Sair agora" + }, + "verifyYourDomainToLogin": { + "message": "Verifique seu domínio para se conectar" + }, + "verifyYourDomainDescription": { + "message": "Para continuar se conectando, verifique este domínio." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Para continuar se conectando, verifique a organização e o domínio." + }, "sessionTimeoutSettingsAction": { - "message": "Ação do tempo limite" + "message": "Ação do limite de tempo" }, "sessionTimeoutHeader": { - "message": "Tempo limite da sessão" + "message": "Limite de tempo da sessão" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Esta configuração é gerenciada pela sua organização." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "A sua organização configurou o limite de tempo máximo da sessão para $HOURS$ hora(s) e $MINUTES$ minuto(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "A sua organização configurou o limite de tempo padrão da sessão para ser no bloqueio do sistema." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "A sua organização configurou o limite de tempo padrão da sessão para ser no reinício." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "O limite de tempo máximo não pode exceder $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "No reinício" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Configure um método de desbloqueio para alterar a ação do limite de tempo" + }, + "upgrade": { + "message": "Fazer upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Tem certeza de que quer sair?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Se recusar, seus itens pessoais continuarão na sua conta, mas você perderá o acesso aos itens compartilhados e os recursos de organização." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Entre em contato com o seu administrador para recuperar o acesso." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Sair de $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Como gerencio meu cofre?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transferir itens para $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ exige que todos os itens sejam propriedade da organização por segurança e conformidade. Clique em aceitar para transferir a propriedade dos seus itens.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Aceitar transferência" + }, + "declineAndLeave": { + "message": "Recusar e sair" + }, + "whyAmISeeingThis": { + "message": "Por que estou vendo isso?" } } diff --git a/apps/desktop/src/locales/pt_PT/messages.json b/apps/desktop/src/locales/pt_PT/messages.json index c0e396c63c4..f8d329480e0 100644 --- a/apps/desktop/src/locales/pt_PT/messages.json +++ b/apps/desktop/src/locales/pt_PT/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Adicionar anexo" }, + "itemsTransferred": { + "message": "Itens transferidos" + }, + "fixEncryption": { + "message": "Corrigir encriptação" + }, + "fixEncryptionTooltip": { + "message": "Este ficheiro está a utilizar um método de encriptação desatualizado." + }, + "attachmentUpdated": { + "message": "Anexo atualizado" + }, "maxFileSizeSansPunctuation": { "message": "O tamanho máximo do ficheiro é de 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Ocorreu um erro inesperado." }, + "unexpectedErrorShort": { + "message": "Erro inesperado" + }, + "closeThisBitwardenWindow": { + "message": "Feche esta janela do Bitwarden e tente novamente." + }, "itemInformation": { "message": "Informações do item" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Siga-nos" }, - "syncVault": { - "message": "Sincronizar cofre" + "syncNow": { + "message": "Sincronizar agora" }, "changeMasterPass": { "message": "Alterar palavra-passe mestra" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exportar de" }, - "exportVault": { - "message": "Exportar cofre" + "export": { + "message": "Exportar" + }, + "import": { + "message": "Importar" }, "fileFormat": { "message": "Formato do ficheiro" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Palavra-passe mestra removida" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Já não é necessária uma palavra-passe mestra para os membros da seguinte organização. Por favor, confirme o domínio abaixo com o administrador da sua organização." - }, "organizationName": { "message": "Nome da organização" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias de domínio" }, - "importData": { - "message": "Importar dados", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Erro de importação" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Ficheiro guardado no dispositivo. Faça a gestão a partir das transferências do seu dispositivo." }, + "importantNotice": { + "message": "Aviso importante" + }, + "setupTwoStepLogin": { + "message": "Definir a verificação de dois passos" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "O Bitwarden enviará um código para o e-mail da sua conta para verificar as credenciais de novos dispositivos a partir de fevereiro de 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Pode configurar a verificação de dois passos como forma alternativa de proteger a sua conta ou alterar o seu e-mail para um a que possa aceder." + }, + "remindMeLater": { + "message": "Lembrar-me mais tarde" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Tem um acesso fiável ao seu e-mail, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Não, não tenho" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Sim, consigo aceder de forma fiável ao meu e-mail" + }, + "turnOnTwoStepLogin": { + "message": "Ativar a verificação de dois passos" + }, + "changeAcctEmail": { + "message": "Alterar o e-mail da conta" + }, + "passkeyLogin": { + "message": "Iniciar sessão com a chave de acesso?" + }, + "savePasskeyQuestion": { + "message": "Guardar a chave de acesso?" + }, + "saveNewPasskey": { + "message": "Guardar como nova credencial" + }, + "savePasskeyNewLogin": { + "message": "Guarde a chave de acesso como uma nova credencial" + }, + "noMatchingLoginsForSite": { + "message": "Sem credenciais correspondentes para este site" + }, + "overwritePasskey": { + "message": "Substituir chave de acesso?" + }, + "unableToSavePasskey": { + "message": "Não é possível guardar a chave de acesso" + }, + "alreadyContainsPasskey": { + "message": "Este item já contém uma chave de acesso. Tem a certeza de que pretende substituir a chave de acesso atual?" + }, + "passkeyAlreadyExists": { + "message": "Já existe uma chave de acesso para esta aplicação." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Esta aplicação não suporta duplicados." + }, + "closeThisWindow": { + "message": "Fechar esta janela" + }, "allowScreenshots": { "message": "Permitir a captura de ecrã" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "E muito mais!" }, - "planDescPremium": { - "message": "Segurança total online" + "advancedOnlineSecurity": { + "message": "Segurança online avançada" }, "upgradeToPremium": { "message": "Atualizar para o Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "A sua organização já não utiliza palavras-passe mestras para iniciar sessão no Bitwarden. Para continuar, verifique a organização e o domínio." + }, + "continueWithLogIn": { + "message": "Continuar com o início de sessão" + }, + "doNotContinue": { + "message": "Não continuar" + }, + "domain": { + "message": "Domínio" + }, + "keyConnectorDomainTooltip": { + "message": "Este domínio armazenará as chaves de encriptação da sua conta, portanto certifique-se de que confia nele. Se não tiver a certeza, verifique com o seu administrador." + }, + "verifyYourOrganization": { + "message": "Verifique a sua organização para iniciar sessão" + }, + "organizationVerified": { + "message": "Organização verificada" + }, + "domainVerified": { + "message": "Domínio verificado" + }, + "leaveOrganizationContent": { + "message": "Se não verificar a sua organização, o seu acesso à organização será revogado." + }, + "leaveNow": { + "message": "Sair agora" + }, + "verifyYourDomainToLogin": { + "message": "Verifique o seu domínio para iniciar sessão" + }, + "verifyYourDomainDescription": { + "message": "Para continuar com o início de sessão, verifique este domínio." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Para continuar com o início de sessão, verifique a organização e o domínio." + }, "sessionTimeoutSettingsAction": { "message": "Ação de tempo limite" }, "sessionTimeoutHeader": { "message": "Tempo limite da sessão" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Esta configuração é gerida pela sua organização." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "A sua organização definiu o tempo limite máximo da sessão para $HOURS$ hora(s) e $MINUTES$ minuto(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "A sua organização definiu o tempo limite de sessão predefinido para Ao bloquear o sistema." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "A sua organização definiu o tempo limite predefinido da sessão para Ao reiniciar a app." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "O tempo limite máximo não pode ser superior a $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Ao reiniciar" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Configure um método de desbloqueio para alterar a sua ação de tempo limite" + }, + "upgrade": { + "message": "Atualizar" + }, + "leaveConfirmationDialogTitle": { + "message": "Tem a certeza de que pretende sair?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ao recusar, os seus itens pessoais permanecerão na sua conta, mas perderá o acesso aos itens partilhados e às funcionalidades da organização." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Entre em contacto com o seu administrador para recuperar o acesso." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Sair de $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Como posso gerir o meu cofre?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transferir itens para $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ exige que todos os itens sejam propriedade da organização por motivos de segurança e conformidade. Clique em Aceitar para transferir a propriedade dos seus itens.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Aceitar transferência" + }, + "declineAndLeave": { + "message": "Recusar e sair" + }, + "whyAmISeeingThis": { + "message": "Porque é que estou a ver isto?" } } diff --git a/apps/desktop/src/locales/ro/messages.json b/apps/desktop/src/locales/ro/messages.json index d2e589836e0..f68fb7fc86f 100644 --- a/apps/desktop/src/locales/ro/messages.json +++ b/apps/desktop/src/locales/ro/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "A survenit o eroare neașteptată." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informații despre articol" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Urmăriți-ne" }, - "syncVault": { - "message": "Sincronizare seif" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Schimbare parolă principală" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export de seif" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format de fișier" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Parola principală înlăturată" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/ru/messages.json b/apps/desktop/src/locales/ru/messages.json index a59ae2282d5..2c8a5052988 100644 --- a/apps/desktop/src/locales/ru/messages.json +++ b/apps/desktop/src/locales/ru/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Добавить вложение" }, + "itemsTransferred": { + "message": "Элементы переданы" + }, + "fixEncryption": { + "message": "Исправить шифрование" + }, + "fixEncryptionTooltip": { + "message": "Этот файл использует устаревший метод шифрования." + }, + "attachmentUpdated": { + "message": "Вложение обновлено" + }, "maxFileSizeSansPunctuation": { "message": "Максимальный размер файла 500 МБ" }, @@ -775,7 +787,7 @@ "message": "Использовать единый вход" }, "yourOrganizationRequiresSingleSignOn": { - "message": "Your organization requires single sign-on." + "message": "Ваша организация требует единого входа." }, "submit": { "message": "Отправить" @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Произошла непредвиденная ошибка." }, + "unexpectedErrorShort": { + "message": "Неожиданная ошибка" + }, + "closeThisBitwardenWindow": { + "message": "Закройте это окно Bitwarden и повторите попытку." + }, "itemInformation": { "message": "Информация об элементе" }, @@ -1051,7 +1069,7 @@ "message": "Тайм-аут аутентификации" }, "authenticationSessionTimedOut": { - "message": "Сеанс аутентификации завершился по времени. Пожалуйста, перезапустите процесс авторизации." + "message": "Сессия аутентификации завершилась по времени. Пожалуйста, перезапустите процесс авторизации." }, "selfHostBaseUrl": { "message": "URL собственного сервера", @@ -1121,7 +1139,7 @@ "message": "Вы вышли из своего аккаунта." }, "loginExpired": { - "message": "Истек срок действия вашего сеанса." + "message": "Истек срок действия вашей сессии." }, "restartRegistration": { "message": "Перезапустить регистрацию" @@ -1180,8 +1198,8 @@ "followUs": { "message": "Подписывайтесь на нас" }, - "syncVault": { - "message": "Синхронизировать хранилище" + "syncNow": { + "message": "Синхронизировать" }, "changeMasterPass": { "message": "Изменить мастер-пароль" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Экспорт из" }, - "exportVault": { - "message": "Экспорт хранилища" + "export": { + "message": "Экспорт" + }, + "import": { + "message": "Импорт" }, "fileFormat": { "message": "Формат файла" @@ -2462,10 +2483,10 @@ "message": "Обновить мастер-пароль" }, "updateMasterPasswordWarning": { - "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущий сеанс будет завершен, потребуется повторный вход. Сеансы на других устройствах могут оставаться активными в течение одного часа." + "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущая сессия будет завершена, потребуется повторный вход. Сессии на других устройствах могут оставаться активными в течение одного часа." }, "updateWeakMasterPasswordWarning": { - "message": "Ваш мастер-пароль не соответствует требованиям политики вашей организации. Для доступа к хранилищу вы должны обновить свой мастер-пароль прямо сейчас. При этом текущий сеанс будет завершен и потребуется повторная авторизация. Сеансы на других устройствах могут оставаться активными в течение часа." + "message": "Ваш мастер-пароль не соответствует требованиям политики вашей организации. Для доступа к хранилищу вы должны обновить свой мастер-пароль прямо сейчас. При этом текущая сессия будет завершена и потребуется повторная авторизация. Сессии на других устройствах могут оставаться активными в течение часа." }, "changePasswordWarning": { "message": "После смены пароля потребуется авторизоваться с новым паролем. Активные сессии на других устройствах будут завершены в течение одного часа." @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Мастер-пароль удален." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Мастер-пароль больше не требуется для членов следующей организации. Пожалуйста, подтвердите указанный ниже домен у администратора вашей организации." - }, "organizationName": { "message": "Название организации" }, @@ -2674,7 +2692,7 @@ "message": "Опции" }, "sessionTimeout": { - "message": "Время вашего сеанса истекло. Пожалуйста, вернитесь и попробуйте войти снова." + "message": "Время вашей сессии истекло. Пожалуйста, вернитесь и попробуйте войти снова." }, "exportingPersonalVaultTitle": { "message": "Экспорт личного хранилища" @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Псевдоним домена" }, - "importData": { - "message": "Импорт данных", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Ошибка импорта" }, @@ -3886,11 +3900,80 @@ "fileSavedToDevice": { "message": "Файл сохранен на устройстве. Управляйте им из загрузок устройства." }, + "importantNotice": { + "message": "Важное уведомление" + }, + "setupTwoStepLogin": { + "message": "Настроить двухэтапную аутентификацию" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Начиная с февраля 2025 года Bitwarden будет отправлять код на электронную почту вашего аккаунта для подтверждения авторизации с новых устройств." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "В качестве альтернативного способа защиты учетной записи вы можете настроить двухэтапную аутентификацию или сменить электронную почту на ту, к которой вы можете получить доступ." + }, + "remindMeLater": { + "message": "Напомнить позже" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Есть ли у вас надежный доступ к электронной почте $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Нет, не знаю" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Да, я имею надежный доступ к своей электронной почте" + }, + "turnOnTwoStepLogin": { + "message": "Включить двухэтапную аутентификацию" + }, + "changeAcctEmail": { + "message": "Изменить email аккаунта" + }, + "passkeyLogin": { + "message": "Войти с passkey?" + }, + "savePasskeyQuestion": { + "message": "Сохранить passkey?" + }, + "saveNewPasskey": { + "message": "Сохранить как новый логин" + }, + "savePasskeyNewLogin": { + "message": "Сохранить passkey как новый логин" + }, + "noMatchingLoginsForSite": { + "message": "Нет подходящих логинов для этого сайта" + }, + "overwritePasskey": { + "message": "Перезаписать passkey?" + }, + "unableToSavePasskey": { + "message": "Не удалось сохранить passkey" + }, + "alreadyContainsPasskey": { + "message": "Этот элемент уже содержит passkey. Вы уверены, что хотите перезаписать текущий passkey?" + }, + "passkeyAlreadyExists": { + "message": "Для данного приложения уже существует passkey." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Это приложение не поддерживает дубликаты." + }, + "closeThisWindow": { + "message": "Закрыть это окно" + }, "allowScreenshots": { "message": "Разрешить захват экрана" }, "allowScreenshotsDesc": { - "message": "Разрешить приложению Bitwarden захват экрана для скриншотов и просмотра в сеансах удаленного рабочего стола. Отключение параметра запретит доступ на некоторых внешних дисплеях." + "message": "Разрешить приложению Bitwarden захват экрана для скриншотов и просмотра в сессиях удаленного рабочего стола. Отключение параметра запретит доступ на некоторых внешних дисплеях." }, "confirmWindowStillVisibleTitle": { "message": "Окно подтверждения остается видимым" @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "И многое другое!" }, - "planDescPremium": { - "message": "Полная онлайн-защищенность" + "advancedOnlineSecurity": { + "message": "Расширенная онлайн-безопасность" }, "upgradeToPremium": { "message": "Обновить до Премиум" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Ваша организация больше не использует мастер-пароли для входа в Bitwarden. Чтобы продолжить, подтвердите организацию и домен." + }, + "continueWithLogIn": { + "message": "Продолжить с логином" + }, + "doNotContinue": { + "message": "Не продолжать" + }, + "domain": { + "message": "Домен" + }, + "keyConnectorDomainTooltip": { + "message": "В этом домене будут храниться ключи шифрования вашего аккаунта, поэтому убедитесь, что вы ему доверяете. Если вы не уверены, обратитесь к своему администратору." + }, + "verifyYourOrganization": { + "message": "Подтвердите свою организацию для входа" + }, + "organizationVerified": { + "message": "Организация подтверждена" + }, + "domainVerified": { + "message": "Домен верифицирован" + }, + "leaveOrganizationContent": { + "message": "Если вы не подтвердите свою организацию, ваш доступ к ней будет аннулирован." + }, + "leaveNow": { + "message": "Покинуть" + }, + "verifyYourDomainToLogin": { + "message": "Подтвердите свой домен для входа" + }, + "verifyYourDomainDescription": { + "message": "Чтобы продолжить с логином, подтвердите этот домен." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Чтобы продолжить с логином, подтвердите организацию и домен." + }, "sessionTimeoutSettingsAction": { "message": "Тайм-аут действия" }, "sessionTimeoutHeader": { - "message": "Тайм-аут сеанса" + "message": "Тайм-аут сессии" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Эта настройка управляется вашей организацией." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "В вашей организации максимальный тайм-аут сессии установлен равным $HOURS$ час. и $MINUTES$ мин.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Ваша организация установила тайм-аут сессии по умолчанию на При блокировке системы." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Ваша организация установила тайм-аут сессии по умолчанию на При перезапуске." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Максимальный тайм-аут не может превышать $HOURS$ час. и $MINUTES$ мин.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "При перезапуске" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Установите способ разблокировки для изменения действия при истечении тайм-аута" + }, + "upgrade": { + "message": "Перейти" + }, + "leaveConfirmationDialogTitle": { + "message": "Вы уверены, что хотите покинуть?" + }, + "leaveConfirmationDialogContentOne": { + "message": "В случае отказа ваши личные данные останутся в вашем аккаунте, но вы потеряете доступ к общим элементам и возможностям организации." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Свяжитесь с вашим администратором для восстановления доступа." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Покинуть $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Как я могу управлять своим хранилищем?" + }, + "transferItemsToOrganizationTitle": { + "message": "Перенести элементы в $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ требует, чтобы все элементы принадлежали организации для обеспечения безопасности и соответствия требованиям. Нажмите Принять, чтобы передать собственность на ваши элементы.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Принять передачу" + }, + "declineAndLeave": { + "message": "Отклонить и покинуть" + }, + "whyAmISeeingThis": { + "message": "Почему я это вижу?" } } diff --git a/apps/desktop/src/locales/si/messages.json b/apps/desktop/src/locales/si/messages.json index 51333386f8a..0c3b61c35cf 100644 --- a/apps/desktop/src/locales/si/messages.json +++ b/apps/desktop/src/locales/si/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/sk/messages.json b/apps/desktop/src/locales/sk/messages.json index 0e62a8ee8b0..d01591e1734 100644 --- a/apps/desktop/src/locales/sk/messages.json +++ b/apps/desktop/src/locales/sk/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Priložiť prílohu" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Opraviť šifrovanie" + }, + "fixEncryptionTooltip": { + "message": "Tento súbor používa zastaranú metódu šifrovania." + }, + "attachmentUpdated": { + "message": "Príloha bola aktualizovaná" + }, "maxFileSizeSansPunctuation": { "message": "Maximálna veľkosť súboru je 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Vyskytla sa neočakávaná chyba." }, + "unexpectedErrorShort": { + "message": "Neočakávaná chyba" + }, + "closeThisBitwardenWindow": { + "message": "Zatvorte toto okno Bitwardenu a skúste to znova." + }, "itemInformation": { "message": "Informácie o položke" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Sledujte nás" }, - "syncVault": { - "message": "Synchronizovať trezor" + "syncNow": { + "message": "Synchronizovať teraz" }, "changeMasterPass": { "message": "Zmeniť hlavné heslo" @@ -1319,7 +1337,7 @@ "message": "Keď je systém v režime spánku" }, "onLocked": { - "message": "Keď je systém uzamknutý" + "message": "Pri uzamknutí systému" }, "onRestart": { "message": "Pri reštarte" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exportovať z" }, - "exportVault": { - "message": "Export trezoru" + "export": { + "message": "Exportovať" + }, + "import": { + "message": "Importovať" }, "fileFormat": { "message": "Formát súboru" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Hlavné heslo bolo odstránené." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hlavné heslo sa už nevyžaduje pre členov tejto organizácie. Nižšie uvedenú doménu potvrďte u správcu organizácie." - }, "organizationName": { "message": "Názov organizácie" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias doména" }, - "importData": { - "message": "Import údajov", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Chyba importu" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Súbor sa uložil do zariadenia. Spravujte stiahnuté súbory zo zariadenia." }, + "importantNotice": { + "message": "Dôležité upozornenie" + }, + "setupTwoStepLogin": { + "message": "Nastaviť dvojstupňové prihlásenie" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden vám od februára 2025 pošle na e-mail vášho účtu kód na overenie prihlásenia z nových zariadení." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Ako alternatívny spôsob ochrany svojho účtu môžete nastaviť dvojstupňové prihlásenie alebo zmeniť e-mail na taký, ku ktorému máte prístup." + }, + "remindMeLater": { + "message": "Pripomenúť neskôr" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Máte zaručený prístup k e-mailu $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Nie, nemám" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Áno, mám zaručený prístup k e-mailu" + }, + "turnOnTwoStepLogin": { + "message": "Zapnúť dvojstupňové prihlásenie" + }, + "changeAcctEmail": { + "message": "Zmeniť e-mail účtu" + }, + "passkeyLogin": { + "message": "Prihlásiť sa s prístupovým kľúčom?" + }, + "savePasskeyQuestion": { + "message": "Uložiť prístupový kľúč?" + }, + "saveNewPasskey": { + "message": "Uložiť ako nové prihlasovacie údaje" + }, + "savePasskeyNewLogin": { + "message": "Uložiť prístupový kľúč ako nové prihlásenie" + }, + "noMatchingLoginsForSite": { + "message": "Pre túto stránku sa nenašli prihlasovacie údaje" + }, + "overwritePasskey": { + "message": "Prepísať prístupový kľúč?" + }, + "unableToSavePasskey": { + "message": "Prístupový kľúč sa nepodarilo uložiť" + }, + "alreadyContainsPasskey": { + "message": "Táto položka už obsahuje prístupový kľúč. Naozaj chcete prepísať aktuálny prístupový kľúč?" + }, + "passkeyAlreadyExists": { + "message": "Pre túto aplikáciu už existuje prístupový kľúč." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Táto aplikácia nepodporuje duplikáty." + }, + "closeThisWindow": { + "message": "Zatvoriť toto okno" + }, "allowScreenshots": { "message": "Povoliť snímanie obrazovky" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "A ešte viac!" }, - "planDescPremium": { - "message": "Úplné online zabezpečenie" + "advancedOnlineSecurity": { + "message": "Pokročilá online ochrana" }, "upgradeToPremium": { "message": "Upgradovať na Prémium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Vaša organizácia už nepoužíva hlavné heslá na prihlásenie do Bitwardenu. Ak chcete pokračovať, overte organizáciu a doménu." + }, + "continueWithLogIn": { + "message": "Pokračujte prihlásením" + }, + "doNotContinue": { + "message": "Nepokračovať" + }, + "domain": { + "message": "Doména" + }, + "keyConnectorDomainTooltip": { + "message": "Táto doména bude ukladať šifrovacie kľúče vášho účtu, takže sa uistite, že jej dôverujete. Ak si nie ste istí, overte si to u správcu." + }, + "verifyYourOrganization": { + "message": "Na prihlásenie overte organizáciu" + }, + "organizationVerified": { + "message": "Organizácia je overená" + }, + "domainVerified": { + "message": "Doména je overená" + }, + "leaveOrganizationContent": { + "message": "Ak organizáciu neoveríte, váš prístup k nej bude zrušený." + }, + "leaveNow": { + "message": "Opustiť teraz" + }, + "verifyYourDomainToLogin": { + "message": "Na prihlásenie overte doménu" + }, + "verifyYourDomainDescription": { + "message": "Na pokračovanie prihlásením, overte túto doménu." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Na pokračovanie prihlásením, overte organizáciu a doménu." + }, "sessionTimeoutSettingsAction": { "message": "Akcia pri vypršaní časového limitu" }, "sessionTimeoutHeader": { "message": "Časový limit relácie" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Toto nastavenie spravuje vaša organizácia." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Vaša organizácia nastavila maximálny časový limit relácie na $HOURS$ hod. a $MINUTES$ min.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Vaša organizácia nastavila predvolený časový limit relácie na Pri uzamknutí systému." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Vaša organizácia nastavila predvolený časový limit relácie na Pri reštarte prehliadača." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximálny časový limit nesmie prekročiť $HOURS$ hod. a $MINUTES$ min.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Pri reštarte" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Nastavte metódu odomknutia, aby ste zmenili akciu pri vypršaní časového limitu" + }, + "upgrade": { + "message": "Upgradovať" + }, + "leaveConfirmationDialogTitle": { + "message": "Naozaj chcete odísť?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ak odmietnete, vaše osobné položky zostanú vo vašom účte, ale stratíte prístup k zdieľaným položkám a funkciám organizácie." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Ak chcete obnoviť prístup, obráťte sa na správcu." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Opustiť $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Ako môžem spravovať svoj trezor?" + }, + "transferItemsToOrganizationTitle": { + "message": "Prenos položiek do $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ vyžaduje, aby všetky položky boli vo vlastníctve organizácie z dôvodu bezpečnosti a dodržiavania predpisov. Ak chcete previesť vlastníctvo položiek, kliknite na tlačidlo Prijať.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Prijať prevody" + }, + "declineAndLeave": { + "message": "Zamietnuť a odísť" + }, + "whyAmISeeingThis": { + "message": "Prečo to vidím?" } } diff --git a/apps/desktop/src/locales/sl/messages.json b/apps/desktop/src/locales/sl/messages.json index c640320ab1a..f336c8c1261 100644 --- a/apps/desktop/src/locales/sl/messages.json +++ b/apps/desktop/src/locales/sl/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Informacije o elementu" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Sledite nam" }, - "syncVault": { - "message": "Sinhroniziraj trezor" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Spremeni glavno geslo" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Izvoz trezorja" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Format datoteke" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Glavno geslo je bilo odstranjeno." }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/sr/messages.json b/apps/desktop/src/locales/sr/messages.json index 4e69efe726f..e5b6a9e2762 100644 --- a/apps/desktop/src/locales/sr/messages.json +++ b/apps/desktop/src/locales/sr/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Додај прилог" }, + "itemsTransferred": { + "message": "Пренете ставке" + }, + "fixEncryption": { + "message": "Поправи шифровање" + }, + "fixEncryptionTooltip": { + "message": "Ова датотека користи застарели метод шифровања." + }, + "attachmentUpdated": { + "message": "Прилог је ажуриран" + }, "maxFileSizeSansPunctuation": { "message": "Максимална величина је 500МБ" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Дошло је до неочекиване грешке." }, + "unexpectedErrorShort": { + "message": "Неочекивана грешка" + }, + "closeThisBitwardenWindow": { + "message": "Затворите овај Bitwarden прозор и покушајте поново." + }, "itemInformation": { "message": "Инфо о ставци" }, @@ -1094,22 +1112,22 @@ "message": "Сазнај више" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Дошло је до грешке при ажурирању подешавања шифровања." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Ажурирај своје поставке за шифровање" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Нова препоручена подешавања шифрирања побољшаће вашу сигурност налога. Унесите своју главну лозинку за ажурирање." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Да бисте наставили потврдите ваш идентитет" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Унети вашу главну лозинку" }, "updateSettings": { - "message": "Update settings" + "message": "Ажурирај подешавања" }, "featureUnavailable": { "message": "Функција је недоступна" @@ -1180,8 +1198,8 @@ "followUs": { "message": "Пратите нас" }, - "syncVault": { - "message": "Синхронизуј сеф" + "syncNow": { + "message": "Синхронизуј сада" }, "changeMasterPass": { "message": "Промени главну лозинку" @@ -1509,7 +1527,7 @@ "message": "1ГБ шифровано складиште за прилоге." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ шифровано складиште за прилоге.", "placeholders": { "size": { "content": "$1", @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Извоз од" }, - "exportVault": { - "message": "Извоз сефа" + "export": { + "message": "Извези" + }, + "import": { + "message": "Увоз" }, "fileFormat": { "message": "Формат датотеке" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Главна лозинка уклоњена" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Главна лозинка више није потребна за чланове следеће организације. Молимо потврдите домен са администратором организације." - }, "organizationName": { "message": "Назив организације" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Домен алијаса" }, - "importData": { - "message": "Увези податке", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Грешка при увозу" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Датотека је сачувана на уређају. Управљајте преузимањима са свог уређаја." }, + "importantNotice": { + "message": "Важно обавештење" + }, + "setupTwoStepLogin": { + "message": "Поставити дво-степенску пријаву" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden ће послати кôд на имејл вашег налога за верификовање пријављивања са нових уређаја почевши од фебруара 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Можете да подесите пријаву у два корака као алтернативни начин да заштитите свој налог или да промените свој имејл у један који можете да приступите." + }, + "remindMeLater": { + "message": "Подсети ме касније" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Да ли имате поуздан приступ својим имејлом, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Не, ненам" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Да, могу поуздано да приступим овим имејлом" + }, + "turnOnTwoStepLogin": { + "message": "Упалити дво-степенску пријаву" + }, + "changeAcctEmail": { + "message": "Променити имејл налога" + }, + "passkeyLogin": { + "message": "Пријавите се са приступним кључем?" + }, + "savePasskeyQuestion": { + "message": "Сачувати приступни кључ?" + }, + "saveNewPasskey": { + "message": "Сачувати као нову пријаву" + }, + "savePasskeyNewLogin": { + "message": "Сачувати приступни кључ као нову пријаву" + }, + "noMatchingLoginsForSite": { + "message": "Нема одговарајућих пријава за овај сајт" + }, + "overwritePasskey": { + "message": "Заменити приступни кључ?" + }, + "unableToSavePasskey": { + "message": "Није могуће сачувати приступни кључ" + }, + "alreadyContainsPasskey": { + "message": "Ова ставка већ садржи приступни кључ. Да ли сте сигурни да желите да замените тренутни приступни кључ?" + }, + "passkeyAlreadyExists": { + "message": "За ову апликацију већ постоји приступни кључ." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Ова апликација не подржава дупликате." + }, + "closeThisWindow": { + "message": "Затвори овај прозор" + }, "allowScreenshots": { "message": "Дозволи снимање екрана" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "И још више!" }, - "planDescPremium": { - "message": "Потпуна онлајн безбедност" + "advancedOnlineSecurity": { + "message": "Напредна онлајн безбедност" }, "upgradeToPremium": { "message": "Надоградите на Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Ваша организација више не користи главне лозинке за пријаву на Bitwarden. Да бисте наставили, верификујте организацију и домен." + }, + "continueWithLogIn": { + "message": "Наставити са пријавом" + }, + "doNotContinue": { + "message": "Не настави" + }, + "domain": { + "message": "Домен" + }, + "keyConnectorDomainTooltip": { + "message": "Овај домен ће чувати кључеве за шифровање вашег налога, па се уверите да му верујете. Ако нисте сигурни, проверите код свог администратора." + }, + "verifyYourOrganization": { + "message": "Верификујте своју организацију да бисте се пријавили" + }, + "organizationVerified": { + "message": "Организација верификована" + }, + "domainVerified": { + "message": "Домен верификован" + }, + "leaveOrganizationContent": { + "message": "Ако не верификујете своју организацију, ваш приступ организацији ће бити опозван." + }, + "leaveNow": { + "message": "Напусти сада" + }, + "verifyYourDomainToLogin": { + "message": "Верификујте домен да бисте се пријавили" + }, + "verifyYourDomainDescription": { + "message": "Да бисте наставили са пријављивањем, верификујте овај домен." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "Да бисте наставили са пријављивањем, верификујте организацију и домен." + }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "Акција тајмаута" }, "sessionTimeoutHeader": { - "message": "Session timeout" + "message": "Истек сесије" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Овим подешавањем управља ваша организација." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Ваша организација је подесила максимално временско ограничење сесије на $HOURS$ сати и $MINUTES$ минута.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Ваша организација је поставила подразумевано временско ограничење сесије на Блокирање система." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Ваша организација је поставила подразумевано временско ограничење сесије на При рестартовању." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Максимално временско ограничење не може да пређе $HOURS$ сат(а) и $MINUTES$ минут(а)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "На поновно покретање" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Подесите метод откључавања да бисте променили радњу временског ограничења" + }, + "upgrade": { + "message": "Надогради" + }, + "leaveConfirmationDialogTitle": { + "message": "Да ли сте сигурни да желите да напустите?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Ако одбијете, ваши лични предмети ће остати на вашем налогу, али ћете изгубити приступ дељеним ставкама и организационим функцијама." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Контактирајте свог администратора да бисте поново добили приступ." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Напустити $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Како да управљам својим сефом?" + }, + "transferItemsToOrganizationTitle": { + "message": "Премести ставке у $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ захтева да све ставке буду у власништву организације ради безбедности и усклађености. Кликните на прихвати да бисте пренели власништво над својим ставкама.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Прихвати трансфер" + }, + "declineAndLeave": { + "message": "Одбиј и напусти" + }, + "whyAmISeeingThis": { + "message": "Зашто видите ово?" } } diff --git a/apps/desktop/src/locales/sv/messages.json b/apps/desktop/src/locales/sv/messages.json index 6f3e68c8959..34b55de166b 100644 --- a/apps/desktop/src/locales/sv/messages.json +++ b/apps/desktop/src/locales/sv/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Lägg till bilaga" }, + "itemsTransferred": { + "message": "Objekt överförda" + }, + "fixEncryption": { + "message": "Fixa kryptering" + }, + "fixEncryptionTooltip": { + "message": "Denna fil använder en föråldrad krypteringsmetod." + }, + "attachmentUpdated": { + "message": "Bilaga uppdaterad" + }, "maxFileSizeSansPunctuation": { "message": "Maximal filstorlek är 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Ett oväntat fel har inträffat." }, + "unexpectedErrorShort": { + "message": "Oväntat fel" + }, + "closeThisBitwardenWindow": { + "message": "Stäng detta Bitwarden-fönster och försök igen." + }, "itemInformation": { "message": "Objektinformation" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Följ oss" }, - "syncVault": { - "message": "Synkronisera valv" + "syncNow": { + "message": "Synkronisera nu" }, "changeMasterPass": { "message": "Ändra huvudlösenord" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Exportera från" }, - "exportVault": { - "message": "Exportera valv" + "export": { + "message": "Exportera" + }, + "import": { + "message": "Importera" }, "fileFormat": { "message": "Filformat" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Huvudlösenord togs bort" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Ett huvudlösenord krävs inte längre för medlemmar i följande organisation. Vänligen bekräfta domänen nedan med din organisationsadministratör." - }, "organizationName": { "message": "Organisationsnamn" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Aliasdomän" }, - "importData": { - "message": "Importera data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Fel vid import" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Fil sparad till enhet. Hantera nedladdningar från din enhet." }, + "importantNotice": { + "message": "Viktigt meddelande" + }, + "setupTwoStepLogin": { + "message": "Ställ in tvåstegsverifiering" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden kommer att skicka en kod till din e-postadress för ditt konto för att verifiera inloggningar från nya enheter med start i februari 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Du kan ställa in tvåstegsverifiering som ett alternativt sätt att skydda ditt konto eller ändra din e-post till en som du kan komma åt." + }, + "remindMeLater": { + "message": "Påminn mig senare" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Har du tillförlitlig åtkomst till din e-post, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Nej, det har jag inte" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Ja, jag har tillförlitlig åtkomst till min e-post" + }, + "turnOnTwoStepLogin": { + "message": "Aktivera tvåstegsverifiering" + }, + "changeAcctEmail": { + "message": "Byt e-postadress för konto" + }, + "passkeyLogin": { + "message": "Logga in med inloggningsnyckel?" + }, + "savePasskeyQuestion": { + "message": "Spara inloggningsnyckel?" + }, + "saveNewPasskey": { + "message": "Spara som ny inloggning" + }, + "savePasskeyNewLogin": { + "message": "Spara inloggningsnyckel som ny inloggning" + }, + "noMatchingLoginsForSite": { + "message": "Inga matchande inloggningar för denna webbplats" + }, + "overwritePasskey": { + "message": "Skriv över inloggningsnyckel?" + }, + "unableToSavePasskey": { + "message": "Kunde inte spara inloggningsnyckel" + }, + "alreadyContainsPasskey": { + "message": "Detta objekt innehåller redan en inloggningsnyckel. Är du säker på att du vill skriva över den aktuella inloggningsnyckeln?" + }, + "passkeyAlreadyExists": { + "message": "En inloggningsnyckel finns redan för detta program." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Denna applikation har inte stöd för dubbletter." + }, + "closeThisWindow": { + "message": "Stäng detta fönster" + }, "allowScreenshots": { "message": "Tillåt skärmdump" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "och mer!" }, - "planDescPremium": { - "message": "Komplett säkerhet online" + "advancedOnlineSecurity": { + "message": "Avancerad säkerhet online" }, "upgradeToPremium": { "message": "Uppgradera till Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Din organisation använder inte längre huvudlösenord för att logga in på Bitwarden. För att fortsätta, verifiera organisationen och domänen." + }, + "continueWithLogIn": { + "message": "Fortsätt med inloggning" + }, + "doNotContinue": { + "message": "Fortsätt inte" + }, + "domain": { + "message": "Domän" + }, + "keyConnectorDomainTooltip": { + "message": "Denna domän kommer att lagra dina krypteringsnycklar, så se till att du litar på den. Om du inte är säker, kontrollera med din administratör." + }, + "verifyYourOrganization": { + "message": "Verifiera din organisation för att logga in" + }, + "organizationVerified": { + "message": "Organisation verifierad" + }, + "domainVerified": { + "message": "Domän verifierad" + }, + "leaveOrganizationContent": { + "message": "Om du inte verifierar din organisation kommer din åtkomst till organisationen att återkallas." + }, + "leaveNow": { + "message": "Lämna nu" + }, + "verifyYourDomainToLogin": { + "message": "Verifiera din domän för att logga in" + }, + "verifyYourDomainDescription": { + "message": "För att fortsätta med inloggning, verifiera denna domän." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "För att fortsätta logga in, verifiera organisationen och domänen." + }, "sessionTimeoutSettingsAction": { "message": "Tidsgränsåtgärd" }, "sessionTimeoutHeader": { "message": "Sessionstidsgräns" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Den här inställningen hanteras av din organisation." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Din organisation har ställt in maximal sessionstidsgräns till $HOURS$ timmar och $MINUTES$ minut(er).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Din organisation har ställt in tidsgräns för standardsession till Vid systemlåsning." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Din organisation har ställt in tidsgräns för standardsession till Vid omstart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximal tidsgräns får inte överstiga $HOURS$ timmar och $MINUTES$ minut(er)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Vid omstart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Ställ in en upplåsningsmetod för att ändra din tidsgränsåtgärd" + }, + "upgrade": { + "message": "Uppgradera" + }, + "leaveConfirmationDialogTitle": { + "message": "Är du säker på att du vill lämna?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Genom att avböja kommer dina personliga objekt att stanna på ditt konto, men du kommer att förlora åtkomst till delade objekt och organisationsfunktioner." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Kontakta administratören för att återfå åtkomst." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Lämna $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Hur hanterar jag mitt valv?" + }, + "transferItemsToOrganizationTitle": { + "message": "Överför objekt till $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ kräver att alla objekt ägs av organisationen för säkerhet och efterlevnad. Klicka på godkänn för att överföra ägarskapet för dina objekt.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Godkänn överföring" + }, + "declineAndLeave": { + "message": "Avböj och lämna" + }, + "whyAmISeeingThis": { + "message": "Varför ser jag det här?" } } diff --git a/apps/desktop/src/locales/ta/messages.json b/apps/desktop/src/locales/ta/messages.json index a83867a9eff..3abb4eb17c1 100644 --- a/apps/desktop/src/locales/ta/messages.json +++ b/apps/desktop/src/locales/ta/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "இணைப்பைச் சேர்" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "அதிகபட்ச கோப்பு அளவு 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "ஒரு எதிர்பாராத பிழை ஏற்பட்டது." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "உருப்படி தகவல்" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "எங்களைப் பின்தொடரவும்" }, - "syncVault": { - "message": "பெட்டகத்தை ஒத்திசைக்கவும்" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "முதன்மை கடவுச்சொல்லை மாற்றவும்" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "இருந்து ஏற்றுமதி" }, - "exportVault": { - "message": "பெட்டகத்தை ஏற்றுமதி செய்" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "கோப்பு வடிவம்" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "முதன்மை கடவுச்சொல் நீக்கப்பட்டது" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "பின்வரும் அமைப்பின் உறுப்பினர்களுக்கு ஒரு முதன்மை கடவுச்சொல் இனி தேவையில்லை. கீழே உள்ள டொமைனை உங்கள் நிறுவன நிர்வாகியுடன் உறுதிப்படுத்தவும்." - }, "organizationName": { "message": "நிறுவனத்தின் பெயர்" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "புனைப்பெயர் டொமைன்" }, - "importData": { - "message": "தரவை இறக்குமதி செய்", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "இறக்குமதி பிழை" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "கோப்பு சாதனத்தில் சேமிக்கப்பட்டது. உங்கள் சாதன பதிவிறக்கங்களிலிருந்து நிர்வகி." }, + "importantNotice": { + "message": "Important notice" + }, + "setupTwoStepLogin": { + "message": "Set up two-step login" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access." + }, + "remindMeLater": { + "message": "Remind me later" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Do you have reliable access to your email, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "No, I do not" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Yes, I can reliably access my email" + }, + "turnOnTwoStepLogin": { + "message": "Turn on two-step login" + }, + "changeAcctEmail": { + "message": "Change account email" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "திரை பிடிப்பை அனுமதி" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/te/messages.json b/apps/desktop/src/locales/te/messages.json index 0211550b08d..315272ae464 100644 --- a/apps/desktop/src/locales/te/messages.json +++ b/apps/desktop/src/locales/te/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow us" }, - "syncVault": { - "message": "Sync vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Change master password" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/th/messages.json b/apps/desktop/src/locales/th/messages.json index f5bbde79a86..1eac91a6c79 100644 --- a/apps/desktop/src/locales/th/messages.json +++ b/apps/desktop/src/locales/th/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Add attachment" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "ข้อผิดพลาดที่ไม่คาดคิดได้เกิดขึ้น." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "ข้อมูลรายการ" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Follow Us" }, - "syncVault": { - "message": "Sync Vault" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "เปลี่ยนรหัสผ่านหลัก" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Export from" }, - "exportVault": { - "message": "Export Vault" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "File Format" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Master password removed" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." - }, "organizationName": { "message": "Organization name" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias domain" }, - "importData": { - "message": "Import data", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Import error" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "File saved to device. Manage from your device downloads." }, + "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" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Allow screen capture" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "And more!" }, - "planDescPremium": { - "message": "Complete online security" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Upgrade to Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/tr/messages.json b/apps/desktop/src/locales/tr/messages.json index bb0b6f2fd51..a7ed829ce32 100644 --- a/apps/desktop/src/locales/tr/messages.json +++ b/apps/desktop/src/locales/tr/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Dosya ekle" }, + "itemsTransferred": { + "message": "Kayıtlar aktarıldı" + }, + "fixEncryption": { + "message": "Şifrelemeyi düzelt" + }, + "fixEncryptionTooltip": { + "message": "Bu dosya eski bir şifreleme yöntemi kullanıyor." + }, + "attachmentUpdated": { + "message": "Ek güncellendi" + }, "maxFileSizeSansPunctuation": { "message": "Maksimum dosya boyutu 500 MB'dir" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Beklenmedik bir hata oluştu." }, + "unexpectedErrorShort": { + "message": "Beklenmeyen hata" + }, + "closeThisBitwardenWindow": { + "message": "Bu Bitwarden penceresini kapatıp yeniden deneyin." + }, "itemInformation": { "message": "Kayıt bilgileri" }, @@ -1094,22 +1112,22 @@ "message": "Daha fazla bilgi al" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Şifreleme ayarları güncellenirken bir hata oluştu." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Şifreleme ayarlarınızı güncelleyin" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Önerilen yeni şifreleme ayarları hesap güvenliğinizi artıracaktır. Şimdi güncellemek için ana parolanızı girin." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Devam etmek için kimliğinizi doğrulayın" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Ana parolanızı girin" }, "updateSettings": { - "message": "Update settings" + "message": "Ayarları güncelle" }, "featureUnavailable": { "message": "Özellik kullanılamıyor" @@ -1180,8 +1198,8 @@ "followUs": { "message": "Bizi takip edin" }, - "syncVault": { - "message": "Kasayı eşitle" + "syncNow": { + "message": "Şimdi eşitle" }, "changeMasterPass": { "message": "Ana parolayı değiştir" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Dışa aktarılacak konum" }, - "exportVault": { - "message": "Kasayı dışa aktar" + "export": { + "message": "Dışa aktar" + }, + "import": { + "message": "İçe aktar" }, "fileFormat": { "message": "Dosya biçimi" @@ -1788,7 +1809,7 @@ "message": "Hesap kısıtlı" }, "restrictCardTypeImport": { - "message": "Kart öge türleri içe aktarılamıyor" + "message": "Kart kayıt türleri içe aktarılamıyor" }, "restrictCardTypeImportDesc": { "message": "1 veya daha fazla kuruluş tarafından belirlenen bir ilke, kasalarınıza kart aktarmanızı engelliyor." @@ -1868,7 +1889,7 @@ "message": "Kilidi Windows Hello ile aç" }, "unlockWithPolkit": { - "message": "Sistem kimlik doğrulaması ile kilit açma" + "message": "Kilidi sistem kimlik doğrulamasıyla aç" }, "windowsHelloConsentMessage": { "message": "Bitwarden için doğrulayın." @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Ana parola kaldırıldı" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Aşağıdaki organizasyonun üyeleri için artık ana parola gerekmemektedir. Lütfen alan adını organizasyon yöneticinizle doğrulayın." - }, "organizationName": { "message": "Kuruluş adı" }, @@ -2710,7 +2728,7 @@ } }, "exportingOrganizationVaultFromPasswordManagerWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported.", + "message": "Yalnızca $ORGANIZATION$ ile ilişkili kuruluş kasası dışa aktarılacaktır.", "placeholders": { "organization": { "content": "$1", @@ -2719,7 +2737,7 @@ } }, "exportingOrganizationVaultFromAdminConsoleWithDataOwnershipDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. My items collections will not be included.", + "message": "Yalnızca $ORGANIZATION$ ile ilişkilendirilmiş kuruluş kasası dışa aktarılacaktır. Kayıtlarım koleksiyonları dahil edilmeyecek.", "placeholders": { "organization": { "content": "$1", @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Alias alan adı" }, - "importData": { - "message": "Verileri içe aktar", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "İçe aktarma hatası" }, @@ -3851,22 +3865,22 @@ "message": "Uyarı: Aracı Yönlendirme" }, "agentForwardingWarningText": { - "message": "Bu istek, oturum açtığınız uzak bir cihazdan gelir" + "message": "Bu istek, giriş yaptığınız uzak bir cihazdan geliyor" }, "sshkeyApprovalMessageInfix": { - "message": "erişim istiyor" + "message": "buraya erişmek istiyor:" }, "sshkeyApprovalMessageSuffix": { - "message": "amacıyla" + "message": "amaç:" }, "sshActionLogin": { - "message": "bir sunucuya kimlik doğrulamak" + "message": "sunucuda kimlik doğrulamak" }, "sshActionSign": { - "message": "bir iletiyi imzala" + "message": "ileti imzalamak" }, "sshActionGitSign": { - "message": "bir git commit'i imzala" + "message": "git commit'i imzalamak" }, "unknownApplication": { "message": "Bir uygulama" @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Dosya cihaza kaydedildi. Cihazınızın indirilenler klasöründen yönetebilirsiniz." }, + "importantNotice": { + "message": "Önemli uyarı" + }, + "setupTwoStepLogin": { + "message": "İki adımlı girişi ayarlayın" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Şubat 2025 itibarıyla Bitwarden, yeni cihazlardan yeni girişleri doğrulamanız için e-posta adresinize bir kod gönderecektir." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Hesabınızı korumanın alternatif bir yolu olarak iki adımlı girişi etkinleştirebilirsiniz. Aksi halde e-posta adresinizin doğru olduğundan emin olmalısınız." + }, + "remindMeLater": { + "message": "Daha sonra hatırlat" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "$EMAIL$ adresinize sağlıklı bir şekilde erişebiliyor musunuz?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Hayır, erişemiyorum" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Evet, e-postalarıma sağlıklı bir şekilde erişebiliyorum" + }, + "turnOnTwoStepLogin": { + "message": "İki adımlı girişi etkinleştir" + }, + "changeAcctEmail": { + "message": "Hesap e-postasını değiştir" + }, + "passkeyLogin": { + "message": "Geçiş anahtarı ile giriş yapılsın mı?" + }, + "savePasskeyQuestion": { + "message": "Geçiş anahtarı kaydedilsin mi?" + }, + "saveNewPasskey": { + "message": "Yeni hesap olarak kaydet" + }, + "savePasskeyNewLogin": { + "message": "Geçiş anahtarını yeni hesap olarak kaydet" + }, + "noMatchingLoginsForSite": { + "message": "Bu siteyle eşleşen hesap bulunamadı" + }, + "overwritePasskey": { + "message": "Geçiş anahtarının üzerine yazılsın mı?" + }, + "unableToSavePasskey": { + "message": "Geçiş anahtarı kaydedilemedi" + }, + "alreadyContainsPasskey": { + "message": "Bu kayıt zaten bir geçiş anahtarı içeriyor. Mevcut geçiş anahtarının üzerine yazmak istediğinizden emin misiniz?" + }, + "passkeyAlreadyExists": { + "message": "Bu uygulama için bir geçiş anahtarı zaten mevcut." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Bu uygulama yinelenen kayıtları desteklemiyor." + }, + "closeThisWindow": { + "message": "Bu pencereyi kapat" + }, "allowScreenshots": { "message": "Ekran kaydına izin ver" }, @@ -3893,7 +3976,7 @@ "message": "Bitwarden masaüstü uygulamasının ekran görüntülerinde yakalanmasına ve uzak masaüstü oturumlarında görüntülenmesine izin verin. Bunun devre dışı bırakılması bazı harici ekranlarda erişimi engelleyecektir." }, "confirmWindowStillVisibleTitle": { - "message": "Pencerenin hala görünür durumda olduğunu onayla" + "message": "Pencerenin hâlâ görünür durumda olduğunu onayla" }, "confirmWindowStillVisibleContent": { "message": "Lütfen pencerenin hala görünür olduğunu onaylayın." @@ -4012,7 +4095,7 @@ "message": "Bu ayar hakkında" }, "permitCipherDetailsDescription": { - "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service." + "message": "Bitwarden, hangi simgenin veya parola değiştirme URL'sinin kullanılacağını belirlemek için kaydedilmiş hesap URI'larını kullanacaktır; bu da deneyiminizi iyileştirmeye yardımcı olur. Bu hizmeti kullandığınızda herhangi bir bilgi toplanmaz veya kaydedilmez." }, "assignToCollections": { "message": "Koleksiyonlara ata" @@ -4161,7 +4244,7 @@ "message": "Kısayolu yazın" }, "editAutotypeShortcutDescription": { - "message": "Include one or two of the following modifiers: Ctrl, Alt, Win, or Shift, and a letter." + "message": "Aşağıdaki değiştirici tuşlardan birini veya ikisini (Ctrl, Alt, Win ya da Shift) ve bir harf kullanın." }, "invalidShortcut": { "message": "Geçersiz kısayol" @@ -4180,7 +4263,7 @@ "message": "Onayla" }, "enableAutotypeShortcutPreview": { - "message": "Enable autotype shortcut (Feature Preview)" + "message": "Otomatik yazma kısayolunu etkinleştir (Özellik Önizlemesi)" }, "enableAutotypeShortcutDescription": { "message": "Verilerin yanlış yere doldurulmasını önlemek için kısayolu kullanmadan önce doğru alanda olduğunuzdan emin olun." @@ -4200,13 +4283,13 @@ "message": "Arşivden çıkar" }, "itemsInArchive": { - "message": "Items in archive" + "message": "Arşivdeki kayıtlar" }, "noItemsInArchive": { - "message": "No items in archive" + "message": "Arşivde kayıt yok" }, "noItemsInArchiveDesc": { - "message": "Archived items will appear here and will be excluded from general search results and autofill suggestions." + "message": "Arşivlenmiş kayıtlar burada görünecek ve genel arama sonuçları ile otomatik doldurma önerilerinden hariç tutulacaktır." }, "itemWasSentToArchive": { "message": "Kayıt arşive gönderildi" @@ -4215,10 +4298,10 @@ "message": "Kayıt arşivden çıkarıldı" }, "archiveItem": { - "message": "Archive item" + "message": "Kaydı arşivle" }, "archiveItemConfirmDesc": { - "message": "Archived items are excluded from general search results and autofill suggestions. Are you sure you want to archive this item?" + "message": "Arşivlenmiş kayıtlar genel arama sonuçları ve otomatik doldurma önerilerinden hariç tutulur. Bu kaydı arşivlemek istediğinizden emin misiniz?" }, "zipPostalCodeLabel": { "message": "ZIP / posta kodu" @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "Ve daha fazlası!" }, - "planDescPremium": { - "message": "Eksiksiz çevrimiçi güvenlik" + "advancedOnlineSecurity": { + "message": "Gelişmiş çevrimiçi güvenlik" }, "upgradeToPremium": { "message": "Premium'a yükselt" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Zaman aşımı eylemi" }, "sessionTimeoutHeader": { "message": "Oturum zaman aşımı" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Bu ayar kuruluşunuz tarafından yönetiliyor." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Kuruluşunuz maksimum kasa zaman aşımını $HOURS$ saat $MINUTES$ dakika olarak belirlemiş.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Kuruluşunuz varsayılan oturum zaman aşımını “Sistem kilitlenince” olarak ayarlamış." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Kuruluşunuz varsayılan oturum zaman aşımını “Yeniden başlatılınca” olarak ayarlamış." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maksimum zaman aşımı en fazla $HOURS$ saat $MINUTES$ dakika olabilir", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Yeniden başlatılınca" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Zaman aşımı eyleminizi değiştirmek için kilit açma yönteminizi ayarlayın" + }, + "upgrade": { + "message": "Yükselt" + }, + "leaveConfirmationDialogTitle": { + "message": "Ayrılmak istediğinizden emin misiniz?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Reddetmeniz halinde kişisel kayıtlarınız hesabınızda kalmaya devam edecek, ancak paylaşılan kayıtlara ve kuruluş özelliklerine erişiminizi kaybedeceksiniz." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Erişiminizi yeniden kazanmak için yöneticinizle iletişime geçin." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "$ORGANIZATION$ kuruluşundan ayrıl", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Kasamı nasıl yönetebilirim?" + }, + "transferItemsToOrganizationTitle": { + "message": "Kayıtları $ORGANIZATION$ kuruluşuna aktar", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$, güvenlik ve mevzuata uyum amacıyla tüm kayıtların kuruluşa ait olmasını zorunlu kılıyor. Kayıtlarınızın sahipliğini devretmek için \"Kabul et\"e tıklayın.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Aktarımı kabul et" + }, + "declineAndLeave": { + "message": "Reddet ve ayrıl" + }, + "whyAmISeeingThis": { + "message": "Bunu neden görüyorum?" } } diff --git a/apps/desktop/src/locales/uk/messages.json b/apps/desktop/src/locales/uk/messages.json index bed09352f03..9e4cc948e37 100644 --- a/apps/desktop/src/locales/uk/messages.json +++ b/apps/desktop/src/locales/uk/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "Додати вкладення" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "Fix encryption" + }, + "fixEncryptionTooltip": { + "message": "This file is using an outdated encryption method." + }, + "attachmentUpdated": { + "message": "Attachment updated" + }, "maxFileSizeSansPunctuation": { "message": "Максимальний розмір файлу – 500 МБ" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Сталася неочікувана помилка." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Інформація про запис" }, @@ -1180,8 +1198,8 @@ "followUs": { "message": "Стежте за нами" }, - "syncVault": { - "message": "Синхронізувати сховище" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Змінити головний пароль" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Експортувати з" }, - "exportVault": { - "message": "Експортувати сховище" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Формат файлу" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Головний пароль вилучено" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Головний пароль більше не є обов'язковим для учасників зазначеної організації. Підтвердьте вказаний нижче домен з адміністратором вашої організації." - }, "organizationName": { "message": "Назва організації" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Псевдонім домену" }, - "importData": { - "message": "Імпортувати дані", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Помилка імпорту" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Файл збережено на пристрої. Ви можете його знайти у теці завантажень." }, + "importantNotice": { + "message": "Important notice" + }, + "setupTwoStepLogin": { + "message": "Set up two-step login" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access." + }, + "remindMeLater": { + "message": "Remind me later" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Do you have reliable access to your email, $EMAIL$?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "No, I do not" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Yes, I can reliably access my email" + }, + "turnOnTwoStepLogin": { + "message": "Turn on two-step login" + }, + "changeAcctEmail": { + "message": "Change account email" + }, + "passkeyLogin": { + "message": "Log in with passkey?" + }, + "savePasskeyQuestion": { + "message": "Save passkey?" + }, + "saveNewPasskey": { + "message": "Save as new login" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "noMatchingLoginsForSite": { + "message": "No matching logins for this site" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "alreadyContainsPasskey": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "applicationDoesNotSupportDuplicates": { + "message": "This application does not support duplicates." + }, + "closeThisWindow": { + "message": "Close this window" + }, "allowScreenshots": { "message": "Дозволити захоплення екрана" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "Інші можливості!" }, - "planDescPremium": { - "message": "Повна онлайн-безпека" + "advancedOnlineSecurity": { + "message": "Advanced online security" }, "upgradeToPremium": { "message": "Покращити до Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "Timeout action" }, "sessionTimeoutHeader": { "message": "Session timeout" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "This setting is managed by your organization." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Your organization has set the maximum session timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Your organization has set the default session timeout to On system lock." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Your organization has set the default session timeout to On restart." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Maximum timeout cannot exceed $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "On restart" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Set an unlock method to change your timeout action" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } diff --git a/apps/desktop/src/locales/vi/messages.json b/apps/desktop/src/locales/vi/messages.json index 30038f046db..7591b92f8ee 100644 --- a/apps/desktop/src/locales/vi/messages.json +++ b/apps/desktop/src/locales/vi/messages.json @@ -70,7 +70,7 @@ } }, "noEditPermissions": { - "message": "You don't have permission to edit this item" + "message": "Bạn không có quyền chỉnh sửa mục này" }, "welcomeBack": { "message": "Chào mừng bạn trở lại" @@ -708,6 +708,18 @@ "addAttachment": { "message": "Thêm tệp đính kèm" }, + "itemsTransferred": { + "message": "Các mục đã chuyển" + }, + "fixEncryption": { + "message": "Sửa mã hóa" + }, + "fixEncryptionTooltip": { + "message": "Tệp này đang sử dụng phương pháp mã hóa lỗi thời." + }, + "attachmentUpdated": { + "message": "Tệp đính kèm đã được cập nhật" + }, "maxFileSizeSansPunctuation": { "message": "Kích thước tối đa của tập tin là 500MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "Đã xảy ra lỗi không mong muốn." }, + "unexpectedErrorShort": { + "message": "Lỗi bất thường" + }, + "closeThisBitwardenWindow": { + "message": "Đóng cửa sổ Bitwarden này rồi thử lại." + }, "itemInformation": { "message": "Thông tin mục" }, @@ -1094,22 +1112,22 @@ "message": "Tìm hiểu thêm" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "Đã xảy ra lỗi khi cập nhật cài đặt mã hóa." }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "Cập nhật cài đặt mã hóa của bạn" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "Cài đặt mã hóa được khuyến nghị sẽ cải thiện bảo mật cho tài khoản của bạn. Nhập mật khẩu chính để cập nhật ngay." }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "Xác minh danh tính để tiếp tục" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "Nhập mật khẩu chính của bạn" }, "updateSettings": { - "message": "Update settings" + "message": "Cập nhật cài đặt" }, "featureUnavailable": { "message": "Tính năng không có sẵn" @@ -1180,8 +1198,8 @@ "followUs": { "message": "Theo dõi chúng tôi" }, - "syncVault": { - "message": "Đồng bộ kho" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "Thay đổi mật khẩu chính" @@ -1313,7 +1331,7 @@ "message": "4 giờ" }, "onIdle": { - "message": "Khi hệ thống không hoạt động (rảnh rỗi)" + "message": "Khi hệ thống nhàn rỗi" }, "onSleep": { "message": "Khi hệ thống ngủ" @@ -1509,7 +1527,7 @@ "message": "1GB bộ nhớ lưu trữ được mã hóa cho các tệp đính kèm." }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "$SIZE$ bộ nhớ lưu trữ được mã hóa cho các tệp đính kèm.", "placeholders": { "size": { "content": "$1", @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "Xuất từ" }, - "exportVault": { - "message": "Xuất kho" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "Định dạng tập tin" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "Đã xóa mật khẩu chính" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Mật khẩu chính không còn được yêu cầu đối với các thành viên của tổ chức sau đây. Vui lòng xác nhận tên miền bên dưới với quản trị viên của tổ chức." - }, "organizationName": { "message": "Tên tổ chức" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "Tên miền thay thế" }, - "importData": { - "message": "Nhập dữ liệu", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "Lỗi khi nhập" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "Tệp đã được lưu vào thiết bị. Quản lý từ phần Tải về trên thiết bị của bạn." }, + "importantNotice": { + "message": "Thông báo quan trọng" + }, + "setupTwoStepLogin": { + "message": "Thiết lập đăng nhập hai bước" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "Bitwarden sẽ gửi mã đến email tài khoản của bạn để xác minh thông tin đăng nhập từ thiết bị mới bắt đầu từ tháng 2 năm 2025." + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "Bạn có thể thiết lập đăng nhập hai bước như một cách thay thế để bảo vệ tài khoản của mình hoặc thay đổi email thành email mà bạn có thể truy cập." + }, + "remindMeLater": { + "message": "Nhắc tôi sau" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "Bạn có thể truy cập vào email $EMAIL$ không?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "Không, tôi không có" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "Có, tôi có quyền truy cập email này" + }, + "turnOnTwoStepLogin": { + "message": "Bật đăng nhập hai bước" + }, + "changeAcctEmail": { + "message": "Đổi email tài khoản" + }, + "passkeyLogin": { + "message": "Đăng nhập bằng mã khóa?" + }, + "savePasskeyQuestion": { + "message": "Lưu mã khóa?" + }, + "saveNewPasskey": { + "message": "Lưu như đăng nhập mới" + }, + "savePasskeyNewLogin": { + "message": "Lưu mã khoá như đăng nhập mới" + }, + "noMatchingLoginsForSite": { + "message": "Không có đăng nhập khớp với trang web này" + }, + "overwritePasskey": { + "message": "Ghi đè mã khoá?" + }, + "unableToSavePasskey": { + "message": "Không thể lưu mã khóa" + }, + "alreadyContainsPasskey": { + "message": "Mục này đã chứa mã khóa. Bạn có chắc muốn ghi đè mã khóa hiện tại không?" + }, + "passkeyAlreadyExists": { + "message": "Ứng dụng này đã có mã khoá." + }, + "applicationDoesNotSupportDuplicates": { + "message": "Ứng dụng này không hỗ trợ các mục trùng lặp." + }, + "closeThisWindow": { + "message": "Đóng cửa sổ này" + }, "allowScreenshots": { "message": "Cho phép chụp màn hình" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "Và nhiều hơn nữa!" }, - "planDescPremium": { - "message": "Bảo mật trực tuyến toàn diện" + "advancedOnlineSecurity": { + "message": "Bảo mật trực tuyến nâng cao" }, "upgradeToPremium": { "message": "Nâng cấp lên gói Cao cấp" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { - "message": "Timeout action" + "message": "Hành động sau khi đóng kho" }, "sessionTimeoutHeader": { - "message": "Session timeout" + "message": "Thời gian hết phiên" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "Cài đặt này do tổ chức của bạn quản lý." + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "Tổ chức của bạn đã đặt thời gian chờ phiên tối đa là $HOURS$ giờ và $MINUTES$ phút.", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "Tổ chức của bạn đã đặt thời gian chờ phiên mặc định là Mỗi khi khóa máy." + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "Tổ chức của bạn đã đặt thời gian chờ phiên mặc định là Khi khởi động lại." + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "Thời gian chờ tối đa không thể vượt quá $HOURS$ giờ và $MINUTES$ phút", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "Khi khởi động lại máy" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "Đặt phương thức mở khóa để thay đổi hành động khi hết thời gian chờ" + }, + "upgrade": { + "message": "Nâng cấp" + }, + "leaveConfirmationDialogTitle": { + "message": "Bạn có chắc chắn muốn rời đi không?" + }, + "leaveConfirmationDialogContentOne": { + "message": "Bằng việc từ chối, các mục cá nhân sẽ vẫn nằm trong tài khoản của bạn, nhưng bạn sẽ mất quyền truy cập vào các mục được chia sẻ và tính năng tổ chức." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Liên hệ quản trị viên của bạn để lấy lại quyền truy cập." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Rời khỏi $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "Tôi quản lý kho của mình như thế nào?" + }, + "transferItemsToOrganizationTitle": { + "message": "Chuyển các mục đến $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ yêu cầu tất cả các mục phải thuộc sở hữu của tổ chức để đảm bảo an ninh và tuân thủ. Nhấp chấp nhận để chuyển quyền sở hữu các mục của bạn.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Chấp nhận chuyển" + }, + "declineAndLeave": { + "message": "Từ chối và rời đi" + }, + "whyAmISeeingThis": { + "message": "Tại sao tôi thấy điều này?" } } diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json index 80965415475..507be48bf04 100644 --- a/apps/desktop/src/locales/zh_CN/messages.json +++ b/apps/desktop/src/locales/zh_CN/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "添加附件" }, + "itemsTransferred": { + "message": "项目已传输" + }, + "fixEncryption": { + "message": "修复加密" + }, + "fixEncryptionTooltip": { + "message": "此文件正在使用过时的加密方式。" + }, + "attachmentUpdated": { + "message": "附件已更新" + }, "maxFileSizeSansPunctuation": { "message": "文件最大为 500 MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "发生意外错误。" }, + "unexpectedErrorShort": { + "message": "意外错误" + }, + "closeThisBitwardenWindow": { + "message": "关闭此 Bitwarden 窗口,然后重试。" + }, "itemInformation": { "message": "项目信息" }, @@ -927,7 +945,7 @@ "message": "验证码" }, "confirmIdentity": { - "message": "确认后继续。" + "message": "确认您的身份以继续。" }, "verificationCodeRequired": { "message": "必须填写验证码。" @@ -1094,22 +1112,22 @@ "message": "进一步了解" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "更新加密设置时发生错误。" }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "更新您的加密设置" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "新推荐的加密设置将提高您的账户安全性。输入您的主密码以立即更新。" }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "确认您的身份以继续" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "输入您的主密码" }, "updateSettings": { - "message": "Update settings" + "message": "更新设置" }, "featureUnavailable": { "message": "功能不可用" @@ -1180,8 +1198,8 @@ "followUs": { "message": "关注我们" }, - "syncVault": { - "message": "同步密码库" + "syncNow": { + "message": "立即同步" }, "changeMasterPass": { "message": "修改主密码" @@ -1259,7 +1277,7 @@ } }, "twoStepLoginConfirmation": { - "message": "两步登录要求您从其他设备(例如安全密钥、验证器 App、短信、电话或者电子邮件)来验证您的登录,这能使您的账户更加安全。两步登录需要在 bitwarden.com 网页版密码库中设置。现在访问此网站吗?" + "message": "两步登录要求您从其他设备(例如安全密钥、验证器 App、短信、电话或者电子邮件)来验证您的登录,这能使您的账户更加安全。两步登录需要在 bitwarden.com 网页版密码库中设置。现在要访问此网站吗?" }, "twoStepLogin": { "message": "两步登录" @@ -1453,7 +1471,7 @@ "message": "有可用的更新" }, "updateAvailableDesc": { - "message": "发现更新。是否立即下载?" + "message": "发现更新。要立即下载吗?" }, "restart": { "message": "重启" @@ -1494,7 +1512,7 @@ "message": "管理会员资格" }, "premiumManageAlert": { - "message": "您可以在 bitwarden.com 网页版密码库管理您的会员资格。现在要访问吗?" + "message": "您可以在 bitwarden.com 网页版密码库管理您的会员资格。现在要访问此网站吗?" }, "premiumRefresh": { "message": "刷新会员资格" @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "导出自" }, - "exportVault": { - "message": "导出密码库" + "export": { + "message": "导出" + }, + "import": { + "message": "导入" }, "fileFormat": { "message": "文件格式" @@ -2175,7 +2196,7 @@ "message": "启用浏览器集成时出错" }, "browserIntegrationErrorDesc": { - "message": "启用浏览器集成时出错。" + "message": "启用浏览器集成时发生错误。" }, "browserIntegrationWindowsStoreDesc": { "message": "很遗憾,Microsoft Store 版本目前不支持浏览器集成。" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "主密码已移除" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "以下组织的成员不再需要主密码。请与您的组织管理员确认下面的域名。" - }, "organizationName": { "message": "组织名称" }, @@ -3080,7 +3098,7 @@ "message": "请求获得批准后,您将收到通知" }, "needAnotherOption": { - "message": "必须在 Bitwarden App 的设置中启用设备登录。需要其他登录选项吗?" + "message": "必须在 Bitwarden App 的设置中启用设备登录。需要其他选项吗?" }, "viewAllLogInOptions": { "message": "查看所有登录选项" @@ -3203,10 +3221,10 @@ "message": "检查您的电子邮箱" }, "followTheLinkInTheEmailSentTo": { - "message": "点击发送到电子邮件中的链接" + "message": "点击发送到" }, "andContinueCreatingYourAccount": { - "message": "然后继续创建您的账户。" + "message": "的电子邮件中的链接,然后继续创建您的账户。" }, "noEmail": { "message": "没有收到电子邮件吗?" @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "别名域" }, - "importData": { - "message": "导入数据", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "导入出错" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "文件已保存到设备。可以在设备下载中进行管理。" }, + "importantNotice": { + "message": "重要通知" + }, + "setupTwoStepLogin": { + "message": "设置两步登录" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "从 2025 年 02 月起,Bitwarden 将向您的账户电子邮箱发送验证码,以验证来自新设备的登录。" + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "您可以设置两步登录作为保护账户的替代方法,或将您的电子邮箱更改为您可以访问的电子邮箱。" + }, + "remindMeLater": { + "message": "稍后提醒我" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "您可以正常访问您的电子邮箱 $EMAIL$ 吗?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "不,我不能" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "是的,我可以正常访问我的电子邮箱" + }, + "turnOnTwoStepLogin": { + "message": "启用两步登录" + }, + "changeAcctEmail": { + "message": "更改账户电子邮箱" + }, + "passkeyLogin": { + "message": "使用通行密钥登录吗?" + }, + "savePasskeyQuestion": { + "message": "保存通行密钥吗?" + }, + "saveNewPasskey": { + "message": "保存为新的登录" + }, + "savePasskeyNewLogin": { + "message": "将通行密钥保存为新的登录" + }, + "noMatchingLoginsForSite": { + "message": "此站点没有匹配的登录" + }, + "overwritePasskey": { + "message": "覆盖通行密钥吗?" + }, + "unableToSavePasskey": { + "message": "无法保存通行密钥" + }, + "alreadyContainsPasskey": { + "message": "此项目已包含一个通行密钥。确定要覆盖当前的通行密钥吗?" + }, + "passkeyAlreadyExists": { + "message": "此应用程序已存在一个通行密钥。" + }, + "applicationDoesNotSupportDuplicates": { + "message": "此应用程序不支持重复项。" + }, + "closeThisWindow": { + "message": "关闭此窗口" + }, "allowScreenshots": { "message": "允许屏幕截图" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "以及更多!" }, - "planDescPremium": { - "message": "全面的在线安全防护" + "advancedOnlineSecurity": { + "message": "高级在线安全防护" }, "upgradeToPremium": { "message": "升级为高级版" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "您的组织已不再使用主密码登录 Bitwarden。要继续,请验证组织和域名。" + }, + "continueWithLogIn": { + "message": "继续登录" + }, + "doNotContinue": { + "message": "不要继续" + }, + "domain": { + "message": "域名" + }, + "keyConnectorDomainTooltip": { + "message": "此域名将存储您的账户加密密钥,所以请确保您信任它。如果您不确定,请与您的管理员联系。" + }, + "verifyYourOrganization": { + "message": "验证您的组织以登录" + }, + "organizationVerified": { + "message": "组织已验证" + }, + "domainVerified": { + "message": "域名已验证" + }, + "leaveOrganizationContent": { + "message": "如果不验证您的组织,您对组织的访问权限将被撤销。" + }, + "leaveNow": { + "message": "立即退出" + }, + "verifyYourDomainToLogin": { + "message": "验证您的域名以登录" + }, + "verifyYourDomainDescription": { + "message": "要继续登录,请验证此域名。" + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "要继续登录,请验证组织和域名。" + }, "sessionTimeoutSettingsAction": { "message": "超时动作" }, "sessionTimeoutHeader": { "message": "会话超时" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "此设置由您的组织管理。" + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "您的组织已将最大会话超时设置为 $HOURS$ 小时 $MINUTES$ 分钟。", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "您的组织已将默认会话超时设置为「系统锁定时」。" + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "您的组织已将默认会话超时设置为「重启时」。" + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "最大超时不能超过 $HOURS$ 小时 $MINUTES$ 分钟", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "重启时" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "设置一个解锁方式以更改您的超时动作" + }, + "upgrade": { + "message": "升级" + }, + "leaveConfirmationDialogTitle": { + "message": "确定要退出吗?" + }, + "leaveConfirmationDialogContentOne": { + "message": "拒绝后,您的个人项目将保留在您的账户中,但您将失去对共享项目和组织功能的访问权限。" + }, + "leaveConfirmationDialogContentTwo": { + "message": "联系您的管理员以重新获取访问权限。" + }, + "leaveConfirmationDialogConfirmButton": { + "message": "退出 $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "我该如何管理我的密码库?" + }, + "transferItemsToOrganizationTitle": { + "message": "传输项目到 $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "出于安全和合规考虑,$ORGANIZATION$ 要求所有项目归组织所有。点击「接受」以传输您的项目的所有权。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "接受传输" + }, + "declineAndLeave": { + "message": "拒绝并退出" + }, + "whyAmISeeingThis": { + "message": "为什么我会看到这个?" } } diff --git a/apps/desktop/src/locales/zh_TW/messages.json b/apps/desktop/src/locales/zh_TW/messages.json index e412adf9e5b..3e00280b364 100644 --- a/apps/desktop/src/locales/zh_TW/messages.json +++ b/apps/desktop/src/locales/zh_TW/messages.json @@ -708,6 +708,18 @@ "addAttachment": { "message": "新增附件" }, + "itemsTransferred": { + "message": "Items transferred" + }, + "fixEncryption": { + "message": "修正加密" + }, + "fixEncryptionTooltip": { + "message": "此檔案使用了過時的加密方式。" + }, + "attachmentUpdated": { + "message": "附件已更新" + }, "maxFileSizeSansPunctuation": { "message": "最大檔案大小為 500MB" }, @@ -908,6 +920,12 @@ "unexpectedError": { "message": "發生了未預期的錯誤。" }, + "unexpectedErrorShort": { + "message": "未預期的錯誤" + }, + "closeThisBitwardenWindow": { + "message": "關閉此 Bitwarden 視窗後再試一次。" + }, "itemInformation": { "message": "項目資訊" }, @@ -1094,22 +1112,22 @@ "message": "了解更多" }, "migrationsFailed": { - "message": "An error occurred updating the encryption settings." + "message": "更新加密設定時發生錯誤。" }, "updateEncryptionSettingsTitle": { - "message": "Update your encryption settings" + "message": "更新您的加密設定" }, "updateEncryptionSettingsDesc": { - "message": "The new recommended encryption settings will improve your account security. Enter your master password to update now." + "message": "新的建議加密設定將提升您的帳戶安全性。請輸入主密碼以立即更新。" }, "confirmIdentityToContinue": { - "message": "Confirm your identity to continue" + "message": "請先確認身分後再繼續" }, "enterYourMasterPassword": { - "message": "Enter your master password" + "message": "輸入您的主密碼" }, "updateSettings": { - "message": "Update settings" + "message": "更新設定" }, "featureUnavailable": { "message": "功能不可用" @@ -1180,8 +1198,8 @@ "followUs": { "message": "關注我們" }, - "syncVault": { - "message": "同步密碼庫" + "syncNow": { + "message": "Sync now" }, "changeMasterPass": { "message": "變更主密碼" @@ -1509,7 +1527,7 @@ "message": "用於檔案附件的 1 GB 的加密檔案儲存空間。" }, "premiumSignUpStorageV2": { - "message": "$SIZE$ encrypted storage for file attachments.", + "message": "用於檔案附件的 $SIZE$ 加密儲存空間。", "placeholders": { "size": { "content": "$1", @@ -1757,8 +1775,11 @@ "exportFrom": { "message": "匯出自" }, - "exportVault": { - "message": "匯出密碼庫" + "export": { + "message": "Export" + }, + "import": { + "message": "Import" }, "fileFormat": { "message": "檔案格式" @@ -2619,9 +2640,6 @@ "removedMasterPassword": { "message": "主密碼已移除" }, - "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "以下組織的成員已不再需要主密碼。請與你的組織管理員確認下方的網域。" - }, "organizationName": { "message": "機構名稱" }, @@ -3477,10 +3495,6 @@ "aliasDomain": { "message": "別名網域" }, - "importData": { - "message": "匯入資料", - "description": "Used for the desktop menu item and the header of the import dialog" - }, "importError": { "message": "匯入時發生錯誤" }, @@ -3886,6 +3900,75 @@ "fileSavedToDevice": { "message": "檔案已儲存到裝置。在您的裝置上管理下載檔案。" }, + "importantNotice": { + "message": "重要通知" + }, + "setupTwoStepLogin": { + "message": "啟動兩階段登入" + }, + "newDeviceVerificationNoticeContentPage1": { + "message": "從 2025 年 2 月開始,Bitwarden 會傳送代碼到您的帳號電子郵件中來驗證新裝置的登入。" + }, + "newDeviceVerificationNoticeContentPage2": { + "message": "您可以啟動兩階段認證來保護您的帳號或更改您可以存取的電子郵件位址。" + }, + "remindMeLater": { + "message": "稍後再提醒我" + }, + "newDeviceVerificationNoticePageOneFormContent": { + "message": "您可以存取您的電子郵件位址 $EMAIL$ 嗎?", + "placeholders": { + "email": { + "content": "$1", + "example": "your_name@email.com" + } + } + }, + "newDeviceVerificationNoticePageOneEmailAccessNo": { + "message": "不,我不行" + }, + "newDeviceVerificationNoticePageOneEmailAccessYes": { + "message": "是,我可以存取我的電子郵件位址" + }, + "turnOnTwoStepLogin": { + "message": "啟動兩階段登入" + }, + "changeAcctEmail": { + "message": "更改帳號電子郵件位址" + }, + "passkeyLogin": { + "message": "使用密碼金鑰登入?" + }, + "savePasskeyQuestion": { + "message": "儲存密碼金鑰?" + }, + "saveNewPasskey": { + "message": "儲存為新的登入資訊" + }, + "savePasskeyNewLogin": { + "message": "將密碼金鑰儲存為新的登入資訊" + }, + "noMatchingLoginsForSite": { + "message": "未找到此網站的登入資訊" + }, + "overwritePasskey": { + "message": "要覆寫密碼金鑰嗎?" + }, + "unableToSavePasskey": { + "message": "無法儲存通行金鑰" + }, + "alreadyContainsPasskey": { + "message": "該項目已包含一個密碼金鑰。您確定要覆寫目前的密碼金鑰嗎?" + }, + "passkeyAlreadyExists": { + "message": "用於這個應用程式的密碼金鑰已經存在。" + }, + "applicationDoesNotSupportDuplicates": { + "message": "此應用程式不支援重複項目。" + }, + "closeThisWindow": { + "message": "關閉此視窗" + }, "allowScreenshots": { "message": "允許螢幕擷取" }, @@ -4244,16 +4327,147 @@ "andMoreFeatures": { "message": "以及其他功能功能!" }, - "planDescPremium": { - "message": "完整的線上安全" + "advancedOnlineSecurity": { + "message": "進階線上安全防護" }, "upgradeToPremium": { "message": "升級到 Premium" }, + "removeMasterPasswordForOrgUserKeyConnector": { + "message": "Your organization is no longer using master passwords to log into Bitwarden. To continue, verify the organization and domain." + }, + "continueWithLogIn": { + "message": "Continue with log in" + }, + "doNotContinue": { + "message": "Do not continue" + }, + "domain": { + "message": "Domain" + }, + "keyConnectorDomainTooltip": { + "message": "This domain will store your account encryption keys, so make sure you trust it. If you're not sure, check with your admin." + }, + "verifyYourOrganization": { + "message": "Verify your organization to log in" + }, + "organizationVerified": { + "message": "Organization verified" + }, + "domainVerified": { + "message": "Domain verified" + }, + "leaveOrganizationContent": { + "message": "If you don't verify your organization, your access to the organization will be revoked." + }, + "leaveNow": { + "message": "Leave now" + }, + "verifyYourDomainToLogin": { + "message": "Verify your domain to log in" + }, + "verifyYourDomainDescription": { + "message": "To continue with log in, verify this domain." + }, + "confirmKeyConnectorOrganizationUserDescription": { + "message": "To continue with log in, verify the organization and domain." + }, "sessionTimeoutSettingsAction": { "message": "逾時後動作" }, "sessionTimeoutHeader": { "message": "工作階段逾時" + }, + "sessionTimeoutSettingsManagedByOrganization": { + "message": "此設定由您的組織管理。" + }, + "sessionTimeoutSettingsPolicySetMaximumTimeoutToHoursMinutes": { + "message": "您的組織已將最長工作階段逾時設為 $HOURS$ 小時與 $MINUTES$ 分鐘。", + "placeholders": { + "hours": { + "content": "$1", + "example": "8" + }, + "minutes": { + "content": "$2", + "example": "2" + } + } + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnLocked": { + "message": "您的組織已將預設工作階段逾時設定為「在系統鎖定時」。" + }, + "sessionTimeoutSettingsPolicySetDefaultTimeoutToOnRestart": { + "message": "您的組織已將預設工作階段逾時設定為「在重新啟動時」。" + }, + "sessionTimeoutSettingsPolicyMaximumError": { + "message": "最長逾時時間不可超過 $HOURS$ 小時 $MINUTES$ 分鐘", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "sessionTimeoutOnRestart": { + "message": "重新啟動時" + }, + "sessionTimeoutSettingsSetUnlockMethodToChangeTimeoutAction": { + "message": "設定一個解鎖方式來變更您的密碼庫逾時動作。" + }, + "upgrade": { + "message": "Upgrade" + }, + "leaveConfirmationDialogTitle": { + "message": "Are you sure you want to leave?" + }, + "leaveConfirmationDialogContentOne": { + "message": "By declining, your personal items will stay in your account, but you'll lose access to shared items and organization features." + }, + "leaveConfirmationDialogContentTwo": { + "message": "Contact your admin to regain access." + }, + "leaveConfirmationDialogConfirmButton": { + "message": "Leave $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "howToManageMyVault": { + "message": "How do I manage my vault?" + }, + "transferItemsToOrganizationTitle": { + "message": "Transfer items to $ORGANIZATION$", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "transferItemsToOrganizationContent": { + "message": "$ORGANIZATION$ is requiring all items to be owned by the organization for security and compliance. Click accept to transfer ownership of your items.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "acceptTransfer": { + "message": "Accept transfer" + }, + "declineAndLeave": { + "message": "Decline and leave" + }, + "whyAmISeeingThis": { + "message": "Why am I seeing this?" } } From b63e1cb26c08bf43969c3e6de8df18325860ea40 Mon Sep 17 00:00:00 2001 From: Mike Amirault Date: Tue, 16 Dec 2025 13:34:31 -0500 Subject: [PATCH 21/67] [PM-28181] Open send dialog in drawer instead of popup in refreshed UI (#17666) * [PM-28181] Open send dialog in drawer instead of popup in refreshed UI * Fix types * [PM-28181] Use drawer to edit sends with refreshed UI * [PM-28181] Address bug where multiple Sends could not be navigated between --- .../new-send-dropdown.component.spec.ts | 94 +++++++++++++++++++ .../new-send/new-send-dropdown.component.ts | 10 +- apps/web/src/app/tools/send/send.component.ts | 20 +++- libs/common/src/enums/feature-flag.enum.ts | 2 + .../send-add-edit-dialog.component.ts | 15 +++ 5 files changed, 135 insertions(+), 6 deletions(-) create mode 100644 apps/web/src/app/tools/send/new-send/new-send-dropdown.component.spec.ts diff --git a/apps/web/src/app/tools/send/new-send/new-send-dropdown.component.spec.ts b/apps/web/src/app/tools/send/new-send/new-send-dropdown.component.spec.ts new file mode 100644 index 00000000000..4f5dda1745e --- /dev/null +++ b/apps/web/src/app/tools/send/new-send/new-send-dropdown.component.spec.ts @@ -0,0 +1,94 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { mock } from "jest-mock-extended"; +import { of } from "rxjs"; + +import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; +import { Account, AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; +import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { SendType } from "@bitwarden/common/tools/send/enums/send-type"; +import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service.abstraction"; +import { SendService } from "@bitwarden/common/tools/send/services/send.service.abstraction"; +import { PremiumUpgradePromptService } from "@bitwarden/common/vault/abstractions/premium-upgrade-prompt.service"; +import { SendAddEditDialogComponent } from "@bitwarden/send-ui"; + +import { NewSendDropdownComponent } from "./new-send-dropdown.component"; + +describe("NewSendDropdownComponent", () => { + let component: NewSendDropdownComponent; + let fixture: ComponentFixture; + const mockBillingAccountProfileStateService = mock(); + const mockAccountService = mock(); + const mockConfigService = mock(); + const mockI18nService = mock(); + const mockPolicyService = mock(); + const mockSendService = mock(); + const mockPremiumUpgradePromptService = mock(); + const mockSendApiService = mock(); + + beforeAll(() => { + mockBillingAccountProfileStateService.hasPremiumFromAnySource$.mockImplementation(() => + of(true), + ); + mockAccountService.activeAccount$ = of({ id: "myTestAccount" } as Account); + mockPolicyService.policyAppliesToUser$.mockImplementation(() => of(false)); + mockPremiumUpgradePromptService.promptForPremium.mockImplementation(async () => {}); + }); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [NewSendDropdownComponent], + declarations: [], + providers: [ + { + provide: BillingAccountProfileStateService, + useValue: mockBillingAccountProfileStateService, + }, + { provide: AccountService, useValue: mockAccountService }, + { provide: ConfigService, useValue: mockConfigService }, + { provide: I18nService, useValue: mockI18nService }, + { provide: PolicyService, useValue: mockPolicyService }, + { provide: SendService, useValue: mockSendService }, + { provide: PremiumUpgradePromptService, useValue: mockPremiumUpgradePromptService }, + { provide: SendApiService, useValue: mockSendApiService }, + ], + }).compileComponents(); + fixture = TestBed.createComponent(NewSendDropdownComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); + + it("should open send dialog in a popup without feature flag", async () => { + const openSpy = jest.spyOn(SendAddEditDialogComponent, "open"); + const openDrawerSpy = jest.spyOn(SendAddEditDialogComponent, "openDrawer"); + mockConfigService.getFeatureFlag.mockResolvedValue(false); + + await component.createSend(SendType.Text); + + expect(openSpy).toHaveBeenCalled(); + expect(openDrawerSpy).not.toHaveBeenCalled(); + }); + + it("should open send dialog in drawer with feature flag", async () => { + const openSpy = jest.spyOn(SendAddEditDialogComponent, "open"); + const openDrawerSpy = jest.spyOn(SendAddEditDialogComponent, "openDrawer"); + mockConfigService.getFeatureFlag.mockImplementation(async (key) => + key === FeatureFlag.SendUIRefresh ? true : false, + ); + + await component.createSend(SendType.Text); + + expect(openSpy).not.toHaveBeenCalled(); + expect(openDrawerSpy).toHaveBeenCalled(); + }); +}); diff --git a/apps/web/src/app/tools/send/new-send/new-send-dropdown.component.ts b/apps/web/src/app/tools/send/new-send/new-send-dropdown.component.ts index 80d1d0e1e12..22f07e4fe92 100644 --- a/apps/web/src/app/tools/send/new-send/new-send-dropdown.component.ts +++ b/apps/web/src/app/tools/send/new-send/new-send-dropdown.component.ts @@ -6,6 +6,8 @@ import { PremiumBadgeComponent } from "@bitwarden/angular/billing/components/pre import { JslibModule } from "@bitwarden/angular/jslib.module"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { SendType } from "@bitwarden/common/tools/send/enums/send-type"; import { ButtonModule, DialogService, MenuModule } from "@bitwarden/components"; import { DefaultSendFormConfigService, SendAddEditDialogComponent } from "@bitwarden/send-ui"; @@ -38,6 +40,7 @@ export class NewSendDropdownComponent { private accountService: AccountService, private dialogService: DialogService, private addEditFormConfigService: DefaultSendFormConfigService, + private configService: ConfigService, ) { this.canAccessPremium$ = this.accountService.activeAccount$.pipe( switchMap((account) => @@ -60,6 +63,11 @@ export class NewSendDropdownComponent { const formConfig = await this.addEditFormConfigService.buildConfig("add", undefined, type); - SendAddEditDialogComponent.open(this.dialogService, { formConfig }); + const useRefresh = await this.configService.getFeatureFlag(FeatureFlag.SendUIRefresh); + if (useRefresh) { + SendAddEditDialogComponent.openDrawer(this.dialogService, { formConfig }); + } else { + SendAddEditDialogComponent.open(this.dialogService, { formConfig }); + } } } diff --git a/apps/web/src/app/tools/send/send.component.ts b/apps/web/src/app/tools/send/send.component.ts index e9ad7aee1f1..11559976fbf 100644 --- a/apps/web/src/app/tools/send/send.component.ts +++ b/apps/web/src/app/tools/send/send.component.ts @@ -7,7 +7,9 @@ import { SendComponent as BaseSendComponent } from "@bitwarden/angular/tools/sen import { NoSendsIcon } from "@bitwarden/assets/svg"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { BroadcasterService } from "@bitwarden/common/platform/abstractions/broadcaster.service"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.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"; @@ -77,6 +79,7 @@ export class SendComponent extends BaseSendComponent implements OnInit, OnDestro toastService: ToastService, private addEditFormConfigService: DefaultSendFormConfigService, accountService: AccountService, + private configService: ConfigService, ) { super( sendService, @@ -144,14 +147,21 @@ export class SendComponent extends BaseSendComponent implements OnInit, OnDestro * @param formConfig The form configuration. * */ async openSendItemDialog(formConfig: SendFormConfig) { - // Prevent multiple dialogs from being opened. - if (this.sendItemDialogRef) { + const useRefresh = await this.configService.getFeatureFlag(FeatureFlag.SendUIRefresh); + // Prevent multiple dialogs from being opened but allow drawers since they will prevent multiple being open themselves + if (this.sendItemDialogRef && !useRefresh) { return; } - this.sendItemDialogRef = SendAddEditDialogComponent.open(this.dialogService, { - formConfig, - }); + if (useRefresh) { + this.sendItemDialogRef = SendAddEditDialogComponent.openDrawer(this.dialogService, { + formConfig, + }); + } else { + this.sendItemDialogRef = SendAddEditDialogComponent.open(this.dialogService, { + formConfig, + }); + } const result = await lastValueFrom(this.sendItemDialogRef.closed); this.sendItemDialogRef = undefined; diff --git a/libs/common/src/enums/feature-flag.enum.ts b/libs/common/src/enums/feature-flag.enum.ts index fb8edd8aa7d..f2037f1a89f 100644 --- a/libs/common/src/enums/feature-flag.enum.ts +++ b/libs/common/src/enums/feature-flag.enum.ts @@ -50,6 +50,7 @@ export enum FeatureFlag { DesktopSendUIRefresh = "desktop-send-ui-refresh", UseSdkPasswordGenerators = "pm-19976-use-sdk-password-generators", ChromiumImporterWithABE = "pm-25855-chromium-importer-abe", + SendUIRefresh = "pm-28175-send-ui-refresh", /* DIRT */ EventManagementForDataDogAndCrowdStrike = "event-management-for-datadog-and-crowdstrike", @@ -110,6 +111,7 @@ export const DefaultFeatureFlagValue = { [FeatureFlag.DesktopSendUIRefresh]: FALSE, [FeatureFlag.UseSdkPasswordGenerators]: FALSE, [FeatureFlag.ChromiumImporterWithABE]: FALSE, + [FeatureFlag.SendUIRefresh]: FALSE, /* DIRT */ [FeatureFlag.EventManagementForDataDogAndCrowdStrike]: FALSE, diff --git a/libs/tools/send/send-ui/src/add-edit/send-add-edit-dialog.component.ts b/libs/tools/send/send-ui/src/add-edit/send-add-edit-dialog.component.ts index 6f49c0ecce5..38257df603a 100644 --- a/libs/tools/send/send-ui/src/add-edit/send-add-edit-dialog.component.ts +++ b/libs/tools/send/send-ui/src/add-edit/send-add-edit-dialog.component.ts @@ -174,4 +174,19 @@ export class SendAddEditDialogComponent { }, ); } + + /** + * Opens the send add/edit dialog in a drawer + * @param dialogService Instance of the DialogService. + * @param params The parameters for the drawer. + * @returns The drawer result. + */ + static openDrawer(dialogService: DialogService, params: SendItemDialogParams) { + return dialogService.openDrawer( + SendAddEditDialogComponent, + { + data: params, + }, + ); + } } From ac0a0fd2198d833c2bc047dbb0104beb02dac28e Mon Sep 17 00:00:00 2001 From: neuronull <9162534+neuronull@users.noreply.github.com> Date: Tue, 16 Dec 2025 13:00:56 -0700 Subject: [PATCH 22/67] Desktop Autotype toggle on vault lock/unlock (#17062) * Desktop Autotype toggle on vault lock/unlock * lint * add back disable on will-quit signal * improve IPC message args * claude: takeUntilDestroyed * claude: try/catch * claude: multiple listeners * claude: === * claude: concatMap * claude: IPC Handler Registration in Constructor * claude: helper function * claude: Type Safety for IPC Messages * fix claude suggestion? * bit by commit hook file write again * remove the type qualifier * add log svc dep * move the initialized ipcs back to constructor * frageele? * try disable premium check * replace takeUntilDestroy with takeUntil(destroy) * add import * create separate observable for premium check * clean up and remove distinctUntilChanged * re-add distinctUntilChanged * ipc handlers in init * check double initialization * Revert "check double initialization" This reverts commit 8488b8a6130e69a31497c7c0148dde256f2c9667. * Revert "ipc handlers in init" This reverts commit a23999edcfda396eb0c0910d8a318b084a3c4120. * ipc out of constructor * claude suggestion does not compile, awesome * add a dispose method for cleanup of ipc handlers * claude: remove of(false) on observable initializing * claude: remove the init/init'd * claude: remove takeUntil on isPremiumAccount * Revert "claude: remove takeUntil on isPremiumAccount" This reverts commit 9fc32c5fcf47964df63ed4198d96223e26d9ae1f. * align models file name with interface name * rename ipc listeners function * improve debug log message * improve debug log message * remove reference to not present observable in unit test * add function comment * make `autotypeKeyboardShortcut` private --- .../app/accounts/settings.component.spec.ts | 1 - .../src/app/services/services.module.ts | 1 + .../main/main-desktop-autotype.service.ts | 103 +++++++--- .../src/autofill/models/autotype-config.ts | 3 + .../src/autofill/models/ipc-channels.ts | 9 + apps/desktop/src/autofill/preload.ts | 17 +- .../services/desktop-autotype.service.ts | 184 ++++++++++++------ apps/desktop/src/main.ts | 11 +- 8 files changed, 220 insertions(+), 109 deletions(-) create mode 100644 apps/desktop/src/autofill/models/autotype-config.ts create mode 100644 apps/desktop/src/autofill/models/ipc-channels.ts diff --git a/apps/desktop/src/app/accounts/settings.component.spec.ts b/apps/desktop/src/app/accounts/settings.component.spec.ts index a424f230778..d518ac29aa4 100644 --- a/apps/desktop/src/app/accounts/settings.component.spec.ts +++ b/apps/desktop/src/app/accounts/settings.component.spec.ts @@ -187,7 +187,6 @@ describe("SettingsComponent", () => { i18nService.userSetLocale$ = of("en"); pinServiceAbstraction.isPinSet.mockResolvedValue(false); policyService.policiesByType$.mockReturnValue(of([null])); - desktopAutotypeService.resolvedAutotypeEnabled$ = of(false); desktopAutotypeService.autotypeEnabledUserSetting$ = of(false); desktopAutotypeService.autotypeKeyboardShortcut$ = of(["Control", "Shift", "B"]); billingAccountProfileStateService.hasPremiumFromAnySource$.mockReturnValue(of(false)); diff --git a/apps/desktop/src/app/services/services.module.ts b/apps/desktop/src/app/services/services.module.ts index 59021a556e4..874a4d851da 100644 --- a/apps/desktop/src/app/services/services.module.ts +++ b/apps/desktop/src/app/services/services.module.ts @@ -489,6 +489,7 @@ const safeProviders: SafeProvider[] = [ PlatformUtilsServiceAbstraction, BillingAccountProfileStateService, DesktopAutotypeDefaultSettingPolicy, + LogService, ], }), safeProvider({ diff --git a/apps/desktop/src/autofill/main/main-desktop-autotype.service.ts b/apps/desktop/src/autofill/main/main-desktop-autotype.service.ts index 4dcf05a4220..ea2bdd1fe12 100644 --- a/apps/desktop/src/autofill/main/main-desktop-autotype.service.ts +++ b/apps/desktop/src/autofill/main/main-desktop-autotype.service.ts @@ -5,51 +5,46 @@ import { LogService } from "@bitwarden/logging"; import { WindowMain } from "../../main/window.main"; import { stringIsNotUndefinedNullAndEmpty } from "../../utils"; +import { AutotypeConfig } from "../models/autotype-config"; import { AutotypeMatchError } from "../models/autotype-errors"; import { AutotypeVaultData } from "../models/autotype-vault-data"; +import { AUTOTYPE_IPC_CHANNELS } from "../models/ipc-channels"; import { AutotypeKeyboardShortcut } from "../models/main-autotype-keyboard-shortcut"; export class MainDesktopAutotypeService { - autotypeKeyboardShortcut: AutotypeKeyboardShortcut; + private autotypeKeyboardShortcut: AutotypeKeyboardShortcut; constructor( private logService: LogService, private windowMain: WindowMain, ) { this.autotypeKeyboardShortcut = new AutotypeKeyboardShortcut(); + + this.registerIpcListeners(); } - init() { - ipcMain.on("autofill.configureAutotype", (event, data) => { - if (data.enabled) { - const newKeyboardShortcut = new AutotypeKeyboardShortcut(); - const newKeyboardShortcutIsValid = newKeyboardShortcut.set(data.keyboardShortcut); - - if (newKeyboardShortcutIsValid) { - this.disableAutotype(); - this.autotypeKeyboardShortcut = newKeyboardShortcut; - this.enableAutotype(); - } else { - this.logService.error( - "Attempting to configure autotype but the shortcut given is invalid.", - ); - } + registerIpcListeners() { + ipcMain.on(AUTOTYPE_IPC_CHANNELS.TOGGLE, (_event, enable: boolean) => { + if (enable) { + this.enableAutotype(); } else { this.disableAutotype(); - - // Deregister the incoming keyboard shortcut if needed - const setCorrectly = this.autotypeKeyboardShortcut.set(data.keyboardShortcut); - if ( - setCorrectly && - globalShortcut.isRegistered(this.autotypeKeyboardShortcut.getElectronFormat()) - ) { - globalShortcut.unregister(this.autotypeKeyboardShortcut.getElectronFormat()); - this.logService.info("Autotype disabled."); - } } }); - ipcMain.on("autofill.completeAutotypeRequest", (_event, vaultData: AutotypeVaultData) => { + ipcMain.on(AUTOTYPE_IPC_CHANNELS.CONFIGURE, (_event, config: AutotypeConfig) => { + const newKeyboardShortcut = new AutotypeKeyboardShortcut(); + const newKeyboardShortcutIsValid = newKeyboardShortcut.set(config.keyboardShortcut); + + if (!newKeyboardShortcutIsValid) { + this.logService.error("Configure autotype failed: the keyboard shortcut is invalid."); + return; + } + + this.setKeyboardShortcut(newKeyboardShortcut); + }); + + ipcMain.on(AUTOTYPE_IPC_CHANNELS.EXECUTE, (_event, vaultData: AutotypeVaultData) => { if ( stringIsNotUndefinedNullAndEmpty(vaultData.username) && stringIsNotUndefinedNullAndEmpty(vaultData.password) @@ -67,30 +62,74 @@ export class MainDesktopAutotypeService { }); } + // Deregister the keyboard shortcut if registered. disableAutotype() { - // Deregister the current keyboard shortcut if needed const formattedKeyboardShortcut = this.autotypeKeyboardShortcut.getElectronFormat(); + if (globalShortcut.isRegistered(formattedKeyboardShortcut)) { globalShortcut.unregister(formattedKeyboardShortcut); - this.logService.info("Autotype disabled."); + this.logService.debug("Autotype disabled."); + } else { + this.logService.debug("Autotype is not registered, implicitly disabled."); } } + dispose() { + ipcMain.removeAllListeners(AUTOTYPE_IPC_CHANNELS.TOGGLE); + ipcMain.removeAllListeners(AUTOTYPE_IPC_CHANNELS.CONFIGURE); + ipcMain.removeAllListeners(AUTOTYPE_IPC_CHANNELS.EXECUTE); + + // Also unregister the global shortcut + this.disableAutotype(); + } + + // Register the current keyboard shortcut if not already registered. private enableAutotype() { + const formattedKeyboardShortcut = this.autotypeKeyboardShortcut.getElectronFormat(); + if (globalShortcut.isRegistered(formattedKeyboardShortcut)) { + this.logService.debug( + "Autotype is already enabled with this keyboard shortcut: " + formattedKeyboardShortcut, + ); + return; + } + const result = globalShortcut.register( this.autotypeKeyboardShortcut.getElectronFormat(), () => { const windowTitle = autotype.getForegroundWindowTitle(); - this.windowMain.win.webContents.send("autofill.listenAutotypeRequest", { + this.windowMain.win.webContents.send(AUTOTYPE_IPC_CHANNELS.LISTEN, { windowTitle, }); }, ); result - ? this.logService.info("Autotype enabled.") - : this.logService.info("Enabling autotype failed."); + ? this.logService.debug("Autotype enabled.") + : this.logService.error("Failed to enable Autotype."); + } + + // Set the keyboard shortcut if it differs from the present one. If + // the keyboard shortcut is set, de-register the old shortcut first. + private setKeyboardShortcut(keyboardShortcut: AutotypeKeyboardShortcut) { + if ( + keyboardShortcut.getElectronFormat() !== this.autotypeKeyboardShortcut.getElectronFormat() + ) { + const registered = globalShortcut.isRegistered( + this.autotypeKeyboardShortcut.getElectronFormat(), + ); + if (registered) { + this.disableAutotype(); + } + this.autotypeKeyboardShortcut = keyboardShortcut; + if (registered) { + this.enableAutotype(); + } + } else { + this.logService.debug( + "setKeyboardShortcut() called but shortcut is not different from current.", + ); + } } private doAutotype(vaultData: AutotypeVaultData, keyboardShortcut: string[]) { diff --git a/apps/desktop/src/autofill/models/autotype-config.ts b/apps/desktop/src/autofill/models/autotype-config.ts new file mode 100644 index 00000000000..dda39023c8c --- /dev/null +++ b/apps/desktop/src/autofill/models/autotype-config.ts @@ -0,0 +1,3 @@ +export interface AutotypeConfig { + keyboardShortcut: string[]; +} diff --git a/apps/desktop/src/autofill/models/ipc-channels.ts b/apps/desktop/src/autofill/models/ipc-channels.ts new file mode 100644 index 00000000000..5fea2daf0cf --- /dev/null +++ b/apps/desktop/src/autofill/models/ipc-channels.ts @@ -0,0 +1,9 @@ +export const AUTOTYPE_IPC_CHANNELS = { + INIT: "autofill.initAutotype", + INITIALIZED: "autofill.autotypeIsInitialized", + TOGGLE: "autofill.toggleAutotype", + CONFIGURE: "autofill.configureAutotype", + LISTEN: "autofill.listenAutotypeRequest", + EXECUTION_ERROR: "autofill.autotypeExecutionError", + EXECUTE: "autofill.executeAutotype", +} as const; diff --git a/apps/desktop/src/autofill/preload.ts b/apps/desktop/src/autofill/preload.ts index 6a7a8459ea9..f4f5552944c 100644 --- a/apps/desktop/src/autofill/preload.ts +++ b/apps/desktop/src/autofill/preload.ts @@ -5,8 +5,10 @@ import type { autofill } from "@bitwarden/desktop-napi"; import { Command } from "../platform/main/autofill/command"; import { RunCommandParams, RunCommandResult } from "../platform/main/autofill/native-autofill.main"; +import { AutotypeConfig } from "./models/autotype-config"; import { AutotypeMatchError } from "./models/autotype-errors"; import { AutotypeVaultData } from "./models/autotype-vault-data"; +import { AUTOTYPE_IPC_CHANNELS } from "./models/ipc-channels"; export default { runCommand: (params: RunCommandParams): Promise> => @@ -132,7 +134,6 @@ export default { }, ); }, - listenNativeStatus: ( fn: (clientId: number, sequenceNumber: number, status: { key: string; value: string }) => void, ) => { @@ -151,8 +152,11 @@ export default { }, ); }, - configureAutotype: (enabled: boolean, keyboardShortcut: string[]) => { - ipcRenderer.send("autofill.configureAutotype", { enabled, keyboardShortcut }); + configureAutotype: (config: AutotypeConfig) => { + ipcRenderer.send(AUTOTYPE_IPC_CHANNELS.CONFIGURE, config); + }, + toggleAutotype: (enable: boolean) => { + ipcRenderer.send(AUTOTYPE_IPC_CHANNELS.TOGGLE, enable); }, listenAutotypeRequest: ( fn: ( @@ -161,7 +165,7 @@ export default { ) => void, ) => { ipcRenderer.on( - "autofill.listenAutotypeRequest", + AUTOTYPE_IPC_CHANNELS.LISTEN, ( _event, data: { @@ -176,11 +180,12 @@ export default { windowTitle, errorMessage: error.message, }; - ipcRenderer.send("autofill.completeAutotypeError", matchError); + ipcRenderer.send(AUTOTYPE_IPC_CHANNELS.EXECUTION_ERROR, matchError); return; } + if (vaultData !== null) { - ipcRenderer.send("autofill.completeAutotypeRequest", vaultData); + ipcRenderer.send(AUTOTYPE_IPC_CHANNELS.EXECUTE, vaultData); } }); }, diff --git a/apps/desktop/src/autofill/services/desktop-autotype.service.ts b/apps/desktop/src/autofill/services/desktop-autotype.service.ts index 7ee889e7b81..46fec662d7a 100644 --- a/apps/desktop/src/autofill/services/desktop-autotype.service.ts +++ b/apps/desktop/src/autofill/services/desktop-autotype.service.ts @@ -1,4 +1,17 @@ -import { combineLatest, filter, firstValueFrom, map, Observable, of, switchMap } from "rxjs"; +import { Injectable, OnDestroy } from "@angular/core"; +import { + combineLatest, + concatMap, + distinctUntilChanged, + filter, + firstValueFrom, + map, + Observable, + of, + Subject, + switchMap, + takeUntil, +} from "rxjs"; import { Account, AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; @@ -15,8 +28,10 @@ import { } from "@bitwarden/common/platform/state"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; +import { LogService } from "@bitwarden/logging"; import { UserId } from "@bitwarden/user-core"; +import { AutotypeConfig } from "../models/autotype-config"; import { AutotypeVaultData } from "../models/autotype-vault-data"; import { DesktopAutotypeDefaultSettingPolicy } from "./desktop-autotype-policy.service"; @@ -44,16 +59,26 @@ export const AUTOTYPE_KEYBOARD_SHORTCUT = new KeyDefinition( { deserializer: (b) => b }, ); -export class DesktopAutotypeService { +@Injectable({ + providedIn: "root", +}) +export class DesktopAutotypeService implements OnDestroy { private readonly autotypeEnabledState = this.globalStateProvider.get(AUTOTYPE_ENABLED); private readonly autotypeKeyboardShortcut = this.globalStateProvider.get( AUTOTYPE_KEYBOARD_SHORTCUT, ); - autotypeEnabledUserSetting$: Observable = of(false); - resolvedAutotypeEnabled$: Observable = of(false); + // if the user's account is Premium + private readonly isPremiumAccount$: Observable; + + // The enabled/disabled state from the user settings menu + autotypeEnabledUserSetting$: Observable; + + // The keyboard shortcut from the user settings menu autotypeKeyboardShortcut$: Observable = of(defaultWindowsAutotypeKeyboardShortcut); + private destroy$ = new Subject(); + constructor( private accountService: AccountService, private authService: AuthService, @@ -63,76 +88,110 @@ export class DesktopAutotypeService { private platformUtilsService: PlatformUtilsService, private billingAccountProfileStateService: BillingAccountProfileStateService, private desktopAutotypePolicy: DesktopAutotypeDefaultSettingPolicy, + private logService: LogService, ) { + this.autotypeEnabledUserSetting$ = this.autotypeEnabledState.state$.pipe( + map((enabled) => enabled ?? false), + distinctUntilChanged(), // Only emit when the boolean result changes + takeUntil(this.destroy$), + ); + + this.isPremiumAccount$ = this.accountService.activeAccount$.pipe( + filter((account): account is Account => !!account), + switchMap((account) => + this.billingAccountProfileStateService.hasPremiumFromAnySource$(account.id), + ), + distinctUntilChanged(), // Only emit when the boolean result changes + takeUntil(this.destroy$), + ); + + this.autotypeKeyboardShortcut$ = this.autotypeKeyboardShortcut.state$.pipe( + map((shortcut) => shortcut ?? defaultWindowsAutotypeKeyboardShortcut), + takeUntil(this.destroy$), + ); + } + + async init() { + // Currently Autotype is only supported for Windows + if (this.platformUtilsService.getDevice() !== DeviceType.WindowsDesktop) { + return; + } + ipc.autofill.listenAutotypeRequest(async (windowTitle, callback) => { const possibleCiphers = await this.matchCiphersToWindowTitle(windowTitle); const firstCipher = possibleCiphers?.at(0); const [error, vaultData] = getAutotypeVaultData(firstCipher); callback(error, vaultData); }); - } - async init() { - this.autotypeEnabledUserSetting$ = this.autotypeEnabledState.state$; - this.autotypeKeyboardShortcut$ = this.autotypeKeyboardShortcut.state$.pipe( - map((shortcut) => shortcut ?? defaultWindowsAutotypeKeyboardShortcut), - ); - - // Currently Autotype is only supported for Windows - if (this.platformUtilsService.getDevice() === DeviceType.WindowsDesktop) { - // If `autotypeDefaultPolicy` is `true` for a user's organization, and the - // user has never changed their local autotype setting (`autotypeEnabledState`), - // we set their local setting to `true` (once the local user setting is changed - // by this policy or the user themselves, the default policy should - // never change the user setting again). - combineLatest([ - this.autotypeEnabledState.state$, - this.desktopAutotypePolicy.autotypeDefaultSetting$, - ]) - .pipe( - map(async ([autotypeEnabledState, autotypeDefaultPolicy]) => { + // If `autotypeDefaultPolicy` is `true` for a user's organization, and the + // user has never changed their local autotype setting (`autotypeEnabledState`), + // we set their local setting to `true` (once the local user setting is changed + // by this policy or the user themselves, the default policy should + // never change the user setting again). + combineLatest([ + this.autotypeEnabledState.state$, + this.desktopAutotypePolicy.autotypeDefaultSetting$, + ]) + .pipe( + concatMap(async ([autotypeEnabledState, autotypeDefaultPolicy]) => { + try { if (autotypeDefaultPolicy === true && autotypeEnabledState === null) { await this.setAutotypeEnabledState(true); } - }), - ) - .subscribe(); + } catch { + this.logService.error("Failed to set Autotype enabled state."); + } + }), + takeUntil(this.destroy$), + ) + .subscribe(); - // autotypeEnabledUserSetting$ publicly represents the value the - // user has set for autotyeEnabled in their local settings. - this.autotypeEnabledUserSetting$ = this.autotypeEnabledState.state$; + // listen for changes in keyboard shortcut settings + this.autotypeKeyboardShortcut$ + .pipe( + concatMap(async (keyboardShortcut) => { + const config: AutotypeConfig = { + keyboardShortcut, + }; + ipc.autofill.configureAutotype(config); + }), + takeUntil(this.destroy$), + ) + .subscribe(); - // resolvedAutotypeEnabled$ represents the final determination if the Autotype - // feature should be on or off. - this.resolvedAutotypeEnabled$ = combineLatest([ - this.autotypeEnabledState.state$, - this.configService.getFeatureFlag$(FeatureFlag.WindowsDesktopAutotype), - this.accountService.activeAccount$.pipe( - map((activeAccount) => activeAccount?.id), - switchMap((userId) => this.authService.authStatusFor$(userId)), - ), - this.accountService.activeAccount$.pipe( - filter((account): account is Account => !!account), - switchMap((account) => - this.billingAccountProfileStateService.hasPremiumFromAnySource$(account.id), - ), - ), - ]).pipe( - map( - ([autotypeEnabled, windowsDesktopAutotypeFeatureFlag, authStatus, hasPremium]) => - autotypeEnabled && - windowsDesktopAutotypeFeatureFlag && - authStatus == AuthenticationStatus.Unlocked && - hasPremium, - ), - ); + this.autotypeFeatureEnabled$ + .pipe( + concatMap(async (enabled) => { + ipc.autofill.toggleAutotype(enabled); + }), + takeUntil(this.destroy$), + ) + .subscribe(); + } - combineLatest([this.resolvedAutotypeEnabled$, this.autotypeKeyboardShortcut$]).subscribe( - ([resolvedAutotypeEnabled, autotypeKeyboardShortcut]) => { - ipc.autofill.configureAutotype(resolvedAutotypeEnabled, autotypeKeyboardShortcut); - }, - ); - } + // Returns an observable that represents whether autotype is enabled for the current user. + private get autotypeFeatureEnabled$(): Observable { + return combineLatest([ + // if the user has enabled the setting + this.autotypeEnabledUserSetting$, + // if the feature flag is set + this.configService.getFeatureFlag$(FeatureFlag.WindowsDesktopAutotype), + // if there is an active account with an unlocked vault + this.authService.activeAccountStatus$, + // if the active user's account is Premium + this.isPremiumAccount$, + ]).pipe( + map( + ([settingsEnabled, ffEnabled, authStatus, isPremiumAcct]) => + settingsEnabled && + ffEnabled && + authStatus === AuthenticationStatus.Unlocked && + isPremiumAcct, + ), + distinctUntilChanged(), // Only emit when the boolean result changes + takeUntil(this.destroy$), + ); } async setAutotypeEnabledState(enabled: boolean): Promise { @@ -176,6 +235,11 @@ export class DesktopAutotypeService { return possibleCiphers; } + + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } } /** diff --git a/apps/desktop/src/main.ts b/apps/desktop/src/main.ts index fbb83a1bf56..4734288f3c1 100644 --- a/apps/desktop/src/main.ts +++ b/apps/desktop/src/main.ts @@ -311,17 +311,8 @@ export class Main { this.windowMain, ); - app - .whenReady() - .then(() => { - this.mainDesktopAutotypeService.init(); - }) - .catch((reason) => { - this.logService.error("Error initializing Autotype.", reason); - }); - app.on("will-quit", () => { - this.mainDesktopAutotypeService.disableAutotype(); + this.mainDesktopAutotypeService.dispose(); }); } From 1c44e2a4c63f54081385b22eb848f3a430998a8c Mon Sep 17 00:00:00 2001 From: Todd Martin <106564991+trmartin4@users.noreply.github.com> Date: Tue, 16 Dec 2025 16:07:16 -0500 Subject: [PATCH 23/67] chore(deps): Improve Platform dependency inflow (#17981) * Send Platform minor updates to dashboard. * Assign Platform as lock file owners. --- .github/renovate.json5 | 277 ++++++++++++++++++++++++++++------------- 1 file changed, 189 insertions(+), 88 deletions(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index ca57ccf4f86..acd181310d6 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -3,6 +3,7 @@ extends: ["github>bitwarden/renovate-config"], // Extends our default configuration for pinned dependencies enabledManagers: ["cargo", "github-actions", "npm"], packageRules: [ + // ==================== Repo-Wide Update Behavior Rules ==================== { // Group all Github Action minor updates together to reduce PR noise. groupName: "Minor github-actions updates", @@ -16,13 +17,6 @@ matchDepNames: ["rust"], commitMessageTopic: "Rust", }, - { - // By default, we send patch updates to the Dependency Dashboard and do not generate a PR. - // We want to generate PRs for a select number of dependencies to ensure we stay up to date on these. - matchPackageNames: ["browserslist", "electron", "rxjs", "typescript", "webpack", "zone.js"], - matchUpdateTypes: ["patch"], - dependencyDashboardApproval: false, - }, { // Disable major and minor updates for TypeScript and Zone.js because they are managed by Angular. matchPackageNames: ["typescript", "zone.js"], @@ -44,6 +38,8 @@ description: "Manually updated using ng update", enabled: false, }, + + // ==================== Team Ownership Rules ==================== { matchPackageNames: ["buffer", "bufferutil", "core-js", "process", "url", "util"], description: "Admin Console owned dependencies", @@ -79,28 +75,6 @@ commitMessagePrefix: "[deps] Architecture:", reviewers: ["team:dept-architecture"], }, - { - matchPackageNames: [ - "@angular-eslint/schematics", - "@eslint/compat", - "@typescript-eslint/rule-tester", - "@typescript-eslint/utils", - "angular-eslint", - "eslint-config-prettier", - "eslint-import-resolver-typescript", - "eslint-plugin-import", - "eslint-plugin-rxjs-angular", - "eslint-plugin-rxjs", - "eslint-plugin-storybook", - "eslint-plugin-tailwindcss", - "eslint", - "husky", - "lint-staged", - "typescript-eslint", - ], - groupName: "Minor and patch linting updates", - matchUpdateTypes: ["minor", "patch"], - }, { matchPackageNames: [ "@emotion/css", @@ -241,60 +215,10 @@ reviewers: ["team:team-platform-dev"], }, { - // We need to group all napi-related packages together to avoid build errors caused by version incompatibilities. - groupName: "napi", - matchPackageNames: ["napi", "napi-build", "napi-derive"], - }, - { - // We need to group all macOS/iOS binding-related packages together to avoid build errors caused by version incompatibilities. - groupName: "macOS/iOS bindings", - matchPackageNames: ["core-foundation", "security-framework", "security-framework-sys"], - }, - { - // We need to group all zbus-related packages together to avoid build errors caused by version incompatibilities. - groupName: "zbus", - matchPackageNames: ["zbus", "zbus_polkit"], - }, - { - // We need to group all windows-related packages together to avoid build errors caused by version incompatibilities. - groupName: "windows", - matchPackageNames: ["windows", "windows-core", "windows-future", "windows-registry"], - }, - { - // We need to group all tokio-related packages together to avoid build errors caused by version incompatibilities. - groupName: "tokio", - matchPackageNames: ["bytes", "tokio", "tokio-util"], - }, - { - // We group all webpack build-related minor and patch updates together to reduce PR noise. - // We include patch updates here because we want PRs for webpack patch updates and it's in this group. - matchPackageNames: [ - "@babel/core", - "@babel/preset-env", - "babel-loader", - "base64-loader", - "browserslist", - "copy-webpack-plugin", - "css-loader", - "html-loader", - "html-webpack-injector", - "html-webpack-plugin", - "mini-css-extract-plugin", - "postcss-loader", - "postcss", - "sass-loader", - "sass", - "style-loader", - "ts-loader", - "tsconfig-paths-webpack-plugin", - "webpack-cli", - "webpack-dev-server", - "webpack-node-externals", - "webpack", - ], - description: "webpack-related build dependencies", - groupName: "Minor and patch webpack updates", - matchUpdateTypes: ["minor", "patch"], + matchUpdateTypes: ["lockFileMaintenance"], + description: "Platform owns lock file maintenance", + commitMessagePrefix: "[deps] Platform:", + reviewers: ["team:team-platform-dev"], }, { matchPackageNames: [ @@ -353,11 +277,6 @@ commitMessagePrefix: "[deps] SM:", reviewers: ["team:team-secrets-manager-dev"], }, - { - // We need to update several Jest-related packages together, for version compatibility. - groupName: "jest", - matchPackageNames: ["@types/jest", "jest", "ts-jest", "jest-preset-angular"], - }, { matchPackageNames: [ "@microsoft/signalr-protocol-msgpack", @@ -428,6 +347,188 @@ commitMessagePrefix: "[deps] KM:", reviewers: ["team:team-key-management-dev"], }, + + // ==================== Grouping Rules ==================== + // These come after any specific team assignment rules to ensure + // that grouping is not overridden by subsequent rule definitions. + { + matchPackageNames: [ + "@angular-eslint/schematics", + "@eslint/compat", + "@typescript-eslint/rule-tester", + "@typescript-eslint/utils", + "angular-eslint", + "eslint-config-prettier", + "eslint-import-resolver-typescript", + "eslint-plugin-import", + "eslint-plugin-rxjs-angular", + "eslint-plugin-rxjs", + "eslint-plugin-storybook", + "eslint-plugin-tailwindcss", + "eslint", + "husky", + "lint-staged", + "typescript-eslint", + ], + groupName: "Minor and patch linting updates", + matchUpdateTypes: ["minor", "patch"], + }, + { + // We need to group all napi-related packages together to avoid build errors caused by version incompatibilities. + groupName: "napi", + matchPackageNames: ["napi", "napi-build", "napi-derive"], + }, + { + // We need to group all macOS/iOS binding-related packages together to avoid build errors caused by version incompatibilities. + groupName: "macOS/iOS bindings", + matchPackageNames: ["core-foundation", "security-framework", "security-framework-sys"], + }, + { + // We need to group all zbus-related packages together to avoid build errors caused by version incompatibilities. + groupName: "zbus", + matchPackageNames: ["zbus", "zbus_polkit"], + }, + { + // We need to group all windows-related packages together to avoid build errors caused by version incompatibilities. + groupName: "windows", + matchPackageNames: ["windows", "windows-core", "windows-future", "windows-registry"], + }, + { + // We need to group all tokio-related packages together to avoid build errors caused by version incompatibilities. + groupName: "tokio", + matchPackageNames: ["bytes", "tokio", "tokio-util"], + }, + { + // We group all webpack build-related minor and patch updates together to reduce PR noise. + // We include patch updates here because we want PRs for webpack patch updates and it's in this group. + matchPackageNames: [ + "@babel/core", + "@babel/preset-env", + "babel-loader", + "base64-loader", + "browserslist", + "copy-webpack-plugin", + "css-loader", + "html-loader", + "html-webpack-injector", + "html-webpack-plugin", + "mini-css-extract-plugin", + "postcss-loader", + "postcss", + "sass-loader", + "sass", + "style-loader", + "ts-loader", + "tsconfig-paths-webpack-plugin", + "webpack-cli", + "webpack-dev-server", + "webpack-node-externals", + "webpack", + ], + description: "webpack-related build dependencies", + groupName: "Minor and patch webpack updates", + matchUpdateTypes: ["minor", "patch"], + }, + { + // We need to update several Jest-related packages together, for version compatibility. + groupName: "jest", + matchPackageNames: ["@types/jest", "jest", "ts-jest", "jest-preset-angular"], + }, + + // ==================== Dashboard Rules ==================== + { + // For the packages below, we have decided we will only be creating PRs + // for major updates, and sending minor (as well as patch) to the dashboard. + // This rule comes AFTER grouping rules so that groups are respected while still + // sending minor/patch updates to the dependency dashboard for approval. + matchPackageNames: [ + "anyhow", + "arboard", + "babel-loader", + "base64-loader", + "base64", + "bindgen", + "byteorder", + "bytes", + "core-foundation", + "copy-webpack-plugin", + "css-loader", + "dirs", + "electron-builder", + "electron-log", + "electron-reload", + "electron-store", + "electron-updater", + "embed_plist", + "futures", + "hex", + "homedir", + "html-loader", + "html-webpack-injector", + "html-webpack-plugin", + "interprocess", + "json5", + "keytar", + "libc", + "lowdb", + "mini-css-extract-plugin", + "napi", + "napi-build", + "napi-derive", + "node-ipc", + "nx", + "oo7", + "oslog", + "pin-project", + "pkg", + "postcss", + "postcss-loader", + "rand", + "sass", + "sass-loader", + "scopeguard", + "security-framework", + "security-framework-sys", + "semver", + "serde", + "serde_json", + "simplelog", + "style-loader", + "sysinfo", + "tokio", + "tokio-util", + "tracing", + "tracing-subscriber", + "ts-node", + "ts-loader", + "tsconfig-paths-webpack-plugin", + "type-fest", + "typenum", + "typescript-strict-plugin", + "uniffi", + "webpack-cli", + "webpack-dev-server", + "webpack-node-externals", + "widestring", + "windows", + "windows-core", + "windows-future", + "windows-registry", + "zbus", + "zbus_polkit", + ], + matchUpdateTypes: ["minor", "patch"], + dependencyDashboardApproval: true, + }, + { + // By default, we send patch updates to the Dependency Dashboard and do not generate a PR. + // We want to generate PRs for a select number of dependencies to ensure we stay up to date on these. + matchPackageNames: ["browserslist", "electron", "rxjs", "typescript", "webpack", "zone.js"], + matchUpdateTypes: ["patch"], + dependencyDashboardApproval: false, + }, + + // ==================== Special Version Constraints ==================== { // Any versions of lowdb above 1.0.0 are not compatible with CommonJS. matchPackageNames: ["lowdb"], From 3049cfad7dfa1f6c7975ff47d7f4d08822eadf18 Mon Sep 17 00:00:00 2001 From: Nick Krantz <125900171+nick-livefront@users.noreply.github.com> Date: Tue, 16 Dec 2025 15:47:58 -0600 Subject: [PATCH 24/67] [PM-29103] Premium Prompt for Archive (#17800) * prompt for premium using badge workflow rather than premium page * update test * address claude feedback --- .../settings/vault-settings-v2.component.html | 9 +- .../vault-settings-v2.component.spec.ts | 199 ++++++++++++++++++ .../settings/vault-settings-v2.component.ts | 18 +- 3 files changed, 223 insertions(+), 3 deletions(-) create mode 100644 apps/browser/src/vault/popup/settings/vault-settings-v2.component.spec.ts diff --git a/apps/browser/src/vault/popup/settings/vault-settings-v2.component.html b/apps/browser/src/vault/popup/settings/vault-settings-v2.component.html index c042af8cbac..407015d3a06 100644 --- a/apps/browser/src/vault/popup/settings/vault-settings-v2.component.html +++ b/apps/browser/src/vault/popup/settings/vault-settings-v2.component.html @@ -37,14 +37,19 @@ @if (showArchiveItem()) { @if (userCanArchive()) { - + {{ "archiveNoun" | i18n }} } @else { - + {{ "archiveNoun" | i18n }} @if (!userHasArchivedItems()) { diff --git a/apps/browser/src/vault/popup/settings/vault-settings-v2.component.spec.ts b/apps/browser/src/vault/popup/settings/vault-settings-v2.component.spec.ts new file mode 100644 index 00000000000..fc30a3f8899 --- /dev/null +++ b/apps/browser/src/vault/popup/settings/vault-settings-v2.component.spec.ts @@ -0,0 +1,199 @@ +import { ChangeDetectionStrategy, Component, DebugElement, input } from "@angular/core"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { By } from "@angular/platform-browser"; +import { provideRouter, Router } from "@angular/router"; +import { mock } from "jest-mock-extended"; +import { BehaviorSubject } from "rxjs"; + +import { NudgesService } from "@bitwarden/angular/vault"; +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions/account/billing-account-profile-state.service"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; +import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { CipherArchiveService } from "@bitwarden/common/vault/abstractions/cipher-archive.service"; +import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; +import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; +import { DialogService, ToastService } from "@bitwarden/components"; + +import { PopOutComponent } from "../../../platform/popup/components/pop-out.component"; +import { PopupHeaderComponent } from "../../../platform/popup/layout/popup-header.component"; +import { PopupPageComponent } from "../../../platform/popup/layout/popup-page.component"; + +import { VaultSettingsV2Component } from "./vault-settings-v2.component"; + +@Component({ + selector: "popup-header", + template: ``, + changeDetection: ChangeDetectionStrategy.OnPush, +}) +class MockPopupHeaderComponent { + readonly pageTitle = input(); + readonly showBackButton = input(); +} + +@Component({ + selector: "popup-page", + template: ``, + changeDetection: ChangeDetectionStrategy.OnPush, +}) +class MockPopupPageComponent {} + +@Component({ + selector: "app-pop-out", + template: ``, + changeDetection: ChangeDetectionStrategy.OnPush, +}) +class MockPopOutComponent { + readonly show = input(true); +} + +describe("VaultSettingsV2Component", () => { + let component: VaultSettingsV2Component; + let fixture: ComponentFixture; + let router: Router; + let mockCipherArchiveService: jest.Mocked; + + const mockActiveAccount$ = new BehaviorSubject<{ id: string }>({ + id: "user-id", + }); + const mockUserCanArchive$ = new BehaviorSubject(false); + const mockHasArchiveFlagEnabled$ = new BehaviorSubject(true); + const mockArchivedCiphers$ = new BehaviorSubject([]); + const mockShowNudgeBadge$ = new BehaviorSubject(false); + + const queryByTestId = (testId: string): DebugElement | null => { + return fixture.debugElement.query(By.css(`[data-test-id="${testId}"]`)); + }; + + const setArchiveState = ( + canArchive: boolean, + archivedItems: CipherView[] = [], + flagEnabled = true, + ) => { + mockUserCanArchive$.next(canArchive); + mockArchivedCiphers$.next(archivedItems); + mockHasArchiveFlagEnabled$.next(flagEnabled); + fixture.detectChanges(); + }; + + beforeEach(async () => { + mockCipherArchiveService = mock({ + userCanArchive$: jest.fn().mockReturnValue(mockUserCanArchive$), + hasArchiveFlagEnabled$: jest.fn().mockReturnValue(mockHasArchiveFlagEnabled$), + archivedCiphers$: jest.fn().mockReturnValue(mockArchivedCiphers$), + }); + + await TestBed.configureTestingModule({ + imports: [VaultSettingsV2Component], + providers: [ + provideRouter([ + { path: "archive", component: VaultSettingsV2Component }, + { path: "premium", component: VaultSettingsV2Component }, + ]), + { provide: SyncService, useValue: mock() }, + { provide: ToastService, useValue: mock() }, + { provide: ConfigService, useValue: mock() }, + { provide: DialogService, useValue: mock() }, + { provide: I18nService, useValue: { t: (key: string) => key } }, + { provide: CipherArchiveService, useValue: mockCipherArchiveService }, + { + provide: NudgesService, + useValue: { showNudgeBadge$: jest.fn().mockReturnValue(mockShowNudgeBadge$) }, + }, + + { + provide: BillingAccountProfileStateService, + useValue: mock(), + }, + { + provide: AccountService, + useValue: { activeAccount$: mockActiveAccount$ }, + }, + ], + }) + .overrideComponent(VaultSettingsV2Component, { + remove: { + imports: [PopupHeaderComponent, PopupPageComponent, PopOutComponent], + }, + add: { + imports: [MockPopupHeaderComponent, MockPopupPageComponent, MockPopOutComponent], + }, + }) + .compileComponents(); + + fixture = TestBed.createComponent(VaultSettingsV2Component); + component = fixture.componentInstance; + router = TestBed.inject(Router); + jest.spyOn(router, "navigate"); + }); + + describe("archive link", () => { + it("shows direct archive link when user can archive", () => { + setArchiveState(true); + + const archiveLink = queryByTestId("archive-link"); + + expect(archiveLink.nativeElement.getAttribute("routerLink")).toBe("/archive"); + }); + + it("routes to archive when user has archived items but cannot archive", async () => { + setArchiveState(false, [{ id: "cipher1" } as CipherView]); + + const premiumArchiveLink = queryByTestId("premium-archive-link"); + + premiumArchiveLink.nativeElement.click(); + await fixture.whenStable(); + + expect(router.navigate).toHaveBeenCalledWith(["/archive"]); + }); + + it("prompts for premium when user cannot archive and has no archived items", async () => { + setArchiveState(false, []); + const badge = component["premiumBadgeComponent"](); + jest.spyOn(badge, "promptForPremium"); + + const premiumArchiveLink = queryByTestId("premium-archive-link"); + + premiumArchiveLink.nativeElement.click(); + await fixture.whenStable(); + + expect(badge.promptForPremium).toHaveBeenCalled(); + }); + }); + + describe("archive visibility", () => { + it("displays archive link when user can archive", () => { + setArchiveState(true); + + const archiveLink = queryByTestId("archive-link"); + + expect(archiveLink).toBeTruthy(); + expect(component["userCanArchive"]()).toBe(true); + }); + + it("hides archive link when feature flag is disabled", () => { + setArchiveState(false, [], false); + + const archiveLink = queryByTestId("archive-link"); + const premiumArchiveLink = queryByTestId("premium-archive-link"); + + expect(archiveLink).toBeNull(); + expect(premiumArchiveLink).toBeNull(); + expect(component["showArchiveItem"]()).toBe(false); + }); + + it("shows premium badge when user has no archived items and cannot archive", () => { + setArchiveState(false, []); + + expect(component["premiumBadgeComponent"]()).toBeTruthy(); + expect(component["userHasArchivedItems"]()).toBe(false); + }); + + it("hides premium badge when user has archived items", () => { + setArchiveState(false, [{ id: "cipher1" } as CipherView]); + + expect(component["premiumBadgeComponent"]()).toBeUndefined(); + expect(component["userHasArchivedItems"]()).toBe(true); + }); + }); +}); diff --git a/apps/browser/src/vault/popup/settings/vault-settings-v2.component.ts b/apps/browser/src/vault/popup/settings/vault-settings-v2.component.ts index e085cb21c2d..c1d90d678cb 100644 --- a/apps/browser/src/vault/popup/settings/vault-settings-v2.component.ts +++ b/apps/browser/src/vault/popup/settings/vault-settings-v2.component.ts @@ -1,5 +1,5 @@ import { CommonModule } from "@angular/common"; -import { Component, OnDestroy, OnInit } from "@angular/core"; +import { Component, OnDestroy, OnInit, viewChild } from "@angular/core"; import { toSignal } from "@angular/core/rxjs-interop"; import { Router, RouterModule } from "@angular/router"; import { firstValueFrom, map, switchMap } from "rxjs"; @@ -42,6 +42,8 @@ import { BrowserPremiumUpgradePromptService } from "../services/browser-premium- ], }) export class VaultSettingsV2Component implements OnInit, OnDestroy { + private readonly premiumBadgeComponent = viewChild(PremiumBadgeComponent); + lastSync = "--"; private userId$ = this.accountService.activeAccount$.pipe(getUserId); @@ -117,4 +119,18 @@ export class VaultSettingsV2Component implements OnInit, OnDestroy { this.lastSync = this.i18nService.t("never"); } } + + /** + * When a user can archive or has previously archived items, route them to + * the archive page. Otherwise, prompt them to upgrade to premium. + */ + async conditionallyRouteToArchive(event: Event) { + event.preventDefault(); + const premiumBadge = this.premiumBadgeComponent(); + if (this.userCanArchive() || this.userHasArchivedItems()) { + await this.router.navigate(["/archive"]); + } else if (premiumBadge) { + await premiumBadge.promptForPremium(event); + } + } } From 06d15e96811f709f285299978424ae537abe4f6a Mon Sep 17 00:00:00 2001 From: Shane Melton Date: Tue, 16 Dec 2025 15:03:48 -0800 Subject: [PATCH 25/67] [PM-27675] Browser item transfer integration (#17918) * [PM-27675] Integrate dialogs into VaultItemTransferService * [PM-27675] Update tests for new dialogs * [PM-27675] Center dialogs and prevent closing with escape or pointer events * [PM-27675] Add transferInProgress$ observable to VaultItemsTransferService * [PM-27675] Hook vault item transfer service into browser vault component * [PM-27675] Move defaultUserCollection$ to collection service * [PM-27675] Cleanup dialog styles * [PM-27675] Introduce readySubject to popup vault component to keep prevent flashing content while item transfer is in progress * [PM-27675] Fix vault-v2 tests --- .../vault-v2/vault-v2.component.html | 2 +- .../vault-v2/vault-v2.component.spec.ts | 18 +- .../components/vault-v2/vault-v2.component.ts | 39 +- .../abstractions/collection.service.ts | 8 + .../default-collection.service.spec.ts | 80 +++- .../services/default-collection.service.ts | 11 + .../vault-items-transfer.service.ts | 5 + .../leave-confirmation-dialog.component.html | 4 +- .../leave-confirmation-dialog.component.ts | 3 + .../transfer-items-dialog.component.html | 2 +- .../transfer-items-dialog.component.ts | 3 + ...fault-vault-items-transfer.service.spec.ts | 342 +++++++++++++----- .../default-vault-items-transfer.service.ts | 84 +++-- 13 files changed, 464 insertions(+), 137 deletions(-) diff --git a/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.html b/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.html index 347c5fe6286..6382b5fee0e 100644 --- a/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.html +++ b/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.html @@ -108,7 +108,7 @@
- + { stop: jest.fn(), } as Partial; + const vaultItemsTransferSvc = { + transferInProgress$: new BehaviorSubject(false), + enforceOrganizationDataOwnership: jest.fn().mockResolvedValue(undefined), + } as Partial; + function getObs(cmp: any, key: string): Observable { return cmp[key] as Observable; } @@ -283,6 +292,9 @@ describe("VaultV2Component", () => { AutofillVaultListItemsComponent, VaultListItemsContainerComponent, ], + providers: [ + { provide: VaultItemsTransferService, useValue: DefaultVaultItemsTransferService }, + ], }, add: { imports: [ @@ -296,6 +308,7 @@ describe("VaultV2Component", () => { AutofillVaultListItemsStubComponent, VaultListItemsContainerStubComponent, ], + providers: [{ provide: VaultItemsTransferService, useValue: vaultItemsTransferSvc }], }, }); @@ -344,6 +357,7 @@ describe("VaultV2Component", () => { it("loading$ is true when items loading or filters missing; false when both ready", () => { const itemsLoading$ = itemsSvc.loading$ as unknown as BehaviorSubject; const allFilters$ = filtersSvc.allFilters$ as unknown as Subject; + const readySubject$ = component["readySubject"] as unknown as BehaviorSubject; const values: boolean[] = []; getObs(component, "loading$").subscribe((v) => values.push(!!v)); @@ -354,6 +368,8 @@ describe("VaultV2Component", () => { itemsLoading$.next(false); + readySubject$.next(true); + expect(values[values.length - 1]).toBe(false); }); diff --git a/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.ts b/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.ts index 63d971081df..30d1d21abfb 100644 --- a/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.ts +++ b/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.ts @@ -16,6 +16,7 @@ import { switchMap, take, tap, + BehaviorSubject, } from "rxjs"; import { PremiumUpgradeDialogComponent } from "@bitwarden/angular/billing/components"; @@ -42,7 +43,11 @@ import { NoItemsModule, TypographyModule, } from "@bitwarden/components"; -import { DecryptionFailureDialogComponent } from "@bitwarden/vault"; +import { + DecryptionFailureDialogComponent, + VaultItemsTransferService, + DefaultVaultItemsTransferService, +} from "@bitwarden/vault"; import { CurrentAccountComponent } from "../../../../auth/popup/account-switching/current-account.component"; import { BrowserApi } from "../../../../platform/browser/browser-api"; @@ -105,6 +110,7 @@ type VaultState = UnionOfValues; VaultFadeInOutSkeletonComponent, VaultFadeInOutComponent, ], + providers: [{ provide: VaultItemsTransferService, useClass: DefaultVaultItemsTransferService }], }) export class VaultV2Component implements OnInit, AfterViewInit, OnDestroy { // FIXME(https://bitwarden.atlassian.net/browse/CL-903): Migrate to Signals @@ -125,7 +131,22 @@ export class VaultV2Component implements OnInit, AfterViewInit, OnDestroy { activeUserId: UserId | null = null; - private loading$ = this.vaultPopupLoadingService.loading$.pipe( + /** + * Subject that indicates whether the vault is ready to render + * and that all initialization tasks have been completed (ngOnInit). + * @private + */ + private readySubject = new BehaviorSubject(false); + + /** + * Indicates whether the vault is loading and not yet ready to be displayed. + * @protected + */ + protected loading$ = combineLatest([ + this.vaultPopupLoadingService.loading$, + this.readySubject.asObservable(), + ]).pipe( + map(([loading, ready]) => loading || !ready), distinctUntilChanged(), tap((loading) => { const key = loading ? "loadingVault" : "vaultLoaded"; @@ -200,14 +221,15 @@ export class VaultV2Component implements OnInit, AfterViewInit, OnDestroy { protected showSkeletonsLoaders$ = combineLatest([ this.loading$, this.searchService.isCipherSearching$, + this.vaultItemsTransferService.transferInProgress$, this.skeletonFeatureFlag$, ]).pipe( - map( - ([loading, cipherSearching, skeletonsEnabled]) => - (loading || cipherSearching) && skeletonsEnabled, - ), + map(([loading, cipherSearching, transferInProgress, skeletonsEnabled]) => { + return (loading || cipherSearching || transferInProgress) && skeletonsEnabled; + }), distinctUntilChanged(), skeletonLoadingDelay(), + shareReplay({ bufferSize: 1, refCount: true }), ); protected newItemItemValues$: Observable = @@ -251,6 +273,7 @@ export class VaultV2Component implements OnInit, AfterViewInit, OnDestroy { private i18nService: I18nService, private configService: ConfigService, private searchService: SearchService, + private vaultItemsTransferService: VaultItemsTransferService, ) { combineLatest([ this.vaultPopupItemsService.emptyVault$, @@ -305,6 +328,10 @@ export class VaultV2Component implements OnInit, AfterViewInit, OnDestroy { cipherIds: ciphers.map((c) => c.id as CipherId), }); }); + + await this.vaultItemsTransferService.enforceOrganizationDataOwnership(this.activeUserId); + + this.readySubject.next(true); } ngOnDestroy() { diff --git a/libs/admin-console/src/common/collections/abstractions/collection.service.ts b/libs/admin-console/src/common/collections/abstractions/collection.service.ts index f879831324d..f0f02ee377e 100644 --- a/libs/admin-console/src/common/collections/abstractions/collection.service.ts +++ b/libs/admin-console/src/common/collections/abstractions/collection.service.ts @@ -9,6 +9,14 @@ import { CollectionData, Collection, CollectionView } from "../models"; export abstract class CollectionService { abstract encryptedCollections$(userId: UserId): Observable; abstract decryptedCollections$(userId: UserId): Observable; + + /** + * Gets the default collection for a user in a given organization, if it exists. + */ + abstract defaultUserCollection$( + userId: UserId, + orgId: OrganizationId, + ): Observable; abstract upsert(collection: CollectionData, userId: UserId): Promise; abstract replace(collections: { [id: string]: CollectionData }, userId: UserId): Promise; /** diff --git a/libs/admin-console/src/common/collections/services/default-collection.service.spec.ts b/libs/admin-console/src/common/collections/services/default-collection.service.spec.ts index ced3b720e3c..2eaaa48594e 100644 --- a/libs/admin-console/src/common/collections/services/default-collection.service.spec.ts +++ b/libs/admin-console/src/common/collections/services/default-collection.service.spec.ts @@ -15,9 +15,10 @@ import { } from "@bitwarden/common/spec"; import { CollectionId, OrganizationId, UserId } from "@bitwarden/common/types/guid"; import { OrgKey } from "@bitwarden/common/types/key"; +import { newGuid } from "@bitwarden/guid"; import { KeyService } from "@bitwarden/key-management"; -import { CollectionData, CollectionView } from "../models"; +import { CollectionData, CollectionTypes, CollectionView } from "../models"; import { DECRYPTED_COLLECTION_DATA_KEY, ENCRYPTED_COLLECTION_DATA_KEY } from "./collection.state"; import { DefaultCollectionService } from "./default-collection.service"; @@ -389,6 +390,83 @@ describe("DefaultCollectionService", () => { }); }); + describe("defaultUserCollection$", () => { + it("returns the default collection when one exists matching the org", async () => { + const orgId = newGuid() as OrganizationId; + const defaultCollection = collectionViewDataFactory(orgId); + defaultCollection.type = CollectionTypes.DefaultUserCollection; + + const regularCollection = collectionViewDataFactory(orgId); + regularCollection.type = CollectionTypes.SharedCollection; + + await setDecryptedState([defaultCollection, regularCollection]); + + const result = await firstValueFrom(collectionService.defaultUserCollection$(userId, orgId)); + + expect(result).toBeDefined(); + expect(result?.id).toBe(defaultCollection.id); + expect(result?.isDefaultCollection).toBe(true); + }); + + it("returns undefined when no default collection exists", async () => { + const orgId = newGuid() as OrganizationId; + const collection1 = collectionViewDataFactory(orgId); + collection1.type = CollectionTypes.SharedCollection; + + const collection2 = collectionViewDataFactory(orgId); + collection2.type = CollectionTypes.SharedCollection; + + await setDecryptedState([collection1, collection2]); + + const result = await firstValueFrom(collectionService.defaultUserCollection$(userId, orgId)); + + expect(result).toBeUndefined(); + }); + + it("returns undefined when default collection exists but for different org", async () => { + const orgA = newGuid() as OrganizationId; + const orgB = newGuid() as OrganizationId; + + const defaultCollectionForOrgA = collectionViewDataFactory(orgA); + defaultCollectionForOrgA.type = CollectionTypes.DefaultUserCollection; + + await setDecryptedState([defaultCollectionForOrgA]); + + const result = await firstValueFrom(collectionService.defaultUserCollection$(userId, orgB)); + + expect(result).toBeUndefined(); + }); + + it("returns undefined when collections array is empty", async () => { + const orgId = newGuid() as OrganizationId; + + await setDecryptedState([]); + + const result = await firstValueFrom(collectionService.defaultUserCollection$(userId, orgId)); + + expect(result).toBeUndefined(); + }); + + it("returns correct collection when multiple orgs have default collections", async () => { + const orgA = newGuid() as OrganizationId; + const orgB = newGuid() as OrganizationId; + + const defaultCollectionForOrgA = collectionViewDataFactory(orgA); + defaultCollectionForOrgA.type = CollectionTypes.DefaultUserCollection; + + const defaultCollectionForOrgB = collectionViewDataFactory(orgB); + defaultCollectionForOrgB.type = CollectionTypes.DefaultUserCollection; + + await setDecryptedState([defaultCollectionForOrgA, defaultCollectionForOrgB]); + + const result = await firstValueFrom(collectionService.defaultUserCollection$(userId, orgB)); + + expect(result).toBeDefined(); + expect(result?.id).toBe(defaultCollectionForOrgB.id); + expect(result?.organizationId).toBe(orgB); + }); + }); + const setEncryptedState = (collectionData: CollectionData[] | null) => stateProvider.setUserState( ENCRYPTED_COLLECTION_DATA_KEY, diff --git a/libs/admin-console/src/common/collections/services/default-collection.service.ts b/libs/admin-console/src/common/collections/services/default-collection.service.ts index 0511b692b38..ccc2e6f0de5 100644 --- a/libs/admin-console/src/common/collections/services/default-collection.service.ts +++ b/libs/admin-console/src/common/collections/services/default-collection.service.ts @@ -87,6 +87,17 @@ export class DefaultCollectionService implements CollectionService { return result$; } + defaultUserCollection$( + userId: UserId, + orgId: OrganizationId, + ): Observable { + return this.decryptedCollections$(userId).pipe( + map((collections) => { + return collections.find((c) => c.isDefaultCollection && c.organizationId === orgId); + }), + ); + } + private initializeDecryptedState(userId: UserId): Observable { return combineLatest([ this.encryptedCollections$(userId), diff --git a/libs/vault/src/abstractions/vault-items-transfer.service.ts b/libs/vault/src/abstractions/vault-items-transfer.service.ts index ced9f71eb83..0fc19cc0e79 100644 --- a/libs/vault/src/abstractions/vault-items-transfer.service.ts +++ b/libs/vault/src/abstractions/vault-items-transfer.service.ts @@ -31,6 +31,11 @@ export type UserMigrationInfo = }; export abstract class VaultItemsTransferService { + /** + * Indicates whether a vault items transfer is currently in progress. + */ + abstract transferInProgress$: Observable; + /** * Gets information about whether the given user requires migration of their vault items * from My Vault to a My Items collection, and whether they are capable of performing that migration. diff --git a/libs/vault/src/components/vault-items-transfer/leave-confirmation-dialog.component.html b/libs/vault/src/components/vault-items-transfer/leave-confirmation-dialog.component.html index f0d644fecff..6d1045e1a86 100644 --- a/libs/vault/src/components/vault-items-transfer/leave-confirmation-dialog.component.html +++ b/libs/vault/src/components/vault-items-transfer/leave-confirmation-dialog.component.html @@ -11,7 +11,7 @@

{{ "leaveConfirmationDialogContentOne" | i18n }}

-

+

{{ "leaveConfirmationDialogContentTwo" | i18n }}

@@ -25,7 +25,7 @@ {{ "goBack" | i18n }} -
+ {{ "howToManageMyVault" | i18n }} diff --git a/libs/vault/src/components/vault-items-transfer/leave-confirmation-dialog.component.ts b/libs/vault/src/components/vault-items-transfer/leave-confirmation-dialog.component.ts index bd32a1ea6dd..af106376a79 100644 --- a/libs/vault/src/components/vault-items-transfer/leave-confirmation-dialog.component.ts +++ b/libs/vault/src/components/vault-items-transfer/leave-confirmation-dialog.component.ts @@ -12,6 +12,7 @@ import { DialogModule, LinkModule, TypographyModule, + CenterPositionStrategy, } from "@bitwarden/components"; export interface LeaveConfirmationDialogParams { @@ -58,6 +59,8 @@ export class LeaveConfirmationDialogComponent { static open(dialogService: DialogService, config: DialogConfig) { return dialogService.open(LeaveConfirmationDialogComponent, { + positionStrategy: new CenterPositionStrategy(), + disableClose: true, ...config, }); } diff --git a/libs/vault/src/components/vault-items-transfer/transfer-items-dialog.component.html b/libs/vault/src/components/vault-items-transfer/transfer-items-dialog.component.html index 0b77d4ba7d8..3cf626baaf7 100644 --- a/libs/vault/src/components/vault-items-transfer/transfer-items-dialog.component.html +++ b/libs/vault/src/components/vault-items-transfer/transfer-items-dialog.component.html @@ -14,7 +14,7 @@ {{ "declineAndLeave" | i18n }} - + {{ "whyAmISeeingThis" | i18n }} diff --git a/libs/vault/src/components/vault-items-transfer/transfer-items-dialog.component.ts b/libs/vault/src/components/vault-items-transfer/transfer-items-dialog.component.ts index f28ad2ab3ec..619181f37fc 100644 --- a/libs/vault/src/components/vault-items-transfer/transfer-items-dialog.component.ts +++ b/libs/vault/src/components/vault-items-transfer/transfer-items-dialog.component.ts @@ -12,6 +12,7 @@ import { DialogModule, LinkModule, TypographyModule, + CenterPositionStrategy, } from "@bitwarden/components"; export interface TransferItemsDialogParams { @@ -58,6 +59,8 @@ export class TransferItemsDialogComponent { static open(dialogService: DialogService, config: DialogConfig) { return dialogService.open(TransferItemsDialogComponent, { + positionStrategy: new CenterPositionStrategy(), + disableClose: true, ...config, }); } diff --git a/libs/vault/src/services/default-vault-items-transfer.service.spec.ts b/libs/vault/src/services/default-vault-items-transfer.service.spec.ts index d85fe2ffd43..d78cf95ebf2 100644 --- a/libs/vault/src/services/default-vault-items-transfer.service.spec.ts +++ b/libs/vault/src/services/default-vault-items-transfer.service.spec.ts @@ -1,5 +1,5 @@ import { mock, MockProxy } from "jest-mock-extended"; -import { firstValueFrom, of } from "rxjs"; +import { firstValueFrom, of, Subject } from "rxjs"; // eslint-disable-next-line no-restricted-imports import { CollectionService, CollectionView } from "@bitwarden/admin-console/common"; @@ -14,14 +14,20 @@ import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.servic import { OrganizationId, CollectionId } from "@bitwarden/common/types/guid"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; -import { DialogService, ToastService } from "@bitwarden/components"; +import { DialogRef, DialogService, ToastService } from "@bitwarden/components"; import { LogService } from "@bitwarden/logging"; import { UserId } from "@bitwarden/user-core"; +import { + LeaveConfirmationDialogResult, + TransferItemsDialogResult, +} from "../components/vault-items-transfer"; + import { DefaultVaultItemsTransferService } from "./default-vault-items-transfer.service"; describe("DefaultVaultItemsTransferService", () => { let service: DefaultVaultItemsTransferService; + let transferInProgressValues: boolean[]; let mockCipherService: MockProxy; let mockPolicyService: MockProxy; @@ -37,6 +43,25 @@ describe("DefaultVaultItemsTransferService", () => { const organizationId = "org-id" as OrganizationId; const collectionId = "collection-id" as CollectionId; + /** + * Creates a mock DialogRef that emits the provided result when closed + */ + function createMockDialogRef(result: T): DialogRef { + const closed$ = new Subject(); + const dialogRef = { + closed: closed$.asObservable(), + close: jest.fn(), + } as unknown as DialogRef; + + // Emit the result asynchronously to simulate dialog closing + setTimeout(() => { + closed$.next(result); + closed$.complete(); + }, 0); + + return dialogRef; + } + beforeEach(() => { mockCipherService = mock(); mockPolicyService = mock(); @@ -49,6 +74,7 @@ describe("DefaultVaultItemsTransferService", () => { mockConfigService = mock(); mockI18nService.t.mockImplementation((key) => key); + transferInProgressValues = []; service = new DefaultVaultItemsTransferService( mockCipherService, @@ -69,12 +95,12 @@ describe("DefaultVaultItemsTransferService", () => { policies?: Policy[]; organizations?: Organization[]; ciphers?: CipherView[]; - collections?: CollectionView[]; + defaultCollection?: CollectionView; }): void { mockPolicyService.policiesByType$.mockReturnValue(of(options.policies ?? [])); mockOrganizationService.organizations$.mockReturnValue(of(options.organizations ?? [])); mockCipherService.cipherViews$.mockReturnValue(of(options.ciphers ?? [])); - mockCollectionService.decryptedCollections$.mockReturnValue(of(options.collections ?? [])); + mockCollectionService.defaultUserCollection$.mockReturnValue(of(options.defaultCollection)); } it("calls policiesByType$ with correct PolicyType", async () => { @@ -151,39 +177,12 @@ describe("DefaultVaultItemsTransferService", () => { }); it("includes defaultCollectionId when a default collection exists", async () => { - mockCollectionService.decryptedCollections$.mockReturnValue( - of([ - { - id: collectionId, - organizationId: organizationId, - isDefaultCollection: true, - } as CollectionView, - ]), - ); - - const result = await firstValueFrom(service.userMigrationInfo$(userId)); - - expect(result).toEqual({ - requiresMigration: true, - enforcingOrganization: organization, - defaultCollectionId: collectionId, - }); - }); - - it("returns default collection only for the enforcing organization", async () => { - mockCollectionService.decryptedCollections$.mockReturnValue( - of([ - { - id: "wrong-collection-id" as CollectionId, - organizationId: "wrong-org-id" as OrganizationId, - isDefaultCollection: true, - } as CollectionView, - { - id: collectionId, - organizationId: organizationId, - isDefaultCollection: true, - } as CollectionView, - ]), + mockCollectionService.defaultUserCollection$.mockReturnValue( + of({ + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView), ); const result = await firstValueFrom(service.userMigrationInfo$(userId)); @@ -542,13 +541,13 @@ describe("DefaultVaultItemsTransferService", () => { policies?: Policy[]; organizations?: Organization[]; ciphers?: CipherView[]; - collections?: CollectionView[]; + defaultCollection?: CollectionView; }): void { mockConfigService.getFeatureFlag.mockResolvedValue(options.featureEnabled ?? true); mockPolicyService.policiesByType$.mockReturnValue(of(options.policies ?? [])); mockOrganizationService.organizations$.mockReturnValue(of(options.organizations ?? [])); mockCipherService.cipherViews$.mockReturnValue(of(options.ciphers ?? [])); - mockCollectionService.decryptedCollections$.mockReturnValue(of(options.collections ?? [])); + mockCollectionService.defaultUserCollection$.mockReturnValue(of(options.defaultCollection)); } it("does nothing when feature flag is disabled", async () => { @@ -557,13 +556,11 @@ describe("DefaultVaultItemsTransferService", () => { policies: [policy], organizations: [organization], ciphers: [{ id: "cipher-1" } as CipherView], - collections: [ - { - id: collectionId, - organizationId: organizationId, - isDefaultCollection: true, - } as CollectionView, - ], + defaultCollection: { + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView, }); await service.enforceOrganizationDataOwnership(userId); @@ -571,7 +568,7 @@ describe("DefaultVaultItemsTransferService", () => { expect(mockConfigService.getFeatureFlag).toHaveBeenCalledWith( FeatureFlag.MigrateMyVaultToMyItems, ); - expect(mockDialogService.openSimpleDialog).not.toHaveBeenCalled(); + expect(mockDialogService.open).not.toHaveBeenCalled(); expect(mockCipherService.shareManyWithServer).not.toHaveBeenCalled(); }); @@ -580,7 +577,7 @@ describe("DefaultVaultItemsTransferService", () => { await service.enforceOrganizationDataOwnership(userId); - expect(mockDialogService.openSimpleDialog).not.toHaveBeenCalled(); + expect(mockDialogService.open).not.toHaveBeenCalled(); expect(mockCipherService.shareManyWithServer).not.toHaveBeenCalled(); }); @@ -593,7 +590,7 @@ describe("DefaultVaultItemsTransferService", () => { await service.enforceOrganizationDataOwnership(userId); - expect(mockDialogService.openSimpleDialog).not.toHaveBeenCalled(); + expect(mockDialogService.open).not.toHaveBeenCalled(); expect(mockCipherService.shareManyWithServer).not.toHaveBeenCalled(); }); @@ -602,7 +599,6 @@ describe("DefaultVaultItemsTransferService", () => { policies: [policy], organizations: [organization], ciphers: [{ id: "cipher-1" } as CipherView], - collections: [], }); await service.enforceOrganizationDataOwnership(userId); @@ -610,69 +606,48 @@ describe("DefaultVaultItemsTransferService", () => { expect(mockLogService.warning).toHaveBeenCalledWith( "Default collection is missing for user during organization data ownership enforcement", ); - expect(mockDialogService.openSimpleDialog).not.toHaveBeenCalled(); + expect(mockDialogService.open).not.toHaveBeenCalled(); expect(mockCipherService.shareManyWithServer).not.toHaveBeenCalled(); }); - it("shows confirmation dialog when migration is required", async () => { + it("does not transfer items when user declines and confirms leaving", async () => { setupMocksForEnforcementScenario({ policies: [policy], organizations: [organization], ciphers: [{ id: "cipher-1" } as CipherView], - collections: [ - { - id: collectionId, - organizationId: organizationId, - isDefaultCollection: true, - } as CollectionView, - ], + defaultCollection: { + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView, }); - mockDialogService.openSimpleDialog.mockResolvedValue(false); - await service.enforceOrganizationDataOwnership(userId); - - expect(mockDialogService.openSimpleDialog).toHaveBeenCalledWith({ - title: "Requires migration", - content: "Your vault requires migration of personal items to your organization.", - type: "warning", - }); - }); - - it("does not transfer items when user declines confirmation", async () => { - setupMocksForEnforcementScenario({ - policies: [policy], - organizations: [organization], - ciphers: [{ id: "cipher-1" } as CipherView], - collections: [ - { - id: collectionId, - organizationId: organizationId, - isDefaultCollection: true, - } as CollectionView, - ], - }); - mockDialogService.openSimpleDialog.mockResolvedValue(false); + // User declines transfer, then confirms leaving + mockDialogService.open + .mockReturnValueOnce(createMockDialogRef(TransferItemsDialogResult.Declined)) + .mockReturnValueOnce(createMockDialogRef(LeaveConfirmationDialogResult.Confirmed)); await service.enforceOrganizationDataOwnership(userId); expect(mockCipherService.shareManyWithServer).not.toHaveBeenCalled(); }); - it("transfers items and shows success toast when user confirms", async () => { + it("transfers items and shows success toast when user accepts transfer", async () => { const personalCiphers = [{ id: "cipher-1" } as CipherView]; setupMocksForEnforcementScenario({ policies: [policy], organizations: [organization], ciphers: personalCiphers, - collections: [ - { - id: collectionId, - organizationId: organizationId, - isDefaultCollection: true, - } as CollectionView, - ], + defaultCollection: { + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView, }); - mockDialogService.openSimpleDialog.mockResolvedValue(true); + + mockDialogService.open.mockReturnValueOnce( + createMockDialogRef(TransferItemsDialogResult.Accepted), + ); mockCipherService.shareManyWithServer.mockResolvedValue(undefined); await service.enforceOrganizationDataOwnership(userId); @@ -695,15 +670,16 @@ describe("DefaultVaultItemsTransferService", () => { policies: [policy], organizations: [organization], ciphers: personalCiphers, - collections: [ - { - id: collectionId, - organizationId: organizationId, - isDefaultCollection: true, - } as CollectionView, - ], + defaultCollection: { + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView, }); - mockDialogService.openSimpleDialog.mockResolvedValue(true); + + mockDialogService.open.mockReturnValueOnce( + createMockDialogRef(TransferItemsDialogResult.Accepted), + ); mockCipherService.shareManyWithServer.mockRejectedValue(new Error("Transfer failed")); await service.enforceOrganizationDataOwnership(userId); @@ -717,5 +693,171 @@ describe("DefaultVaultItemsTransferService", () => { message: "errorOccurred", }); }); + + it("re-shows transfer dialog when user goes back from leave confirmation", async () => { + const personalCiphers = [{ id: "cipher-1" } as CipherView]; + setupMocksForEnforcementScenario({ + policies: [policy], + organizations: [organization], + ciphers: personalCiphers, + defaultCollection: { + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView, + }); + + // User declines, goes back, then accepts + mockDialogService.open + .mockReturnValueOnce(createMockDialogRef(TransferItemsDialogResult.Declined)) + .mockReturnValueOnce(createMockDialogRef(LeaveConfirmationDialogResult.Back)) + .mockReturnValueOnce(createMockDialogRef(TransferItemsDialogResult.Accepted)); + mockCipherService.shareManyWithServer.mockResolvedValue(undefined); + + await service.enforceOrganizationDataOwnership(userId); + + // Dialog should have been opened 3 times: transfer -> leave -> transfer (after going back) + expect(mockDialogService.open).toHaveBeenCalledTimes(3); + expect(mockCipherService.shareManyWithServer).toHaveBeenCalled(); + }); + + it("allows multiple back navigations before accepting transfer", async () => { + const personalCiphers = [{ id: "cipher-1" } as CipherView]; + setupMocksForEnforcementScenario({ + policies: [policy], + organizations: [organization], + ciphers: personalCiphers, + defaultCollection: { + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView, + }); + + // User declines, goes back, declines again, goes back again, then accepts + mockDialogService.open + .mockReturnValueOnce(createMockDialogRef(TransferItemsDialogResult.Declined)) + .mockReturnValueOnce(createMockDialogRef(LeaveConfirmationDialogResult.Back)) + .mockReturnValueOnce(createMockDialogRef(TransferItemsDialogResult.Declined)) + .mockReturnValueOnce(createMockDialogRef(LeaveConfirmationDialogResult.Back)) + .mockReturnValueOnce(createMockDialogRef(TransferItemsDialogResult.Accepted)); + mockCipherService.shareManyWithServer.mockResolvedValue(undefined); + + await service.enforceOrganizationDataOwnership(userId); + + // Dialog should have been opened 5 times + expect(mockDialogService.open).toHaveBeenCalledTimes(5); + expect(mockCipherService.shareManyWithServer).toHaveBeenCalled(); + }); + + it("allows user to go back and then confirm leaving", async () => { + setupMocksForEnforcementScenario({ + policies: [policy], + organizations: [organization], + ciphers: [{ id: "cipher-1" } as CipherView], + defaultCollection: { + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView, + }); + + // User declines, goes back, declines again, then confirms leaving + mockDialogService.open + .mockReturnValueOnce(createMockDialogRef(TransferItemsDialogResult.Declined)) + .mockReturnValueOnce(createMockDialogRef(LeaveConfirmationDialogResult.Back)) + .mockReturnValueOnce(createMockDialogRef(TransferItemsDialogResult.Declined)) + .mockReturnValueOnce(createMockDialogRef(LeaveConfirmationDialogResult.Confirmed)); + + await service.enforceOrganizationDataOwnership(userId); + + expect(mockDialogService.open).toHaveBeenCalledTimes(4); + expect(mockCipherService.shareManyWithServer).not.toHaveBeenCalled(); + }); + }); + + describe("transferInProgress$", () => { + const policy = { + organizationId: organizationId, + revisionDate: new Date("2024-01-01"), + } as Policy; + const organization = { + id: organizationId, + name: "Test Org", + } as Organization; + + function setupMocksForTransferScenario(options: { + featureEnabled?: boolean; + policies?: Policy[]; + organizations?: Organization[]; + ciphers?: CipherView[]; + defaultCollection?: CollectionView; + }): void { + mockConfigService.getFeatureFlag.mockResolvedValue(options.featureEnabled ?? true); + mockPolicyService.policiesByType$.mockReturnValue(of(options.policies ?? [])); + mockOrganizationService.organizations$.mockReturnValue(of(options.organizations ?? [])); + mockCipherService.cipherViews$.mockReturnValue(of(options.ciphers ?? [])); + mockCollectionService.defaultUserCollection$.mockReturnValue(of(options.defaultCollection)); + } + + it("emits false initially", async () => { + const result = await firstValueFrom(service.transferInProgress$); + + expect(result).toBe(false); + }); + + it("emits true during transfer and false after successful completion", async () => { + const personalCiphers = [{ id: "cipher-1" } as CipherView]; + setupMocksForTransferScenario({ + policies: [policy], + organizations: [organization], + ciphers: personalCiphers, + defaultCollection: { + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView, + }); + + mockDialogService.open.mockReturnValueOnce( + createMockDialogRef(TransferItemsDialogResult.Accepted), + ); + mockCipherService.shareManyWithServer.mockResolvedValue(undefined); + + // Subscribe to track all emitted values + service.transferInProgress$.subscribe((value) => transferInProgressValues.push(value)); + + await service.enforceOrganizationDataOwnership(userId); + + // Should have emitted: false (initial), true (transfer started), false (transfer completed) + expect(transferInProgressValues).toEqual([false, true, false]); + }); + + it("emits false after transfer fails with error", async () => { + const personalCiphers = [{ id: "cipher-1" } as CipherView]; + setupMocksForTransferScenario({ + policies: [policy], + organizations: [organization], + ciphers: personalCiphers, + defaultCollection: { + id: collectionId, + organizationId: organizationId, + isDefaultCollection: true, + } as CollectionView, + }); + + mockDialogService.open.mockReturnValueOnce( + createMockDialogRef(TransferItemsDialogResult.Accepted), + ); + mockCipherService.shareManyWithServer.mockRejectedValue(new Error("Transfer failed")); + + // Subscribe to track all emitted values + service.transferInProgress$.subscribe((value) => transferInProgressValues.push(value)); + + await service.enforceOrganizationDataOwnership(userId); + + // Should have emitted: false (initial), true (transfer started), false (transfer failed) + expect(transferInProgressValues).toEqual([false, true, false]); + }); }); }); diff --git a/libs/vault/src/services/default-vault-items-transfer.service.ts b/libs/vault/src/services/default-vault-items-transfer.service.ts index d9c490f870e..d7088873071 100644 --- a/libs/vault/src/services/default-vault-items-transfer.service.ts +++ b/libs/vault/src/services/default-vault-items-transfer.service.ts @@ -1,5 +1,13 @@ import { Injectable } from "@angular/core"; -import { firstValueFrom, switchMap, map, of, Observable, combineLatest } from "rxjs"; +import { + firstValueFrom, + switchMap, + map, + of, + Observable, + combineLatest, + BehaviorSubject, +} from "rxjs"; // eslint-disable-next-line no-restricted-imports import { CollectionService } from "@bitwarden/admin-console/common"; @@ -23,6 +31,12 @@ import { VaultItemsTransferService, UserMigrationInfo, } from "../abstractions/vault-items-transfer.service"; +import { + TransferItemsDialogComponent, + TransferItemsDialogResult, + LeaveConfirmationDialogComponent, + LeaveConfirmationDialogResult, +} from "../components/vault-items-transfer"; @Injectable() export class DefaultVaultItemsTransferService implements VaultItemsTransferService { @@ -38,6 +52,10 @@ export class DefaultVaultItemsTransferService implements VaultItemsTransferServi private configService: ConfigService, ) {} + private _transferInProgressSubject = new BehaviorSubject(false); + + transferInProgress$ = this._transferInProgressSubject.asObservable(); + private enforcingOrganization$(userId: UserId): Observable { return this.policyService.policiesByType$(PolicyType.OrganizationDataOwnership, userId).pipe( map( @@ -60,18 +78,6 @@ export class DefaultVaultItemsTransferService implements VaultItemsTransferServi ); } - private defaultUserCollection$( - userId: UserId, - organizationId: OrganizationId, - ): Observable { - return this.collectionService.decryptedCollections$(userId).pipe( - map((collections) => { - return collections.find((c) => c.isDefaultCollection && c.organizationId === organizationId) - ?.id; - }), - ); - } - userMigrationInfo$(userId: UserId): Observable { return this.enforcingOrganization$(userId).pipe( switchMap((enforcingOrganization) => { @@ -82,13 +88,13 @@ export class DefaultVaultItemsTransferService implements VaultItemsTransferServi } return combineLatest([ this.personalCiphers$(userId), - this.defaultUserCollection$(userId, enforcingOrganization.id), + this.collectionService.defaultUserCollection$(userId, enforcingOrganization.id), ]).pipe( - map(([personalCiphers, defaultCollectionId]): UserMigrationInfo => { + map(([personalCiphers, defaultCollection]): UserMigrationInfo => { return { requiresMigration: personalCiphers.length > 0, enforcingOrganization, - defaultCollectionId, + defaultCollectionId: defaultCollection?.id, }; }), ); @@ -96,6 +102,35 @@ export class DefaultVaultItemsTransferService implements VaultItemsTransferServi ); } + /** + * Prompts the user to accept or decline the vault items transfer. + * If declined, shows a leave confirmation dialog with option to go back. + * @returns true if user accepts transfer, false if user confirms leaving + */ + private async promptUserForTransfer(organizationName: string): Promise { + const confirmDialogRef = TransferItemsDialogComponent.open(this.dialogService, { + data: { organizationName }, + }); + + const confirmResult = await firstValueFrom(confirmDialogRef.closed); + + if (confirmResult === TransferItemsDialogResult.Accepted) { + return true; + } + + const leaveDialogRef = LeaveConfirmationDialogComponent.open(this.dialogService, { + data: { organizationName }, + }); + + const leaveResult = await firstValueFrom(leaveDialogRef.closed); + + if (leaveResult === LeaveConfirmationDialogResult.Back) { + return this.promptUserForTransfer(organizationName); + } + + return false; + } + async enforceOrganizationDataOwnership(userId: UserId): Promise { const featureEnabled = await this.configService.getFeatureFlag( FeatureFlag.MigrateMyVaultToMyItems, @@ -119,30 +154,29 @@ export class DefaultVaultItemsTransferService implements VaultItemsTransferServi return; } - // Temporary confirmation dialog. Full implementation in PM-27663 - const confirmMigration = await this.dialogService.openSimpleDialog({ - title: "Requires migration", - content: "Your vault requires migration of personal items to your organization.", - type: "warning", - }); + const userAcceptedTransfer = await this.promptUserForTransfer( + migrationInfo.enforcingOrganization.name, + ); - if (!confirmMigration) { - // TODO: Show secondary confirmation dialog in PM-27663, for now we just exit - // TODO: Revoke user from organization if they decline migration PM-29465 + if (!userAcceptedTransfer) { + // TODO: Revoke user from organization if they decline migration and show toast PM-29465 return; } try { + this._transferInProgressSubject.next(true); await this.transferPersonalItems( userId, migrationInfo.enforcingOrganization.id, migrationInfo.defaultCollectionId, ); + this._transferInProgressSubject.next(false); this.toastService.showToast({ variant: "success", message: this.i18nService.t("itemsTransferred"), }); } catch (error) { + this._transferInProgressSubject.next(false); this.logService.error("Error transferring personal items to organization", error); this.toastService.showToast({ variant: "error", From ba1c74b9052a79806e1f159547f4e5cc442227e7 Mon Sep 17 00:00:00 2001 From: Jason Ng Date: Tue, 16 Dec 2025 18:04:54 -0500 Subject: [PATCH 26/67] [PM-29286] clear selected items when filter is changed (#17929) * check filter inside vault-items and clear on change --- .../vault-items/vault-items.component.spec.ts | 31 ++++++++++++++++++- .../vault-items/vault-items.component.ts | 28 ++++++++++++++++- .../vault-items/vault-items.stories.ts | 12 +++++++ 3 files changed, 69 insertions(+), 2 deletions(-) diff --git a/apps/web/src/app/vault/components/vault-items/vault-items.component.spec.ts b/apps/web/src/app/vault/components/vault-items/vault-items.component.spec.ts index 1eccb4c49ce..c1c25c625da 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-items.component.spec.ts +++ b/apps/web/src/app/vault/components/vault-items/vault-items.component.spec.ts @@ -1,6 +1,6 @@ import { ScrollingModule } from "@angular/cdk/scrolling"; import { TestBed } from "@angular/core/testing"; -import { of } from "rxjs"; +import { of, Subject } from "rxjs"; import { CollectionView } from "@bitwarden/admin-console/common"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -11,12 +11,15 @@ import { RestrictedItemTypesService } from "@bitwarden/common/vault/services/res import { CipherViewLike } from "@bitwarden/common/vault/utils/cipher-view-like-utils"; import { MenuModule, TableModule } from "@bitwarden/components"; import { I18nPipe } from "@bitwarden/ui-common"; +import { RoutedVaultFilterService } from "@bitwarden/web-vault/app/vault/individual-vault/vault-filter/services/routed-vault-filter.service"; +import { RoutedVaultFilterModel } from "@bitwarden/web-vault/app/vault/individual-vault/vault-filter/shared/models/routed-vault-filter.model"; import { VaultItem } from "./vault-item"; import { VaultItemsComponent } from "./vault-items.component"; describe("VaultItemsComponent", () => { let component: VaultItemsComponent; + let filterSelect: Subject; const cipher1: Partial = { id: "cipher-1", @@ -31,6 +34,8 @@ describe("VaultItemsComponent", () => { }; beforeEach(async () => { + filterSelect = new Subject(); + await TestBed.configureTestingModule({ declarations: [VaultItemsComponent], imports: [ScrollingModule, TableModule, I18nPipe, MenuModule], @@ -61,6 +66,12 @@ describe("VaultItemsComponent", () => { hasArchiveFlagEnabled$: of(true), }, }, + { + provide: RoutedVaultFilterService, + useValue: { + filter$: filterSelect, + }, + }, ], }); @@ -143,4 +154,22 @@ describe("VaultItemsComponent", () => { expect(component.bulkUnarchiveAllowed).toBe(false); }); }); + + describe("filter change handling", () => { + it("clears selection when routed filter changes", () => { + const items: VaultItem[] = [ + { cipher: cipher1 as CipherView }, + { cipher: cipher2 as CipherView }, + ]; + + component["selection"].select(...items); + expect(component["selection"].selected.length).toBeGreaterThan(0); + + filterSelect.next({ + folderId: "folderId", + }); + + expect(component["selection"].selected.length).toBe(0); + }); + }); }); diff --git a/apps/web/src/app/vault/components/vault-items/vault-items.component.ts b/apps/web/src/app/vault/components/vault-items/vault-items.component.ts index a935314eb3a..a51009a1e5b 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-items.component.ts +++ b/apps/web/src/app/vault/components/vault-items/vault-items.component.ts @@ -3,7 +3,15 @@ import { SelectionModel } from "@angular/cdk/collections"; import { Component, EventEmitter, Input, Output } from "@angular/core"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; -import { Observable, combineLatest, map, of, startWith, switchMap } from "rxjs"; +import { + Observable, + combineLatest, + distinctUntilChanged, + map, + of, + startWith, + switchMap, +} from "rxjs"; import { CollectionView, Unassigned, CollectionAdminView } from "@bitwarden/admin-console/common"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; @@ -19,6 +27,7 @@ import { } from "@bitwarden/common/vault/utils/cipher-view-like-utils"; import { SortDirection, TableDataSource } from "@bitwarden/components"; import { OrganizationId } from "@bitwarden/sdk-internal"; +import { RoutedVaultFilterService } from "@bitwarden/web-vault/app/vault/individual-vault/vault-filter/services/routed-vault-filter.service"; import { GroupView } from "../../../admin-console/organizations/core"; @@ -152,6 +161,7 @@ export class VaultItemsComponent { protected cipherAuthorizationService: CipherAuthorizationService, protected restrictedItemTypesService: RestrictedItemTypesService, protected cipherArchiveService: CipherArchiveService, + protected routedVaultFilterService: RoutedVaultFilterService, ) { this.canDeleteSelected$ = this.selection.changed.pipe( startWith(null), @@ -219,6 +229,22 @@ export class VaultItemsComponent { ); }), ); + + this.routedVaultFilterService.filter$ + .pipe( + distinctUntilChanged( + (prev, curr) => + prev.organizationId === curr.organizationId && + prev.collectionId === curr.collectionId && + prev.folderId === curr.folderId && + prev.type === curr.type && + prev.organizationIdParamType === curr.organizationIdParamType, + ), + takeUntilDestroyed(), + ) + .subscribe(() => { + this.clearSelection(); + }); } clearSelection() { diff --git a/apps/web/src/app/vault/components/vault-items/vault-items.stories.ts b/apps/web/src/app/vault/components/vault-items/vault-items.stories.ts index d973fbcbbc7..a71427cf475 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-items.stories.ts +++ b/apps/web/src/app/vault/components/vault-items/vault-items.stories.ts @@ -40,6 +40,7 @@ import { CipherAuthorizationService } from "@bitwarden/common/vault/services/cip import { RestrictedItemTypesService } from "@bitwarden/common/vault/services/restricted-item-types.service"; import { CipherViewLike } from "@bitwarden/common/vault/utils/cipher-view-like-utils"; import { LayoutComponent } from "@bitwarden/components"; +import { RoutedVaultFilterService } from "@bitwarden/web-vault/app/vault/individual-vault/vault-filter/services/routed-vault-filter.service"; import { GroupView } from "../../../admin-console/organizations/core"; import { PreloadedEnglishI18nModule } from "../../../core/tests"; @@ -150,6 +151,17 @@ export default { hasArchiveFlagEnabled$: of(true), }, }, + { + provide: RoutedVaultFilterService, + useValue: { + filter$: of({ + organizationId: null, + collectionId: null, + folderId: null, + type: null, + }), + }, + }, ], }), applicationConfig({ From ced97a4467de3f2eb8d0fb4a902fce9daea1ae33 Mon Sep 17 00:00:00 2001 From: Maciej Zieniuk <167752252+mzieniukbw@users.noreply.github.com> Date: Wed, 17 Dec 2025 10:19:11 +0100 Subject: [PATCH 27/67] cli status command shows locked status when unlocked (#17708) --- apps/cli/src/commands/status.command.ts | 17 ++++++++++++----- apps/cli/src/oss-serve-configurator.ts | 1 + apps/cli/src/program.ts | 1 + 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/apps/cli/src/commands/status.command.ts b/apps/cli/src/commands/status.command.ts index f7fc8541a5f..7ae1e657630 100644 --- a/apps/cli/src/commands/status.command.ts +++ b/apps/cli/src/commands/status.command.ts @@ -1,12 +1,12 @@ -// FIXME: Update this file to be type safe and remove this and next line -// @ts-strict-ignore import { firstValueFrom, map } from "rxjs"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; +import { UserAutoUnlockKeyService } from "@bitwarden/common/platform/services/user-auto-unlock-key.service"; import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; +import { UserId } from "@bitwarden/user-core"; import { Response } from "../models/response"; import { TemplateResponse } from "../models/response/template.response"; @@ -17,16 +17,17 @@ export class StatusCommand { private syncService: SyncService, private accountService: AccountService, private authService: AuthService, + private userAutoUnlockKeyService: UserAutoUnlockKeyService, ) {} async run(): Promise { try { const baseUrl = await this.baseUrl(); - const status = await this.status(); const lastSync = await this.syncService.getLastSync(); const [userId, email] = await firstValueFrom( this.accountService.activeAccount$.pipe(map((a) => [a?.id, a?.email])), ); + const status = await this.status(userId); return Response.success( new TemplateResponse({ @@ -42,12 +43,18 @@ export class StatusCommand { } } - private async baseUrl(): Promise { + private async baseUrl(): Promise { const env = await firstValueFrom(this.envService.environment$); return env.getUrls().base; } - private async status(): Promise<"unauthenticated" | "locked" | "unlocked"> { + private async status( + userId: UserId | undefined, + ): Promise<"unauthenticated" | "locked" | "unlocked"> { + if (userId != null) { + await this.userAutoUnlockKeyService.setUserKeyInMemoryIfAutoUserKeySet(userId); + } + const authStatus = await this.authService.getAuthStatus(); if (authStatus === AuthenticationStatus.Unlocked) { return "unlocked"; diff --git a/apps/cli/src/oss-serve-configurator.ts b/apps/cli/src/oss-serve-configurator.ts index dbe17224d07..e8f5e6acd9a 100644 --- a/apps/cli/src/oss-serve-configurator.ts +++ b/apps/cli/src/oss-serve-configurator.ts @@ -122,6 +122,7 @@ export class OssServeConfigurator { this.serviceContainer.syncService, this.serviceContainer.accountService, this.serviceContainer.authService, + this.serviceContainer.userAutoUnlockKeyService, ); this.deleteCommand = new DeleteCommand( this.serviceContainer.cipherService, diff --git a/apps/cli/src/program.ts b/apps/cli/src/program.ts index 3e5b5678629..b0c94b19ae9 100644 --- a/apps/cli/src/program.ts +++ b/apps/cli/src/program.ts @@ -524,6 +524,7 @@ export class Program extends BaseProgram { this.serviceContainer.syncService, this.serviceContainer.accountService, this.serviceContainer.authService, + this.serviceContainer.userAutoUnlockKeyService, ); const response = await command.run(); this.processResponse(response); From 4846d217a93b4b284ee428946a3239381aaf3e83 Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Wed, 17 Dec 2025 10:57:24 +0100 Subject: [PATCH 28/67] [PM-28901] Fix master key not being set to state after kdf update (#17990) * Fix master key not being set to state after kdf update * Fix cli build * Fix test error * Fix hash purpose * Add test for master key being set * Fix incorrect variable name --- .../service-container/service-container.ts | 7 ++++- .../src/services/jslib-services.module.ts | 4 +-- .../kdf/change-kdf.service.spec.ts | 26 +++++++++++++++++-- .../key-management/kdf/change-kdf.service.ts | 20 +++++++++++++- 4 files changed, 51 insertions(+), 6 deletions(-) diff --git a/apps/cli/src/service-container/service-container.ts b/apps/cli/src/service-container/service-container.ts index 2d4ea7d00b5..f22f7cb6a00 100644 --- a/apps/cli/src/service-container/service-container.ts +++ b/apps/cli/src/service-container/service-container.ts @@ -982,7 +982,12 @@ export class ServiceContainer { this.masterPasswordApiService = new MasterPasswordApiService(this.apiService, this.logService); const changeKdfApiService = new DefaultChangeKdfApiService(this.apiService); - const changeKdfService = new DefaultChangeKdfService(changeKdfApiService, this.sdkService); + const changeKdfService = new DefaultChangeKdfService( + changeKdfApiService, + this.sdkService, + this.keyService, + this.masterPasswordService, + ); this.encryptedMigrator = new DefaultEncryptedMigrator( this.kdfConfigService, changeKdfService, diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index 816e09fd45d..6881862615d 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -528,7 +528,7 @@ const safeProviders: SafeProvider[] = [ safeProvider({ provide: ChangeKdfService, useClass: DefaultChangeKdfService, - deps: [ChangeKdfApiService, SdkService], + deps: [ChangeKdfApiService, SdkService, KeyService, InternalMasterPasswordServiceAbstraction], }), safeProvider({ provide: EncryptedMigrator, @@ -1333,7 +1333,7 @@ const safeProviders: SafeProvider[] = [ safeProvider({ provide: ChangeKdfService, useClass: DefaultChangeKdfService, - deps: [ChangeKdfApiService, SdkService], + deps: [ChangeKdfApiService, SdkService, KeyService, InternalMasterPasswordServiceAbstraction], }), safeProvider({ provide: AuthRequestServiceAbstraction, diff --git a/libs/common/src/key-management/kdf/change-kdf.service.spec.ts b/libs/common/src/key-management/kdf/change-kdf.service.spec.ts index 12096155641..e9f1ddca4e5 100644 --- a/libs/common/src/key-management/kdf/change-kdf.service.spec.ts +++ b/libs/common/src/key-management/kdf/change-kdf.service.spec.ts @@ -2,13 +2,14 @@ import { mock } from "jest-mock-extended"; import { of } from "rxjs"; // eslint-disable-next-line no-restricted-imports -import { PBKDF2KdfConfig } from "@bitwarden/key-management"; +import { KeyService, PBKDF2KdfConfig } from "@bitwarden/key-management"; import { makeEncString } from "../../../spec"; import { KdfRequest } from "../../models/request/kdf.request"; import { SdkService } from "../../platform/abstractions/sdk/sdk.service"; import { UserId } from "../../types/guid"; import { EncString } from "../crypto/models/enc-string"; +import { InternalMasterPasswordServiceAbstraction } from "../master-password/abstractions/master-password.service.abstraction"; import { MasterKeyWrappedUserKey, MasterPasswordAuthenticationHash, @@ -22,6 +23,8 @@ import { DefaultChangeKdfService } from "./change-kdf.service"; describe("ChangeKdfService", () => { const changeKdfApiService = mock(); const sdkService = mock(); + const keyService = mock(); + const masterPasswordService = mock(); let sut: DefaultChangeKdfService; @@ -48,7 +51,12 @@ describe("ChangeKdfService", () => { beforeEach(() => { sdkService.userClient$ = jest.fn((userId: UserId) => of(mockSdk)) as any; - sut = new DefaultChangeKdfService(changeKdfApiService, sdkService); + sut = new DefaultChangeKdfService( + changeKdfApiService, + sdkService, + keyService, + masterPasswordService, + ); }); afterEach(() => { @@ -163,6 +171,20 @@ describe("ChangeKdfService", () => { expect(changeKdfApiService.updateUserKdfParams).toHaveBeenCalledWith(expectedRequest); }); + it("should set master key and hash after KDF update", async () => { + const masterPassword = "masterPassword"; + const mockMasterKey = {} as any; + const mockHash = "localHash"; + + keyService.makeMasterKey.mockResolvedValue(mockMasterKey); + keyService.hashMasterKey.mockResolvedValue(mockHash); + + await sut.updateUserKdfParams(masterPassword, mockNewKdfConfig, mockUserId); + + expect(masterPasswordService.setMasterKey).toHaveBeenCalledWith(mockMasterKey, mockUserId); + expect(masterPasswordService.setMasterKeyHash).toHaveBeenCalledWith(mockHash, mockUserId); + }); + it("should properly dispose of SDK resources", async () => { const masterPassword = "masterPassword"; jest.spyOn(mockNewKdfConfig, "toSdkConfig").mockReturnValue({} as any); diff --git a/libs/common/src/key-management/kdf/change-kdf.service.ts b/libs/common/src/key-management/kdf/change-kdf.service.ts index 89d97e6704f..61842e7354b 100644 --- a/libs/common/src/key-management/kdf/change-kdf.service.ts +++ b/libs/common/src/key-management/kdf/change-kdf.service.ts @@ -1,12 +1,14 @@ import { firstValueFrom, map } from "rxjs"; import { assertNonNullish } from "@bitwarden/common/auth/utils"; +import { HashPurpose } from "@bitwarden/common/platform/enums"; import { UserId } from "@bitwarden/common/types/guid"; // eslint-disable-next-line no-restricted-imports -import { KdfConfig } from "@bitwarden/key-management"; +import { KdfConfig, KeyService } from "@bitwarden/key-management"; import { KdfRequest } from "../../models/request/kdf.request"; import { SdkService } from "../../platform/abstractions/sdk/sdk.service"; +import { InternalMasterPasswordServiceAbstraction } from "../master-password/abstractions/master-password.service.abstraction"; import { fromSdkAuthenticationData, MasterPasswordAuthenticationData, @@ -20,6 +22,8 @@ export class DefaultChangeKdfService implements ChangeKdfService { constructor( private changeKdfApiService: ChangeKdfApiService, private sdkService: SdkService, + private keyService: KeyService, + private masterPasswordService: InternalMasterPasswordServiceAbstraction, ) {} async updateUserKdfParams(masterPassword: string, kdf: KdfConfig, userId: UserId): Promise { @@ -56,5 +60,19 @@ export class DefaultChangeKdfService implements ChangeKdfService { const request = new KdfRequest(authenticationData, unlockData); request.authenticateWith(oldAuthenticationData); await this.changeKdfApiService.updateUserKdfParams(request); + + // Update the locally stored master key and hash, so that UV, etc. still works + const masterKey = await this.keyService.makeMasterKey( + masterPassword, + unlockData.salt, + unlockData.kdf, + ); + const localMasterKeyHash = await this.keyService.hashMasterKey( + masterPassword, + masterKey, + HashPurpose.LocalAuthorization, + ); + await this.masterPasswordService.setMasterKeyHash(localMasterKeyHash, userId); + await this.masterPasswordService.setMasterKey(masterKey, userId); } } From 3114b319204ef0c1948dc220c8a14e63cf6de83a Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Wed, 17 Dec 2025 11:59:40 +0100 Subject: [PATCH 29/67] Fix slow agent operations (#17867) --- .../desktop_native/core/src/ssh_agent/peerinfo/gather.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/desktop/desktop_native/core/src/ssh_agent/peerinfo/gather.rs b/apps/desktop/desktop_native/core/src/ssh_agent/peerinfo/gather.rs index 699203d613d..bf8e24dd79c 100644 --- a/apps/desktop/desktop_native/core/src/ssh_agent/peerinfo/gather.rs +++ b/apps/desktop/desktop_native/core/src/ssh_agent/peerinfo/gather.rs @@ -3,8 +3,12 @@ use sysinfo::{Pid, System}; use super::models::PeerInfo; pub fn get_peer_info(peer_pid: u32) -> Result { - let s = System::new_all(); - if let Some(process) = s.process(Pid::from_u32(peer_pid)) { + let mut system = System::new(); + system.refresh_processes( + sysinfo::ProcessesToUpdate::Some(&[Pid::from_u32(peer_pid)]), + true, + ); + if let Some(process) = system.process(Pid::from_u32(peer_pid)) { let peer_process_name = match process.name().to_str() { Some(name) => name.to_string(), None => { From 24dcbb48c61309da382a6a33b96bdee9785e1295 Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Wed, 17 Dec 2025 12:00:13 +0100 Subject: [PATCH 30/67] [PM-29418] Fix SSH list not working while locked (#17866) * Fix SSH list not working while locked * Add tests * Update private key to SDK test key * Cleanup --- .../desktop_native/core/src/ssh_agent/mod.rs | 86 ++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs b/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs index 8ba64618ffa..16cf778b575 100644 --- a/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs +++ b/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs @@ -226,7 +226,7 @@ impl BitwardenDesktopAgent { keystore.0.write().expect("RwLock is not poisoned").clear(); self.needs_unlock - .store(true, std::sync::atomic::Ordering::Relaxed); + .store(false, std::sync::atomic::Ordering::Relaxed); for (key, name, cipher_id) in new_keys.iter() { match parse_key_safe(key) { @@ -307,3 +307,87 @@ fn parse_key_safe(pem: &str) -> Result Err(anyhow::Error::msg(format!("Failed to parse key: {e}"))), } } + +#[cfg(test)] +mod tests { + use super::*; + + fn create_test_agent() -> ( + BitwardenDesktopAgent, + tokio::sync::mpsc::Receiver, + tokio::sync::broadcast::Sender<(u32, bool)>, + ) { + let (tx, rx) = tokio::sync::mpsc::channel(10); + let (response_tx, response_rx) = tokio::sync::broadcast::channel(10); + let agent = BitwardenDesktopAgent::new(tx, Arc::new(Mutex::new(response_rx))); + (agent, rx, response_tx) + } + + const TEST_ED25519_KEY: &str = "-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACCWETEIh/JX+ZaK0Xlg5xZ9QIfjiKD2Qs57PjhRY45trwAAAIhqmvSbapr0 +mwAAAAtzc2gtZWQyNTUxOQAAACCWETEIh/JX+ZaK0Xlg5xZ9QIfjiKD2Qs57PjhRY45trw +AAAEAHVflTgR/OEl8mg9UEKcO7SeB0FH4AiaUurhVfBWT4eZYRMQiH8lf5lorReWDnFn1A +h+OIoPZCzns+OFFjjm2vAAAAAAECAwQF +-----END OPENSSH PRIVATE KEY-----"; + + #[tokio::test] + async fn test_needs_unlock_initial_state() { + let (agent, _rx, _response_tx) = create_test_agent(); + + // Initially, needs_unlock should be true + assert!(agent + .needs_unlock + .load(std::sync::atomic::Ordering::Relaxed)); + } + + #[tokio::test] + async fn test_needs_unlock_after_set_keys() { + let (mut agent, _rx, _response_tx) = create_test_agent(); + agent + .is_running + .store(true, std::sync::atomic::Ordering::Relaxed); + + // Set keys should set needs_unlock to false + let keys = vec![( + TEST_ED25519_KEY.to_string(), + "test_key".to_string(), + "cipher_id".to_string(), + )]; + + agent.set_keys(keys).unwrap(); + + assert!(!agent + .needs_unlock + .load(std::sync::atomic::Ordering::Relaxed)); + } + + #[tokio::test] + async fn test_needs_unlock_after_clear_keys() { + let (mut agent, _rx, _response_tx) = create_test_agent(); + agent + .is_running + .store(true, std::sync::atomic::Ordering::Relaxed); + + // Set keys first + let keys = vec![( + TEST_ED25519_KEY.to_string(), + "test_key".to_string(), + "cipher_id".to_string(), + )]; + agent.set_keys(keys).unwrap(); + + // Verify needs_unlock is false + assert!(!agent + .needs_unlock + .load(std::sync::atomic::Ordering::Relaxed)); + + // Clear keys should set needs_unlock back to true + agent.clear_keys().unwrap(); + + // Verify needs_unlock is true + assert!(agent + .needs_unlock + .load(std::sync::atomic::Ordering::Relaxed)); + } +} From e6062ec84e09c713cdac60b428bddba58cb4a9d0 Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Wed, 17 Dec 2025 15:16:02 +0100 Subject: [PATCH 31/67] Fix agent crashing when account switching (#17868) --- .../autofill/services/ssh-agent.service.ts | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/apps/desktop/src/autofill/services/ssh-agent.service.ts b/apps/desktop/src/autofill/services/ssh-agent.service.ts index d5aed7f3289..a61903a5c82 100644 --- a/apps/desktop/src/autofill/services/ssh-agent.service.ts +++ b/apps/desktop/src/autofill/services/ssh-agent.service.ts @@ -46,8 +46,6 @@ export class SshAgentService implements OnDestroy { private authorizedSshKeys: Record = {}; - private isFeatureFlagEnabled = false; - private destroy$ = new Subject(); constructor( @@ -91,6 +89,7 @@ export class SshAgentService implements OnDestroy { filter(({ enabled }) => enabled), map(({ message }) => message), withLatestFrom(this.authService.activeAccountStatus$, this.accountService.activeAccount$), + filter(([, , account]) => account != null), // This switchMap handles unlocking the vault if it is locked: // - If the vault is locked, we will wait for it to be unlocked. // - If the vault is not unlocked within the timeout, we will abort the flow. @@ -127,7 +126,11 @@ export class SshAgentService implements OnDestroy { throw error; }), - map(() => [message, account.id]), + concatMap(async () => { + // The active account may have switched with account switching during unlock + const updatedAccount = await firstValueFrom(this.accountService.activeAccount$); + return [message, updatedAccount.id] as const; + }), ); } @@ -200,10 +203,6 @@ export class SshAgentService implements OnDestroy { this.accountService.activeAccount$.pipe(skip(1), takeUntil(this.destroy$)).subscribe({ next: (account) => { - if (!this.isFeatureFlagEnabled) { - return; - } - this.authorizedSshKeys = {}; this.logService.info("Active account changed, clearing SSH keys"); ipc.platform.sshAgent @@ -211,20 +210,12 @@ export class SshAgentService implements OnDestroy { .catch((e) => this.logService.error("Failed to clear SSH keys", e)); }, error: (e: unknown) => { - if (!this.isFeatureFlagEnabled) { - return; - } - this.logService.error("Error in active account observable", e); ipc.platform.sshAgent .clearKeys() .catch((e) => this.logService.error("Failed to clear SSH keys", e)); }, complete: () => { - if (!this.isFeatureFlagEnabled) { - return; - } - this.logService.info("Active account observable completed, clearing SSH keys"); this.authorizedSshKeys = {}; ipc.platform.sshAgent @@ -239,10 +230,6 @@ export class SshAgentService implements OnDestroy { ]) .pipe( concatMap(async ([, enabled]) => { - if (!this.isFeatureFlagEnabled) { - return; - } - if (!enabled) { await ipc.platform.sshAgent.clearKeys(); return; From 78f4947d006bc5d0d009ab6eaaba688d7b15a7c8 Mon Sep 17 00:00:00 2001 From: Leslie Tilton <23057410+Banrion@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:23:09 -0600 Subject: [PATCH 32/67] [PM-25884] Disable phishing detection if safari is detected (#17655) * Disable phishing detection if safari is detected * Apply suggestion from @claude[bot] Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> * Move order of safari vs account checks --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> --- .../services/phishing-detection.service.spec.ts | 5 +++++ .../services/phishing-detection.service.ts | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.spec.ts b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.spec.ts index ceb18bd1573..06a37f12faa 100644 --- a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.spec.ts +++ b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.spec.ts @@ -79,4 +79,9 @@ describe("PhishingDetectionService", () => { // phishingDetectionSettingsService, // ); // }); + + // TODO + // it("should not enable phishing detection for safari", () => { + // + // }); }); diff --git a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts index e04d08559ab..501dfbf7a50 100644 --- a/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts +++ b/apps/browser/src/dirt/phishing-detection/services/phishing-detection.service.ts @@ -5,6 +5,7 @@ import { filter, map, merge, + of, Subject, switchMap, tap, @@ -111,7 +112,17 @@ export class PhishingDetectionService { .messages$(PHISHING_DETECTION_CANCEL_COMMAND) .pipe(switchMap((message) => BrowserApi.closeTab(message.tabId))); - const phishingDetectionActive$ = phishingDetectionSettingsService.on$; + // Phishing detection is unavailable on Safari due to platform limitations + if (BrowserApi.isSafariApi) { + logService.debug( + "[PhishingDetectionService] Disabling phishing detection service for Safari.", + ); + } + + // Watching for settings changes to enable/disable phishing detection + const phishingDetectionActive$ = BrowserApi.isSafariApi + ? of(false) + : phishingDetectionSettingsService.on$; const initSub = phishingDetectionActive$ .pipe( From b0fcd92f35515144d04da0b8381b3f876c9b386e Mon Sep 17 00:00:00 2001 From: Alex <55413326+AlexRubik@users.noreply.github.com> Date: Wed, 17 Dec 2025 10:23:33 -0500 Subject: [PATCH 33/67] add padding between name and icons in health reports (#18002) Added tw-ml-1 class to shared (bwi-collection-shared) and attachment (bwi-paperclip) icons in report tables to add spacing between the item name and icons. Affected reports: - Weak passwords - Exposed passwords - Reused passwords - Unsecured websites - Inactive two-factor - Emergency access view (PM-29488) --- .../view/emergency-access-view.component.html | 4 ++-- .../reports/pages/exposed-passwords-report.component.html | 4 ++-- .../reports/pages/inactive-two-factor-report.component.html | 4 ++-- .../dirt/reports/pages/reused-passwords-report.component.html | 4 ++-- .../reports/pages/unsecured-websites-report.component.html | 4 ++-- .../dirt/reports/pages/weak-passwords-report.component.html | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/web/src/app/auth/settings/emergency-access/view/emergency-access-view.component.html b/apps/web/src/app/auth/settings/emergency-access/view/emergency-access-view.component.html index 20cc50c4d59..4aaac6aaa52 100644 --- a/apps/web/src/app/auth/settings/emergency-access/view/emergency-access-view.component.html +++ b/apps/web/src/app/auth/settings/emergency-access/view/emergency-access-view.component.html @@ -19,7 +19,7 @@ >