From da636e26c299acece410650aecc127e097115cba Mon Sep 17 00:00:00 2001 From: Tom Rittson Date: Mon, 31 Aug 2020 17:14:50 +1000 Subject: [PATCH 01/73] add settings -> Excluded Domains component Provides a UI to edit the domains for which Bitwarden does not offer to save login details. --- src/_locales/en/messages.json | 9 ++ src/popup/app-routing.module.ts | 7 ++ src/popup/app.module.ts | 2 + .../settings/excluded-domains.component.html | 53 +++++++++ .../settings/excluded-domains.component.ts | 111 ++++++++++++++++++ src/popup/settings/settings.component.html | 4 + 6 files changed, 186 insertions(+) create mode 100644 src/popup/settings/excluded-domains.component.html create mode 100644 src/popup/settings/excluded-domains.component.ts diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index cdcbd64736..ba36b04c3b 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -1437,5 +1437,14 @@ }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." + }, + "excludedDomains": { + "message": "Excluded Domains" + }, + "excludedDomainsDesc": { + "message": "Bitwarden will not ask to save login details for these domains." + }, + "excludedDomainsInvalidDomain": { + "message": " is not a valid domain" } } diff --git a/src/popup/app-routing.module.ts b/src/popup/app-routing.module.ts index 5c3ea8dbba..d4d37b07bd 100644 --- a/src/popup/app-routing.module.ts +++ b/src/popup/app-routing.module.ts @@ -40,6 +40,7 @@ import { GroupingsComponent } from './vault/groupings.component'; import { PasswordHistoryComponent } from './vault/password-history.component'; import { ShareComponent } from './vault/share.component'; import { ViewComponent } from './vault/view.component'; +import { ExcludedDomainsComponent } from './settings/excluded-domains.component'; const routes: Routes = [ { @@ -200,6 +201,12 @@ const routes: Routes = [ canActivate: [AuthGuardService], data: { state: 'sync' }, }, + { + path: 'excluded-domains', + component: ExcludedDomainsComponent, + canActivate: [AuthGuardService], + data: { state: 'excluded-domains' }, + }, { path: 'premium', component: PremiumComponent, diff --git a/src/popup/app.module.ts b/src/popup/app.module.ts index 125f7a713e..3b6bc204c2 100644 --- a/src/popup/app.module.ts +++ b/src/popup/app.module.ts @@ -46,6 +46,7 @@ import { GroupingsComponent } from './vault/groupings.component'; import { PasswordHistoryComponent } from './vault/password-history.component'; import { ShareComponent } from './vault/share.component'; import { ViewComponent } from './vault/view.component'; +import { ExcludedDomainsComponent } from './settings/excluded-domains.component'; import { A11yTitleDirective } from 'jslib/angular/directives/a11y-title.directive'; import { ApiActionDirective } from 'jslib/angular/directives/api-action.directive'; @@ -181,6 +182,7 @@ registerLocaleData(localeZhTw, 'zh-TW'); ColorPasswordPipe, CurrentTabComponent, EnvironmentComponent, + ExcludedDomainsComponent, ExportComponent, FallbackSrcDirective, FolderAddEditComponent, diff --git a/src/popup/settings/excluded-domains.component.html b/src/popup/settings/excluded-domains.component.html new file mode 100644 index 0000000000..7a10449282 --- /dev/null +++ b/src/popup/settings/excluded-domains.component.html @@ -0,0 +1,53 @@ +
+
+ +
+ {{'excludedDomains' | i18n}} +
+
+ +
+
+ +
+
+ +
+ + + +
+ + + + +
+
+ + + +
+
+
+ + {{'newUri' | i18n}} + +
+ +
+
+
\ No newline at end of file diff --git a/src/popup/settings/excluded-domains.component.ts b/src/popup/settings/excluded-domains.component.ts new file mode 100644 index 0000000000..5be9939e87 --- /dev/null +++ b/src/popup/settings/excluded-domains.component.ts @@ -0,0 +1,111 @@ +import { + Component, + OnInit, + NgZone, + OnDestroy +} from '@angular/core'; +import { Router } from '@angular/router'; + +import { I18nService } from 'jslib/abstractions/i18n.service'; +import { StorageService } from 'jslib/abstractions/storage.service'; +import { ConstantsService } from 'jslib/services/constants.service'; +import { BrowserApi } from '../../browser/browserApi'; +import { BroadcasterService } from 'jslib/angular/services/broadcaster.service'; +import { Utils } from 'jslib/misc/utils'; +import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; + +interface ExcludedDomain { + uri: string, + showCurrentUris: boolean +} + +const BroadcasterSubscriptionId = 'excludedDomains'; + +@Component({ + selector: 'app-excluded-domains', + templateUrl: 'excluded-domains.component.html', +}) +export class ExcludedDomainsComponent implements OnInit, OnDestroy { + excludedDomains: ExcludedDomain[] = []; + currentUris: string[]; + loadCurrentUrisTimeout: number; + + constructor(private storageService: StorageService, + private i18nService: I18nService, private router: Router, + private broadcasterService: BroadcasterService, private ngZone: NgZone, + private platformUtilsService: PlatformUtilsService) { + } + + async ngOnInit() { + const savedDomains = await this.storageService.get(ConstantsService.neverDomainsKey); + if (savedDomains) { + for (const uri of Object.keys(savedDomains)) { + this.excludedDomains.push({uri: uri, showCurrentUris: false}) + } + } + + this.loadCurrentUris(); + + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case 'tabChanged': + case 'windowChanged': + if (this.loadCurrentUrisTimeout != null) { + window.clearTimeout(this.loadCurrentUrisTimeout); + } + this.loadCurrentUrisTimeout = window.setTimeout(() => this.loadCurrentUris(), 500); + break; + default: + break; + } + }); + }); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async addUri() { + this.excludedDomains.push({uri: '', showCurrentUris: false}) + } + + async removeUri(i: number) { + this.excludedDomains.splice(i, 1); + } + + async submit() { + const savedDomains: {[name: string]: null} = {}; + for (const domain of this.excludedDomains) { + if (domain.uri && domain.uri !== '') { + const validDomain = Utils.getHostname(domain.uri); + if (!validDomain) { + this.platformUtilsService.showToast('error', null, + '\'' + domain.uri + '\'' + this.i18nService.t('excludedDomainsInvalidDomain')); + return; + } + savedDomains[validDomain] = null + } + } + await this.storageService.save(ConstantsService.neverDomainsKey, savedDomains); + this.router.navigate(['/tabs/settings']); + } + + trackByFunction(index: number, item: any) { + return index; + } + + toggleUriInput(domain: ExcludedDomain) { + domain.showCurrentUris = !domain.showCurrentUris; + } + + async loadCurrentUris() { + const tabs = await BrowserApi.tabsQuery({ windowType: 'normal' }); + if (tabs) { + const uriSet = new Set(tabs.map((tab) => Utils.getHostname(tab.url))); + uriSet.delete(null); + this.currentUris = Array.from(uriSet); + } + } +} \ No newline at end of file diff --git a/src/popup/settings/settings.component.html b/src/popup/settings/settings.component.html index fc1eeedfe7..7b1f81c162 100644 --- a/src/popup/settings/settings.component.html +++ b/src/popup/settings/settings.component.html @@ -19,6 +19,10 @@
{{'sync' | i18n}}
+ +
{{'excludedDomains' | i18n}}
+ +
From 078111a4fc07ba254c55e92faf5f7a46ed5d2927 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Wed, 13 Jan 2021 18:40:10 +1000 Subject: [PATCH 02/73] Fix formatting and style --- src/popup/app-routing.module.ts | 2 +- src/popup/app.module.ts | 2 +- .../settings/excluded-domains.component.ts | 17 +++++++++-------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/popup/app-routing.module.ts b/src/popup/app-routing.module.ts index d4d37b07bd..96090c98f3 100644 --- a/src/popup/app-routing.module.ts +++ b/src/popup/app-routing.module.ts @@ -23,6 +23,7 @@ import { SsoComponent } from './accounts/sso.component'; import { PasswordGeneratorHistoryComponent } from './generator/password-generator-history.component'; import { PasswordGeneratorComponent } from './generator/password-generator.component'; import { PrivateModeComponent } from './private-mode.component'; +import { ExcludedDomainsComponent } from './settings/excluded-domains.component'; import { ExportComponent } from './settings/export.component'; import { FolderAddEditComponent } from './settings/folder-add-edit.component'; import { FoldersComponent } from './settings/folders.component'; @@ -40,7 +41,6 @@ import { GroupingsComponent } from './vault/groupings.component'; import { PasswordHistoryComponent } from './vault/password-history.component'; import { ShareComponent } from './vault/share.component'; import { ViewComponent } from './vault/view.component'; -import { ExcludedDomainsComponent } from './settings/excluded-domains.component'; const routes: Routes = [ { diff --git a/src/popup/app.module.ts b/src/popup/app.module.ts index 3b6bc204c2..63e8c92c32 100644 --- a/src/popup/app.module.ts +++ b/src/popup/app.module.ts @@ -29,6 +29,7 @@ import { AppComponent } from './app.component'; import { PasswordGeneratorHistoryComponent } from './generator/password-generator-history.component'; import { PasswordGeneratorComponent } from './generator/password-generator.component'; import { PrivateModeComponent } from './private-mode.component'; +import { ExcludedDomainsComponent } from './settings/excluded-domains.component'; import { ExportComponent } from './settings/export.component'; import { FolderAddEditComponent } from './settings/folder-add-edit.component'; import { FoldersComponent } from './settings/folders.component'; @@ -46,7 +47,6 @@ import { GroupingsComponent } from './vault/groupings.component'; import { PasswordHistoryComponent } from './vault/password-history.component'; import { ShareComponent } from './vault/share.component'; import { ViewComponent } from './vault/view.component'; -import { ExcludedDomainsComponent } from './settings/excluded-domains.component'; import { A11yTitleDirective } from 'jslib/angular/directives/a11y-title.directive'; import { ApiActionDirective } from 'jslib/angular/directives/api-action.directive'; diff --git a/src/popup/settings/excluded-domains.component.ts b/src/popup/settings/excluded-domains.component.ts index 5be9939e87..b09d8570dd 100644 --- a/src/popup/settings/excluded-domains.component.ts +++ b/src/popup/settings/excluded-domains.component.ts @@ -1,18 +1,19 @@ import { Component, + OnDestroy, OnInit, - NgZone, - OnDestroy + NgZone } from '@angular/core'; import { Router } from '@angular/router'; import { I18nService } from 'jslib/abstractions/i18n.service'; +import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; import { StorageService } from 'jslib/abstractions/storage.service'; import { ConstantsService } from 'jslib/services/constants.service'; -import { BrowserApi } from '../../browser/browserApi'; import { BroadcasterService } from 'jslib/angular/services/broadcaster.service'; + +import { BrowserApi } from '../../browser/browserApi'; import { Utils } from 'jslib/misc/utils'; -import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; interface ExcludedDomain { uri: string, @@ -40,7 +41,7 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy { const savedDomains = await this.storageService.get(ConstantsService.neverDomainsKey); if (savedDomains) { for (const uri of Object.keys(savedDomains)) { - this.excludedDomains.push({uri: uri, showCurrentUris: false}) + this.excludedDomains.push({ uri: uri, showCurrentUris: false }) } } @@ -68,7 +69,7 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy { } async addUri() { - this.excludedDomains.push({uri: '', showCurrentUris: false}) + this.excludedDomains.push({ uri: '', showCurrentUris: false }) } async removeUri(i: number) { @@ -76,7 +77,7 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy { } async submit() { - const savedDomains: {[name: string]: null} = {}; + const savedDomains: { [name: string]: null } = {}; for (const domain of this.excludedDomains) { if (domain.uri && domain.uri !== '') { const validDomain = Utils.getHostname(domain.uri); @@ -108,4 +109,4 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy { this.currentUris = Array.from(uriSet); } } -} \ No newline at end of file +} From caa4d5990dd4e06fed3b5455c6dfdd56f3ec5717 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Thu, 14 Jan 2021 18:04:30 +1000 Subject: [PATCH 03/73] Use placeholders, minor code and style fixes --- src/_locales/en/messages.json | 8 +++++++- src/popup/settings/excluded-domains.component.ts | 16 ++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index ba36b04c3b..157148445c 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -1445,6 +1445,12 @@ "message": "Bitwarden will not ask to save login details for these domains." }, "excludedDomainsInvalidDomain": { - "message": " is not a valid domain" + "message": "$DOMAIN$ is not a valid domain", + "placeholders": { + "domain": { + "content": "$1", + "example": "googlecom" + } + } } } diff --git a/src/popup/settings/excluded-domains.component.ts b/src/popup/settings/excluded-domains.component.ts index b09d8570dd..57bfa0bb02 100644 --- a/src/popup/settings/excluded-domains.component.ts +++ b/src/popup/settings/excluded-domains.component.ts @@ -16,8 +16,8 @@ import { BrowserApi } from '../../browser/browserApi'; import { Utils } from 'jslib/misc/utils'; interface ExcludedDomain { - uri: string, - showCurrentUris: boolean + uri: string; + showCurrentUris: boolean; } const BroadcasterSubscriptionId = 'excludedDomains'; @@ -41,11 +41,11 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy { const savedDomains = await this.storageService.get(ConstantsService.neverDomainsKey); if (savedDomains) { for (const uri of Object.keys(savedDomains)) { - this.excludedDomains.push({ uri: uri, showCurrentUris: false }) + this.excludedDomains.push({ uri: uri, showCurrentUris: false }); } } - this.loadCurrentUris(); + await this.loadCurrentUris(); this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { this.ngZone.run(async () => { @@ -55,7 +55,7 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy { if (this.loadCurrentUrisTimeout != null) { window.clearTimeout(this.loadCurrentUrisTimeout); } - this.loadCurrentUrisTimeout = window.setTimeout(() => this.loadCurrentUris(), 500); + this.loadCurrentUrisTimeout = window.setTimeout(async () => await this.loadCurrentUris(), 500); break; default: break; @@ -69,7 +69,7 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy { } async addUri() { - this.excludedDomains.push({ uri: '', showCurrentUris: false }) + this.excludedDomains.push({ uri: '', showCurrentUris: false }); } async removeUri(i: number) { @@ -83,10 +83,10 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy { const validDomain = Utils.getHostname(domain.uri); if (!validDomain) { this.platformUtilsService.showToast('error', null, - '\'' + domain.uri + '\'' + this.i18nService.t('excludedDomainsInvalidDomain')); + this.i18nService.t('excludedDomainsInvalidDomain', domain.uri)); return; } - savedDomains[validDomain] = null + savedDomains[validDomain] = null; } } await this.storageService.save(ConstantsService.neverDomainsKey, savedDomains); From 0511905ab46e868ca4c0d79b735eee3deaa671ce Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Fri, 15 Jan 2021 16:44:27 +0100 Subject: [PATCH 04/73] Handle desktop logged into a different account for biometrics (#1533) --- src/_locales/en/messages.json | 6 ++++++ src/background/nativeMessaging.background.ts | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index cdcbd64736..a1b4aa76d2 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -1420,6 +1420,12 @@ "nativeMessagingInvalidEncryptionTitle": { "message": "Desktop communication interrupted" }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, "biometricsNotEnabledTitle": { "message": "Biometrics not enabled" }, diff --git a/src/background/nativeMessaging.background.ts b/src/background/nativeMessaging.background.ts index b83397e647..f1bcdf148a 100644 --- a/src/background/nativeMessaging.background.ts +++ b/src/background/nativeMessaging.background.ts @@ -106,6 +106,13 @@ export class NativeMessagingBackground { } break; } + case 'wrongUserId': + this.messagingService.send('showDialog', { + text: this.i18nService.t('nativeMessagingWrongUserDesc'), + title: this.i18nService.t('nativeMessagingWrongUserTitle'), + confirmText: this.i18nService.t('ok'), + type: 'error', + }); default: // Ignore since it belongs to another device if (message.appId !== this.appId) { @@ -247,7 +254,11 @@ export class NativeMessagingBackground { this.publicKey = publicKey; this.privateKey = privateKey; - this.sendUnencrypted({command: 'setupEncryption', publicKey: Utils.fromBufferToB64(publicKey)}); + this.sendUnencrypted({ + command: 'setupEncryption', + publicKey: Utils.fromBufferToB64(publicKey), + userId: await this.userService.getUserId() + }); return new Promise((resolve, reject) => this.secureSetupResolve = resolve); } From 86893b97b5aaed8c5d5115dd319bd58a92372b7a Mon Sep 17 00:00:00 2001 From: Hinton Date: Sat, 16 Jan 2021 21:51:33 +0100 Subject: [PATCH 05/73] Set the background color for app-root to resolve an issue where the login page would have background bleed --- src/popup/scss/base.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/popup/scss/base.scss b/src/popup/scss/base.scss index c1b5a242b4..000e4f23a3 100644 --- a/src/popup/scss/base.scss +++ b/src/popup/scss/base.scss @@ -342,6 +342,9 @@ app-root { width: 100%; height: 100%; z-index: 980; + @include themify($themes) { + background-color: themed('backgroundColor'); + } } content { From 2b6ed49d17cf80b08e996e209a140951f8fa18ab Mon Sep 17 00:00:00 2001 From: Chad Scharf <3904944+cscharf@users.noreply.github.com> Date: Tue, 19 Jan 2021 15:03:49 -0500 Subject: [PATCH 06/73] version bump 1.48.0 --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index d05030f072..944a7f1d3d 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "__MSG_extName__", "short_name": "__MSG_appName__", - "version": "1.47.1", + "version": "1.48.0", "description": "__MSG_extDesc__", "default_locale": "en", "author": "Bitwarden Inc.", From 5366cb527d0b4902d051fb40a93af921979dd930 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:27 -0500 Subject: [PATCH 07/73] New translations messages.json (Romanian) --- src/_locales/ro/messages.json | 489 ++++++++++++++++++++-------------- 1 file changed, 282 insertions(+), 207 deletions(-) diff --git a/src/_locales/ro/messages.json b/src/_locales/ro/messages.json index 868aedcf90..5bd5452130 100644 --- a/src/_locales/ro/messages.json +++ b/src/_locales/ro/messages.json @@ -11,7 +11,7 @@ "description": "Extension description" }, "loginOrCreateNewAccount": { - "message": "Autentificați-vă sau creați un cont nou pentru a vă accesa seiful dvs. securizat." + "message": "Autentificați-vă sau creați un cont nou pentru a accesa seiful dvs. securizat." }, "createAccount": { "message": "Creare cont" @@ -20,7 +20,7 @@ "message": "Autentificare" }, "enterpriseSingleSignOn": { - "message": "Identificare unică antrepriză (SSO)" + "message": "Conectare unică organizație (SSO)" }, "cancel": { "message": "Anulare" @@ -35,22 +35,22 @@ "message": "Adresă de e-mail" }, "masterPass": { - "message": "Parola principală" + "message": "Parolă principală" }, "masterPassDesc": { - "message": "Parola principală este parola pe care o utilizați pentru a accesa seiful dvs. Este foarte important să nu uitați această parolă. Nu există nici o modalitate de a recupera parola în cazul în care ați uitat-o." + "message": "Parola principală este parola pe care o utilizați pentru a vă accesa seiful. Este foarte important să nu uitați această parolă. Nu există nicio modalitate de a recupera parola în cazul în care ați uitat-o." }, "masterPassHintDesc": { - "message": "Un indiciu pentru parola principală vă poate ajuta să v-o reamintiți dacă ați uitat-o." + "message": "Un indiciu pentru parola principală vă poate ajuta să v-o reamintiți dacă o uitați." }, "reTypeMasterPass": { - "message": "Reintroduceți parola principală" + "message": "Reintroducere parolă principală" }, "masterPassHint": { "message": "Indiciu pentru parola principală (opțional)" }, "tab": { - "message": "Pagină" + "message": "Filă" }, "myVault": { "message": "Seiful meu" @@ -62,7 +62,7 @@ "message": "Setări" }, "currentTab": { - "message": "Pagina curentă" + "message": "Fila curentă" }, "copyPassword": { "message": "Copiere parolă" @@ -83,7 +83,7 @@ "message": "Copiere cod de securitate" }, "autoFill": { - "message": "Completare automată" + "message": "Auto-completare" }, "generatePasswordCopied": { "message": "Generare parolă (s-a copiat)" @@ -98,7 +98,7 @@ "message": "Seiful este deconectat." }, "autoFillInfo": { - "message": "Nu sunt disponibile autentificări pentru completarea automată în pagina curentă." + "message": "Nu sunt disponibile autentificări pentru auto-completare în fila curentă a browserului." }, "addLogin": { "message": "Adăugare autentificare" @@ -110,10 +110,10 @@ "message": "Indiciu parolă" }, "enterEmailToGetHint": { - "message": "Introduceți adresa de e-mail a contului dvs. pentru a primi indiciul parolei principale." + "message": "Adresa de e-mail a contului pentru primirea indiciului parolei principale." }, "getMasterPasswordHint": { - "message": "Obțineți indiciul parolei principale" + "message": "Obținere indiciu parolă principală" }, "continue": { "message": "Continuare" @@ -132,11 +132,11 @@ "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." }, "yourAccountsFingerprint": { - "message": "Fraza amprentă a contului", + "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." }, "twoStepLogin": { - "message": "Autentificare în doi pași" + "message": "Autentificare în două etape" }, "logOut": { "message": "Deconectare" @@ -166,7 +166,7 @@ "message": "Dosare" }, "noFolders": { - "message": "Nu există dosare de afișat." + "message": "Nu există niciun dosar de afișat." }, "helpFeedback": { "message": "Ajutor și feedback" @@ -175,7 +175,7 @@ "message": "Sincronizare" }, "syncVaultNow": { - "message": "Sincronizați seiful imediat" + "message": "Sincronizare seif acum" }, "lastSync": { "message": "Ultima sincronizare:" @@ -188,10 +188,10 @@ "description": "Short for 'Password Generator'." }, "passGenInfo": { - "message": "Generează automat parole puternice, unice pentru datele de conectare." + "message": "Generează automat parole unice și puternice pentru autentificările dvs." }, "bitWebVault": { - "message": "Seif bitwarden Web" + "message": "Seif web Bitwarden" }, "importItems": { "message": "Import elemente" @@ -212,44 +212,44 @@ "message": "Lungime" }, "numWords": { - "message": "Number of Words" + "message": "Număr de cuvinte" }, "wordSeparator": { - "message": "Word Separator" + "message": "Separator de cuvinte" }, "capitalize": { - "message": "Majuscule", + "message": "Se folosesc majuscule inițiale", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Include număr" + "message": "Se includ cifre" }, "minNumbers": { - "message": "Număr minim de caractere" + "message": "Minimum de cifre" }, "minSpecial": { - "message": "Număr minim de caractere speciale" + "message": "Minim de caractere speciale" }, "avoidAmbChar": { - "message": "Evitare caractere ambigue" + "message": "Se evită caracterele ambigue" }, "searchVault": { - "message": "Căutaţi în seif" + "message": "Căutare în seif" }, "edit": { "message": "Editare" }, "view": { - "message": "Vizualizare" + "message": "Afișare" }, "noItemsInList": { - "message": "Nu există niciun element de afișat." + "message": "Nu există niciun articol de afișat." }, "itemInformation": { "message": "Informații de autentificare" }, "username": { - "message": "Nume de utilizator" + "message": "Nume utilizator" }, "password": { "message": "Parolă" @@ -276,13 +276,13 @@ "message": "Ștergere articol" }, "viewItem": { - "message": "Vizualizare articol" + "message": "Afișare articol" }, "launch": { "message": "Lansare" }, "website": { - "message": "Site web" + "message": "Sait web" }, "toggleVisibility": { "message": "Comutare vizibilitate" @@ -300,16 +300,16 @@ "message": "Vă rugăm să luați în considerare să ne ajutați cu o recenzie bună!" }, "browserNotSupportClipboard": { - "message": "Browserul dvs. web nu acceptă copierea ușoară în clipboard. Copiați manual." + "message": "Browserul dvs. nu acceptă copierea în clipboard. Transcrieți datele manual." }, "verifyMasterPassword": { "message": "Verificare parolă principală" }, "yourVaultIsLocked": { - "message": "Seiful dvs. este blocat. Verificaţi parola principală pentru a continua." + "message": "Seiful dvs. este blocat. Verificați parola principală pentru a continua." }, "unlock": { - "message": "Deblochează" + "message": "Deblocare" }, "loggedInAsOn": { "message": "Autentificat ca $EMAIL$ în $HOSTNAME$.", @@ -325,10 +325,10 @@ } }, "invalidMasterPassword": { - "message": "Parola principală este incorectă" + "message": "Parolă principală incorectă" }, "vaultTimeout": { - "message": "Expirarea seifului" + "message": "Expirare seif" }, "lockNow": { "message": "Blocare imediată" @@ -367,7 +367,7 @@ "message": "4 ore" }, "onLocked": { - "message": "La blocarea computerului" + "message": "La blocarea dispozitivului" }, "onRestart": { "message": "La repornirea browserului" @@ -382,31 +382,31 @@ "message": "S-a produs o eroare" }, "emailRequired": { - "message": "Adresa de e-mail este necesară." + "message": "Este necesară adresa de e-mail." }, "invalidEmail": { - "message": "Adresa de email greșită." + "message": "Adresă de e-mail greșită." }, "masterPassRequired": { "message": "Este necesară parola principală." }, "masterPassLength": { - "message": "Parola principală trebuie să fie de cel puțin 8 caractere." + "message": "Parola principală trebuie să conțină minimum 8 caractere." }, "masterPassDoesntMatch": { - "message": "Confirmarea parolei principale nu se potrivește." + "message": "Parola principală și confirmarea ei nu coincid!" }, "newAccountCreated": { - "message": "Contul a fost creat! Acum vă puteţi autentifica." + "message": "Noul dvs. cont a fost creat! Acum vă puteți autentifica." }, "masterPassSent": { "message": "V-am trimis un e-mail cu indiciul parolei principale." }, "verificationCodeRequired": { - "message": "Codul de verificare este necesar." + "message": "Este necesar codul de verificare." }, "valueCopied": { - "message": " s-a copiat", + "message": " $VALUE$ s-a copiat", "description": "Value has been copied to the clipboard.", "placeholders": { "value": { @@ -416,7 +416,7 @@ } }, "autofillError": { - "message": "Nu se pot completa automat datele de autentificare selectate în această pagină. În schimb, puteți copia și lipi numele de utilizator și/sau parola." + "message": "Nu se pot auto-completa datele de conectare pentru această pagină. În schimb, puteți copia și lipi aceste date." }, "loggedOut": { "message": "Deconectat" @@ -425,7 +425,7 @@ "message": "Sesiunea de autentificare a expirat." }, "logOutConfirmation": { - "message": "Sunteți sigur că doriți să vă deconectați?" + "message": "Sigur doriți să vă deconectați?" }, "yes": { "message": "Da" @@ -434,10 +434,10 @@ "message": "Nu" }, "unexpectedError": { - "message": "A apărut o eroare neașteptată." + "message": "A survenit o eroare neașteptată." }, "nameRequired": { - "message": "Numele este obligatoriu." + "message": "Numele utilizator este obligatoriu." }, "addedFolder": { "message": "Dosar adăugat" @@ -446,25 +446,25 @@ "message": "Schimbare parolă principală" }, "changeMasterPasswordConfirmation": { - "message": "Puteţi modifica parola principală pe site-ul web bitwarden.com. Doriţi să vizitaţi site-ul acum?" + "message": "Puteți modifica parola principală în seiful web bitwarden.com. Doriți să vizitați saitul acum?" }, "twoStepLoginConfirmation": { - "message": "Autentificarea în două etape face ca contul dvs. să fie mai sigur, solicitând să introduceți un cod de securitate dintr-o aplicație de autentificare ori de câte ori vă conectați. Autentificarea în două etape poate fi activată în seiful web bitwarden.com. Doriți să vizitați site-ul acum?" + "message": "Autentificarea în două etape întărește siguranța contului dvs. prin solicitarea unei confirmări de autentificare cu un alt dispozitiv, cum ar fi: o cheie de securitate, o aplicație de autentificare, un SMS, un apel telefonic sau un e-mail. Autentificarea în două etape poate fi activată în seiful web bitwarden.com. Doriți să vizitați saitul acum?" }, "editedFolder": { "message": "Dosar editat" }, "deleteFolderConfirmation": { - "message": "Sunteți sigur că vreți să ștergeți dosarul?" + "message": "Sigur doriți să ștergeți dosarul?" }, "deletedFolder": { - "message": "Dosar şters" + "message": "Dosar șters" }, "gettingStartedTutorial": { - "message": "Noțiuni de bază" + "message": "Tutorial introductiv" }, "gettingStartedTutorialVideo": { - "message": "Urmăriți introducerea noastră pentru a începe să învățați cum să beneficiați cât mai mult de extensia browserului." + "message": "Urmăriți tutorialul nostru pentru a afla cum să beneficiați cât mai mult de această extensie a browserului." }, "syncingComplete": { "message": "Sincronizare completă" @@ -473,7 +473,7 @@ "message": "Sincronizare eșuată" }, "passwordCopied": { - "message": "Parolă copiată" + "message": "Parola s-a copiat" }, "uri": { "message": "URI" @@ -492,56 +492,56 @@ "message": "URI nou" }, "addedItem": { - "message": "Element adăugat" + "message": "Articol adăugat" }, "editedItem": { - "message": "Element editat" + "message": "Articol editat" }, "deleteItemConfirmation": { - "message": "Sigur ștergeți acest articol?" + "message": "Sigur doriți să ștergeți acest articol?" }, "deletedItem": { - "message": "Element șters" + "message": "Articolul a fost trimis în coșul de reciclare" }, "overwritePassword": { "message": "Modificare parolă" }, "overwritePasswordConfirmation": { - "message": "Sunteţi sigur că doriţi să suprascrieţi parola curentă?" + "message": "Sigur doriți să modificați parola curentă?" }, "searchFolder": { - "message": "Căutare dosar" + "message": "Căutare în dosar" }, "searchCollection": { - "message": "Căutare colecție" + "message": "Căutare în colecție" }, "searchType": { - "message": "Scrieți ca să căutați" + "message": "Căutare în tipuri" }, "noneFolder": { - "message": "Niciun dosar", + "message": "Fără dosar", "description": "This is the folder for uncategorized items" }, "disableAddLoginNotification": { - "message": "Dezactivare \"Notificare de adăugare a datelor de autentificare\"" + "message": "Dezactivare \"Notificare de adăugare a autentificărilor\"" }, "addLoginNotificationDesc": { - "message": "\"Notificarea de adăugare a datelor de autentificare\" vă solicită automat salvarea noilor conturi în seiful dvs. de fiecare dată când vă conectați pentru prima dată cu conturile respective." + "message": "\"Notificarea de adăugare a autentificării\" vă solicită automat salvarea noilor conturi în seif de fiecare dată când vă conectați la ele pentru prima dată." }, "dontShowCardsCurrentTab": { - "message": "Don't Show Cards on Tab Page" + "message": "Nu se afișează carduri în pagina filei curente" }, "dontShowCardsCurrentTabDesc": { - "message": "Elementele dvs. de tip card din seif sunt listate în pagina 'Tab-ul curent' pentru acces ușor la auto-completare." + "message": "Informațiile de tip card din seiful dvs. sunt afișate în pagina din \"Fila curentă\" pentru acces ușor la auto-completare." }, "dontShowIdentitiesCurrentTab": { - "message": "Don't Show Identities on Tab Page" + "message": "Nu se afișează identități în pagina filei curente" }, "dontShowIdentitiesCurrentTabDesc": { - "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + "message": "Informațiile de tip identitate din seiful dvs. sunt afișate în pagina din \"Fila curentă\" pentru acces ușor la auto-completare." }, "clearClipboard": { - "message": "Goliți Clipboard-ul", + "message": "Golire clipboard", "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "clearClipboardDesc": { @@ -549,38 +549,38 @@ "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { - "message": "Ar trebui ca bitwarden să memoreze această parolă pentru dvs.?" + "message": "Ar trebui ca Bitwarden să memoreze această parolă pentru dvs.?" }, "notificationAddSave": { "message": "Da, salvează acum" }, "notificationNeverSave": { - "message": "Niciodată pentru acest site" + "message": "Niciodată pentru acest sait" }, "disableChangedPasswordNotification": { - "message": "Disable Changed Password Notification" + "message": "Dezactivare notificare de modificare a parolei" }, "disableChangedPasswordNotificationDesc": { - "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + "message": "\"Notificarea de modificare a parolei\" vă propune automat să actualizați o parolă din seif oricând se detectează că ați modificat-o pe un sait." }, "notificationChangeDesc": { - "message": "Doriţi să actualizaţi această parolă în Bitwarden?" + "message": "Doriți să actualizați această parolă în Bitwarden?" }, "notificationChangeSave": { - "message": "Yes, Update Now" + "message": "Da, actualizează acum" }, "disableContextMenuItem": { "message": "Dezactivare opțiuni meniu contextual" }, "disableContextMenuItemDesc": { - "message": "Opțiunile meniului contextual oferă acces rapid la generarea de parole și la autentificările pentru site-ul web din fila curentă." + "message": "Opțiunile din meniul contextual oferă acces rapid la generarea de parole și la autentificările pentru saitul web din fila curentă." }, "defaultUriMatchDetection": { "message": "Detectare de potrivire URI implicită", "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "Alege modul în care se gestionează detectarea de potrivire de URI pentru autentificări la acțiuni precum cea de auto-completare." + "message": "Alege modul implicit de gestionare a detectării de potrivire URI pentru conectări când se efectuează acțiuni precum auto-completarea." }, "theme": { "message": "Temă" @@ -589,49 +589,55 @@ "message": "Schimbă tema de culori a aplicației." }, "dark": { - "message": "Întunecată", + "message": "Întunecat", "description": "Dark color" }, "light": { - "message": "Luminoasă", + "message": "Luminos", "description": "Light color" }, "exportVault": { "message": "Export seif" }, "fileFormat": { - "message": "File Format" + "message": "Format fișier" }, "warning": { "message": "AVERTISMENT", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { - "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + "message": "Acest export conține datele dvs. din seif în format necriptat. Nu ar trebui să stocați sau să trimiteți fișierul pe canale nesecurizate (cum ar fi e-mail). Ștergeți-l imediat după ce nu îl mai folosiți." + }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." }, "exportMasterPassword": { - "message": "Introduceţi parola principală pentru a exporta datele din seif." + "message": "Introduceți parola principală pentru a exporta datele din seif." }, "shared": { - "message": "Partajate" + "message": "Partajat" }, "shareVault": { "message": "Partajare seif" }, "shareVaultConfirmation": { - "message": "Bitwarden vă permite să vă împărtășiți seiful cu alte persoane utilizând un cont pentru organizații. Doriți să vizitați site-ul bitwarden.com pentru a afla mai multe?" + "message": "Bitwarden vă permite să vă partajați seiful cu alte persoane utilizând un cont pentru organizații. Doriți să vizitați saitul bitwarden.com pentru a afla mai multe?" }, "shareItem": { - "message": "Distribuie element" + "message": "Partajare articol" }, "share": { - "message": "Distribuie" + "message": "Partajare" }, "sharedItem": { - "message": "Element distribuit" + "message": "Articol partajat" }, "shareDesc": { - "message": "Choose an organization that you wish to share this item with. Sharing transfers ownership of the item to the organization. You will no longer be the direct owner of this item once it has been shared." + "message": "Alegeți o organizație cu care doriți să partajați acest articol. Partajarea transferă proprietatea asupra articolului către organizație. Nu veți mai fi proprietarul direct al acestuia după ce a fost partajat." }, "learnMore": { "message": "Aflați mai multe" @@ -646,91 +652,91 @@ "message": "Copiere cod de verificare" }, "attachments": { - "message": "Ataşamente" + "message": "Atașamente" }, "deleteAttachment": { "message": "Ștergere atașament" }, "deleteAttachmentConfirmation": { - "message": "Sunteţi sigur că doriţi să ştergeţi acest atașament?" + "message": "Sigur doriți să ștergeți acest atașament?" }, "deletedAttachment": { - "message": "Ataşament şters" + "message": "Atașament șters" }, "newAttachment": { - "message": "Adăugare atașament" + "message": "Adăugare atașament nou" }, "noAttachments": { - "message": "Niciun ataşament." + "message": "Niciun atașament." }, "attachmentSaved": { - "message": "Ataşamentul a fost salvat." + "message": "Atașamentul a fost salvat." }, "file": { - "message": "Fişier" + "message": "Fișier" }, "selectFile": { - "message": "Selectați un fișier." + "message": "Selectare fișier." }, "maxFileSize": { - "message": "Mărimea maximă a fişierului este de 100 MB." + "message": "Mărimea maximă a fișierului este de 100 MB." }, "featureUnavailable": { "message": "Caracteristică indisponibilă" }, "updateKey": { - "message": "Veți putea utiliza această caracteristică după ce veți actualiza cheia de criptare." + "message": "Nu puteți utiliza această caracteristică înainte de a actualiza cheia de criptare." }, "premiumMembership": { "message": "Membru Premium" }, "premiumManage": { - "message": "Gestionare statut" + "message": "Gestionare statut de membru" }, "premiumManageAlert": { - "message": "Puteţi gestiona apartenenţa pe site-ul web bitwarden.com. Doriţi să vizitaţi site-ul acum?" + "message": "Vă puteți gestiona statutul de membru pe saitul web bitwarden.com. Doriți să vizitați saitul acum?" }, "premiumRefresh": { - "message": "Actualizare statut" + "message": "Actualizare statut de membru" }, "premiumNotCurrentMember": { - "message": "Nu sunteţi în prezent un membru premium." + "message": "În prezent nu sunteți un membru Premium." }, "premiumSignUpAndGet": { - "message": "Înscrieţi-vă pentru un abonament premium şi obţineţi:" + "message": "Înscrieți-vă pentru statutul de membru Premium și obțineți:" }, "ppremiumSignUpStorage": { - "message": "1 GB spațiu de stocare a fișierelor criptate." + "message": "1 GB spațiu de stocare criptat pentru atașamente de fișiere." }, "ppremiumSignUpTwoStep": { - "message": "Opțiuni adiţionale de conectare în doi pași, cum ar fi YubiKey, FIDO U2F şi Duo." + "message": "Opțiuni adiționale de conectare în două etape, cum ar fi YubiKey, FIDO U2F și Duo." }, "ppremiumSignUpReports": { - "message": "Igiena parolelor, sănătate cont, și raporturi de breșe de date pentru a vă păstra seiful în siguranță." + "message": "Rapoarte privind igiena parolelor, sănătatea contului și breșele de date pentru a vă păstra seiful în siguranță." }, "ppremiumSignUpTotp": { - "message": "Generatorul codului de verificare TOTP (2FA) pentru autentificările din seif." + "message": "Generator de cod de verificare TOTP (2FA) pentru autentificările din seif." }, "ppremiumSignUpSupport": { - "message": "Suport pentru clienți prioritari." + "message": "Asistență prioritară pentru clienți." }, "ppremiumSignUpFuture": { - "message": "Toate caracteristicile premium viitoare. Mai multe în curând!" + "message": "Toate caracteristicile Premium viitoare. Mai multe în curând!" }, "premiumPurchase": { - "message": "Achiziționați un abonament Premium" + "message": "Achiziționare abonament Premium" }, "premiumPurchaseAlert": { - "message": "Puteţi procura un abonament premium pe site-ul web bitwarden.com. Doriţi să vizitaţi site-ul acum?" + "message": "Puteți achiziționa un abonament premium pe saitul web bitwarden.com. Doriți să vizitați saitul acum?" }, "premiumCurrentMember": { - "message": "Sunteţi un membru premium!" + "message": "Sunteți un membru Premium!" }, "premiumCurrentMemberThanks": { - "message": "Vă mulțumim pentru susținerea bitwarden." + "message": "Vă mulțumim pentru susținerea Bitwarden." }, "premiumPrice": { - "message": "Totul pentru doar %price% / an!", + "message": "Totul pentru doar %price% /an!", "placeholders": { "price": { "content": "$1", @@ -739,25 +745,25 @@ } }, "refreshComplete": { - "message": "Reîmprospătare completă" + "message": "Actualizare completă" }, "disableAutoTotpCopy": { "message": "Dezactivare copiere automată a codului TOTP" }, "disableAutoTotpCopyDesc": { - "message": "Dacă datele dvs. de conectare au o cheie de autentificare atașată, codul de verificare TOTP este copiat automat în clipboard de fiecare dată când efectuați automat completarea datelor de conectare." + "message": "Dacă autentificarea dvs. are o cheie atașată, codul de verificare TOTP este copiat în clipboard de fiecare dată când efectuați auto-completarea datelor de conectare." }, "premiumRequired": { "message": "Este necesară versiunea Premium" }, "premiumRequiredDesc": { - "message": "Un abonament premium este necesar pentru a utiliza această caracteristică." + "message": "Este necesar statutul de membru Premium pentru a utiliza această caracteristică." }, "enterVerificationCodeApp": { - "message": "Introduceţi codul de verificare din 6 cifre din aplicaţia de autentificare." + "message": "Introducere cod de verificare din 6 cifre din aplicația de autentificare." }, "enterVerificationCodeEmail": { - "message": "Introduceți codul de verificare din 6 cifre, care a fost trimis prin e-mail la", + "message": "Introducere cod de verificare din 6 cifre care a fost trimis prin e-mail la $EMAIL$.", "placeholders": { "email": { "content": "$1", @@ -766,7 +772,7 @@ } }, "verificationCodeEmailSent": { - "message": "E-mail de verificare a fost trimis la $EMAIL$.", + "message": "E-mailul de verificare a fost trimis la $EMAIL$.", "placeholders": { "email": { "content": "$1", @@ -775,34 +781,34 @@ } }, "rememberMe": { - "message": "Memorizare" + "message": "Memorare autentificare" }, "sendVerificationCodeEmailAgain": { - "message": "Trimitere e-mail cu codul de verificare din nou" + "message": "Retrimitere e-mail cu codul de verificare" }, "useAnotherTwoStepMethod": { - "message": "Utilizaţi o altă metodă de autentificare în două etape" + "message": "Utilizare de metodă diferită de autentificare în două etape" }, "insertYubiKey": { - "message": "Introduceți YubiKey în portul USB al calculatorului, apoi atingeți butonul acestuia." + "message": "Introduceți YubiKey în portul USB al calculatorului apoi apăsați butonul acestuia." }, "insertU2f": { - "message": "Introduceți cheia de securitate în portul USB al computerului. Dacă are un buton, atingeți-l." + "message": "Introduceți cheia de securitate în portul USB al computerului. Dacă are un buton, apăsați-l." }, "loginUnavailable": { - "message": "Autentificare indisponibilă" + "message": "Conectare indisponibilă" }, "noTwoStepProviders": { - "message": "Acest cont are activată autentificarea în două etape, dar niciunul dintre furnizorii configurați pentru aceasta nu este acceptat de acest navigator web." + "message": "Acest cont are activată autentificarea în două etape, dar niciunul dintre furnizorii configurați pentru aceasta nu este acceptat de acest browser web." }, "noTwoStepProviders2": { - "message": "Utilizați un browser web acceptat (cum ar fi Chrome) și/sau adăugați furnizori suplimentari care sunt mai bine susținuți în browserele web (cum ar fi o aplicație de autentificare)." + "message": "Utilizați un browser acceptat (cum ar fi Chrome) și/sau adăugați furnizori suplimentari mai bine susținuți de browserele web (cum ar fi o aplicație de autentificare)." }, "twoStepOptions": { "message": "Opțiuni de autentificare în două etape" }, "recoveryCodeDesc": { - "message": "Ai pierdut accesul la toți furnizorii de autentificare în doi paşi? Utilizați codul de recuperare pentru a dezactiva toți furnizorii de autentificare în doi paşi din contul dvs." + "message": "Ați pierdut accesul la toți furnizorii de autentificare în două etape? Utilizați codul de recuperare pentru a dezactiva toți acești furnizori din contul dvs." }, "recoveryCodeTitle": { "message": "Cod de recuperare" @@ -811,25 +817,25 @@ "message": "Aplicație de autentificare" }, "authenticatorAppDesc": { - "message": "Utilizaţi o aplicaţie de autentificare (cum ar fi Authy sau Google Authenticator) pentru a genera codurile de verificare bazate de timp.", + "message": "Utilizați o aplicație de autentificare (cum ar fi Authy sau Google Authenticator) pentru a genera codurile de verificare bazate pe timp.", "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." }, "yubiKeyTitle": { "message": "Cheie de securitate YubiKey OTP" }, "yubiKeyDesc": { - "message": "Utilizați un YubiKey pentru a accesa contul dvs. Funcționează cu dispozitivele YubiKey 4, 4 Nano, 4C și NEO." + "message": "Utilizați YubiKey pentru a accesa contul dvs. Funcționează cu dispozitivele YubiKey 4, 4 Nano, 4C și NEO." }, "duoDesc": { - "message": "Verificați cu Duo Security utilizând aplicația Duo Mobile, SMS, apel sau cheia de securitate U2F.", + "message": "Verificați cu Duo Security utilizând aplicația Duo Mobile, SMS, apel telefonic sau cheia de securitate U2F.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "duoOrganizationDesc": { - "message": "Verificați cu Duo Security pentru organizaţia dvs. utilizând aplicația Duo Mobile, SMS, apel telefonic sau cheia de securitate U2F.", + "message": "Verificați cu Duo Security pentru organizația dvs. utilizând aplicația Duo Mobile, SMS, apel telefonic sau cheia de securitate U2F.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "u2fDesc": { - "message": "Utilizați orice cheie de securitate activată FIDO U2F pentru a accesa contul dvs." + "message": "Utilizați orice cheie de securitate FIDO U2F activată pentru a accesa contul dvs." }, "u2fTitle": { "message": "Cheie de securitate FIDO U2F" @@ -844,7 +850,7 @@ "message": "Mediu de găzduire personal" }, "selfHostedEnvironmentFooter": { - "message": "Specificați URL-ul implementări locale, personale a bitwarden." + "message": "Specificați URL-ul de bază al implementări Bitwarden găzduită local." }, "customEnvironment": { "message": "Mediu personalizat" @@ -859,22 +865,22 @@ "message": "URL server API" }, "webVaultUrl": { - "message": "URL seif web" + "message": "URL server seif Web" }, "identityUrl": { "message": "URL server de identificare" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "URL server de notificări" }, "iconsUrl": { - "message": "URL server de pictograme" + "message": "URL server de iconuri" }, "environmentSaved": { - "message": "URL-urile mediului bitwarden au fost salvate." + "message": "URL-urile mediului au fost salvate." }, "enableAutoFillOnPageLoad": { - "message": "Activare completare automată la încărcarea paginii" + "message": "Activare auto-completare la încărcarea paginii" }, "enableAutoFillOnPageLoadDesc": { "message": "Dacă este detectat un formular de autentificare, se efectuează automat o completare a acestuia la încărcarea paginii." @@ -883,25 +889,25 @@ "message": "În acest moment, aceasta funcțiune este experimentală. O puteți folosi pe propria răspundere." }, "commandOpenPopup": { - "message": "Deschide seiful pop-up" + "message": "Deschidere seif pop-up" }, "commandOpenSidebar": { - "message": "Deschide seiful în bara laterală" + "message": "Deschidere seif în bara laterală" }, "commandAutofillDesc": { - "message": "Completare automată a ultimelor date de autentificare utilizate pentru saitul web curent." + "message": "Auto-completare a ultimei autentificări utilizate pe saitul web curent" }, "commandGeneratePasswordDesc": { - "message": "Generare parolă aleatorie și copiere în clipboard." + "message": "Generare parolă aleatorie și copiere în clipboard" }, "commandLockVaultDesc": { - "message": "Blochează seiful" + "message": "Blocare seif" }, "privateModeMessage": { - "message": "Din păcate această fereastră nu este disponibilă în modul de navigare privat pentru acest navigator." + "message": "Din păcate, această fereastră nu este disponibilă în modul privat pentru acest browser." }, "customFields": { - "message": "Câmpuri personalizate" + "message": "Câmpuri particularizate" }, "copyValue": { "message": "Copiere valoare" @@ -910,31 +916,31 @@ "message": "Valoare" }, "newCustomField": { - "message": "Câmp nou" + "message": "Câmp nou particularizat" }, "dragToSort": { - "message": "Trageţi pentru sortare" + "message": "Tragere pentru sortare" }, "cfTypeText": { "message": "Text" }, "cfTypeHidden": { - "message": "Text cu caractere ascunse" + "message": "Ascuns" }, "cfTypeBoolean": { - "message": "Bifat/Nebifat, Da/Nu" + "message": "Valoare logică" }, "popup2faCloseMessage": { - "message": "Dacă dați clic pentru a verifica e-mailul în afara acestei casete, aceasta se va închide. Doriți să afișați aceste informații într-o filă nouă, astfel încât aceasta să nu se închidă?" + "message": "Dând clic în afara ferestrei pop-up pentru a vă verifica e-mailul pentru codul de verificare, aceasta se va închide. Doriți să deschideți acest pop-up într-o fereastră nouă, astfel încât aceasta să nu se închidă?" }, "popupU2fCloseMessage": { - "message": "Acest browser nu poate prelucra cererile U2F în această fereastră pop-up. Doriți să deschideți această fereastră într-o fereastră nouă, astfel încât să vă puteți autentifica folosind U2F?" + "message": "Acest browser nu poate procesa cererile U2F în această fereastră pop-up. Doriți să deschideți acest pop-up într-o fereastră nouă, astfel încât să vă puteți conecta utilizând U2F?" }, "disableFavicon": { - "message": "Dezactivare pictograme" + "message": "Dezactivare iconuri sait" }, "disableFaviconDesc": { - "message": "Pictogramele oferă o imagine recognoscibilă alături de fiecare element de conectare din seiful dvs." + "message": "Iconurile saiturilor oferă o imagine identificabilă lângă fiecare element de conectare din seiful dvs." }, "cardholderName": { "message": "Deținător card" @@ -991,7 +997,7 @@ "message": "decembrie" }, "securityCode": { - "message": "Cod CVV2/CVC2" + "message": "Cod de securitate (CVV/CVC)" }, "ex": { "message": "ex." @@ -1027,10 +1033,10 @@ "message": "Companie" }, "ssn": { - "message": "CNP" + "message": "Cod Numeric Personal" }, "passportNumber": { - "message": "Număr CI/pașaport" + "message": "Număr CI / Pașaport" }, "licenseNumber": { "message": "Număr licență" @@ -1069,13 +1075,13 @@ "message": "Tip" }, "typeLogin": { - "message": "Autentificare" + "message": "Conectare" }, "typeLogins": { - "message": "Autentificări" + "message": "Conectări" }, "typeSecureNote": { - "message": "Mențiune securizată" + "message": "Notă protejată" }, "typeCard": { "message": "Card" @@ -1108,20 +1114,20 @@ "message": "Identități" }, "logins": { - "message": "Date de autentificare" + "message": "Conectări" }, "secureNotes": { - "message": "Notițe securizate" + "message": "Note protejate" }, "clear": { - "message": "Ştergere", + "message": "Ștergere", "description": "To clear something out. example: To clear browser history." }, "checkPassword": { - "message": "Verifică dacă parola a fost dezvăluită." + "message": "Verificați dacă parola a fost dezvăluită." }, "passwordExposed": { - "message": "This password has been exposed in data breaches. You should change it.", + "message": "Această parolă a fost dezvăluită de $VALUE$ ori în breșe de date. Ar trebui să o schimbați.", "placeholders": { "value": { "content": "$1", @@ -1130,7 +1136,7 @@ } }, "passwordSafe": { - "message": "Aceasta parola nu a fost găsită în nicio breșă de date cunoscută. Ar trebui să fie sigură pentru a fi utilizată." + "message": "Aceasta parola nu a fost găsită în nicio breșă de date cunoscută. Ar trebui să fie sigură de utilizat." }, "baseDomain": { "message": "Domeniu de bază" @@ -1150,22 +1156,22 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Detectare de potriviri", + "message": "Detectare de potrivire", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { - "message": "Detectarea de potriviri implicite", + "message": "Detectare de potrivire implicită", "description": "Default URI match detection for auto-fill." }, "toggleOptions": { "message": "Activare/dezactivare opțiuni" }, "toggleCurrentUris": { - "message": "Comută URI-urile curente", + "message": "Comutare URI-uri curente", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { - "message": "URI-ul actual", + "message": "URI curent", "description": "The URI of one of the current open tabs in the browser." }, "organization": { @@ -1179,30 +1185,30 @@ "message": "Toate elementele" }, "noPasswordsInList": { - "message": "Nu există parole de afișat." + "message": "Nicio parolă de afișat." }, "remove": { - "message": "Ștergeți" + "message": "Ștergere" }, "default": { "message": "Implicit" }, "dateUpdated": { - "message": "Actualizat", + "message": "S-a actualizat", "description": "ex. Date this item was updated" }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Parola s-a actualizat", "description": "ex. Date this password was updated" }, "neverLockWarning": { - "message": "Sunteți sigur că doriți folosirea opțiunii \"Niciodată\"? Setarea opțiunii de blocare pe \"Niciodată\" salvează cheia de criptare pe dispozitivul dumneavoastră. Dacă folosiți această opțiune ar trebui să vă asigurați că vă păstrați dispozitivul protejat corespunzător." + "message": "Sigur doriți să utilizați opțiunea \"Niciodată\"? Setarea opțiunii de blocare pe \"Niciodată\" vă salvează cheia de criptare pe dispozitiv. Dacă utilizați această opțiune ar trebui să vă asigurați că vă păstrați dispozitivul protejat corespunzător." }, "noOrganizationsList": { - "message": "Nu aparțineti niciunei organizații. Organizațiile vă permit să distribuiți elemente cu alți utilizatori." + "message": "Nu aparțineți niciunei organizații. Organizațiile vă permit să partajați în siguranță articole cu alți utilizatori." }, "noCollectionsInList": { - "message": "Nu există colecții în listă." + "message": "Nu există nicio colecție de afișat." }, "ownership": { "message": "Proprietar" @@ -1223,10 +1229,10 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "Parolă principală slabă" }, "weakMasterPasswordDesc": { - "message": "Parola principală aleasă este slabă. Ar trebui folosită o parolă (sau o frază de access) principală puternică pentru a vă proteja corespunzător contul Bitwarden. Sunteți sigur că doriți să folosiți această parola principală?" + "message": "Parola principală aleasă este slabă. Ar trebui să folosiți o parolă principală (sau o frază de acces) puternică pentru a vă proteja corespunzător contul Bitwarden. Sigur doriți să folosiți această parolă principală?" }, "pin": { "message": "PIN", @@ -1236,7 +1242,7 @@ "message": "Deblocare cu codul PIN" }, "setYourPinCode": { - "message": "Setați codul PIN de deblocare Bitwarden. Setările codului PIN vor fi resetate dacă vă deconectați vreodată din aplicație." + "message": "Stabiliți codul PIN de deblocare Bitwarden. Setările codului PIN vor fi reinițializate dacă vă deconectați vreodată din aplicație." }, "pinRequired": { "message": "Codul PIN este necesar." @@ -1245,19 +1251,28 @@ "message": "Codul PIN este invalid." }, "verifyPin": { - "message": "Verificaţi codul PIN" + "message": "Verificare cod PIN" }, "yourVaultIsLockedPinCode": { "message": "Seiful dvs. este blocat. Verificați codul PIN pentru a continua." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { - "message": "Blocare cu parola principală după ce browserul repornește," + "message": "Blocare cu parola principală la repornirea browserului" }, "selectOneCollection": { - "message": "Este nevoie să alegeți măcar o colecție." + "message": "Trebuie să selectați cel puțin o colecție." }, "cloneItem": { - "message": "Clonează articolul" + "message": "Clonare articol" }, "clone": { "message": "Clonare" @@ -1273,32 +1288,32 @@ "description": "Verb form: to make secure or inaccesible by" }, "trash": { - "message": "Trash", + "message": "Coș de reciclare", "description": "Noun: a special folder to hold deleted items" }, "searchTrash": { - "message": "Căutați în trash" + "message": "Căutare în coșul de reciclare" }, "permanentlyDeleteItem": { - "message": "Șterge permanent elementul" + "message": "Ștergere definitivă a articolului" }, "permanentlyDeleteItemConfirmation": { - "message": "Sigur doriți să ștergeți permanent acest articol?" + "message": "Sigur doriți să ștergeți definitiv acest articol?" }, "permanentlyDeletedItem": { - "message": "Articol șters permanent" + "message": "Articolul a fost șters definitiv" }, "restoreItem": { - "message": "Restabiliți articolul" + "message": "Restabilire articol" }, "restoreItemConfirmation": { - "message": "Sigur doriți să restaurați acest articol?" + "message": "Sigur doriți să restabiliți acest articol?" }, "restoredItem": { - "message": "Articol restaurat" + "message": "Articol restabilit" }, "vaultTimeoutLogOutConfirmation": { - "message": "Deconectarea va elimina accesul la seiful dvs. și necesită autentificare online după perioada de expirare. Sunteți sigur că doriți să utilizați această setare?" + "message": "După expirare, accesul la seiful dvs. va fi restricționat și va fi necesară autentificarea online. Sigur doriți să utilizați această setare?" }, "vaultTimeoutLogOutConfirmationTitle": { "message": "Confirmare acțiune la expirare" @@ -1307,13 +1322,13 @@ "message": "Auto-completare și Salvare" }, "autoFillSuccessAndSavedUri": { - "message": "Articol cu Auto-completare și URl Salvat" + "message": "Articolul s-a completat automat și URl-ul s-a salvat" }, "autoFillSuccess": { - "message": "Articol cu Auto-completare" + "message": "Articolul s-a completat automat" }, "setMasterPassword": { - "message": "Setați parola principală" + "message": "Setare parolă principală" }, "masterPasswordPolicyInEffect": { "message": "Una sau mai multe politici ale organizației necesită ca parola principală să îndeplinească următoarele cerințe:" @@ -1337,16 +1352,16 @@ } }, "policyInEffectUppercase": { - "message": "Conține unul sau mai multe caractere majuscule" + "message": "Unul sau mai multe caractere majuscule" }, "policyInEffectLowercase": { - "message": "Conține unul sau mai multe caractere minuscule" + "message": "Unul sau mai multe caractere minuscule" }, "policyInEffectNumbers": { - "message": "Conține unul sau mai multe numere" + "message": "Una sau mai multe cifre" }, "policyInEffectSpecial": { - "message": "Conține unul sau mai multe din următoarele caractere: $CHARS$", + "message": "Unul sau mai multe din următoarele caractere: $CHARS$", "placeholders": { "chars": { "content": "$1", @@ -1358,15 +1373,75 @@ "message": "Noua dvs. parolă principală nu îndeplinește cerințele politicii." }, "acceptPolicies": { - "message": "Bifând această casetă sunteți de acord cu următoarele:" + "message": "Dacă bifați această casetă sunteți de acord cu următoarele:" }, "acceptPoliciesError": { - "message": "Termenii Serviciului și Politica Intimității nu au fost recunoscute." + "message": "Termenii de utilizare și Politica de confidențialitate nu au fost recunoscute." }, "termsOfService": { - "message": "Termenii Serviciului" + "message": "Termeni de utilizare" }, "privacyPolicy": { - "message": "Politica Intimității" + "message": "Politică de confidențialitate" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 74edb4e881f0947721dde1a31b6ee44e13acd45f Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:29 -0500 Subject: [PATCH 08/73] New translations messages.json (Portuguese, Brazilian) --- src/_locales/pt_BR/messages.json | 81 ++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/src/_locales/pt_BR/messages.json b/src/_locales/pt_BR/messages.json index 4124dd4143..9a815c3cff 100644 --- a/src/_locales/pt_BR/messages.json +++ b/src/_locales/pt_BR/messages.json @@ -20,7 +20,7 @@ "message": "Iniciar Sessão" }, "enterpriseSingleSignOn": { - "message": "Início de sessão empresarial" + "message": "Iniciar Sessão Empresarial Única" }, "cancel": { "message": "Cancelar" @@ -498,10 +498,10 @@ "message": "Item editado" }, "deleteItemConfirmation": { - "message": "Você tem certeza que deseja excluir este item?" + "message": "Tem certeza de que pretende apagar este item?" }, "deletedItem": { - "message": "Item excluído" + "message": "Enviar item para lixeira" }, "overwritePassword": { "message": "Sobrescrever Senha" @@ -606,9 +606,15 @@ "message": "AVISO", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "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). Exclua o arquivo imediatamente após terminar de usá-lo." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Insira a sua senha mestra para exportar os dados do seu cofre." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "O seu cofre está bloqueado. Verifique o seu PIN para continuar." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Bloquear com senha mestra ao reiniciar o navegador" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Política de Privacidade" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From c13824f07a1d702abaec556986d2dc52dfb0cb92 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:31 -0500 Subject: [PATCH 09/73] New translations messages.json (Slovenian) --- src/_locales/sl/messages.json | 1447 +++++++++++++++++++++++++++++++++ 1 file changed, 1447 insertions(+) create mode 100644 src/_locales/sl/messages.json diff --git a/src/_locales/sl/messages.json b/src/_locales/sl/messages.json new file mode 100644 index 0000000000..a1b4aa76d2 --- /dev/null +++ b/src/_locales/sl/messages.json @@ -0,0 +1,1447 @@ +{ + "appName": { + "message": "Bitwarden" + }, + "extName": { + "message": "Bitwarden - Free Password Manager", + "description": "Extension name" + }, + "extDesc": { + "message": "A secure and free password manager for all of your devices.", + "description": "Extension description" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "login": { + "message": "Log In" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "cancel": { + "message": "Cancel" + }, + "close": { + "message": "Close" + }, + "submit": { + "message": "Submit" + }, + "emailAddress": { + "message": "Email Address" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "tab": { + "message": "Tab" + }, + "myVault": { + "message": "My Vault" + }, + "tools": { + "message": "Tools" + }, + "settings": { + "message": "Settings" + }, + "currentTab": { + "message": "Current Tab" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyNote": { + "message": "Copy Note" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number" + }, + "copySecurityCode": { + "message": "Copy Security Code" + }, + "autoFill": { + "message": "Auto-fill" + }, + "generatePasswordCopied": { + "message": "Generate Password (copied)" + }, + "noMatchingLogins": { + "message": "No matching logins." + }, + "vaultLocked": { + "message": "Vault is locked." + }, + "vaultLoggedOut": { + "message": "Vault is logged out." + }, + "autoFillInfo": { + "message": "There are no logins available to auto-fill for the current browser tab." + }, + "addLogin": { + "message": "Add a Login" + }, + "addItem": { + "message": "Add Item" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "continue": { + "message": "Continue" + }, + "verificationCode": { + "message": "Verification Code" + }, + "account": { + "message": "Account" + }, + "changeMasterPassword": { + "message": "Change Master Password" + }, + "fingerprintPhrase": { + "message": "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." + }, + "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." + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "logOut": { + "message": "Log Out" + }, + "about": { + "message": "About" + }, + "version": { + "message": "Version" + }, + "save": { + "message": "Save" + }, + "addFolder": { + "message": "Add Folder" + }, + "name": { + "message": "Name" + }, + "editFolder": { + "message": "Edit Folder" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "folders": { + "message": "Folders" + }, + "noFolders": { + "message": "There are no folders to list." + }, + "helpFeedback": { + "message": "Help & Feedback" + }, + "sync": { + "message": "Sync" + }, + "syncVaultNow": { + "message": "Sync Vault Now" + }, + "lastSync": { + "message": "Last Sync:" + }, + "passGen": { + "message": "Password Generator" + }, + "generator": { + "message": "Generator", + "description": "Short for 'Password Generator'." + }, + "passGenInfo": { + "message": "Automatically generate strong, unique passwords for your logins." + }, + "bitWebVault": { + "message": "Bitwarden Web Vault" + }, + "importItems": { + "message": "Import Items" + }, + "select": { + "message": "Select" + }, + "generatePassword": { + "message": "Generate Password" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "options": { + "message": "Options" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special" + }, + "avoidAmbChar": { + "message": "Avoid Ambiguous Characters" + }, + "searchVault": { + "message": "Search vault" + }, + "edit": { + "message": "Edit" + }, + "view": { + "message": "View" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "itemInformation": { + "message": "Item Information" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "favorite": { + "message": "Favorite" + }, + "notes": { + "message": "Notes" + }, + "note": { + "message": "Note" + }, + "editItem": { + "message": "Edit Item" + }, + "folder": { + "message": "Folder" + }, + "deleteItem": { + "message": "Delete Item" + }, + "viewItem": { + "message": "View Item" + }, + "launch": { + "message": "Launch" + }, + "website": { + "message": "Website" + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "manage": { + "message": "Manage" + }, + "other": { + "message": "Other" + }, + "rateExtension": { + "message": "Rate the Extension" + }, + "rateExtensionDesc": { + "message": "Please consider helping us out with a good review!" + }, + "browserNotSupportClipboard": { + "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + }, + "verifyMasterPassword": { + "message": "Verify Master Password" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "lockNow": { + "message": "Lock Now" + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Browser Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "errorOccurred": { + "message": "An error has occurred" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "autofillError": { + "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "nameRequired": { + "message": "Name is required." + }, + "addedFolder": { + "message": "Added folder" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "editedFolder": { + "message": "Edited folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "gettingStartedTutorial": { + "message": "Getting Started Tutorial" + }, + "gettingStartedTutorialVideo": { + "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "passwordCopied": { + "message": "Password copied" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchType": { + "message": "Search type" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "disableAddLoginNotification": { + "message": "Disable Add Login Notification" + }, + "addLoginNotificationDesc": { + "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." + }, + "dontShowCardsCurrentTab": { + "message": "Don't Show Cards on Tab Page" + }, + "dontShowCardsCurrentTabDesc": { + "message": "Card items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "dontShowIdentitiesCurrentTab": { + "message": "Don't Show Identities on Tab Page" + }, + "dontShowIdentitiesCurrentTabDesc": { + "message": "Identity items from your vault are listed on the 'Current Tab' page for easy auto-fill access." + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "notificationAddDesc": { + "message": "Should Bitwarden remember this password for you?" + }, + "notificationAddSave": { + "message": "Yes, Save Now" + }, + "notificationNeverSave": { + "message": "Never for this website" + }, + "disableChangedPasswordNotification": { + "message": "Disable Changed Password Notification" + }, + "disableChangedPasswordNotificationDesc": { + "message": "The \"Changed Password Notification\" automatically prompts you to update a login's password in your vault whenever it detects that you have changed it on a website." + }, + "notificationChangeDesc": { + "message": "Do you want to update this password in Bitwarden?" + }, + "notificationChangeSave": { + "message": "Yes, Update Now" + }, + "disableContextMenuItem": { + "message": "Disable Context Menu Options" + }, + "disableContextMenuItemDesc": { + "message": "Context menu options provide quick access to password generation and logins for the website in your current tab." + }, + "defaultUriMatchDetection": { + "message": "Default URI Match Detection", + "description": "Default URI match detection for auto-fill." + }, + "defaultUriMatchDetectionDesc": { + "message": "Choose the default way that URI match detection is handled for logins when performing actions such as auto-fill." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "shared": { + "message": "Shared" + }, + "shareVault": { + "message": "Share Your Vault" + }, + "shareVaultConfirmation": { + "message": "Bitwarden allows you to share your vault with others by using an organization account. Would you like to visit the bitwarden.com website to learn more?" + }, + "shareItem": { + "message": "Share Item" + }, + "share": { + "message": "Share" + }, + "sharedItem": { + "message": "Shared Item" + }, + "shareDesc": { + "message": "Choose an organization that you wish to share this item with. Sharing transfers ownership of the item to the organization. You will no longer be the direct owner of this item once it has been shared." + }, + "learnMore": { + "message": "Learn more" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "copyVerificationCode": { + "message": "Copy Verification Code" + }, + "attachments": { + "message": "Attachments" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "noAttachments": { + "message": "No attachments." + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 100 MB." + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "ppremiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "ppremiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "ppremiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "ppremiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "ppremiumSignUpSupport": { + "message": "Priority customer support." + }, + "ppremiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "disableAutoTotpCopy": { + "message": "Disable Automatic TOTP Copy" + }, + "disableAutoTotpCopyDesc": { + "message": "If your login has an authenticator key attached to it, the TOTP verification code is automatically copied to your clipboard whenever you auto-fill the login." + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "loginUnavailable": { + "message": "Login Unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + }, + "noTwoStepProviders2": { + "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery Code" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "u2fDesc": { + "message": "Use any FIDO U2F enabled security key to access your account." + }, + "u2fTitle": { + "message": "FIDO U2F Security Key" + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "enableAutoFillOnPageLoad": { + "message": "Enable Auto-fill On Page Load" + }, + "enableAutoFillOnPageLoadDesc": { + "message": "If a login form is detected, automatically perform an auto-fill when the web page loads." + }, + "experimentalFeature": { + "message": "This is currently an experimental feature. Use at your own risk." + }, + "commandOpenPopup": { + "message": "Open vault popup" + }, + "commandOpenSidebar": { + "message": "Open vault in sidebar" + }, + "commandAutofillDesc": { + "message": "Auto-fill the last used login for the current website" + }, + "commandGeneratePasswordDesc": { + "message": "Generate and copy a new random password to the clipboard" + }, + "commandLockVaultDesc": { + "message": "Lock the vault" + }, + "privateModeMessage": { + "message": "Unfortunately this window is not available in private mode for this browser." + }, + "customFields": { + "message": "Custom Fields" + }, + "copyValue": { + "message": "Copy Value" + }, + "value": { + "message": "Value" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "popup2faCloseMessage": { + "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + }, + "popupU2fCloseMessage": { + "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "expiration": { + "message": "Expiration" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "securityCode": { + "message": "Security Code" + }, + "ex": { + "message": "ex." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "Country" + }, + "type": { + "message": "Type" + }, + "typeLogin": { + "message": "Login" + }, + "typeLogins": { + "message": "Logins" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "passwordHistory": { + "message": "Password History" + }, + "back": { + "message": "Back" + }, + "collections": { + "message": "Collections" + }, + "favorites": { + "message": "Favorites" + }, + "popOutNewWindow": { + "message": "Pop out to a new window" + }, + "refresh": { + "message": "Refresh" + }, + "cards": { + "message": "Cards" + }, + "identities": { + "message": "Identities" + }, + "logins": { + "message": "Logins" + }, + "secureNotes": { + "message": "Secure Notes" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "toggleCurrentUris": { + "message": "Toggle Current URIs", + "description": "Toggle the display of the URIs of the currently open tabs in the browser." + }, + "currentUri": { + "message": "Current URI", + "description": "The URI of one of the current open tabs in the browser." + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "types": { + "message": "Types" + }, + "allItems": { + "message": "All Items" + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "remove": { + "message": "Remove" + }, + "default": { + "message": "Default" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "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." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "verifyPin": { + "message": "Verify PIN" + }, + "yourVaultIsLockedPinCode": { + "message": "Your vault is locked. Verify your PIN code to continue." + }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on browser restart" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "cloneItem": { + "message": "Clone Item" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "autoFillAndSave": { + "message": "Auto-fill and Save" + }, + "autoFillSuccessAndSavedUri": { + "message": "Auto-filled Item and Saved URI" + }, + "autoFillSuccess": { + "message": "Auto-filled Item" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + } +} From fa89184e440842207fdce07bff401287d850a21d Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:33 -0500 Subject: [PATCH 10/73] New translations copy.resx (Slovenian) --- store/locales/sl/copy.resx | 158 +++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 store/locales/sl/copy.resx diff --git a/store/locales/sl/copy.resx b/store/locales/sl/copy.resx new file mode 100644 index 0000000000..1eb62b5652 --- /dev/null +++ b/store/locales/sl/copy.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bitwarden – Free Password Manager + + + A secure and free password manager for all of your devices + + + Bitwarden is the easiest and safest way to store all of your logins and passwords while conveniently keeping them synced between all of your devices. + +Password theft is a serious problem. The websites and apps that you use are under attack every day. Security breaches occur and your passwords are stolen. When you reuse the same passwords across apps and websites hackers can easily access your email, bank, and other important accounts. + +Security experts recommend that you use a different, randomly generated password for every account that you create. But how do you manage all those passwords? Bitwarden makes it easy for you to create, store, and access your passwords. + +Bitwarden stores all of your logins in an encrypted vault that syncs across all of your devices. Since it's fully encrypted before it ever leaves your device, only you have access to your data. Not even the team at Bitwarden can read your data, even if we wanted to. Your data is sealed with AES-256 bit encryption, salted hashing, and PBKDF2 SHA-256. + +Bitwarden is 100% open source software. The source code for Bitwarden is hosted on GitHub and everyone is free to review, audit, and contribute to the Bitwarden codebase. + + + A secure and free password manager for all of your devices + + + Sync and access your vault from multiple devices + + + Manage all your logins and passwords from a secure vault + + + Quickly auto-fill your login credentials into any website that you visit + + + Your vault is also conveniently accessible from the right-click menu + + + Automatically generate strong, random, and secure passwords + + + Your information is managed securely using AES-256 bit encryption + + \ No newline at end of file From af3baf5f88962718ec224489d6a9ed615ad5807f Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:35 -0500 Subject: [PATCH 11/73] New translations messages.json (Serbian (Cyrillic)) --- src/_locales/sr/messages.json | 155 +++++++++++++++++++++++++--------- 1 file changed, 115 insertions(+), 40 deletions(-) diff --git a/src/_locales/sr/messages.json b/src/_locales/sr/messages.json index 3da482343d..6373bd3fd0 100644 --- a/src/_locales/sr/messages.json +++ b/src/_locales/sr/messages.json @@ -50,7 +50,7 @@ "message": "Савет Главне Лозинке (опционо)" }, "tab": { - "message": "Картица" + "message": "Језичак" }, "myVault": { "message": "Мој Сеф" @@ -62,7 +62,7 @@ "message": "Подешавања" }, "currentTab": { - "message": "Тренутна картица" + "message": "Тренутни језичак" }, "copyPassword": { "message": "Копирај лозинку" @@ -71,7 +71,7 @@ "message": "Копирај белешку" }, "copyUri": { - "message": "Копирај везу" + "message": "Копирај УРЛ" }, "copyUsername": { "message": "Копирај име" @@ -98,7 +98,7 @@ "message": "Одјављени сте од сефа." }, "autoFillInfo": { - "message": "Нема доступне пријаве за ауто-пуњење за за тренутну картицу прегледача." + "message": "Нема доступне пријаве за ауто-пуњење за тренутни језичак прегледача." }, "addLogin": { "message": "Додај Пријаву" @@ -172,10 +172,10 @@ "message": "Помоћ и подршка" }, "sync": { - "message": "Синхронизуј" + "message": "Синхронизација" }, "syncVaultNow": { - "message": "Синхронизуј сеф одмах" + "message": "Одмах синхронизуј сеф" }, "lastSync": { "message": "Задња синронизација:" @@ -191,10 +191,10 @@ "message": "Аутоматски генеришите јаке, јединствене лозинке за ваше пријаве." }, "bitWebVault": { - "message": "Bitwarden Сеф" + "message": "Bitwarden Интернет Сеф" }, "importItems": { - "message": "Увоз ставка" + "message": "Увоз ставки" }, "select": { "message": "Изабери" @@ -218,7 +218,7 @@ "message": "Одвајач речи" }, "capitalize": { - "message": "Велика слова", + "message": "Прво слово велико", "description": "Make the first letter of a work uppercase." }, "includeNumber": { @@ -234,7 +234,7 @@ "message": "Избегавајте двосмислене знакове" }, "searchVault": { - "message": "Претраћи сеф" + "message": "Претражи сеф" }, "edit": { "message": "Уреди" @@ -246,7 +246,7 @@ "message": "Нама ставке у листи." }, "itemInformation": { - "message": "Ставка Информације" + "message": "Инфо о ставци" }, "username": { "message": "Корисничко име" @@ -255,7 +255,7 @@ "message": "Лозинка" }, "passphrase": { - "message": "Реченица" + "message": "Фраза лозинка" }, "favorite": { "message": "Омиљено" @@ -279,7 +279,7 @@ "message": "Види ставку" }, "launch": { - "message": "Покрени" + "message": "Отвори" }, "website": { "message": "Веб сајт" @@ -288,7 +288,7 @@ "message": "Пребаци видљивост" }, "manage": { - "message": "Управљај" + "message": "Управљати" }, "other": { "message": "Остало" @@ -501,7 +501,7 @@ "message": "Сигурно избрисати ову ставку?" }, "deletedItem": { - "message": "Пошаљи ставку у Ђубре" + "message": "Пошаљи ставку у Отпад" }, "overwritePassword": { "message": "Препиши лозинку" @@ -519,20 +519,20 @@ "message": "Тип претраге" }, "noneFolder": { - "message": "Нема фасцикле", + "message": "Без фасцикле", "description": "This is the folder for uncategorized items" }, "disableAddLoginNotification": { "message": "Онемогући обавештење Додај Пријаву" }, "addLoginNotificationDesc": { - "message": "\"Нотификације Додај Лозинку\" аутоматски тражи да сачувате нове пријаве у сефу кад год се први пут пријавите на њих." + "message": "„Нотификације Додај Лозинку“ аутоматски тражи да сачувате нове пријаве у сефу кад год се први пут пријавите на њих." }, "dontShowCardsCurrentTab": { - "message": "Не приказуј картице на страници" + "message": "Не приказуј кредитне картице на страници" }, "dontShowCardsCurrentTabDesc": { - "message": "Ставке картица из вашег сефа наведене су на страници „Тренутна картица“ ради једноставног приступа аутоматског попуњавања." + "message": "Ставке кредитне картице из вашег сефа наведене су на страници „Тренутна картица“ ради једноставног приступа аутоматског попуњавања." }, "dontShowIdentitiesCurrentTab": { "message": "Не приказуј идентитете на страници" @@ -561,7 +561,7 @@ "message": "Угаси Нотификацију Промењена Лозинка" }, "disableChangedPasswordNotificationDesc": { - "message": "\"Нотификација Промењена Лозинка\" аутоматски тражи да ажурирате лозинку за пријављивање у сефу сваки пут када открије да сте је променили на веб сајту." + "message": "„Нотификација Промењена Лозинка“ аутоматски тражи да ажурирате лозинку за пријављивање у сефу сваки пут када открије да сте је променили на веб сајту." }, "notificationChangeDesc": { "message": "Да се ажурира ова лозинка у Bitwarden?" @@ -589,11 +589,11 @@ "message": "Промени боје апликације" }, "dark": { - "message": "Тамно", + "message": "Тамна", "description": "Dark color" }, "light": { - "message": "Светло", + "message": "Светла", "description": "Light color" }, "exportVault": { @@ -606,9 +606,15 @@ "message": "УПОЗОРЕЊЕ", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Овај извоз садржи податке сефа у нешифрираном формату. Не бисте смели да сачувате или шаљете извезену датотеку преко несигурних канала (као што је имејл). Избришите датотеку одмах након што завршите са коришћењем." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Унети главну лозинку за извиз сефа." }, @@ -637,10 +643,10 @@ "message": "Сазнај више" }, "authenticatorKeyTotp": { - "message": "Кључ аутентификације (TOTP)" + "message": "Једнократни код" }, "verificationCodeTotp": { - "message": "Верификациони код (TOTP)" + "message": "Једнократни код" }, "copyVerificationCode": { "message": "Копирај Верификациони код" @@ -694,10 +700,10 @@ "message": "Освежите чланство" }, "premiumNotCurrentMember": { - "message": "Тренутно нисте премиум члан." + "message": "Тренутно нисте премијум члан." }, "premiumSignUpAndGet": { - "message": "Пријавите се за премиум чланство и добијте:" + "message": "Пријавите се за премијум чланство и добијте:" }, "ppremiumSignUpStorage": { "message": "1ГБ шифровано складиште за прилоге." @@ -709,22 +715,22 @@ "message": "Извештаји о хигијени лозинки, здравственом стању налога и кршењу података да бисте заштитили сеф." }, "ppremiumSignUpTotp": { - "message": "Генератор TOTP верификационог кода (2FA) за пријаве из сефа." + "message": "Генератор једнократног кода (2FA) за пријаве из сефа." }, "ppremiumSignUpSupport": { "message": "Приоритетна корисничка подршка." }, "ppremiumSignUpFuture": { - "message": "Све будуће премиум функције. Више ускоро!" + "message": "Све будуће премијум функције. Више долазе ускоро!" }, "premiumPurchase": { "message": "Купити премијум" }, "premiumPurchaseAlert": { - "message": "Можете купити премиум претплату на bitwarden.com. Да ли желите да посетите веб сајт сада?" + "message": "Можете купити премијум претплату на bitwarden.com. Да ли желите да посетите веб сајт сада?" }, "premiumCurrentMember": { - "message": "Ви сте премиум члан!" + "message": "Ви сте премијум члан!" }, "premiumCurrentMemberThanks": { "message": "Хвала Вам за подршку Bitwarden-а." @@ -742,10 +748,10 @@ "message": "Освежавање је завршено" }, "disableAutoTotpCopy": { - "message": "Угаси аутоматско копирање TOTP" + "message": "Угаси аутоматско копирање једнократног кода" }, "disableAutoTotpCopyDesc": { - "message": "Ако је за вашу пријаву приложен аутентификациони кључ, TOTP верификациони код се аутоматски копира у вашем клипборду кад год ауто-попуните пријаву." + "message": "Ако је за вашу пријаву приложен аутентификациони кључ, једнократни код се аутоматски копира у вашем клипборду кад год ауто-попуните пријаву." }, "premiumRequired": { "message": "Потребан Премијум" @@ -1078,7 +1084,7 @@ "message": "Сигурносна белешка" }, "typeCard": { - "message": "Картица" + "message": "Кредитна Картица" }, "typeIdentity": { "message": "Идентитет" @@ -1102,7 +1108,7 @@ "message": "Освежи" }, "cards": { - "message": "Картице" + "message": "Кредитне Картице" }, "identities": { "message": "Идентитети" @@ -1150,7 +1156,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Налажење везе", + "message": "Налажење УРЛ", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1226,14 +1232,14 @@ "message": "Слаба Главна Лозинка" }, "weakMasterPasswordDesc": { - "message": "Главна лозинка коју сте одабрали је слаба. Требали бисте користити јаку главну лозинку (или приступну фразу) да бисте правилно заштитили свој налог. Да ли сте сигурни да желите да користите ову главну лозинку?" + "message": "Главна лозинка коју сте одабрали је слаба. Требали бисте користити јаку главну лозинку (или фразу лозинке) да бисте правилно заштитили свој налог. Да ли сте сигурни да желите да користите ову главну лозинку?" }, "pin": { "message": "ПИН", "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." }, "unlockWithPin": { - "message": "Деблокирај са ПИН" + "message": "Откључај са ПИН" }, "setYourPinCode": { "message": "Поставите свој ПИН код за откључавање Bitwarden-а. Поставке ПИН-а ће се ресетовати ако се икада потпуно одјавите из апликације." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Сеф је блокиран. Проверити ПИН код за наставак." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Закључајте са главном лозинком при поновном покретању прегледача" }, @@ -1257,7 +1272,7 @@ "message": "Морате одабрати макар једну колекцију." }, "cloneItem": { - "message": "Цлонирај ставку" + "message": "Клонирај ставку" }, "clone": { "message": "Клонирај" @@ -1273,11 +1288,11 @@ "description": "Verb form: to make secure or inaccesible by" }, "trash": { - "message": "Смеће", + "message": "Отпад", "description": "Noun: a special folder to hold deleted items" }, "searchTrash": { - "message": "Тражи смеће" + "message": "Тражи отпад" }, "permanentlyDeleteItem": { "message": "Трајно избрисати ставку" @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Политика приватности" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 4f2cc95dcd6265cf7afa3da1b82024830ad331e1 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:37 -0500 Subject: [PATCH 12/73] New translations messages.json (Swedish) --- src/_locales/sv/messages.json | 87 ++++++++++++++++++++++++++++++++--- 1 file changed, 81 insertions(+), 6 deletions(-) diff --git a/src/_locales/sv/messages.json b/src/_locales/sv/messages.json index 5997d4b801..da553e0aaf 100644 --- a/src/_locales/sv/messages.json +++ b/src/_locales/sv/messages.json @@ -498,7 +498,7 @@ "message": "Ändrade objekt" }, "deleteItemConfirmation": { - "message": "Är du säker på att du vill ta bort detta objekt?" + "message": "Är du säker på att du vill radera detta objekt?" }, "deletedItem": { "message": "Raderade objekt" @@ -606,9 +606,15 @@ "message": "VARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Den här exporten innehåller ditt valvs okrypterade data i .csv-format. Du bör inte lagra eller skicka filen över osäkra anslutningar (genom t.ex. mejl). Radera filen efter du är färdig med den." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Ange ditt huvudlösenord för att exportera ditt valv." }, @@ -895,7 +901,7 @@ "message": "Skapa och kopiera ett nytt slumpmässigt lösenord till urklipp." }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "Lås valvet" }, "privateModeMessage": { "message": "Det här fönstret är tyvärr inte tillgängligt i privat läge för denna webbläsare." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Valvet är låst. Kontrollera din PIN-kod för att fortsätta." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Lås med huvudlösenordet vid omstart av webbläsaren" }, @@ -1358,15 +1373,75 @@ "message": "Ditt nya huvudlösenord uppfyller inte kraven i policyn." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "Genom att markera denna ruta godkänner du följande:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Användarvillkoren och Integritetspolicyn har inte accepterats." }, "termsOfService": { - "message": "Terms of Service" + "message": "Användarvillkor" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "Integritetspolicy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 93ffba84814f90128f28f8acf9cc2e41150dc611 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:38 -0500 Subject: [PATCH 13/73] New translations messages.json (Turkish) --- src/_locales/tr/messages.json | 89 ++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 7 deletions(-) diff --git a/src/_locales/tr/messages.json b/src/_locales/tr/messages.json index b6a6e815eb..9bf1ad50cc 100644 --- a/src/_locales/tr/messages.json +++ b/src/_locales/tr/messages.json @@ -523,7 +523,7 @@ "description": "This is the folder for uncategorized items" }, "disableAddLoginNotification": { - "message": "Giriş Ekleme Bildirimlerini Kapat" + "message": "Hesap Ekle Bildirimlerini Kapat" }, "addLoginNotificationDesc": { "message": "\"Hesap Ekle Bildirimi\" otomatik olarak, ilk kez oturum açtığınız hesabınızı kasanıza kaydetmeniz için uyarı verir." @@ -606,9 +606,15 @@ "message": "UYARI", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Kasadaki verilerinizi dışa aktarmak için ana parolanızı girin." }, @@ -700,7 +706,7 @@ "message": "Premium üye olun ve ek olarak bu özelliklere sahip olun:" }, "ppremiumSignUpStorage": { - "message": "1 GB şifreli dosya depolama." + "message": "Dosyalarınız için 1GB şifreli depolama." }, "ppremiumSignUpTwoStep": { "message": "İki adımlı oturum açma seçenekleri YubiKey, FIDO U2F ve Duo gibi." @@ -895,7 +901,7 @@ "message": "Rastgele yeni bir parola oluştur ve panoya kopyala." }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "Kasayı kilitle" }, "privateModeMessage": { "message": "Ne yazık ki bu pencere bu tarayıcının özel modunda kullanılabilir değildir." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Kasan kilitlendi. Devam etmek için PIN kodunu doğrula." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Tarayıcı yeniden başlatıldığında ana şifre ile kilitle" }, @@ -1358,15 +1373,75 @@ "message": "Yeni ana parolanız ilke gereksinimlerini karşılamıyor." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "Bu kutuyu işaretleyerek aşağıdakileri kabul etmiş olursunuz:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Hizmet Şartları ve Gizlilik Politikası kabul edilmedi." }, "termsOfService": { - "message": "Terms of Service" + "message": "Hizmet Şartları" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "Gizlilik Politikası" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 7986c8e2d51486e93e99a97145d4d7c69ac7273d Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:40 -0500 Subject: [PATCH 14/73] New translations messages.json (Ukrainian) --- src/_locales/uk/messages.json | 95 +++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 10 deletions(-) diff --git a/src/_locales/uk/messages.json b/src/_locales/uk/messages.json index 0b47df5068..6c8758a6fe 100644 --- a/src/_locales/uk/messages.json +++ b/src/_locales/uk/messages.json @@ -166,7 +166,7 @@ "message": "Теки" }, "noFolders": { - "message": "Немає тек для відображення." + "message": "Немає тек." }, "helpFeedback": { "message": "Допомога і зворотній зв'язок" @@ -243,7 +243,7 @@ "message": "Перегляд" }, "noItemsInList": { - "message": "Немає записів для відображення." + "message": "Немає записів." }, "itemInformation": { "message": "Інформація про запис" @@ -516,14 +516,14 @@ "message": "Пошук в збірках" }, "searchType": { - "message": "Типу пошуку" + "message": "Пошук за типом" }, "noneFolder": { "message": "Без теки", "description": "This is the folder for uncategorized items" }, "disableAddLoginNotification": { - "message": "Вимкнути сповіщення про додавання запису" + "message": "Вимкнути сповіщення про новий запис" }, "addLoginNotificationDesc": { "message": "Сповіщення про додавання пароля автоматично пропонує зберегти нові паролі у вашому сховищі під час першого входу." @@ -558,10 +558,10 @@ "message": "Ніколи для цього сайту" }, "disableChangedPasswordNotification": { - "message": "Вимкнути сповіщення про змінений пароль" + "message": "Вимкнути сповіщення зміненого пароля" }, "disableChangedPasswordNotificationDesc": { - "message": "\"Сповіщення про змінений пароль\" автоматично запитує вас про оновлення пароля у вашому сховищі, коли виявлено зміну пароля на вебсайті." + "message": "Сповіщення зміненого пароля автоматично запитує вас про оновлення пароля у сховищі, коли виявлено його зміну на вебсайті." }, "notificationChangeDesc": { "message": "Ви хочете оновити цей пароль в Bitwarden?" @@ -606,9 +606,15 @@ "message": "ПОПЕРЕДЖЕННЯ", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Експортовані дані вашого сховища знаходяться в незашифрованому вигляді. Вам не слід зберігати чи надсилати їх через незахищені канали (наприклад, е-поштою). Після використання негайно видаліть їх." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Введіть головний пароль, щоб експортувати дані сховища." }, @@ -874,7 +880,7 @@ "message": "URL-адреси середовища збережено." }, "enableAutoFillOnPageLoad": { - "message": "Автозаповнення при завантаженні сторінки" + "message": "Автозаповнення на сторінці" }, "enableAutoFillOnPageLoadDesc": { "message": "При виявленні форми входу виконувати автоматичне її заповнення під час завантаження сторінки." @@ -1102,7 +1108,7 @@ "message": "Оновити" }, "cards": { - "message": "Карти" + "message": "Картки" }, "identities": { "message": "Особисті дані" @@ -1179,7 +1185,7 @@ "message": "Всі елементи" }, "noPasswordsInList": { - "message": "Немає паролів для відображення." + "message": "Немає паролів." }, "remove": { "message": "Вилучити" @@ -1202,7 +1208,7 @@ "message": "Ви не входите до жодної організації. Організації дозволяють безпечно обмінюватися елементами з іншими користувачами." }, "noCollectionsInList": { - "message": "Немає збірок для відображення." + "message": "Немає збірок." }, "ownership": { "message": "Власник" @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Ваше сховище заблоковане. Для продовження підтвердьте свій PIN-код." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Блокувати головним паролем при перезапуску браузера" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Політика приватності" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From dca339c7328e28a12004343df0e4e1f3a8bbd279 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:42 -0500 Subject: [PATCH 15/73] New translations messages.json (Chinese Simplified) --- src/_locales/zh_CN/messages.json | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json index 3161f113db..c6347a66ca 100644 --- a/src/_locales/zh_CN/messages.json +++ b/src/_locales/zh_CN/messages.json @@ -606,9 +606,15 @@ "message": "警告", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "导出的密码库数据包含未加密格式。您不应该通过不安全的渠道(例如电子邮件)来存储或发送导出的文件。用完后请立即将其删除。" }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "输入主密码来导出你的密码库。" }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "您的密码库已锁定。请验证您的 PIN 码以继续。" }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "浏览器重启后使用主密码锁定" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "隐私政策" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From e535e4d779c187c2abc49d0e0d0fd83f80b02570 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:44 -0500 Subject: [PATCH 16/73] New translations messages.json (Chinese Traditional) --- src/_locales/zh_TW/messages.json | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/zh_TW/messages.json b/src/_locales/zh_TW/messages.json index b498f63910..8ec5399df0 100644 --- a/src/_locales/zh_TW/messages.json +++ b/src/_locales/zh_TW/messages.json @@ -606,9 +606,15 @@ "message": "警告", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "您的密碼將匯出成未加密的. csv 檔案。您不應將它存放或經由未經加密的方式傳送(例如電子郵件)。用完後請立即將它刪除。" }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "輸入您的主密碼以匯出密碼庫資料。" }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "密碼庫已鎖定。驗證 PIN 碼以繼續。" }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "瀏覽器重啟後使用主密碼鎖定" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 77eacf6d9d1c58b2e3c911ecda0e8abcd7decf40 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:46 -0500 Subject: [PATCH 17/73] New translations messages.json (Vietnamese) --- src/_locales/vi/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/vi/messages.json b/src/_locales/vi/messages.json index a258510f0c..46af9ca591 100644 --- a/src/_locales/vi/messages.json +++ b/src/_locales/vi/messages.json @@ -606,9 +606,15 @@ "message": "CẢNH BÁO", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Nhập mật khẩu chủ để xuất kho dữ liệu của bạn." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Kho của bạn đã bị khóa. Xác minh mã PIN của bạn để mở." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Khóa với mật khẩu chính khi trình duyệt khởi động lại" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 74ae01cd0f49ab8d4f3d88984b71452b39513eec Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:48 -0500 Subject: [PATCH 18/73] New translations messages.json (Indonesian) --- src/_locales/id/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/id/messages.json b/src/_locales/id/messages.json index c217e2e61f..f0f370fc03 100644 --- a/src/_locales/id/messages.json +++ b/src/_locales/id/messages.json @@ -606,9 +606,15 @@ "message": "PERINGATAN", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Masukkan sandi utama Anda untuk mengekspor data brankas Anda." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Brankas Anda terkunci. Verifikasi kode PIN Anda untuk melanjutkan." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Kunci dengan kata sandi utama saat browser dihidupkan ulang" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Kebijakan Privasi" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 39cd5c0feb153870d96a848f4ccad321b38fb85e Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:50 -0500 Subject: [PATCH 19/73] New translations messages.json (Slovak) --- src/_locales/sk/messages.json | 89 ++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 7 deletions(-) diff --git a/src/_locales/sk/messages.json b/src/_locales/sk/messages.json index e48eb2eaa3..d6c1ee4eae 100644 --- a/src/_locales/sk/messages.json +++ b/src/_locales/sk/messages.json @@ -191,7 +191,7 @@ "message": "Automaticky generovať silné a unikátne heslá k prihlasovacím údajom." }, "bitWebVault": { - "message": "bitwarden webový trezor" + "message": "Webový trezor Bitwarden" }, "importItems": { "message": "Importovať položky" @@ -549,7 +549,7 @@ "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { - "message": "Má si bitwarden zapamätať toto heslo?" + "message": "Má si pre vás Bitwarden zapamätať toto heslo?" }, "notificationAddSave": { "message": "Áno, uložiť teraz" @@ -606,9 +606,15 @@ "message": "UPOZORNENIE", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Tento export obsahuje vaše dáta v nešifrovanom formáte. Nemali by ste ich ukladať, ani posielať cez nezabezpečené kanály (napr. email). Okamžite ho odstráňte, keď ho prestanete používať." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Zadajte vaše hlavné heslo pre export údajov trezoru." }, @@ -619,7 +625,7 @@ "message": "Zdieľať trezor" }, "shareVaultConfirmation": { - "message": "Bitwarden vám umožňuje zdieľať váš trezor s ostatnými ak používate konto v Organizácii. Chcete navštíviť stránku bitwarden.com a dozvedieť sa viac?" + "message": "Bitwarden vám umožňuje zdieľať váš trezor s ostatnými použitím konta v organizácii. Chcete navštíviť stránku bitwarden.com a dozvedieť sa viac?" }, "shareItem": { "message": "Zdieľať položku" @@ -727,7 +733,7 @@ "message": "Ste prémiovým členom!" }, "premiumCurrentMemberThanks": { - "message": "Ďakujeme, že podporujete bitwarden." + "message": "Ďakujeme, že podporujete Bitwarden." }, "premiumPrice": { "message": "Všetko len za %price% /rok!", @@ -844,7 +850,7 @@ "message": "Sebou hosťované prostredie" }, "selfHostedEnvironmentFooter": { - "message": "Špecifikujte základnú URL lokálne hosťovanej inštalácie bitwarden." + "message": "Zadajte základnú URL adresu lokálne hosťovanej inštalácie Bitwarden." }, "customEnvironment": { "message": "Vlastné prostredie" @@ -1226,7 +1232,7 @@ "message": "Slabé hlavné heslo" }, "weakMasterPasswordDesc": { - "message": "Hlavné heslo ktoré ste zadali je slabé. Mali by ste použiť silné heslo (alebo frázu) aby ste spoľahlivo ochránili váš Bitwarden účet. Naozaj chcete použiť toto heslo?" + "message": "Hlavné heslo, ktoré ste zadali, je slabé. Mali by ste použiť silné heslo (alebo frázu), aby ste spoľahlivo ochránili váš Bitwarden účet. Naozaj chcete použiť toto heslo?" }, "pin": { "message": "PIN", @@ -1236,7 +1242,7 @@ "message": "Odomknúť s PIN" }, "setYourPinCode": { - "message": "Nastaviť kód PIN na odomknutie Bitwarden. Nastavenie PIN sa vynuluje, ak úplne odhlásite z aplikácie." + "message": "Nastaviť kód PIN na odomykanie Bitwardenu. Nastavenie PIN sa vynuluje, ak sa úplne odhlásite z aplikácie." }, "pinRequired": { "message": "Kód PIN je povinný." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Váš trezor je uzamknutý. Overte sa PIN kódom ak chcete pokračovať." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Pri reštarte prehliadača zamknúť s hlavným heslom" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Zásady ochrany osobných údajov" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 7a5079635360b7a3b343dc9f6b5f1294ceb7d514 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:52 -0500 Subject: [PATCH 20/73] New translations messages.json (Persian) --- src/_locales/fa/messages.json | 85 ++++++++++++++++++++++++++++++++--- 1 file changed, 80 insertions(+), 5 deletions(-) diff --git a/src/_locales/fa/messages.json b/src/_locales/fa/messages.json index e09eacaeea..b08fcc02f2 100644 --- a/src/_locales/fa/messages.json +++ b/src/_locales/fa/messages.json @@ -606,9 +606,15 @@ "message": "اخطار", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "کلمه عبور اصلی خود را برای صادرات داده ها از گاوصندوقتان وارد کنید." }, @@ -895,7 +901,7 @@ "message": "یک کلمه عبور تصادفی جدید ایجاد کنید و آن را در کلیپ بورد کپی کنید." }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "قفل گاوصندوق" }, "privateModeMessage": { "message": "متأسفانه این پنجره در حالت خصوصی برای این مرورگر در دسترس نیست." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "گاوصندوق شما قفل شده است. برای ادامه کد پین خود را تایید کنید." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "در زمان شروع مجدد مرورگر، با رمز اصلی قفل کن" }, @@ -1358,15 +1373,75 @@ "message": "کلمه عبور اصلی جدید شما از شرایط سیاست پپیروی نمی کند." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "با علامت زدن این کادر با موارد زیر موافقت می کنید:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "شرایط خدمات و سیاست حفظ حریم خصوصی تأیید نشده است." }, "termsOfService": { - "message": "Terms of Service" + "message": "شرایط استفاده از خدمات" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "سیاست حفظ حریم خصوصی" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 9d8d72172563138cb6d017856a9fcf3cea6edbf2 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:53 -0500 Subject: [PATCH 21/73] New translations messages.json (Thai) --- src/_locales/th/messages.json | 101 +++++++++++++++++++++++++++++----- 1 file changed, 88 insertions(+), 13 deletions(-) diff --git a/src/_locales/th/messages.json b/src/_locales/th/messages.json index a878d167cd..f7035f9226 100644 --- a/src/_locales/th/messages.json +++ b/src/_locales/th/messages.json @@ -29,7 +29,7 @@ "message": "ปิด" }, "submit": { - "message": "Submit" + "message": "ส่งข้อมูล" }, "emailAddress": { "message": "ที่อยู่อีเมล" @@ -264,7 +264,7 @@ "message": "โน้ต" }, "note": { - "message": "Note" + "message": "โน้ต" }, "editItem": { "message": "แก้ไขรายการ" @@ -279,7 +279,7 @@ "message": "ดูรายการ" }, "launch": { - "message": "Launch" + "message": "เริ่ม" }, "website": { "message": "เว็บไซต์" @@ -309,7 +309,7 @@ "message": "Your vault is locked. Verify your master password to continue." }, "unlock": { - "message": "Unlock" + "message": "ปลดล็อค" }, "loggedInAsOn": { "message": "Logged in as $EMAIL$ on $HOSTNAME$.", @@ -325,7 +325,7 @@ } }, "invalidMasterPassword": { - "message": "Invalid master password" + "message": "รหัสผ่านหลักไม่ถูกต้อง" }, "vaultTimeout": { "message": "Vault Timeout" @@ -337,19 +337,19 @@ "message": "ทันที" }, "tenSeconds": { - "message": "10 seconds" + "message": "10 วินาที" }, "twentySeconds": { - "message": "20 seconds" + "message": "20 วินาที" }, "thirtySeconds": { - "message": "30 seconds" + "message": "30 วินาที" }, "oneMinute": { "message": "1 นาที" }, "twoMinutes": { - "message": "2 minutes" + "message": "2 นาที" }, "fiveMinutes": { "message": "5 นาที" @@ -373,10 +373,10 @@ "message": "On Restart" }, "never": { - "message": "Never" + "message": "ไม่อีกเลย" }, "security": { - "message": "Security" + "message": "ความปลอดภัย" }, "errorOccurred": { "message": "An error has occurred" @@ -419,7 +419,7 @@ "message": "Unable to auto-fill the selected login on this page. Copy/paste your username and/or password instead." }, "loggedOut": { - "message": "Logged out" + "message": "ออกจากระบบ" }, "loginExpired": { "message": "Your login session has expired." @@ -498,7 +498,7 @@ "message": "Edited item" }, "deleteItemConfirmation": { - "message": "Are you sure you want to delete this item?" + "message": "Do you really want to send to the trash?" }, "deletedItem": { "message": "Sent item to trash" @@ -606,9 +606,15 @@ "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Enter your master password to export your vault data." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Your vault is locked. Verify your PIN code to continue." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 75f22ffc371536585fa47f307d6f22edefcd070b Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:55 -0500 Subject: [PATCH 22/73] New translations messages.json (Croatian) --- src/_locales/hr/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/hr/messages.json b/src/_locales/hr/messages.json index 56ede02c06..e199d87f0f 100644 --- a/src/_locales/hr/messages.json +++ b/src/_locales/hr/messages.json @@ -606,9 +606,15 @@ "message": "UPOZORENJE", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Ovaj izvoz sadrži podatke trezora u nešifriranom obliku. Izvezenu datoteku ne smijete pohranjivati ili slati preko nesigurnih kanala (kao što je e-pošta). Izbrišite je odmah nakon završetka korištenja." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Unesite glavnu lozinku za izvoz podataka iz trezora." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Vaš trezor je zaključan. Potvrdite Vaš PIN da biste nastavili." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Zaključaj s glavnom lozinkom kod ponovnog pokretanja preglednika" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 1487e0b6d5760a2f78b70eaf133832a6163d8c7c Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:57 -0500 Subject: [PATCH 23/73] New translations messages.json (Estonian) --- src/_locales/et/messages.json | 95 +++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 10 deletions(-) diff --git a/src/_locales/et/messages.json b/src/_locales/et/messages.json index d8651bdfb3..74acc39715 100644 --- a/src/_locales/et/messages.json +++ b/src/_locales/et/messages.json @@ -246,7 +246,7 @@ "message": "Puuduvad kirjed, mida kuvada." }, "itemInformation": { - "message": "Kirje informatsioon" + "message": "Kirje andmed" }, "username": { "message": "Kasutajanimi" @@ -403,7 +403,7 @@ "message": "Ülemparooli vihje saadeti sinu e-postile." }, "verificationCodeRequired": { - "message": "Nõuatav on kinnituskood." + "message": "Nõutav on kinnituskood." }, "valueCopied": { "message": "$VALUE$ on kopeeritud", @@ -576,11 +576,11 @@ "message": "Parema kliki menüü abil saad kiiresti parooli genereerida ja konkreetse veebilehe kasutajakonto andmeid sisestada." }, "defaultUriMatchDetection": { - "message": "Vaikse URL-i sobivuse tuvastamine", + "message": "Vaikse URI sobivuse tuvastamine", "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "Vali vaikeviis, kuidas kirje ja URL-i sobivus tuvastatakse. Seda kasutatakse näiteks siis, kui lehele üritatakse automaatselt andmeid sisestada." + "message": "Vali vaikeviis, kuidas kirje ja URI sobivus tuvastatakse. Seda kasutatakse näiteks siis, kui lehele üritatakse automaatselt andmeid sisestada." }, "theme": { "message": "Teema" @@ -606,9 +606,15 @@ "message": "HOIATUS", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Eksporditav fail sisaldab hoidla sisu, mis on krüpteeringuta. Seda faili ei tohiks kaua käidelda ning mitte mingil juhul ebaturvaliselt saata (näiteks e-postiga). Kustuta see koheselt pärast kasutamist." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Hoidlas olevate andmete eksportimiseks on vajalik ülemparooli sisestamine." }, @@ -709,7 +715,7 @@ "message": "Parooli hügieen, konto seisukord ja andmelekete raportid aitavad hoidlat turvalisena hoida." }, "ppremiumSignUpTotp": { - "message": "TOTP kinnituskoodide (2FA) genereeria hoidlas olevatele kasutajakontodele." + "message": "TOTP kinnituskoodide (2FA) genereerija hoidlas olevatele kasutajakontodele." }, "ppremiumSignUpSupport": { "message": "Kiirema kasutajatoe." @@ -895,7 +901,7 @@ "message": "Loo ja kopeeri uus juhuslikult koostatud parool lõikepuhvrisse." }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "Lukusta hoidla" }, "privateModeMessage": { "message": "Kahjuks ei toeta kasutatav brauser seda akent privaatses režiimis." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Hoidla on lukus. Jätkamiseks sisesta PIN kood." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Nõua ülemparooli, kui brauser taaskäivitatakse" }, @@ -1358,15 +1373,75 @@ "message": "Uus ülemparool ei vasta eeskirjades väljatoodud tingimustele." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "Märkeruudu markeerimisel nõustud järgnevaga:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Kasutustingimuste ja Privaatsuspoliitikaga pole nõustutud." }, "termsOfService": { - "message": "Terms of Service" + "message": "Kasutustingimused" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "Privaatsuspoliitika" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 142d18702ac3f113cb7ff31d7aae76b789df860b Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:48:59 -0500 Subject: [PATCH 24/73] New translations messages.json (Latvian) --- src/_locales/lv/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/lv/messages.json b/src/_locales/lv/messages.json index f1be962e47..8b64a150e7 100644 --- a/src/_locales/lv/messages.json +++ b/src/_locales/lv/messages.json @@ -606,9 +606,15 @@ "message": "UZMANĪBU", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Šis eksports satur jūsu datus nešifrētā formātā. Eksportēto failu nevajadzētu saglabāt vai sūtīt izmantojot nedrošus kanālus (piemēram E-pastu). Izdzēsiet to līdzko esiet beidzis to izmantot." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Ievadiet savu galveno paroli lai eksportētu sava seifa datus." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Jūsu seifs ir slēgts. Ievadiet savu PIN kodu lai turpinātu." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Aizslēgt ar galveno paroli pēc pārlūka atsāknēšanas" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 0b246817d9b4480e26ebf23487a21b897dfc99fd Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:01 -0500 Subject: [PATCH 25/73] New translations messages.json (Hindi) --- src/_locales/hi/messages.json | 77 ++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/src/_locales/hi/messages.json b/src/_locales/hi/messages.json index 7e09db094b..03d8067cd7 100644 --- a/src/_locales/hi/messages.json +++ b/src/_locales/hi/messages.json @@ -498,7 +498,7 @@ "message": "Edited item" }, "deleteItemConfirmation": { - "message": "Are you sure you want to delete this item?" + "message": "Do you really want to send to the trash?" }, "deletedItem": { "message": "Sent item to trash" @@ -606,9 +606,15 @@ "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Enter your master password to export your vault data." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Your vault is locked. Verify your PIN code to continue." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 76b8f068b5b0b5879c192e5968e4b111e367784b Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:03 -0500 Subject: [PATCH 26/73] New translations messages.json (English, United Kingdom) --- src/_locales/en_GB/messages.json | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/en_GB/messages.json b/src/_locales/en_GB/messages.json index 25502bece0..c376a602ad 100644 --- a/src/_locales/en_GB/messages.json +++ b/src/_locales/en_GB/messages.json @@ -606,9 +606,15 @@ "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over insecure channels (such as email). Delete it immediately after you are done using it." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Enter your master password to export your vault data." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Your vault is locked. Verify your PIN code to continue." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 9c5ff20f2bb54a182788122433dd37cd01f05b22 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:05 -0500 Subject: [PATCH 27/73] New translations messages.json (Malayalam) --- src/_locales/ml/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/ml/messages.json b/src/_locales/ml/messages.json index 71b8487d4c..4ce63ccea8 100644 --- a/src/_locales/ml/messages.json +++ b/src/_locales/ml/messages.json @@ -606,9 +606,15 @@ "message": "മുന്നറിയിപ്പ്", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "ഈ എക്‌സ്‌പോർട്ടിൽ എൻക്രിപ്റ്റ് ചെയ്യാത്ത ഫോർമാറ്റിൽ നിങ്ങളുടെ വാൾട് ഡാറ്റ അടങ്ങിയിരിക്കുന്നു. എക്‌സ്‌പോർട് ചെയ്ത ഫയൽ സുരക്ഷിതമല്ലാത്ത ചാനലുകളിൽ (ഇമെയിൽ പോലുള്ളവ) നിങ്ങൾ സംഭരിക്കുകയോ അയയ്ക്കുകയോ ചെയ്യരുത്. നിങ്ങൾ ഇത് ഉപയോഗിച്ചുകഴിഞ്ഞാലുടൻ അത് മായ്ച്ചുകളയണം." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "നിങ്ങളുടെ വാൾട് ഡാറ്റ എക്‌സ്‌പോർട്ടുചെയ്യാൻ പ്രാഥമിക പാസ്‌വേഡ് നൽകുക." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "നിങ്ങളുടെ വാൾട് പൂട്ടിയിരിക്കുന്നു. തുടരാൻ പിൻ കോഡ് സ്ഥിരീകരിക്കുക." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "ബ്രൌസർ പുനരാരംഭത്തിൽ പ്രാഥമിക പാസ്‌വേഡ് ഉപയോഗിച്ച് ലോക്ക് ചെയ്യുക" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "സ്വകാര്യതാനയം" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 8547a875f2d0c6291cf351375f16db4a12f8d183 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:07 -0500 Subject: [PATCH 28/73] New translations messages.json (Sinhala) --- src/_locales/si/messages.json | 81 +++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/src/_locales/si/messages.json b/src/_locales/si/messages.json index f0349b00b3..636c4673ae 100644 --- a/src/_locales/si/messages.json +++ b/src/_locales/si/messages.json @@ -1,6 +1,6 @@ { "appName": { - "message": "Bitwarden" + "message": "බිට්වාඩන්" }, "extName": { "message": "Bitwarden - Free Password Manager", @@ -17,7 +17,7 @@ "message": "ගිණුමක් නිර්මාණය කරන්න" }, "login": { - "message": "Log In" + "message": "පිවිසෙන්න" }, "enterpriseSingleSignOn": { "message": "Enterprise Single Sign-On" @@ -498,7 +498,7 @@ "message": "Edited item" }, "deleteItemConfirmation": { - "message": "Are you sure you want to delete this item?" + "message": "Do you really want to send to the trash?" }, "deletedItem": { "message": "Sent item to trash" @@ -606,9 +606,15 @@ "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Enter your master password to export your vault data." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Your vault is locked. Verify your PIN code to continue." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 1f593d0ed397a58fd41002e25942b2211874fd3f Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:09 -0500 Subject: [PATCH 29/73] New translations messages.json (Norwegian Bokmal) --- src/_locales/nb/messages.json | 129 +++++++++++++++++++++++++++------- 1 file changed, 102 insertions(+), 27 deletions(-) diff --git a/src/_locales/nb/messages.json b/src/_locales/nb/messages.json index ef91e42ec9..98fb95861d 100644 --- a/src/_locales/nb/messages.json +++ b/src/_locales/nb/messages.json @@ -17,10 +17,10 @@ "message": "Opprett en konto" }, "login": { - "message": "Logg på" + "message": "Logg inn" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Bedriftsinnlogging (SSO)" }, "cancel": { "message": "Lukk" @@ -104,7 +104,7 @@ "message": "Legg til en innlogging" }, "addItem": { - "message": "Legg til et objekt" + "message": "Legg til en gjenstand" }, "passwordHint": { "message": "Passordhint" @@ -139,7 +139,7 @@ "message": "2-trinnsinnlogging" }, "logOut": { - "message": "Logg av" + "message": "Logg ut" }, "about": { "message": "Om" @@ -194,7 +194,7 @@ "message": "Bitwarden netthvelv" }, "importItems": { - "message": "Importer objekter" + "message": "Importer gjenstander" }, "select": { "message": "Velg" @@ -231,7 +231,7 @@ "message": "Minste antall spesialtegn" }, "avoidAmbChar": { - "message": "Unngå tegn som kan forveksles" + "message": "Unngå tvetydige tegn" }, "searchVault": { "message": "Søk i hvelvet" @@ -246,7 +246,7 @@ "message": "Det er ingen gjenstander å liste opp." }, "itemInformation": { - "message": "Objektinformasjon" + "message": "Gjenstandsinformasjon" }, "username": { "message": "Brukernavn" @@ -306,7 +306,7 @@ "message": "Verifiser hovedpassordet" }, "yourVaultIsLocked": { - "message": "Hvelvet ditt er låst. Kontroller superpassordet ditt for å fortsette." + "message": "Hvelvet ditt er låst. Kontroller hovedpassordet ditt for å fortsette." }, "unlock": { "message": "Lås opp" @@ -498,7 +498,7 @@ "message": "Redigerte gjenstanden" }, "deleteItemConfirmation": { - "message": "Er du sikker på at du vil slette denne gjenstanden?" + "message": "Er du sikker på at du vil slette dette objektet?" }, "deletedItem": { "message": "Slettet objektet" @@ -606,9 +606,15 @@ "message": "ADVARSEL", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Eksporten inneholder dine hvelvdataer i et ukryptert format. Du burde ikke lagre eller sende den eksporterte filen over usikre tjenester (f.eks. E-post). Slett det umiddelbart etter at du er ferdig med å bruke dem." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Skriv inn ditt superpassord for å eksportere dine hvelvdataer." }, @@ -895,7 +901,7 @@ "message": "Generer og kopier et nytt tilfeldig passord til utklippstavlen." }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "Lås hvelvet" }, "privateModeMessage": { "message": "Dessverre er dette vinduet ikke tilgjengelig i privat modus for denne nettleseren." @@ -1233,7 +1239,7 @@ "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." }, "unlockWithPin": { - "message": "Lås opp med PIN" + "message": "Lås opp med PIN-kode" }, "setYourPinCode": { "message": "Angi PIN-koden din for å låse opp Bitwarden. PIN-innstillingene tilbakestilles hvis du logger deg helt ut av programmet." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Hvelvet ditt er låst. Kontroller PIN-koden din for å fortsette." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Lås med hovedpassordet når du starter nettleseren på nytt" }, @@ -1304,22 +1319,22 @@ "message": "Bekreftelse på handling ved tidsavbrudd" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Autofyll og lagre" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Autoutfylt element og lagret URI" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Autoutfylt gjenstand" }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Angi hovedpassord" }, "masterPasswordPolicyInEffect": { - "message": "One or more organization policies require your master password to meet the following requirements:" + "message": "Ett eller flere av organisasjonens vilkår krever at hovedpassordet oppfyller følgende krav:" }, "policyInEffectMinComplexity": { - "message": "Minimum complexity score of $SCORE$", + "message": "Minimumspoengsum for kompleksistet er $SCORE$", "placeholders": { "score": { "content": "$1", @@ -1328,7 +1343,7 @@ } }, "policyInEffectMinLength": { - "message": "Minimum length of $LENGTH$", + "message": "Minimumslengde på $LENGTH$", "placeholders": { "length": { "content": "$1", @@ -1337,16 +1352,16 @@ } }, "policyInEffectUppercase": { - "message": "Contain one or more uppercase characters" + "message": "Inneholde én eller flere store bokstaver" }, "policyInEffectLowercase": { - "message": "Contain one or more lowercase characters" + "message": "Inneholde én eller flere små bokstaver" }, "policyInEffectNumbers": { - "message": "Contain one or more numbers" + "message": "Inneholde ett eller flere tall" }, "policyInEffectSpecial": { - "message": "Contain one or more of the following special characters $CHARS$", + "message": "Inneholde ett eller flere av følgende spesialtegn $CHARS$", "placeholders": { "chars": { "content": "$1", @@ -1355,18 +1370,78 @@ } }, "masterPasswordPolicyRequirementsNotMet": { - "message": "Your new master password does not meet the policy requirements." + "message": "Det nye hovedpassordet ditt oppfyller ikke vilkårene." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "Ved å merke av denne boksen sier du deg enig i følgende:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Vilkårene for bruk og personvernerklæring er ikke akseptert." }, "termsOfService": { - "message": "Terms of Service" + "message": "Vilkår for bruk" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "Personvernerklæring" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From acbd392226edcd72a9cd1a107106a1e5dde5a4ee Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:11 -0500 Subject: [PATCH 30/73] New translations copy.resx (Slovak) --- store/locales/sk/copy.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store/locales/sk/copy.resx b/store/locales/sk/copy.resx index 9a0fdbd9f5..c77410be23 100644 --- a/store/locales/sk/copy.resx +++ b/store/locales/sk/copy.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - bitwarden - Bezplatný správca hesiel + Bitwarden – Bezplatný správca hesiel Bezpečný a bezplatný správca hesiel pre všetky vaše zariadenia From 3533864e0ae540e52741ef5dd0ffdedcee85524e Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:13 -0500 Subject: [PATCH 31/73] New translations messages.json (Russian) --- src/_locales/ru/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 6e28e95b7a..69f8596b4b 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -606,9 +606,15 @@ "message": "ВНИМАНИЕ", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Экспортируемый файл содержит данные вашего хранилища в незашифрованном формате. Его не следует хранить или отправлять по небезопасным каналам (например, по электронной почте). Удалите его сразу после использования." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Для экспорта данных из хранилища введите мастер-пароль." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Ваше хранилище заблокировано. Для продолжения введите PIN-код." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Блокировать мастер-паролем при перезапуске браузера" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Политика конфиденциальности" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 144f2535b7a50e164477b832be1c796c1b8094d8 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:15 -0500 Subject: [PATCH 32/73] New translations copy.resx (Romanian) --- store/locales/ro/copy.resx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/store/locales/ro/copy.resx b/store/locales/ro/copy.resx index 03eb517f13..11eb912c2e 100644 --- a/store/locales/ro/copy.resx +++ b/store/locales/ro/copy.resx @@ -118,21 +118,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - bitwarden - Manager de parole gratuit + Bitwarden - Manager de parole gratuit Un manager de parole sigur și gratuit pentru toate dispozitivele dvs. - bitwarden este cea mai ușoară și cea mai sigură metodă de a stoca toate datele de autentificare și parolele dvs. păstrându-le în același timp sincronizate între toate dispozitivele dvs. + Bitwarden este cel mai simplu și mai sigur mod de a stoca toate autentificările și parolele dvs., păstrându-le în mod convenabil sincronizate între toate dispozitivele. -Furtul de parole este o problemă serioasă. Site-urile web și aplicațiile pe care le utilizați sunt atacate în fiecare zi. Se înregistrează încălcări ale securității și parolele dvs. sunt furate. Când reutilizați aceleași parole pe aplicații și site-uri web, hackerii pot accesa cu ușurință e-mailurile, conturile bancare și alte conturi importante. +Furtul de parole este o problemă serioasă. Saiturile web și aplicațiile pe care le utilizați sunt atacate în fiecare zi. Au loc încălcări ale securității și parolele dvs. sunt furate. Când reutilizați aceleași parole pe aplicații și saituri web, hackerii pot accesa cu ușurință e-mailurile, conturile bancare și alte conturi importante. -Experții în securitate vă recomandă să utilizați câte o parolă diferită, generată aleatoriu, pentru fiecare cont pe care îl utilizați. Dar cum veți gestiona toate aceste parole? bitwarden vă ușurează crearea, stocarea și accesarea parolelor dvs. +Experții în securitate vă recomandă să utilizați câte o parolă diferită, generată aleatoriu, pentru fiecare cont pe care îl utilizați. Dar cum veți gestiona toate aceste parole? Bitwarden vă ușurează crearea, stocarea și accesarea acestor parole. -bitwarden stochează toate date dvs. de autentificare într-un seif criptat care se sincronizează pe toate dispozitivele dvs. Deoarece seiful este complet criptat înainte de a fi transmis prin internet, numai dvs. aveți acces la date. Nici măcar echipa bitwarden nu poate citi datele dvs. chiar dacă ar dori. Datele dvs. sunt codificate prin criptare AES-256, salted hashing și PBKDF2 SHA-256. +Bitwarden stochează toate date dvs. de autentificare într-un seif criptat care se sincronizează pe toate dispozitivele dvs. Deoarece seiful este complet criptat înainte de a fi transmis prin internet, numai dvs. aveți acces la date. Nici măcar echipa Bitwarden nu poate citi datele dvs., chiar dacă ar dori. Datele dvs. sunt sigilate prin criptare cu AES-256 biți, salted hashing și PBKDF2 SHA-256. -bitwarden este software 100% open source. Codul sursa pentru bitwarden este găzduit pe GitHub și toată lumea este liberă să îl revizuiască, să îl verifice și să contribuie la codul sursă bitwarden. +Bitwarden este un software 100% "open source". Codul sursă pentru Bitwarden este găzduit pe GitHub și toată lumea este liberă să îl revizuiască, să îl verifice și să contribuie la dezvoltarea lui. Un manager de parole sigur și gratuit, pentru toate dispozitivele dvs. @@ -144,15 +144,15 @@ bitwarden este software 100% open source. Codul sursa pentru bitwarden este găz Gestionează toate datele de autentificare și parolele dintr-un seif securizat - Completează automat și rapid datele dvs. de autentificare în orice site web pe care îl vizitați + Completează automat și rapid datele dvs. de autentificare în orice sait web pe care îl vizitați - Seiful dvs. este, de asemenea, accesibil într-un mod convenabil din meniul contextual + Asigură accesarea seifului dvs., într-un mod convenabil, din meniul contextual - Generează automat parole sigure, aleatoare și puternice + Generează automat parole puternice, aleatorii și sigure - Informațiile dvs. sunt gestionate în siguranța folosind criptarea AES pe 256 de biți + Gestionează informațiile dvs. în siguranța folosind criptarea AES pe 256 de biți \ No newline at end of file From 937c30bfe07790a4223d6748fac0c1a9d3b9a31d Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:17 -0500 Subject: [PATCH 33/73] New translations messages.json (German) --- src/_locales/de/messages.json | 77 ++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index eb0b4b155d..39991bc308 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -606,9 +606,15 @@ "message": "ACHTUNG", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Dieser Export enthält deine unverschlüsselten Daten im Csv-Format. Du solltest sie nicht speichern oder über unsichere Kanäle (z. B. E-Mail) senden. Lösche sie sofort nach ihrer Verwendung." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Gib das Masterpasswort ein, um deine Tresordaten zu exportieren." }, @@ -1099,7 +1105,7 @@ "message": "In einem neuen Fenster öffnen" }, "refresh": { - "message": "Aktuaklisieren" + "message": "Aktualisieren" }, "cards": { "message": "Karten" @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Dein Tresor ist gesperrt. Gebe deinen PIN-Code ein um fortzufahren." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Bei Neustart des Browsers mit Master-Passwort sperren" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Datenschutzbestimmungen" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 2146d5997a07611d48ac525c8ad5fc1192356532 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:19 -0500 Subject: [PATCH 34/73] New translations messages.json (French) --- src/_locales/fr/messages.json | 77 ++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/src/_locales/fr/messages.json b/src/_locales/fr/messages.json index cd3872b8df..530e901e4b 100644 --- a/src/_locales/fr/messages.json +++ b/src/_locales/fr/messages.json @@ -498,7 +498,7 @@ "message": "Identifiant modifié" }, "deleteItemConfirmation": { - "message": "Êtes-vous sûr(e) de vouloir supprimer cet identifiant ?" + "message": "Êtes-vous sûr•e de vouloir supprimer cet identifiant ?" }, "deletedItem": { "message": "L'élément a été envoyé dans la corbeille" @@ -606,9 +606,15 @@ "message": "AVERTISSEMENT", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Cet export contient les données de votre coffre dans un format non chiffré. Vous ne devriez ni le stocker ni l'envoyer via des canaux non sécurisés (tel que l'e-mail). Supprimez-le immédiatement après l'avoir utilisé." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Saisissez votre mot de passe maître pour exporter les données de votre coffre." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Votre coffre est verrouillé. Saisissez votre code PIN pour continuer." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Verrouiller avec le mot de passe maître lors du redémarrage" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Politique de confidentialité" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From f79cae2e26715ea5838d84f746bf24c5e4f0d03b Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:22 -0500 Subject: [PATCH 35/73] New translations messages.json (Spanish) --- src/_locales/es/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/es/messages.json b/src/_locales/es/messages.json index 3bbeb1b26c..70fb62441b 100644 --- a/src/_locales/es/messages.json +++ b/src/_locales/es/messages.json @@ -606,9 +606,15 @@ "message": "ADVERTENCIA", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Esta exportación contiene los datos de tu caja fuerte en un formato no cifrado. No deberías almacenar o enviar el archivo exportado por canales no seguros (como el correo electrónico). Elimínalo inmediatamente cuando termines de utilizarlo." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Introduce tu contraseña maestra para exportar la información de tu caja fuerte." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Tu caja fuerte está bloqueada. Verifica tu código PIN para continuar." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Bloquear con contraseña maestra al reiniciar el navegador" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Política de privacidad" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From e08b145dbdd1605d3c164ed82d5c232cc19948b3 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:24 -0500 Subject: [PATCH 36/73] New translations messages.json (Belarusian) --- src/_locales/be/messages.json | 147 +++++++++++++++++++++++++--------- 1 file changed, 111 insertions(+), 36 deletions(-) diff --git a/src/_locales/be/messages.json b/src/_locales/be/messages.json index d658e75b5a..95aa675bdb 100644 --- a/src/_locales/be/messages.json +++ b/src/_locales/be/messages.json @@ -20,7 +20,7 @@ "message": "Увайсці" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Адзіны ўваход у карпаратыўную сістэму (SSO)." }, "cancel": { "message": "Скасаваць" @@ -89,7 +89,7 @@ "message": "Стварыць пароль (з капіяваннем)" }, "noMatchingLogins": { - "message": "Няма падыходных імён карыстальнікаў." + "message": "Няма падыходных уліковых даных." }, "vaultLocked": { "message": "Сховішча заблакіравана." @@ -98,10 +98,10 @@ "message": "Вы выйшлі са сховішча." }, "autoFillInfo": { - "message": "Няма імён карыстальніка, даступных для аўтазапаўнення ў бягучую ўкладку браўзера." + "message": "Няма ўліковых даных, даступных для аўтазапаўнення ў бягучую ўкладку браўзера." }, "addLogin": { - "message": "Дадаць імя карыстальніка" + "message": "Дадаць ўліковыя даныя" }, "addItem": { "message": "Дадаць элемент" @@ -188,7 +188,7 @@ "description": "Short for 'Password Generator'." }, "passGenInfo": { - "message": "Аўтаматычна ствараць моцныя, унікальныя паролі для вашых імён карыстальніка." + "message": "Аўтаматычна ствараць моцныя, унікальныя паролі для вашых уліковых даных." }, "bitWebVault": { "message": "Вэб-сховішча Bitwarden" @@ -328,7 +328,7 @@ "message": "Памылковы асноўны пароль" }, "vaultTimeout": { - "message": "Таймаўт сховішча" + "message": "Тайм-аўт сховішча" }, "lockNow": { "message": "Заблакіраваць зараз" @@ -523,10 +523,10 @@ "description": "This is the folder for uncategorized items" }, "disableAddLoginNotification": { - "message": "Адключыць апавяшчэнне аб даданні імя карыстальніка" + "message": "Адключыць апавяшчэнне аб даданні ўліковых даных" }, "addLoginNotificationDesc": { - "message": "Апавяшчэнне аб даданні імя карыстальніка аўтаматычна прапануе вам захаваць новыя імёны карыстальніка ў сховішчы." + "message": "Апавяшчэнне аб даданні ўліковых даных аўтаматычна прапануе вам захаваць новыя ўліковыя даныя ў сховішчы." }, "dontShowCardsCurrentTab": { "message": "Не паказваць карткі на панэлі ўкладак" @@ -573,14 +573,14 @@ "message": "Адключыць параметры кантэкстнага меню" }, "disableContextMenuItemDesc": { - "message": "Параметры кантэкстнага меню забяспечваюць хуткі доступ да генератара пароляў і імёнам карыстальніка для сайта на бягучай укладцы." + "message": "Параметры кантэкстнага меню забяспечваюць хуткі доступ да генератара пароляў і ўліковых даных для сайта на бягучай укладцы." }, "defaultUriMatchDetection": { "message": "Выяўленне супадзення URI па змаўчанні", "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "Абярыце спосаб па змаўчанні, які выкарыстоўваецца пры вызначэнні адпаведнасці URI для імён карыстальніка пры выкананні такіх дзеянняў, як аўтаматычнае запаўненне." + "message": "Выберыце спосаб па змаўчанні, які выкарыстоўваецца пры вызначэнні адпаведнасці URI для ўліковых даных пры выкананні такіх дзеянняў, як аўтаматычнае запаўненне." }, "theme": { "message": "Тэма" @@ -606,9 +606,15 @@ "message": "УВАГА", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Экспартуемы файл утрымлівае даныя вашага сховішча ў незашыфраваным фармаце. Яго не варта захоўваць ці адпраўляць па небяспечным каналам (напрыклад, па электроннай пошце). Выдаліце яго адразу пасля выкарыстання." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Увядзіце ваш асноўны пароль для экспарту даных са сховішча." }, @@ -709,7 +715,7 @@ "message": "Гігіена пароляў, здароўе ўліковага запісу і справаздачы аб уцечках даных для забеспячэння бяспекі вашага сховішча." }, "ppremiumSignUpTotp": { - "message": "TOTP-генератар кодаў (2ФА) для імён карыстальнікаў вашага сховішча." + "message": "TOTP-генератар кодаў (2ФА) для ўліковых даных вашага сховішча." }, "ppremiumSignUpSupport": { "message": "Прыярытэтная падтрымка." @@ -745,7 +751,7 @@ "message": "Адключыць аўтаматычнае капіяванне TOTP" }, "disableAutoTotpCopyDesc": { - "message": "Калі да вашага імя карыстальніка прымацаваны ключ праверкі сапраўднасці, то код пацвярджэння TOTP будзе скапіяваны пры аўтазапаўненні імені карыстальніка." + "message": "Калі да вашых уліковых даных прымацаваны ключ праверкі сапраўднасці, то код пацвярджэння TOTP будзе скапіяваны пры аўтазапаўненні ўліковых даных." }, "premiumRequired": { "message": "Патрабуецца прэміяльны статус" @@ -796,7 +802,7 @@ "message": "У гэтага ўліковага запісу ўключаны двухэтапны ўваход, аднак ні адзін з наладжаных варыянтаў не падтрымліваецца гэтым вэб-браўзерам." }, "noTwoStepProviders2": { - "message": "Выкарыстоўвайце актуальын вэб-браўзар (напрыклад, Chrome) і/або дадайце дадатковыя варыянты праверкі сапраўднасці, якія падтрымліваюцца ў вэб-браўзерах (напрыклад, праграма для праверкі сапраўднасці)." + "message": "Выкарыстоўвайце актуальны вэб-браўзер (напрыклад, Chrome) і/або дадайце дадатковыя варыянты праверкі сапраўднасці, якія падтрымліваюцца ў вэб-браўзерах (напрыклад, праграма для праверкі сапраўднасці)." }, "twoStepOptions": { "message": "Параметры двухэтапнага ўваходу" @@ -883,19 +889,19 @@ "message": "Гэта эксперыментальная функцыя. Выкарыстоўвайце на свой страх і рызыку." }, "commandOpenPopup": { - "message": "Адчыніць сховішча ва ўсплываючым акне" + "message": "Адкрыць сховішча ва ўсплывальным акне" }, "commandOpenSidebar": { - "message": "Адчыніць сховішча ў бакавой панэлі" + "message": "Адкрыць сховішча ў бакавой панэлі" }, "commandAutofillDesc": { - "message": "Аўтазапаўненне апошняга скарыстанага імя карыстальніка для бягучага вэб-сайта." + "message": "Аўтазапаўненне апошніх скарыстаных уліковых даных для бягучага вэб-сайта." }, "commandGeneratePasswordDesc": { "message": "Стварыць і капіяваць новы выпадковы парольу буфер абмену." }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "Заблакіраваць сховішча" }, "privateModeMessage": { "message": "На жаль, гэта акно недаступна ў прыватным акне гэтага браўзара." @@ -1069,10 +1075,10 @@ "message": "Тып" }, "typeLogin": { - "message": "Імя карыстальніка" + "message": "Уліковыя даныя" }, "typeLogins": { - "message": "Імёны карыстальніка" + "message": "Уліковыя даныя" }, "typeSecureNote": { "message": "Бяспечныя нататкі" @@ -1108,7 +1114,7 @@ "message": "Пасведчанні" }, "logins": { - "message": "Імёны карыстальніка" + "message": "Уліковыя даныя" }, "secureNotes": { "message": "Бяспечныя нататкі" @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Ваша сховішча заблакіравана. Каб працягнуць, увядзіце PIN-код." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Блакіраваць асноўным паролем пры перазапуску браўзера" }, @@ -1266,7 +1281,7 @@ "message": "На налады генератара ўплываюць адна або некалькі палітык арганізацый." }, "vaultTimeoutAction": { - "message": "Дзеянне пры таймаўце" + "message": "Дзеянне пры тайм-аўце" }, "lock": { "message": "Заблакіраваць", @@ -1292,25 +1307,25 @@ "message": "Аднавіць элемент" }, "restoreItemConfirmation": { - "message": "Вы сапраўды жадаеце аднавіць гэты запіс?" + "message": "Вы сапраўды жадаеце аднавіць гэты элемент?" }, "restoredItem": { "message": "Элемент адноўлены" }, "vaultTimeoutLogOutConfirmation": { - "message": "Выхад з сістэмы выдаліць доступ да сховішча і патрабуе анлайн-аутэнтыфікацію па заканчэнні перыяду чакання. Вы сапраўды жадаеце ўключыць гэтую наладу?" + "message": "Выхад з сістэмы выдаліць доступ да сховішча і спатрабуе праверку сапраўднасці анлайн па заканчэнні перыяду чакання. Вы сапраўды жадаеце ўключыць гэтую наладу?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Пацвярджэнне дзеяння для таймаута" + "message": "Пацвярджэнне дзеяння для тайм-аута" }, "autoFillAndSave": { "message": "Запоўніць і захаваць" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Аўтазапоўнены элемент і захаваны URI" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Аўтазапоўнены элемент" }, "setMasterPassword": { "message": "Задаць асноўны пароль" @@ -1319,7 +1334,7 @@ "message": "Згодна з адной або некалькімі палітыкамі арганізацыі неабходна, каб ваш асноўны пароль адказваў наступным патрабаванням:" }, "policyInEffectMinComplexity": { - "message": "Minimum complexity score of $SCORE$", + "message": "Мінімальны ўзровень складанасці $SCORE$", "placeholders": { "score": { "content": "$1", @@ -1328,7 +1343,7 @@ } }, "policyInEffectMinLength": { - "message": "Minimum length of $LENGTH$", + "message": "Мінімальная даўжыня $LENGTH$", "placeholders": { "length": { "content": "$1", @@ -1337,16 +1352,16 @@ } }, "policyInEffectUppercase": { - "message": "Contain one or more uppercase characters" + "message": "Уключыць адну ці больш прапісных літар" }, "policyInEffectLowercase": { - "message": "Contain one or more lowercase characters" + "message": "Уключыць адну ці больш малых літар" }, "policyInEffectNumbers": { - "message": "Contain one or more numbers" + "message": "Уключыць адну ці больш лічбаў" }, "policyInEffectSpecial": { - "message": "Contain one or more of the following special characters $CHARS$", + "message": "Уключаць хаця б адзін з наступных спецыяльных сімвалаў $CHARS$", "placeholders": { "chars": { "content": "$1", @@ -1358,15 +1373,75 @@ "message": "Ваш новы асноўны пароль не адпавядае патрабаванням палітыкі арганізацыі." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "Ставіўшы гэты сцяжок вы пагаджаецеся з наступным:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Умовы выкарыстання і Палітыка прыватнасці не былі пацверджаны." }, "termsOfService": { - "message": "Terms of Service" + "message": "Умовы выкарыстання" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "Палітыка прыватнасці" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From e126b395a9d77af3c6904ae39ac2d485ed936acd Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:27 -0500 Subject: [PATCH 37/73] New translations messages.json (Bulgarian) --- src/_locales/bg/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/bg/messages.json b/src/_locales/bg/messages.json index 542c5818de..19abd658c5 100644 --- a/src/_locales/bg/messages.json +++ b/src/_locales/bg/messages.json @@ -606,9 +606,15 @@ "message": "ВНИМАНИЕ", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Данните от трезора ви ще се изнесат в незащитен формат. Не го пращайте по незащитени канали като е-поща. Изтрийте файла незабавно след като свършите работата си с него." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Въведете главната парола, за да изнесете данните." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Трезорът е заключен. Въведете своя ПИН, за да продължите." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Заключване с главната парола при повторно пускане на браузъра" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 5174f67eee0c7e8253467a5477469ca6f7518c9f Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:29 -0500 Subject: [PATCH 38/73] New translations messages.json (Catalan) --- src/_locales/ca/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/ca/messages.json b/src/_locales/ca/messages.json index bc9c2c87cc..fe3a62e7b0 100644 --- a/src/_locales/ca/messages.json +++ b/src/_locales/ca/messages.json @@ -606,9 +606,15 @@ "message": "ADVERTIMENT", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Aquesta exportació conté les dades de la vostra caixa forta en un format no xifrat. No hauríeu d'emmagatzemar o enviar el fitxer exportat a través de canals no segurs (com ara el correu electrònic). Elimineu-lo immediatament després d'haver acabat d'usar-lo." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Introduïu la contrasenya mestra per exportar les dades de la caixa forta." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "La caixa forta està bloquejada. Verifiqueu El codi PIN per continuar." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Bloqueja amb la contrasenya mestra en reiniciar el navegador" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Declaració de privadesa" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From d105aaf77e9af8a62b550a533c2833e72f302c21 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:31 -0500 Subject: [PATCH 39/73] New translations messages.json (Czech) --- src/_locales/cs/messages.json | 85 ++++++++++++++++++++++++++++++++--- 1 file changed, 80 insertions(+), 5 deletions(-) diff --git a/src/_locales/cs/messages.json b/src/_locales/cs/messages.json index 393f90f506..29fcff9bcc 100644 --- a/src/_locales/cs/messages.json +++ b/src/_locales/cs/messages.json @@ -606,9 +606,15 @@ "message": "VAROVÁNÍ", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Tento export obsahuje data vašeho trezoru v nezašifrovaném formátu. Soubor exportu byste neměli ukládat ani odesílat přes nezabezpečené kanály (např. e-mailem). Odstraňte jej okamžitě po jeho použití." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Zadejte své hlavní heslo pro export dat." }, @@ -895,7 +901,7 @@ "message": "Vygenerovat a zkopírovat nové náhodné heslo do schránky." }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "Zamknout trezor" }, "privateModeMessage": { "message": "Bohužel toto okno není v tomto prohlížeči k dispozici v soukromém režimu." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Váš trezor je uzamčen. Pro pokračování musíte zadat PIN." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Zamknout trezor při restartu prohlížeče pomocí hlavního hesla" }, @@ -1358,15 +1373,75 @@ "message": "Vaše nové hlavní heslo nesplňuje požadavky zásad." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "Zaškrtnutím tohoto políčka souhlasím s následujícím:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Podmínky služby a zásady ochrany osobních údajů nebyly uznány." }, "termsOfService": { - "message": "Terms of Service" + "message": "Podmínky použití" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "Zásady ochrany osobních údajů" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 2663d75ed2bc2358cabab6c71214c23b9bba0a0c Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:33 -0500 Subject: [PATCH 40/73] New translations messages.json (Danish) --- src/_locales/da/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/da/messages.json b/src/_locales/da/messages.json index 5300d409bf..4f47c8588f 100644 --- a/src/_locales/da/messages.json +++ b/src/_locales/da/messages.json @@ -606,9 +606,15 @@ "message": "ADVARSEL", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Denne eksport indeholder dine boksdata i ukrypteret form. Du bør ikke gemme eller sende den eksporterede fil over usikre kanaler (f.eks. e-mail). Slet den straks efter at du er færdig med at bruge den." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Indtast din hovedadgangskode for at eksportere dine data fra boksen." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Din boks er låst. Bekræft din pinkode for at fortsætte." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Lås med hovedadgangskode ved genstart af browseren" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Fortrolighedspolitik" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 92b29c67c185552895f89ba6f81be8bd88b12e48 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:34 -0500 Subject: [PATCH 41/73] New translations messages.json (Greek) --- src/_locales/el/messages.json | 111 ++++++++++++++++++++++++++++------ 1 file changed, 93 insertions(+), 18 deletions(-) diff --git a/src/_locales/el/messages.json b/src/_locales/el/messages.json index d0532867c8..7fb110f648 100644 --- a/src/_locales/el/messages.json +++ b/src/_locales/el/messages.json @@ -20,7 +20,7 @@ "message": "Σύνδεση" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Ενιαία είσοδος για επιχειρήσεις" }, "cancel": { "message": "Ακύρωση" @@ -606,9 +606,15 @@ "message": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Αυτή η εξαγωγή περιέχει τα δεδομένα σε μη κρυπτογραφημένη μορφή. Δεν πρέπει να αποθηκεύετε ή να στείλετε το εξαγόμενο αρχείο μέσω μη ασφαλών τρόπων (όπως μέσω email). Διαγράψτε το αμέσως μόλις τελειώσετε με τη χρήση του." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Πληκτρολογήστε τον κύριο κωδικό για εξαγωγή δεδομένων vault." }, @@ -895,7 +901,7 @@ "message": "Δημιουργήστε και αντιγράψτε έναν νέο τυχαίο κωδικό πρόσβασης στο πρόχειρο" }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "Κλειδώστε το vault" }, "privateModeMessage": { "message": "Δυστυχώς, αυτό το παράθυρο δεν είναι διαθέσιμο σε ιδιωτική λειτουργία για αυτό το πρόγραμμα περιήγησης." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Το vault σας είναι κλειδωμένο. Επαληθεύστε τον κωδικό PIN για να συνεχίσετε." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Κλείδωμα με κύριο κωδικό πρόσβασης στην επανεκκίνηση του προγράμματος περιήγησης" }, @@ -1304,22 +1319,22 @@ "message": "Επιβεβαίωση Ενέργειας Χρονικού Ορίου" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Αυτόματη συμπλήρωση και αποθήκευση" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Αυτόματη συμπλήρωση στοιχείου και αποθηκευμένο URI" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Αυτόματη συμπλήρωση αντικειμένου" }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Ορισμός Κύριου Κωδικού" }, "masterPasswordPolicyInEffect": { - "message": "One or more organization policies require your master password to meet the following requirements:" + "message": "Σε μία ή περισσότερες πολιτικές του οργανισμού απαιτείται ο κύριος κωδικός να πληρεί τις ακόλουθες απαιτήσεις:" }, "policyInEffectMinComplexity": { - "message": "Minimum complexity score of $SCORE$", + "message": "Ελάχιστος βαθμός πολυπλοκότητας: $SCORE$", "placeholders": { "score": { "content": "$1", @@ -1328,7 +1343,7 @@ } }, "policyInEffectMinLength": { - "message": "Minimum length of $LENGTH$", + "message": "Ελάχιστο μήκος: $LENGTH$", "placeholders": { "length": { "content": "$1", @@ -1337,16 +1352,16 @@ } }, "policyInEffectUppercase": { - "message": "Contain one or more uppercase characters" + "message": "Να περιέχει έναν ή περισσότερους κεφαλαίους χαρακτήρες" }, "policyInEffectLowercase": { - "message": "Contain one or more lowercase characters" + "message": "Να περιέχει έναν ή περισσότερους πεζούς χαρακτήρες" }, "policyInEffectNumbers": { - "message": "Contain one or more numbers" + "message": "Να περιέχει έναν ή περισσότερους αριθμούς" }, "policyInEffectSpecial": { - "message": "Contain one or more of the following special characters $CHARS$", + "message": "Να περιέχει έναν ή περισσότερους από τους ακόλουθους ειδικούς χαρακτήρες $CHARS$", "placeholders": { "chars": { "content": "$1", @@ -1355,18 +1370,78 @@ } }, "masterPasswordPolicyRequirementsNotMet": { - "message": "Your new master password does not meet the policy requirements." + "message": "Ο νέος κύριος κωδικός δεν πληροί τις απαιτήσεις πολιτικής." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "Επιλέγοντας αυτό το πλαίσιο, συμφωνείτε με τα εξής:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Οι Όροι Παροχής Υπηρεσιών και η Πολιτική Απορρήτου δεν έχουν αναγνωριστεί." }, "termsOfService": { - "message": "Terms of Service" + "message": "Όροι Χρήσης" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "Πολιτική Απορρήτου" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 7820ed83097833e861eb34d5491b27c8104fe737 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:36 -0500 Subject: [PATCH 42/73] New translations messages.json (Portuguese) --- src/_locales/pt_PT/messages.json | 81 ++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/src/_locales/pt_PT/messages.json b/src/_locales/pt_PT/messages.json index c2ca6e11f3..d4aee8e35e 100644 --- a/src/_locales/pt_PT/messages.json +++ b/src/_locales/pt_PT/messages.json @@ -498,7 +498,7 @@ "message": "Item editado" }, "deleteItemConfirmation": { - "message": "Tem a certeza de que pretende eliminar este item?" + "message": "Tem a certeza de que pretende apagar este item?" }, "deletedItem": { "message": "Item enviado para o lixo" @@ -606,9 +606,15 @@ "message": "AVISO", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Esta exportação contém os seus dados do cofre num formato desencriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais inseguros (como email). Apague-a imediatamente após a utilizar." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Introduza a sua palavra-passe mestra para exportar os dados do seu cofre." }, @@ -895,7 +901,7 @@ "message": "Gerar e copiar uma nova palavra-passe aleatória para a área de transferência" }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "Bloquear o cofre" }, "privateModeMessage": { "message": "Infelizmente esta janela não está disponível no modo privado para este navegador." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "O seu cofre está bloqueado. Verifique o seu PIN para continuar." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Bloquear com palavra-passe mestra quando reiniciar o navegador" }, @@ -1361,12 +1376,72 @@ "message": "Ao marcar esta caixa concorda com o seguinte:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Os Termos de Serviço e a Política de Privacidade não foram aceites." }, "termsOfService": { "message": "Termos de serviço" }, "privacyPolicy": { "message": "Política de privacidade" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From bb04622b0339d118a9e9481e1f8f481bb0d248c5 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:38 -0500 Subject: [PATCH 43/73] New translations messages.json (Finnish) --- src/_locales/fi/messages.json | 415 ++++++++++++++++++++-------------- 1 file changed, 245 insertions(+), 170 deletions(-) diff --git a/src/_locales/fi/messages.json b/src/_locales/fi/messages.json index 4d576723ce..323564faaf 100644 --- a/src/_locales/fi/messages.json +++ b/src/_locales/fi/messages.json @@ -3,15 +3,15 @@ "message": "Bitwarden" }, "extName": { - "message": "Bitwarden – Ilmainen salasananhallinta", + "message": "Bitwarden - Ilmainen salasanojen hallinta", "description": "Extension name" }, "extDesc": { - "message": "Bitwarden on turvallinen ja ilmainen salasananhallintapalvelu kaikille laitteillesi.", + "message": "Turvallinen ja ilmainen salasanojen hallintapalvelu kaikille laitteillesi.", "description": "Extension description" }, "loginOrCreateNewAccount": { - "message": "Kirjaudu sisään tai luo tili päästäksesi salattuun holviisi." + "message": "Kirjaudu sisään tai luo uusi tili päästäksesi salattuun holviisi." }, "createAccount": { "message": "Luo tili" @@ -20,7 +20,7 @@ "message": "Kirjaudu sisään" }, "enterpriseSingleSignOn": { - "message": "Yrityksen kertakirjautuminen [SSO]" + "message": "Yrityksen kertakirjautuminen (SSO)" }, "cancel": { "message": "Peruuta" @@ -38,10 +38,10 @@ "message": "Pääsalasana" }, "masterPassDesc": { - "message": "Pääsalasanalla pääset käsiksi holviisi. On hyvin tärkeää, että et unohda pääsalasanaasi. Sitä ei voida palauttaa mitenkään, jos satut unohtamaan sen." + "message": "Pääsalasanalla pääset käsiksi holviisi. On erittäin tärkeää, että muistat pääsalasanasi, koska sen palautus ei ole mahdollista, jos unohdat sen." }, "masterPassHintDesc": { - "message": "Salasanavihje voi auttaa sinua muistamaan pääsalasanasi, jos satut unohtamaan sen." + "message": "Pääsalasanan vihje voi auttaa sinua muistamaan unohtamasi salasanan." }, "reTypeMasterPass": { "message": "Syötä pääsalasana uudelleen" @@ -53,7 +53,7 @@ "message": "Välilehti" }, "myVault": { - "message": "Minun holvini" + "message": "Oma holvi" }, "tools": { "message": "Työkalut" @@ -68,13 +68,13 @@ "message": "Kopioi salasana" }, "copyNote": { - "message": "Kopioi muistiinpano" + "message": "Kopioi muistio" }, "copyUri": { "message": "Kopioi URI" }, "copyUsername": { - "message": "Kopioi käyttäjänimi" + "message": "Kopioi käyttäjätunnus" }, "copyNumber": { "message": "Kopioi numero" @@ -83,13 +83,13 @@ "message": "Kopioi turvakoodi" }, "autoFill": { - "message": "Täytä automaattisesti" + "message": "Automaattinen täyttö" }, "generatePasswordCopied": { "message": "Luo salasana (leikepöydälle)" }, "noMatchingLogins": { - "message": "Ei täsmääviä käyttäjätunnuksia." + "message": "Ei tunnistettuja kirjautumistietoja." }, "vaultLocked": { "message": "Holvi on lukittu." @@ -98,10 +98,10 @@ "message": "Holvista on kirjauduttu ulos." }, "autoFillInfo": { - "message": "Selaimen nykyiselle välilehdelle ei ole automaattisesti täytettäviä käyttäjätunnuksia." + "message": "Nykyiselle selaimen välilehdelle ei ole automaattisesti täytettäviä kirjautumistietoja." }, "addLogin": { - "message": "Lisää käyttäjätunnus" + "message": "Lisää kirjautumistieto" }, "addItem": { "message": "Lisää kohde" @@ -113,16 +113,16 @@ "message": "Syötä tilisi sähköpostiosoite saadaksesi pääsalasanan vihjeen." }, "getMasterPasswordHint": { - "message": "Pyydä salasanavihjettä" + "message": "Pyydä pääsalasanan vihjettä" }, "continue": { "message": "Jatka" }, "verificationCode": { - "message": "Vahvistuskoodi" + "message": "Todennuskoodi" }, "account": { - "message": "Tili" + "message": "Käyttäjätili" }, "changeMasterPassword": { "message": "Vaihda pääsalasana" @@ -166,7 +166,7 @@ "message": "Kansiot" }, "noFolders": { - "message": "Ei kansioita näytettäväksi." + "message": "Ei näytettäviä kansioita." }, "helpFeedback": { "message": "Tuki ja palaute" @@ -188,7 +188,7 @@ "description": "Short for 'Password Generator'." }, "passGenInfo": { - "message": "Luo automaattisesti vahvoja, sivustokohtaisia salasanoja kirjautumisiasi varten." + "message": "Luo kirjautumistiedoillesi automaattisesti vahvoja, ainutlaatuisia salasanoja." }, "bitWebVault": { "message": "Bitwardenin verkkoholvi" @@ -206,7 +206,7 @@ "message": "Luo uusi salasana" }, "options": { - "message": "Asetukset" + "message": "Lisäasetukset" }, "length": { "message": "Pituus" @@ -215,10 +215,10 @@ "message": "Sanojen määrä" }, "wordSeparator": { - "message": "Sanaerotin" + "message": "Sanojen erotin" }, "capitalize": { - "message": "Jokainen sana isolla alkukirjaimella", + "message": "Sanat isoilla alkukirjaimilla", "description": "Make the first letter of a work uppercase." }, "includeNumber": { @@ -249,13 +249,13 @@ "message": "Kohteen tiedot" }, "username": { - "message": "Käyttäjänimi" + "message": "Käyttäjätunnus" }, "password": { "message": "Salasana" }, "passphrase": { - "message": "Tunnuslause" + "message": "Salauslauseke" }, "favorite": { "message": "Suosikki" @@ -264,7 +264,7 @@ "message": "Merkinnät" }, "note": { - "message": "Muistiinpano" + "message": "Merkintä" }, "editItem": { "message": "Muokkaa kohdetta" @@ -282,10 +282,10 @@ "message": "Avaa" }, "website": { - "message": "Sivusto" + "message": "Verkkosivusto" }, "toggleVisibility": { - "message": "Näytä/piilota" + "message": "Näytä tai piilota" }, "manage": { "message": "Hallinta" @@ -294,10 +294,10 @@ "message": "Muut" }, "rateExtension": { - "message": "Arvostele laajennus" + "message": "Arvioi laajennus" }, "rateExtensionDesc": { - "message": "Autathan meitä jättämällä hyvän arvostelun!" + "message": "Harkitse tukemistamme hyvällä arvostelulla!" }, "browserNotSupportClipboard": { "message": "Selaimesi ei tue helppoa leikepöydälle kopiointia. Kopioi kohde manuaalisesti." @@ -306,13 +306,13 @@ "message": "Vahvista pääsalasana" }, "yourVaultIsLocked": { - "message": "Holvisi on lukittu. Vahvista pääsalasanasi jatkaaksesi." + "message": "Holvisi on lukittu. Syötä pääsalasana jatkaaksesi." }, "unlock": { - "message": "Avaa" + "message": "Avaa lukitus" }, "loggedInAsOn": { - "message": "Kirjautuneena käyttäjänä $EMAIL$ palvelimelle $HOSTNAME$.", + "message": "Kirjautuneena tunnuksella $EMAIL$ palveluun $HOSTNAME$.", "placeholders": { "email": { "content": "$1", @@ -367,46 +367,46 @@ "message": "4 tuntia" }, "onLocked": { - "message": "Järjestelmän lukittuessa" + "message": "Kun järjestelmän lukitaan" }, "onRestart": { - "message": "Selainta uudelleenkäynnistettäessä" + "message": "Kun selain käynnistetään uudelleen" }, "never": { "message": "Ei koskaan" }, "security": { - "message": "Turvallisuus" + "message": "Suojaus" }, "errorOccurred": { "message": "Tapahtui virhe" }, "emailRequired": { - "message": "Sähköpostiosoite on pakollinen." + "message": "Sähköpostiosoite vaaditaan." }, "invalidEmail": { "message": "Virheellinen sähköpostiosoite." }, "masterPassRequired": { - "message": "Pääsalasana on pakollinen." + "message": "Pääsalasana vaaditaan." }, "masterPassLength": { "message": "Pääsalasanan on oltava vähintään 8 merkkiä pitkä." }, "masterPassDoesntMatch": { - "message": "Pääsalasanan varmistus ei täsmää." + "message": "Pääsalasanan vahvistus ei täsmää." }, "newAccountCreated": { - "message": "Uusi tilisi on luotu! Voit nyt kirjautua sisään." + "message": "Uusi käyttäjätilisi on luotu! Voit nyt kirjautua sisään." }, "masterPassSent": { - "message": "Lähetimme sinulle sähköpostilla pääsalasanasi vihjeen." + "message": "Lähetimme pääsalasanasi vihjeen sähköpostitse." }, "verificationCodeRequired": { - "message": "Vahvistuskoodi vaaditaan." + "message": "Todennuskoodi vaaditaan." }, "valueCopied": { - "message": "$VALUE$ kopioitu", + "message": "$VALUE$ kopioitiin", "description": "Value has been copied to the clipboard.", "placeholders": { "value": { @@ -416,13 +416,13 @@ } }, "autofillError": { - "message": "Valitun kohteen automaattinen täyttö tälle sivulle ei onnistu. Kopioi ja liitä kohde manuaalisesti." + "message": "Valitun kohteen automaattinen täyttö tälle sivulle ei onnistu. Kopioi ja liitä tiedot sen sijaan." }, "loggedOut": { "message": "Kirjauduttu ulos" }, "loginExpired": { - "message": "Kirjautumisistuntosi on vanhentunut." + "message": "Kirjautumisesi on vanhentunut." }, "logOutConfirmation": { "message": "Haluatko varmasti kirjautua ulos?" @@ -440,7 +440,7 @@ "message": "Nimi vaaditaan." }, "addedFolder": { - "message": "Kansio lisätty" + "message": "Lisättiin kansio" }, "changeMasterPass": { "message": "Vaihda pääsalasana" @@ -449,31 +449,31 @@ "message": "Voit vaihtaa pääsalasanasi bitwarden.com-verkkoholvissa. Haluatko käydä sivustolla nyt?" }, "twoStepLoginConfirmation": { - "message": "Kaksivaiheinen kirjautuminen tekee tilistäsi turvallisemman edellyttämällä sinulta kirjautumisvahvistuksen todennuslaitteen, ‑sovelluksen, tekstiviestin, puhelun tai sähköpostin avulla. Voit ottaa kaksivaiheisen kirjautumisen käyttöön bitwarden.com‑verkkoholvissa. Haluatko käydä sivustolla nyt?" + "message": "Kaksivaiheinen kirjautuminen tekee tilistäsi turvallisemman edellyttämällä salasanan lisäksi kirjautumisen lisätodennusta todennuslaitteen, ‑sovelluksen, tekstiviestin, puhelun tai sähköpostin avulla. Voit ottaa kaksivaiheisen kirjautumisen käyttöön bitwarden.com‑verkkoholvissa. Haluatko käydä sivustolla nyt?" }, "editedFolder": { - "message": "Kansiota muokattu" + "message": "Muokattiin kansiota" }, "deleteFolderConfirmation": { - "message": "Haluatko varmasti poistaa tämän kansion?" + "message": "Haluatko varmasti poistaa kansion?" }, "deletedFolder": { - "message": "Kansio poistettu" + "message": "Poistettiin kansio" }, "gettingStartedTutorial": { - "message": "Käytön aloittaminen" + "message": "Aloitusopas" }, "gettingStartedTutorialVideo": { - "message": "Ota kaikki irti selainlaajennuksesta katsomalla video-ohjeemme." + "message": "Ota selainlaajennuksesta kaikki irti katsomalla video-oppaamme." }, "syncingComplete": { - "message": "Synkronointi valmis" + "message": "Synkronointi on valmis" }, "syncingFailed": { "message": "Synkronointi epäonnistui" }, "passwordCopied": { - "message": "Salasana kopioitu" + "message": "Salasana kopioitiin" }, "uri": { "message": "URI" @@ -492,53 +492,53 @@ "message": "Uusi URI" }, "addedItem": { - "message": "Kohde lisätty" + "message": "Lisättiin kohde" }, "editedItem": { - "message": "Kohdetta muokattu" + "message": "Muokattiin kohdetta" }, "deleteItemConfirmation": { "message": "Haluatko varmasti poistaa tämän kohteen?" }, "deletedItem": { - "message": "Kohde lähetetty roskakoriin" + "message": "Siirrettiin kohde roskakoriin" }, "overwritePassword": { "message": "Korvaa salasana" }, "overwritePasswordConfirmation": { - "message": "Haluatko varmasti korvata nykyisen salasanasi?" + "message": "Haluatko varmasti korvata nykyisen salasanan?" }, "searchFolder": { "message": "Hae kansiosta" }, "searchCollection": { - "message": "Hae valikoimasta" + "message": "Hae kokoelmasta" }, "searchType": { - "message": "Hae tämän tyypin kohteista" + "message": "Hae tyypeistä" }, "noneFolder": { "message": "Ei kansiota", "description": "This is the folder for uncategorized items" }, "disableAddLoginNotification": { - "message": "Älä näytä tallennuskehotetta" + "message": "Älä käytä \"Lisää kirjautumistieto\" -kehotetta" }, "addLoginNotificationDesc": { - "message": "Tallennuskehote kysyy, haluatko tallentaa kirjautumistiedot holviisi, kun kirjaudut sivustoille ensimmäistä kertaa." + "message": "\"Lisää kirjautumistieto\" -kehote kysyy, haluatko tallentaa kirjautumistiedot holviisi kun kirjaudut niillä ensimmäistä kertaa." }, "dontShowCardsCurrentTab": { - "message": "Älä näytä kortteja Välilehti-sivulla" + "message": "Älä näytä välilehtikohtaisia korttiehdotuksia" }, "dontShowCardsCurrentTabDesc": { - "message": "Holvissasi olevat kortit näytetään 'Nykyinen välilehti' -sivulla, jotta automaattinen täyttö on helppoa." + "message": "Holvissasi olevat kortit tunnistetaan ja näytetään selaimen avoimelle välilehdelle, jotta niiden valinta täyttöä varten on helppoa." }, "dontShowIdentitiesCurrentTab": { - "message": "Älä näytä henkilöllisyyksiä Välilehti-sivulla" + "message": "Älä näytä välilehtikohtaisia henkilöllisyysehdotuksia" }, "dontShowIdentitiesCurrentTabDesc": { - "message": "Holvissasi olevat henkilöllisyydet näytetään 'Nykyinen välilehti' -sivulla, jotta automaattinen täyttö on helppoa." + "message": "Holvissasi olevat henkilöllisyydet tunnistetaan ja näytetään selaimen avoimelle välilehdelle, jotta niiden valinta täyttöä varten on helppoa." }, "clearClipboard": { "message": "Tyhjennä leikepöytä", @@ -549,7 +549,7 @@ "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { - "message": "Haluatko, että Bitwarden muistaa tämän salasanan puolestasi?" + "message": "Haluatko, että Bitwarden muistaa salasanan puolestasi?" }, "notificationAddSave": { "message": "Kyllä, tallenna nyt" @@ -558,35 +558,35 @@ "message": "Ei koskaan tälle sivustolle" }, "disableChangedPasswordNotification": { - "message": "Älä näytä salasanan muutosilmoitusta" + "message": "Älä näytä \"Salasana vaihdettu\" -ilmoitusta" }, "disableChangedPasswordNotificationDesc": { - "message": "\"Vaihdettu salasana\" -ilmoitus kehottaa automaattisesti sinua päivittämään holvissasi olevan käyttäjätunnuksen salasanan, kun se havaitsee, että olet muuttanut sitä verkkosivulla." + "message": "\"Salasana vaihdettu\" -kehote ehdottaa holviisi tallennetun salasanan automaattista päivitystä kun se havaitsee, että olet vaihtanut sen verkkosivustolla." }, "notificationChangeDesc": { - "message": "Haluatko päivittää tämän salasanan Bitwardenissa?" + "message": "Haluatko päivittää salasanan Bitwardeniin?" }, "notificationChangeSave": { "message": "Kyllä, päivitä nyt" }, "disableContextMenuItem": { - "message": "Älä näytä toimintoja pikavalikossa" + "message": "Älä käytä hiiren kakkospainikkeen pikavalikon toimintoja" }, "disableContextMenuItemDesc": { - "message": "Hiiren oikealla painikkeella ilmestyvän pikavalikon toiminnoilla voit nopeasti luoda itsellesi salasanan tai täyttää kirjautumiskentät nykyiselle välilehdelle." + "message": "Hiiren kakkospainikkeen pikavalikon kautta pääset nopeasti käsiksi salasanojen luontiin ja nykyisellä välilehdellä auki olevan sivuston kirjautumisteitoihin." }, "defaultUriMatchDetection": { - "message": "URIn oletustunnistustapa", + "message": "URI:n tunnistuksen oletustapa", "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "Valitse oletustapa, jolla URIen tunnistaminen tehdään esimerkiksi automaattisen täytön yhteydessä." + "message": "Valitse oletustapa, jolla URI tunnistetaan esimerkiksi automaattisen täytön yhteydessä." }, "theme": { "message": "Teema" }, "themeDesc": { - "message": "Vaihda sovelluksen väriteema." + "message": "Vaihda sovelluksen väriteemaa." }, "dark": { "message": "Tumma", @@ -606,11 +606,17 @@ "message": "VAROITUS", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { - "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + "message": "Tämä vienti sisältää holvisi tiedot salaamattomassa muodossa. Sinun ei tulisi säilyttää tai lähettää vietyä tiedostoa suojaamattomien kanavien (kuten sähköpostin) välityksellä. Poista se välittömästi kun sille ei enää ole käyttöä." + }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." }, "exportMasterPassword": { - "message": "Syötä pääsalasanasi viedäksesi holvisi tiedot." + "message": "Syötä pääsalasana viedäksesi holvisi tiedot." }, "shared": { "message": "Jaettu" @@ -619,7 +625,7 @@ "message": "Jaa holvisi" }, "shareVaultConfirmation": { - "message": "Voit jakaa Bitwardenilla holvisi sisällön muiden kanssa käyttämällä organisaatiotiliä. Haluatko käydä bitwarden.com-sivustolla lukemassa lisää?" + "message": "Bitwardenin avulla voit jakaa holvisi sisältöä muiden kanssa organisaatiotiliä käyttäen. Haluatko lukea bitwarden.com-sivustolta lisää?" }, "shareItem": { "message": "Jaa kohde" @@ -631,19 +637,19 @@ "message": "Jaettu kohde" }, "shareDesc": { - "message": "Valitse organisaatio, jonka kanssa haluat jakaa tämän kohteen. Jakaminen siirtää kohteen omistajuuden organisaatiolle. Et enää ole tämän kohteen suora omistaja, kun se on jaettu." + "message": "Valitse organisaatio, jonka kanssa haluat jakaa kohteen. Jako siirtää kohteen organisaation omistukseen, etkä tämän jälkeen ole enää sen suora omistaja." }, "learnMore": { "message": "Lue lisää" }, "authenticatorKeyTotp": { - "message": "Todennusavain (TOTP)" + "message": "Todennusmenetelmän avain (TOTP)" }, "verificationCodeTotp": { - "message": "Vahvistuskoodi (TOTP)" + "message": "Todennuskoodi (TOTP)" }, "copyVerificationCode": { - "message": "Kopioi vahvistuskoodi" + "message": "Kopioi todennuskoodi" }, "attachments": { "message": "Liitteet" @@ -655,16 +661,16 @@ "message": "Haluatko varmasti poistaa liitteen?" }, "deletedAttachment": { - "message": "Liite poistettu" + "message": "Poistettiin liite" }, "newAttachment": { "message": "Lisää uusi liite" }, "noAttachments": { - "message": "Ei liitteitä." + "message": "Liitteitä ei ole." }, "attachmentSaved": { - "message": "Liite tallennettu." + "message": "Liite on tallennettiin." }, "file": { "message": "Tiedosto" @@ -673,7 +679,7 @@ "message": "Valitse tiedosto." }, "maxFileSize": { - "message": "Tiedoston enimmäiskoko on 100 MB." + "message": "Tiedoston enimmäiskoko on 100 Mt." }, "featureUnavailable": { "message": "Toiminto ei ole käytettävissä" @@ -694,43 +700,43 @@ "message": "Päivitä jäsenyys" }, "premiumNotCurrentMember": { - "message": "Et ole tällä hetkellä premium-jäsen." + "message": "Et ole tällä hetkellä Premium-jäsen." }, "premiumSignUpAndGet": { - "message": "Ryhdy premium-jäseneksi saadaksesi" + "message": "Ryhdy Premium-jäseneksi saadaksesi:" }, "ppremiumSignUpStorage": { - "message": "1 Gt salattua tallennustilaa tiedostoliitteille." + "message": "1 Gt salattua tallennustilaa liitetiedostoille." }, "ppremiumSignUpTwoStep": { - "message": "lisävaihtoehtoja kaksivaiheiselle kirjautumiselle, kuten YubiKey, FIDO U2F ja Duo" + "message": "Muita kaksivaiheisen kirjautumisen todennusmenetelmiä kuten YubiKey, FIDO U2F ja Duo Security." }, "ppremiumSignUpReports": { - "message": "Salasanahygienia-, tiliturvallisuus- ja tietovuotoraportit pitävät holvisi turvassa." + "message": "Salasanahygienian, tilin terveyden ja tietovuotojen raportointitoiminnot pitävät holvisi turvassa." }, "ppremiumSignUpTotp": { - "message": "TOTP-vahvistuskoodigeneraattorin (2FA) holvisi käyttäjätunnuksille" + "message": "Kaksivaiheisen kirjautumisen (2FA) TOTP-todennuskoodien generaattori holvisi kirjautumistiedoille." }, "ppremiumSignUpSupport": { - "message": "etusijan asiakastuessa" + "message": "Ensisijainen asiakastuki." }, "ppremiumSignUpFuture": { - "message": "kaikki tulevat premium-ominaisuudet. Lisää tulossa pian!" + "message": "Kaikki tulossa olevat Premium-toiminnot. Lisää tulossa pian!" }, "premiumPurchase": { - "message": "Osta premium-jäsenyys" + "message": "Osta Premium" }, "premiumPurchaseAlert": { - "message": "Voit ostaa premium-jäsenyyden bitwarden.com-verkkoholvissa. Haluatko käydä sivustolla nyt?" + "message": "Voit ostaa Premium-jäsenyyden bitwarden.com-verkkoholvissa. Haluatko käydä sivustolla nyt?" }, "premiumCurrentMember": { - "message": "Olet premium-jäsen!" + "message": "Olet Premium-jäsen!" }, "premiumCurrentMemberThanks": { - "message": "Kiitos, että tuet Bitwardenin toimintaa." + "message": "Kiitos kun tuet Bitwardenia." }, "premiumPrice": { - "message": "Kaikki nämä vain $PRICE$ / vuosi!", + "message": "Kaikki tämä vain $PRICE$/vuosi!", "placeholders": { "price": { "content": "$1", @@ -739,25 +745,25 @@ } }, "refreshComplete": { - "message": "Päivitys valmis" + "message": "Päivitys on valmis" }, "disableAutoTotpCopy": { - "message": "Älä kopioi TOTP-koodeja automaattisesti" + "message": "Älä kopioi TOTP-todennuskoodeja automaattisesti" }, "disableAutoTotpCopyDesc": { - "message": "Jos käyttäjätunnukseesi on liitetty todennusavain, TOTP-vahvistuskoodi kopioidaan automaattisesti leikepöydällesi tehdessäsi kohteella automaattisen täytön." + "message": "Jos kirjautumistietoosi on liitetty kaksivaiheisen todennusmenetelmän avain, kopioidaan kaksivaiheisen kirjautumisen TOTP-todennuskoodi automaattisesti leikepöydälle kun suoritat kohteen automaattisen täytön." }, "premiumRequired": { "message": "Premium vaaditaan" }, "premiumRequiredDesc": { - "message": "Tarvitset premium-jäsenyyden tämän toiminnon käyttämiseen." + "message": "Käyttääksesi tätä toimintoa tarvitset Premium-jäsenyyden." }, "enterVerificationCodeApp": { - "message": "Syötä 6-numeroinen vahvistuskoodi todennussovelluksestasi." + "message": "Syötä 6-numeroinen todennuskoodi todennussovelluksestasi." }, "enterVerificationCodeEmail": { - "message": "Syötä 6-numeroinen vahvistuskoodi, joka lähetettiin osoitteeseen $EMAIL$.", + "message": "Syötä 6-numeroinen todennuskoodi, joka lähetettiin sähköpostitse osoitteeseen $EMAIL$.", "placeholders": { "email": { "content": "$1", @@ -766,7 +772,7 @@ } }, "verificationCodeEmailSent": { - "message": "Vahvistussähköposti lähetettiin osoitteeseen $EMAIL$.", + "message": "Todennussähköposti lähetettiin osoitteeseen $EMAIL$.", "placeholders": { "email": { "content": "$1", @@ -778,31 +784,31 @@ "message": "Muista minut" }, "sendVerificationCodeEmailAgain": { - "message": "Lähetä vahvistuskoodisähköposti uudestaan" + "message": "Lähetä todennuskoodi sähköpostitse uudelleen" }, "useAnotherTwoStepMethod": { - "message": "Käytä toista menetelmää kaksivaiheiseen kirjautumiseen" + "message": "Käytä eri kaksivaiheisen kirjautumisen todennusmenetelmää" }, "insertYubiKey": { - "message": "Kytke YubiKey-laitteesi tietokoneesi USB-porttiin ja paina sen nappia." + "message": "Kytke YubiKey-todennuslaitteesi tietokoneesi USB-porttiin ja paina sen painiketta." }, "insertU2f": { - "message": "Kytke todennuslaitteesi tietokoneesi USB-porttiin. Jos laitteessa on painike, paina sitä." + "message": "Kytke todennuslaitteesi tietokoneen USB-porttiin. Jos laitteessa on painike, paina sitä." }, "loginUnavailable": { - "message": "Kirjautuminen epäonnistui" + "message": "Kirjautuminen ei ole käytettävissä" }, "noTwoStepProviders": { - "message": "Tällä tilillä on kaksivaiheinen kirjautuminen käytössä, mutta tämä selain ei tue yhtäkään määritetyistä kaksivaihekirjautumisen menetelmistä." + "message": "Tilillä on käytössä kaksivaiheinen kirjautuminen, mutta tämä selain ei tue käytettävissä olevia todennusmenetelmiä." }, "noTwoStepProviders2": { - "message": "Käytä tuettua selainta (kuten Chromea) ja/tai ota käyttöön paremmin tuettu todennusmenetelmä (kuten todennussovellus)." + "message": "Käytä tuettua selainta (kuten Chrome) ja/tai ota käyttöön laajemmin tuettu todennusmenetelmä (kuten todennussovellus)." }, "twoStepOptions": { "message": "Kaksivaiheisen kirjautumisen asetukset" }, "recoveryCodeDesc": { - "message": "Etkö pysty käyttämään mitään kaksivaihemenetelmistäsi? Käytä palautuskoodiasi poistaaksesi käytöstä kaikki kaksivaiheisen todennuksen menetelmät tililtäsi." + "message": "Etkö pysty käyttämään kaksivaiheisen kirjautumisen todennusmenetelmiäsi? Poista kaikki menetelmät käytöstä tililtäsi palautuskoodillasi." }, "recoveryCodeTitle": { "message": "Palautuskoodi" @@ -811,25 +817,25 @@ "message": "Todennussovellus" }, "authenticatorAppDesc": { - "message": "Käytä todennussovellusta (Kuten Authya tai Google Authenticatoria) luodaksesi aikarajallisia vahvistuskoodeja.", + "message": "Käytä todennussovellusta (kuten Authy tai Google Authenticator) luodaksesi aikarajallisia todennuskoodeja.", "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." }, "yubiKeyTitle": { "message": "YubiKey OTP -todennuslaite" }, "yubiKeyDesc": { - "message": "Käytä YubiKeytä päästäksesi käsiksi tiliisi. Toimii seuraavien YubiKey-mallien kanssa: 4, 4 Nano, 4C ja NEO." + "message": "Käytä YubiKey-todennuslaitetta tilisi avaukseen. Toimii YubiKey 4, 4 Nano, 4C sekä NEO -laitteiden kanssa." }, "duoDesc": { - "message": "Vahvista kirjautumisesi Duo Securityn kautta käyttämällä Duo Mobile -sovellusta, tekstiviestiä, puhelua tai U2F-todennuslaitetta.", + "message": "Vahvista Duo Securityn avulla käyttäen Duo Mobile ‑sovellusta, tekstiviestiä, puhelua tai U2F-todennuslaitetta.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "duoOrganizationDesc": { - "message": "Vahvista organisaatiosi kirjautumiset Duo Securityn kautta käyttämällä Duo Mobile ‑sovellusta, tekstiviestiä, puhelua tai U2F-todennuslaitetta.", + "message": "Vahvista organisaatiollesi Duo Securityn avulla käyttäen Duo Mobile ‑sovellusta, tekstiviestiä, puhelua tai U2F-todennuslaitetta.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "u2fDesc": { - "message": "Käytä mitä tahansa FIDO U2F ‑yhteensopivaa todennuslaitetta päästäksesi käsiksi tiliisi." + "message": "Käytä tilisi avaukseen mitä tahansa FIDO U2F ‑yhteensopivaa todennuslaitetta." }, "u2fTitle": { "message": "FIDO U2F ‑todennuslaite" @@ -838,19 +844,19 @@ "message": "Sähköposti" }, "emailDesc": { - "message": "Vahvistuskoodit lähetetään sinulle sähköpostilla." + "message": "Todennuskoodit lähetetään sinulle sähköpostitse." }, "selfHostedEnvironment": { - "message": "Itse ylläpidetty ohjelmistoympäristö" + "message": "Oma palvelinympäristö" }, "selfHostedEnvironmentFooter": { - "message": "Syötä omalla palvelimella ylläpitämäsi Bitwarden-asennuksen kanta-URL." + "message": "Määritä omassa palvelinympäristössäsi suoritettavan Bitwarden-asennuksen pääverkkotunnus." }, "customEnvironment": { - "message": "Mukautettu ohjelmistoympäristö" + "message": "Mukautettu palvelinympäristö" }, "customEnvironmentFooter": { - "message": "Edistyneille käyttäjille. Voit syöttää jokaisen palvelun kanta-URL:n erikseen." + "message": "Edistyneille käyttäjille. Voit määrittää jokaiselle palvelulle oman pääverkkotunnuksen." }, "baseUrl": { "message": "Palvelimen URL" @@ -862,7 +868,7 @@ "message": "Verkkoholvipalvelimen URL" }, "identityUrl": { - "message": "Identiteettipalvelimen URL" + "message": "Henkilöllisyyspalvelimen URL" }, "notificationsUrl": { "message": "Ilmoituspalvelimen URL" @@ -871,13 +877,13 @@ "message": "Kuvakepalvelimen URL" }, "environmentSaved": { - "message": "Ohjelmistoympäristön URL:t tallennettu." + "message": "Palvelinten URL-osoitteet tallennettiin." }, "enableAutoFillOnPageLoad": { "message": "Täytä automaattisesti sivun latautuessa" }, "enableAutoFillOnPageLoadDesc": { - "message": "Tiedot täytetään automaattisesti, jos sivun latautuessa havaitaan kirjautumislomake." + "message": "Jos sivulla havaitaan kirjautumislomake, täytetään kirjautumistiedot automaattisesti sivua ladattaessa." }, "experimentalFeature": { "message": "Tämä on vielä kokeellinen toiminto. Käytä omalla vastuullasi." @@ -889,7 +895,7 @@ "message": "Avaa holvi sivupalkissa" }, "commandAutofillDesc": { - "message": "Täytä automaattisesti tällä sivustolla viimeksi käytetty käyttäjätunnus." + "message": "Täytä automaattisesti viimeisin nykyisellä sivustolla käytetty kirjautumistieto" }, "commandGeneratePasswordDesc": { "message": "Luo uusi satunnainen salasana ja kopioi se leikepöydälle." @@ -913,28 +919,28 @@ "message": "Uusi lisäkenttä" }, "dragToSort": { - "message": "Lajittele vetämällä" + "message": "Järjestä raahaamalla" }, "cfTypeText": { "message": "Teksti" }, "cfTypeHidden": { - "message": "Piilotettu teksti" + "message": "Piilotettu" }, "cfTypeBoolean": { - "message": "Valintaruutu" + "message": "Totuusarvo" }, "popup2faCloseMessage": { - "message": "Kun napsautat ponnahdusikkunan ulkopuolelta tarkistaaksesi vahvistuskoodin sähköpostistasi, näkymä sulkeutuu. Haluatko avata tämän näkymän uuteen ikkunaan, jotta se ei sulkeutuisi?" + "message": "Klikkaus ponnahdusikkunan ulkopuolelle todennuskoodin sähköpostista noutoa varten sulkee ikkunan. Haluatko avata näkymän uuteen ikkunaan, jotta se pysyy avoinna?" }, "popupU2fCloseMessage": { - "message": "Tämä selain ei mahdollista U2F:n käyttämistä tässä ponnahdusikkunassa. Haluatko avata tämän näkymän uuteen ikkunaan, jotta voit kirjautua U2F-todennuslaitteella?" + "message": "Tämä selain ei voi käsitellä U2F-pyyntöjä tässä ponnahdusikkunassa. Haluatko avata näkymän uuteen ikkunaan, jotta voit vahvistaa kirjautumisen U2F-todennuslaitteella?" }, "disableFavicon": { - "message": "Älä näytä sivustokuvakkeita" + "message": "Älä näytä sivustojen kuvakkeita" }, "disableFaviconDesc": { - "message": "Holvisi käyttäjätunnuslistassa näytettävät sivustokuvakkeet helpottavat kohteiden tunnistamista." + "message": "Kirjautumistietojen vieressä näytettävät sivustojen kuvakkeet helpottavat kohteiden tunnistusta." }, "cardholderName": { "message": "Kortinhaltijan nimi" @@ -991,7 +997,7 @@ "message": "Joulukuu" }, "securityCode": { - "message": "Turvakoodi" + "message": "Turvakoodi (CVV)" }, "ex": { "message": "esim." @@ -1024,7 +1030,7 @@ "message": "Henkilöllisyyden nimi" }, "company": { - "message": "Yhtiö" + "message": "Yritys" }, "ssn": { "message": "Henkilötunnus" @@ -1033,10 +1039,10 @@ "message": "Passin numero" }, "licenseNumber": { - "message": "Rekisterinumero" + "message": "Ajokortin numero" }, "email": { - "message": "Sähköpostiosoite" + "message": "Sähköposti" }, "phone": { "message": "Puhelinnumero" @@ -1069,13 +1075,13 @@ "message": "Tyyppi" }, "typeLogin": { - "message": "Käyttäjätunnus" + "message": "Kirjautumistieto" }, "typeLogins": { - "message": "Käyttäjätunnukset" + "message": "Kirjautumistiedot" }, "typeSecureNote": { - "message": "Salattu muistiinpano" + "message": "Salattu muistio" }, "typeCard": { "message": "Kortti" @@ -1090,7 +1096,7 @@ "message": "Takaisin" }, "collections": { - "message": "Valikoimat" + "message": "Kokoelmat" }, "favorites": { "message": "Suosikit" @@ -1108,10 +1114,10 @@ "message": "Henkilöllisyydet" }, "logins": { - "message": "Käyttäjätunnukset" + "message": "Kirjautumistiedot" }, "secureNotes": { - "message": "Salatut muistiinpanot" + "message": "Salatut muistiot" }, "clear": { "message": "Tyhjennä", @@ -1121,7 +1127,7 @@ "message": "Tarkista, onko salasana vuotanut." }, "passwordExposed": { - "message": "Tämä salasana on paljastunut $VALUE$ tietovuodossa. Sinun kannattaa vaihtaa se.", + "message": "Salasana on paljastunut $VALUE$ tietovuodossa. Se tulisi vaihtaa.", "placeholders": { "value": { "content": "$1", @@ -1136,14 +1142,14 @@ "message": "Pääverkkotunnus" }, "host": { - "message": "Osoite", + "message": "Isäntä", "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." }, "exact": { - "message": "Täsmälleen…" + "message": "Tarkka" }, "startsWith": { - "message": "Alkaa…" + "message": "Alkaa" }, "regEx": { "message": "Säännöllinen lauseke", @@ -1154,11 +1160,11 @@ "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { - "message": "Oletustunnistustapa", + "message": "Tunnistuksen oletustapa", "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Näytä/piilota asetukset" + "message": "Näytä tai piilota asetukset" }, "toggleCurrentUris": { "message": "Näytä/piilota nykyiset URI:t", @@ -1179,7 +1185,7 @@ "message": "Kaikki kohteet" }, "noPasswordsInList": { - "message": "Ei salasanoja näytettäväksi." + "message": "Ei näytettäviä salasanoja." }, "remove": { "message": "Poista" @@ -1192,11 +1198,11 @@ "description": "ex. Date this item was updated" }, "datePasswordUpdated": { - "message": "Salasana päivitetty", + "message": "Salasana päivitettiin", "description": "ex. Date this password was updated" }, "neverLockWarning": { - "message": "Oletko varma, että haluat käyttää asetusta \"ei koskaan\"? Tämä valinta tallentaa holvisi salausavaimen laitteellesi. Jos käytät tätä asetusta, varmista että laitteesi on hyvin suojattu." + "message": "Oletko varma, että haluat käyttää asetusta \"Ei koskaan\"? Tämä valinta tallentaa holvisi salausavaimen laitteellesi. Jos käytät asetusta, varmista että laitteesi on hyvin suojattu." }, "noOrganizationsList": { "message": "Et kuulu mihinkään organisaatioon. Organisaatioiden avulla voit jakaa kohteita turvallisesti muiden käyttäjien kanssa." @@ -1205,7 +1211,7 @@ "message": "Ei näytettäviä kokoelmia." }, "ownership": { - "message": "Omistajuus" + "message": "Omistus" }, "whoOwnsThisItem": { "message": "Kuka omistaa tämän kohteen?" @@ -1226,17 +1232,17 @@ "message": "Heikko pääsalasana" }, "weakMasterPasswordDesc": { - "message": "Valitsemasi pääsalasana on heikko. Sinun kannattaa käyttää vahvaa pääsalasanaa (tai ‑salalauseketta) suojataksesi Bitwarden-tilisi kunnolla. Haluatko varmasti käyttää tätä pääsalasanaa?" + "message": "Valitsemasi pääsalasana on heikko. Sinun tulisi käyttää vahvaa pääsalasanaa (tai salauslauseketta) suojataksesi Bitwarden-tilisi kunnolla. Haluatko varmasti käyttää tätä pääsalasanaa?" }, "pin": { - "message": "PIN-koodi", + "message": "PIN", "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." }, "unlockWithPin": { - "message": "Avaa PIN-koodilla" + "message": "Avaa lukitus PIN-koodilla" }, "setYourPinCode": { - "message": "Aseta PIN-koodi Bitwardenin avaamista varten. PIN-asetukset nollautuvat, jos kirjaudut täysin ulos sovelluksesta." + "message": "Aseta PIN-koodisi Bitwardenin avausta varten. PIN-asetukset tyhjentyvät, jos kirjaudut kokonaan ulos sovelluksesta." }, "pinRequired": { "message": "PIN-koodi vaaditaan." @@ -1250,11 +1256,20 @@ "yourVaultIsLockedPinCode": { "message": "Holvisi on lukittu. Vahvista PIN-koodisi jatkaaksesi." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { - "message": "Lukitse pääsalasanalla selainta uudelleenkäynnistettäessä" + "message": "Lukitse pääsalasanalla kun selain käynnistetään uudelleen" }, "selectOneCollection": { - "message": "Valitse vähintään yksi kokoelma." + "message": "Valitse ainakin yksi kokoelma." }, "cloneItem": { "message": "Kloonaa kohde" @@ -1263,7 +1278,7 @@ "message": "Kloonaa" }, "passwordGeneratorPolicyInEffect": { - "message": "Yksi tai useampi organisaatiokäytäntö vaikuttaa generaattorisi asetuksiin." + "message": "Yksi tai useampi organisaation käytäntö vaikuttaa generaattorisi asetuksiin." }, "vaultTimeoutAction": { "message": "Holvin aikakatkaisun toiminto" @@ -1283,22 +1298,22 @@ "message": "Poista kohde pysyvästi" }, "permanentlyDeleteItemConfirmation": { - "message": "Haluatko varmasti poistaa tämän kohteen pysyvästi?" + "message": "Haluatko varmasti poistaa kohteen pysyvästi?" }, "permanentlyDeletedItem": { - "message": "Kohde poistettu pysyvästi" + "message": "Poistettiin kohde pysyvästi" }, "restoreItem": { "message": "Palauta kohde" }, "restoreItemConfirmation": { - "message": "Haluatko varmasti palauttaa tämän kohteen?" + "message": "Haluatko varmasti palauttaa kohteen?" }, "restoredItem": { - "message": "Kohde palautettu" + "message": "Kohde palautettiin" }, "vaultTimeoutLogOutConfirmation": { - "message": "Uloskirjautuminen poistaa kaiken pääsyn holviisi ja vaatii online-todennuksen aikakatkaisuajan jälkeen. Haluatko varmasti käyttää tätä asetusta?" + "message": "Uloskirjautuminen estää pääsyn holviisi ja vaatii ajan umpeuduttua todennuksen internet-yhteyden välityksellä. Haluatko varmasti käyttää tätä asetusta?" }, "vaultTimeoutLogOutConfirmationTitle": { "message": "Aikakatkaisun toiminnon vahvistus" @@ -1307,16 +1322,16 @@ "message": "Täytä automaattisesti ja tallenna" }, "autoFillSuccessAndSavedUri": { - "message": "Kohde täytettiin automaattisesti ja URI tallennettiin" + "message": "Täytettiin kohde automaattisesti ja URI tallennettiin" }, "autoFillSuccess": { - "message": "Kohde täytettiin automaattisesti" + "message": "Täytettiin kohde automaattisesti" }, "setMasterPassword": { "message": "Aseta pääsalasana" }, "masterPasswordPolicyInEffect": { - "message": "Yksi tai useampi organisaatiokäytäntö edellyttää, että pääsalasanasi täyttää seuraavat vaatimukset:" + "message": "Yksi tai useampi organisaation käytäntö edellyttää, että pääsalasanasi täyttää seuraavat vaatimukset:" }, "policyInEffectMinComplexity": { "message": "Monimutkaisuuden vähimmäispistemäärä on $SCORE$", @@ -1355,18 +1370,78 @@ } }, "masterPasswordPolicyRequirementsNotMet": { - "message": "Uusi pääsalasanasi ei täytä käytäntövaatimuksia." + "message": "Uusi pääsalasanasi ei täytä käytännön vaatimuksia." }, "acceptPolicies": { "message": "Valitsemalla tämän ruudun hyväksyt seuraavat:" }, "acceptPoliciesError": { - "message": "Palvelu- ja tietosuojakäytäntöä ei ole vahvistettu." + "message": "Käyttöehtoja ja tietosuojakäytäntöä ei ole vahvistettu." }, "termsOfService": { "message": "Käyttöehdot" }, "privacyPolicy": { "message": "Tietosuojakäytäntö" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 8e81cbc763b58a665b603afaeb687370bc1fbe98 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:40 -0500 Subject: [PATCH 44/73] New translations copy.resx (Finnish) --- store/locales/fi/copy.resx | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/store/locales/fi/copy.resx b/store/locales/fi/copy.resx index 0173435f31..e1dcb50010 100644 --- a/store/locales/fi/copy.resx +++ b/store/locales/fi/copy.resx @@ -118,39 +118,41 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Bitwarden – Ilmainen salasananhallinta + Bitwarden – Ilmainen salasanojen hallinta - Turvallinen ja ilmainen salasananhallintapalvelu kaikille laitteillesi + Turvallinen ja ilmainen salasanojen hallintapalvelu kaikille laitteillesi - Bitwarden on helpoin ja turvallisin tapa säilyttää kaikki käyttäjänimesi ja salasanasi, kätevästi synkronoituna kaikille laitteillesi. + Bitwarden on helpoin ja turvallisin tapa säilyttää käyttäjätunnuksesi ja salasanasi, samalla pitäen ne synkronoituna laitteidesi välillä. -Salasanavarkaudet ovat vakava ongelma. Käyttämäsi verkkosivustot ja sovellukset ovat hyökkäyksen kohteena päivittäin. Tietoturvavuotoja tapahtuu ja salasanoja varastetaan. Jos käytät samoja salasanoja eri sivustoilla ja sovelluksissa, hakkerit voivat helposti päästä käsiksi sähköpostiisi, pankkiisi ja muihin tärkeisiin tileihisi. +Salasanavarkaudet ovat vakava ongelma ja monet käyttämäsi sivustot ja sovellukset ovat päivittäisten hyökkäysten kohteina. Tietoturvavuotoja tapahtuu ja salasanoja varastetaan. Jos käytät samoja salasanoja uudelleen eri sivustoilla ja sovelluksissa, saattavat hakkerit päästä helposti käsiksi sähköpostiisi, pankkiisi tai muihin tärkeisiin käyttäjätileihisi. -Tietoturva-asiantuntijat suosittelevat erilaisten, satunnaisesti luotujen salasanojen käyttämistä kaikilla tileilläsi. Mutta kuinka hallitset kaikkia näitä salasanoja? Bitwarden tekee salasanojen luomisesta, säilyttämisestä ja käyttämisestä helppoa. +Tietoturva-asiantuntijat suosittelevat ainutlaatuisten, satunnaisesti luotujen salasanojen käyttöä kaikilla käyttäjätileilläsi. Mutta kuinka sitten hallitset näitä kaikkia erilaisia salasanoja? Bitwarden tekee laadukkaiden ja ainutlaatuisten salasanojen luonnista, säilytyksestä ja käytöstä helppoa. -Bitwarden säilöö kaikki kirjautumistietosi salattuun holviin, joka synkronoidaan kaikille laitteillesi. Koska tietosi ovat täysin salattuja jo ennen kuin ne lähtevät laitteeltasi, vain sinä pääset käsiksi niihin. Edes Bitwardenin kehitystiimi ei voi lukea tietojasi, vaikka haluaisi. Tietosi suojataan 256-bittisellä AES-salauksella, suolatulla tiivistyksellä sekä PBKDF2- ja SHA-256-menetelmillä.! +Bitwarden säilyttää kaikki kirjautumistietosi salattussa holvissa, joka synkronoidaan laitteidesi välillä. Koska tietosi ovat täysin salattuja jo ennen kuin ne edes lähtevät laitteeltasi, vain sinä pääset niihin käsiksi. Edes Bitwardenin kehittäjät eivät voi lukea tietojasi, vaikka haluaisivat. Tietosi suojataan 256-bittisellä AES-salauksella, suolatulla hajautuksella sekä PBKDF2 ja SHA-256 -menetelmillä. + +Bitwarden on 100% avointa lähdekoodia. Bitwardenin lähdekoodi on esillä GitHubissa ja kuka tahansa voi tutkia ja tarkastella sitä sekä osallistua Bitwardenin kehitykseen. - Turvallinen ja ilmainen salasananhallintapalvelu kaikille laitteillesi + Turvallinen ja ilmainen salasanojen hallintapalvelu kaikille laitteillesi - Synkronoi ja hallitse holviasi eri laitteilla + Synkronoi ja hallitse holviasi useilla laitteilla - Hallitse kirjautumistietojasi suojatusta holvista + Hallitse käyttäjätunnuksiasi ja salasanojasi suojatussa holvissa - Käytä automaattista kirjautumistietojen täydennystä millä tahansa sivustolla + Täytä kirjautumistietosi automaattisesti ja nopeasti millä tähänsä sivustolla - Pääse käsiksi holvisi tietoihin suoraan selaimesi kontekstivalikosta + Pääse käsiksi holviisi myös suoraan hiiren kakkospainikkeen pikavalikosta - Luo automaattiseti vahvoja, satunnaisia ja turvallisia salasanoja + Luo automaattisesti vahvoja, satunnaisia ja turvallisia salasanoja - Käsittele AES-256-salauksella suojattuja tietojasi turvallisesti + Käsittele 256-bittisellä AES-salauksella suojattuja tietojasi turvallisesti \ No newline at end of file From 69f2b8f921f8110e945dcee0dbb47a9abac601e0 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:42 -0500 Subject: [PATCH 45/73] New translations messages.json (Hebrew) --- src/_locales/he/messages.json | 77 ++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/src/_locales/he/messages.json b/src/_locales/he/messages.json index a6b4642144..5640cfa21c 100644 --- a/src/_locales/he/messages.json +++ b/src/_locales/he/messages.json @@ -606,9 +606,15 @@ "message": "אזהרה", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "הקובץ מכיל את פרטי הכספת שלך בפורמט לא מוצפן. מומלץ להעביר את הקובץ רק בדרכים מוצפנות, ומאוד לא מומלץ לשמור או לשלוח את הקובץ הזה בדרכים לא מוצפנות (כדוגמת סתם אימייל). מחק את הקובץ מיד לאחר שסיימת את השימוש בו." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "הזן את הסיסמה הראשית שלך עבור יצוא המידע מהכספת." }, @@ -895,7 +901,7 @@ "message": "צור והעתק סיסמה רנדומלית חדשה." }, "commandLockVaultDesc": { - "message": "נעילת הכספת" + "message": "נעל את הכספת" }, "privateModeMessage": { "message": "לצערנו חלון זה אינו זמין במצב גלישה פרטית בדפדפן זה." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "הכספת שלך נעולה. הזן את קוד הPIN שלך כדי להמשיך." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "נעל בעזרת הסיסמה הראשית בהפעלת הדפדפן מחדש" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "מדיניות הפרטיות" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 2858758cf51a039de38616ba886874c50c6b00ec Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:44 -0500 Subject: [PATCH 46/73] New translations messages.json (Hungarian) --- src/_locales/hu/messages.json | 91 ++++++++++++++++++++++++++++++++--- 1 file changed, 83 insertions(+), 8 deletions(-) diff --git a/src/_locales/hu/messages.json b/src/_locales/hu/messages.json index 46dfba0f80..a2257f3c75 100644 --- a/src/_locales/hu/messages.json +++ b/src/_locales/hu/messages.json @@ -11,7 +11,7 @@ "description": "Extension description" }, "loginOrCreateNewAccount": { - "message": "Jelentkezz be vagy készíts új felhasználót a biztonsági széfed eléréshez." + "message": "Bejelentkezés vagy új fiók létrehozása a biztonsági széf eléréséhez." }, "createAccount": { "message": "Fiók létrehozása" @@ -498,7 +498,7 @@ "message": "Elem szerkesztve" }, "deleteItemConfirmation": { - "message": "Biztosan törlöd ezt az elemet?" + "message": "Biztosan törlésre kerüljön ezt az elem?" }, "deletedItem": { "message": "Az elem törlésre került." @@ -606,8 +606,14 @@ "message": "FIGYELEM", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { - "message": "Ez az exportálás titkosítás nélkül tartalmazza a széfadatokat.Nem célszerű az exportált fájlt nem biztonságos csatornákon tárolni és továbbküldeni (például emailben). A felhasználás után erősen ajánlott a törlés." + "message": "Ez az exportálás titkosítás nélkül tartalmazza a széfadatokat. Nem célszerű az exportált fájlt nem biztonságos csatornákon tárolni és tovább küldeni (például emailben). A felhasználás után erősen ajánlott a törlés." + }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." }, "exportMasterPassword": { "message": "Add meg a jelszavad a széf adataid exportálásához." @@ -847,7 +853,7 @@ "message": "A helyileg működtetett Bitwarden telepítés alap webcímének megadása." }, "customEnvironment": { - "message": "Egyéni környezet" + "message": "Egyedi környezet" }, "customEnvironmentFooter": { "message": "Haladó felhasználóknak. Minden egyes szolgáltatás alap URL-jét külön megadhatod." @@ -991,10 +997,10 @@ "message": "December" }, "securityCode": { - "message": "Biztonsági Kód" + "message": "Biztonsági kód" }, "ex": { - "message": "pl." + "message": "példa:" }, "title": { "message": "Titulus" @@ -1136,7 +1142,7 @@ "message": "Alap domain" }, "host": { - "message": "Gazdagép", + "message": "Kiszolgáló", "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." }, "exact": { @@ -1245,11 +1251,20 @@ "message": "A pinkód érvénytelen." }, "verifyPin": { - "message": "Pnkód ellenőrzése" + "message": "Pinkód ellenőrzése" }, "yourVaultIsLockedPinCode": { "message": "A széf zárolásra került. A folytatáshoz meg kell adni a pinkódot." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Lezárás mesterjelszóval a böngésző újraindításakor" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Adatvédelem" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 542b91e825d3ec351184fc067bc0c59d0daef837 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:46 -0500 Subject: [PATCH 47/73] New translations copy.resx (Hungarian) --- store/locales/hu/copy.resx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/store/locales/hu/copy.resx b/store/locales/hu/copy.resx index f9216b2340..0e6b6c3347 100644 --- a/store/locales/hu/copy.resx +++ b/store/locales/hu/copy.resx @@ -121,7 +121,7 @@ Bitwarden - Ingyenes jelszókezelő - Egy biztonságos és ingyenes jelszó kezelő az összes eszközödre + Egy biztonságos és ingyenes jelszókezelő az összes eszközre. A Bitwarden a legkönnyebb és legbiztonságosabb módja a bejelentkezések és jelszavak tárolására miközben szinkronba tarja ezeket az összes eszközön. @@ -133,24 +133,24 @@ A biztonság szakértők azt javasolják, hogy használjunk különböző vélet A Bitwarden egy titkosított széfben tárolja az összes bejelentkezés és szinkronizálja őket az összes eszközön. Mivel ezek az adatok teljesen titkosítva vannak még az eszköz elhagyása előtt, így csak a tulajdonos érheti el ezeket. Még maga a Bitwarden csapata se tudja elolvasni az adatokat, még ha akarnák, akkor sem. Az adatok AES-256 bites titkosítással, egy úgynevezett 'salted hasing' módszerrel és PBKDF2 SHA-256 titkosítással vannak védve. - Egy biztonságos és ingyenes jelszó kezelő az összes eszközödre + Egy biztonságos és ingyenes jelszókezelő az összes eszközre - Szinkronizáld és érd el a széfedet több eszközről is + A széf szinkronizálása és elérése több eszközön. - Kezeld az összes bejelentkezésed és jelszavad egy biztonságos széfből + Az összes bejelentkezés és jelszó kezelése egy biztonságos széfben. - Gyorsan és automatikusan töltsd ki a bejelentkezési hitelesítő adatokat bármely weboldalon + A hitelesítő adatok gyors és automatikus kitöltése bármelyik felkeresett webhelyen. - A széfed szintén könnyen elérhető a jobb kattintás menüből + A széf kényelmesen elérhető a jobb egérkattintásos menüből. - Automatikuson generálj erős, véletlenszerű és biztonságos jelszavakat + Erős, véletlenszerű és biztonságos jelszavak generálása automatikusan. - Adataid biztonságos AES-256 bites titkosítással van kezelve + Az információ biztonsággal kezelhető az AES-256 bit titkosítása. \ No newline at end of file From e9779644a38d755c4369f4be51102585d9ec4123 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:47 -0500 Subject: [PATCH 48/73] New translations messages.json (Italian) --- src/_locales/it/messages.json | 79 ++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 2 deletions(-) diff --git a/src/_locales/it/messages.json b/src/_locales/it/messages.json index 4d4afbd962..7ef6d45df6 100644 --- a/src/_locales/it/messages.json +++ b/src/_locales/it/messages.json @@ -606,9 +606,15 @@ "message": "ATTENZIONE", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Questa esportazione contiene i dati del tuo portachiavi in un formato non criptato. Non salvare o inviare il file esportato su canali non protetti (come la posta elettronica). Eliminalo immediatamente dopo aver finito di usarlo." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Inserisci la tua password principale per esportare i dati della tua cassaforte." }, @@ -895,7 +901,7 @@ "message": "Genera e copia una nuova password casuale negli appunti." }, "commandLockVaultDesc": { - "message": "Blocca il portachiavi" + "message": "Blocca la cassaforte" }, "privateModeMessage": { "message": "Purtroppo questa finestra non è disponibile nella modalità anonima per questo browser." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Il tuo portachiavi è bloccato. Inserisci il tuo codice PIN per continuare." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Blocca con la password principale al riavvio del browser" }, @@ -1358,7 +1373,7 @@ "message": "La tua nuova password principale non soddisfa i requisiti di sicurezza." }, "acceptPolicies": { - "message": "Selezionando questa casella accetti quanto segue:" + "message": "Selezionando la casella accetti quanto segue:" }, "acceptPoliciesError": { "message": "I Termini di Servizio e l'Informativa sulla Privacy non sono stati accettati." @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Informativa sulla privacy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From ae2f5cd7b32b2b527827e1a914dd68620a952409 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:49 -0500 Subject: [PATCH 49/73] New translations messages.json (Japanese) --- src/_locales/ja/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/ja/messages.json b/src/_locales/ja/messages.json index fe1167ce09..3af4097053 100644 --- a/src/_locales/ja/messages.json +++ b/src/_locales/ja/messages.json @@ -606,9 +606,15 @@ "message": "警告", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "このエクスポートデータは暗号化されていない形式の保管庫データを含んでいます。メールなどのセキュリティ保護されていない方法で共有したり保管したりしないでください。使用した後はすぐに削除してください。" }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "保管庫のデータをエクスポートするにはマスターパスワードを入力してください。" }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "保管庫がロックされています。PIN コードで認証してください。" }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "ブラウザー再起動時にマスターパスワードでロック" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "プライバシーポリシー" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 9c74e5e0d53f6781136c20ba6f41fd4f5f89c4f8 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:51 -0500 Subject: [PATCH 50/73] New translations messages.json (Korean) --- src/_locales/ko/messages.json | 87 ++++++++++++++++++++++++++++++++--- 1 file changed, 81 insertions(+), 6 deletions(-) diff --git a/src/_locales/ko/messages.json b/src/_locales/ko/messages.json index fd3f82df6d..47ea166205 100644 --- a/src/_locales/ko/messages.json +++ b/src/_locales/ko/messages.json @@ -580,7 +580,7 @@ "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "자동 완성같은 작업을 수행할 때 로그인에 대해 URI 일치 감지가 처리되는 기본 방법을 선택하십시오." + "message": "자동 완성 등의 작업에서 각 로그인 항목의 URI 일치 감지를 처리할 기본 방법을 선택하세요." }, "theme": { "message": "테마" @@ -606,9 +606,15 @@ "message": "경고", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "내보내기는 보관함 데이터가 암호화되지 않은 형식으로 포함됩니다. 내보낸 파일을 안전하지 않은 채널(예: 이메일)을 통해 저장하거나 보내지 마십시오. 사용이 끝난 후에는 즉시 삭제하십시오." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "보관함 데이터를 내보내려면 마스터 비밀번호를 입력하세요." }, @@ -895,7 +901,7 @@ "message": "새 무작위 비밀번호를 만들고 클립보드에 복사합니다." }, "commandLockVaultDesc": { - "message": "Lock the vault" + "message": "금고 잠그기" }, "privateModeMessage": { "message": "죄송합니다. 이 브라우저에서는 시크릿 창에서 이 창을 사용할 수 없습니다." @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "보관함이 잠겨 있습니다. PIN 코드를 입력하여 계속하세요." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "브라우저 다시 시작 시 마스터 비밀번호로 잠금" }, @@ -1358,15 +1373,75 @@ "message": "새 마스터 비밀번호가 정책 요구 사항을 따르지 않습니다." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "이 박스를 체크하면 다음에 동의하는 것으로 간주됩니다:" }, "acceptPoliciesError": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "서비스 약관 및 개인 정보 보호 정책을 확인하지 않았습니다." }, "termsOfService": { - "message": "Terms of Service" + "message": "서비스 약관" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "개인 정보 보호 정책" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From f59cb0fa3e16045b521578f324239fe82a896ac8 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:53 -0500 Subject: [PATCH 51/73] New translations messages.json (Dutch) --- src/_locales/nl/messages.json | 77 ++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/src/_locales/nl/messages.json b/src/_locales/nl/messages.json index 03194a40a1..2464e1d22c 100644 --- a/src/_locales/nl/messages.json +++ b/src/_locales/nl/messages.json @@ -312,7 +312,7 @@ "message": "Ontgrendelen" }, "loggedInAsOn": { - "message": "Ingelogd als $EMAIL$ op $HOSTNAME$.", + "message": "Aangemeld als $EMAIL$ op $HOSTNAME$.", "placeholders": { "email": { "content": "$1", @@ -606,9 +606,15 @@ "message": "WAARSCHUWING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Deze export bevat jouw kluisgegevens in een niet-versleutelde opmaak. Je moet het geëxporteerde bestand niet opslaan of verzenden over onbeveiligde kanalen (zoals e-mail). Verwijder het exportbestand direct na gebruik." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Voer je hoofdwachtwoord in om de kluisgegevens te exporteren." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Je kluis is vergrendeld. Voer je PIN-code in om door te gaan." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Vergrendelen met hoofdwachtwoord bij herstart browser" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacybeleid" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From 99f858a1ff29324c531f98bc07cc0eb5af5f6d30 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:55 -0500 Subject: [PATCH 52/73] New translations messages.json (Polish) --- src/_locales/pl/messages.json | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/_locales/pl/messages.json b/src/_locales/pl/messages.json index 2bd9e4aa47..210979b1c0 100644 --- a/src/_locales/pl/messages.json +++ b/src/_locales/pl/messages.json @@ -606,9 +606,15 @@ "message": "UWAGA", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "Plik zawiera dane sejfu w niezaszyfrowanym formacie. Nie powinieneś go przechowywać, ani przesyłać poprzez niezabezpieczone kanały (takie jak poczta e-mail). Skasuj go natychmiast po użyciu." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Wpisz hasło główne, aby wyeksportować dane z sejfu." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Sejf jest zablokowany. Wpisz kod PIN, aby kontynuować." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Zablokuj hasłem głównym po uruchomieniu przeglądarki" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Polityka prywatności" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From a96e2b2353bc95a5c80bb7fc57dbf6f473224cb0 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 19 Jan 2021 21:49:57 -0500 Subject: [PATCH 53/73] New translations messages.json (English, India) --- src/_locales/en_IN/messages.json | 81 ++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/src/_locales/en_IN/messages.json b/src/_locales/en_IN/messages.json index 02148b474f..4d97027dae 100644 --- a/src/_locales/en_IN/messages.json +++ b/src/_locales/en_IN/messages.json @@ -101,7 +101,7 @@ "message": "There are no logins available to auto-fill for the current browser tab." }, "addLogin": { - "message": "ഒരു പ്രവേശനം ചേർക്കുക" + "message": "Add a login" }, "addItem": { "message": "Add item" @@ -136,10 +136,10 @@ "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." }, "twoStepLogin": { - "message": "രണ്ട്-ഘട്ട പ്രവേശനം" + "message": "Two-step login" }, "logOut": { - "message": "ലോഗ് ഔട്ട്" + "message": "Log out" }, "about": { "message": "About" @@ -606,9 +606,15 @@ "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over insecure channels (such as email). Delete it immediately after you are done using it." }, + "encExportWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, "exportMasterPassword": { "message": "Enter your master password to export your vault data." }, @@ -1250,6 +1256,15 @@ "yourVaultIsLockedPinCode": { "message": "Your vault is locked. Verify your PIN code to continue." }, + "unlockWithBiometrics": { + "message": "Unlock with biometrics" + }, + "awaitDesktop": { + "message": "Awaiting confirmation from desktop" + }, + "awaitDesktopDesc": { + "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" }, @@ -1368,5 +1383,65 @@ }, "privacyPolicy": { "message": "Privacy Policy" + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "ok": { + "message": "Ok" + }, + "desktopSyncVerificationTitle": { + "message": "Desktop sync verification" + }, + "desktopIntegrationVerificationText": { + "message": "Please verify that the desktop application shows this fingerprint: " + }, + "desktopIntegrationDisabledTitle": { + "message": "Browser integration is not enabled" + }, + "desktopIntegrationDisabledDesc": { + "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + }, + "startDesktopTitle": { + "message": "Start the Bitwarden Desktop application" + }, + "startDesktopDesc": { + "message": "The Bitwarden Desktop application needs to be started before this function can be used." + }, + "errorEnableBiometricTitle": { + "message": "Unable to enable biometrics" + }, + "errorEnableBiometricDesc": { + "message": "Action was canceled by the desktop application" + }, + "nativeMessagingInvalidEncryptionDesc": { + "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + }, + "nativeMessagingInvalidEncryptionTitle": { + "message": "Desktop communication interrupted" + }, + "nativeMessagingWrongUserDesc": { + "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + }, + "nativeMessagingWrongUserTitle": { + "message": "Account missmatch" + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + }, + "biometricsNotSupportedTitle": { + "message": "Biometrics not supported" + }, + "biometricsNotSupportedDesc": { + "message": "Browser biometrics is not supported on this device." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." } } From eec9ba3277ed8b1fb35149311ed91cf4a6794e61 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Thu, 21 Jan 2021 15:53:05 -0500 Subject: [PATCH 54/73] New Crowdin updates (#1545) * New translations messages.json (Romanian) * New translations messages.json (English, United Kingdom) * New translations messages.json (Estonian) * New translations messages.json (Persian) * New translations messages.json (Indonesian) * New translations messages.json (Chinese Traditional) * New translations messages.json (Chinese Simplified) * New translations messages.json (Ukrainian) * New translations messages.json (Turkish) * New translations messages.json (Serbian (Cyrillic)) * New translations messages.json (Russian) * New translations messages.json (Catalan) * New translations messages.json (Polish) * New translations messages.json (Dutch) * New translations messages.json (Korean) * New translations messages.json (Japanese) * New translations messages.json (Italian) * New translations messages.json (Hungarian) * New translations messages.json (Hebrew) * New translations messages.json (Finnish) * New translations messages.json (Greek) * New translations messages.json (German) * New translations messages.json (English, India) --- src/_locales/ca/messages.json | 50 +++++++++++++++--------------- src/_locales/de/messages.json | 50 +++++++++++++++--------------- src/_locales/el/messages.json | 50 +++++++++++++++--------------- src/_locales/en_GB/messages.json | 10 +++--- src/_locales/en_IN/messages.json | 2 +- src/_locales/et/messages.json | 48 ++++++++++++++--------------- src/_locales/fa/messages.json | 50 +++++++++++++++--------------- src/_locales/fi/messages.json | 50 +++++++++++++++--------------- src/_locales/he/messages.json | 16 +++++----- src/_locales/hu/messages.json | 48 ++++++++++++++--------------- src/_locales/id/messages.json | 48 ++++++++++++++--------------- src/_locales/it/messages.json | 48 ++++++++++++++--------------- src/_locales/ja/messages.json | 50 +++++++++++++++--------------- src/_locales/ko/messages.json | 40 ++++++++++++------------ src/_locales/nl/messages.json | 48 ++++++++++++++--------------- src/_locales/pl/messages.json | 32 ++++++++++---------- src/_locales/ro/messages.json | 50 +++++++++++++++--------------- src/_locales/ru/messages.json | 50 +++++++++++++++--------------- src/_locales/sr/messages.json | 50 +++++++++++++++--------------- src/_locales/tr/messages.json | 2 +- src/_locales/uk/messages.json | 52 ++++++++++++++++---------------- src/_locales/zh_CN/messages.json | 50 +++++++++++++++--------------- src/_locales/zh_TW/messages.json | 2 +- 23 files changed, 448 insertions(+), 448 deletions(-) diff --git a/src/_locales/ca/messages.json b/src/_locales/ca/messages.json index fe3a62e7b0..dee7d2ae85 100644 --- a/src/_locales/ca/messages.json +++ b/src/_locales/ca/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirma l'exportació de la Caixa forta" }, "exportWarningDesc": { "message": "Aquesta exportació conté les dades de la vostra caixa forta en un format no xifrat. No hauríeu d'emmagatzemar o enviar el fitxer exportat a través de canals no segurs (com ara el correu electrònic). Elimineu-lo immediatament després d'haver acabat d'usar-lo." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Aquesta exportació xifra les vostres dades mitjançant la vostra clau de xifratge. Si alguna vegada gireu eixa clau, hauríeu d'exportar de nou, ja que no podreu desxifrar aquest fitxer d'exportació." }, "exportMasterPassword": { "message": "Introduïu la contrasenya mestra per exportar les dades de la caixa forta." @@ -1257,13 +1257,13 @@ "message": "La caixa forta està bloquejada. Verifiqueu El codi PIN per continuar." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Desbloqueja amb biomètrica" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "S’espera confirmació des de l’escriptori" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Confirmeu que utilitzeu la biomètrica a l'aplicació Bitwarden Desktop per habilitar la biomètrica per al navegador." }, "lockWithMasterPassOnRestart": { "message": "Bloqueja amb la contrasenya mestra en reiniciar el navegador" @@ -1385,63 +1385,63 @@ "message": "Declaració de privadesa" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "El vostre suggeriment de contrasenya no pot ser el mateix que la vostra contrasenya." }, "ok": { - "message": "Ok" + "message": "D’acord" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Verificació de sincronització d'escriptori" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Verifiqueu que l'aplicació d'escriptori mostre aquesta empremta digital:" }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "La integració en el navegador no està habilitada" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "La integració del navegador no està habilitada a l'aplicació Bitwarden Desktop. Activeu-la a la configuració de l'aplicació d'escriptori." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Inicia l'aplicació Bitwarden Desktop" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Per poder utilitzar aquesta funció, cal iniciar l'aplicació Bitwarden Desktop." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "No es pot habilitar la biomètrica" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "L'aplicació d'escriptori ha cancel·lat l'acció" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "L'aplicació d'escriptori ha invalidat el canal de comunicació segur. Torneu a provar aquesta operació" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "S'ha interromput la comunicació d'escriptori" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "L'aplicació d'escriptori està iniciada en un compte diferent. Assegureu-vos que totes dues aplicacions estiguen connectades al mateix compte." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "El compte no coincideix" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "La biomètrica no està habilitada" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "La biometria del navegador primer necessita habilitar la biomètrica d’escriptori a la configuració." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "La biomètrica no és compatible" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "La biometria del navegador no és compatible amb aquest dispositiu." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "A causa d'una política empresarial, no podeu guardar elements a la vostra caixa forta personal. Canvieu l'opció Propietat en organització i trieu entre les col·leccions disponibles." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Una política d’organització afecta les vostres opcions de propietat." } } diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index 39991bc308..d168d09412 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -498,7 +498,7 @@ "message": "Eintrag bearbeitet" }, "deleteItemConfirmation": { - "message": "Soll dieser Eintrag wirklich gelöscht werden?" + "message": "Soll dieser Eintrag wirklich in den Papierkorb verschoben werden?" }, "deletedItem": { "message": "Eintrag in Papierkorb legen" @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Tresor-Export bestätigen" }, "exportWarningDesc": { "message": "Dieser Export enthält deine unverschlüsselten Daten im Csv-Format. Du solltest sie nicht speichern oder über unsichere Kanäle (z. B. E-Mail) senden. Lösche sie sofort nach ihrer Verwendung." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Dieser Export verschlüsselt Ihre Daten mit dem Verschlüsselungscode Ihres Kontos. Falls Sie Ihren Verschlüsselungscode erneuern, sollten Sie den Export erneut durchführen, da Sie die zuvor erstellte Datei ansonsten nicht mehr entschlüsseln können." }, "exportMasterPassword": { "message": "Gib das Masterpasswort ein, um deine Tresordaten zu exportieren." @@ -1257,13 +1257,13 @@ "message": "Dein Tresor ist gesperrt. Gebe deinen PIN-Code ein um fortzufahren." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Mit Biometrie entsperren" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Warte auf Bestätigung vom Desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Bitte bestätigen Sie die Verwendung von Biometrie in der Bitwarden Desktop-Anwendung, um Biometrie für den Browser zu aktivieren." }, "lockWithMasterPassOnRestart": { "message": "Bei Neustart des Browsers mit Master-Passwort sperren" @@ -1385,63 +1385,63 @@ "message": "Datenschutzbestimmungen" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Ihr Passwort-Hinweis darf nicht identisch mit Ihrem Passwort sein." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Desktop-Sync-Überprüfung" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Bitte bestätigen Sie, dass die Desktop-Anwendung diesen Prüfschlüssel anzeigt: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser-Einbindung ist nicht aktiviert" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Die Browser-Einbindung ist in der Bitwarden Desktop-Anwendung nicht aktiviert. Bitte aktivieren Sie diese in den Einstellungen innerhalb der Desktop-Anwendung." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Bitwarden Desktop-Anwendung starten" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Die Bitwarden Desktop-Anwendung muss gestartet werden, bevor diese Funktion verwendet werden kann." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Biometrie kann nicht aktiviert werden" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Die Aktion wurde von der Desktop-Anwendung abgebrochen" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Die Desktop-Anwendung hat den sicheren Kommunikationskanal für ungültig erklärt. Bitte starten Sie den Vorgang erneut" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Desktop-Kommunikation unterbrochen" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Die Desktop-Anwendung ist in ein anderes Konto eingeloggt. Bitte stellen Sie sicher, dass beide Anwendungen mit demselben Konto angemeldet sind." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Konten stimmen nicht überein" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrie ist nicht aktiviert" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Biometrie im Browser setzt voraus, dass Biometrie zuerst in den Einstellungen der Desktop-Anwendung aktiviert ist." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Biometrie wird nicht unterstützt" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Biometrie im Browser wird auf diesem Gerät nicht unterstützt." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Aufgrund einer Unternehmensrichtlinie dürfen Sie keine Einträge in Ihrem persönlichen Tresor speichern. Ändern Sie die Eigentümer-Option in eine Organisation und wählen Sie aus den verfügbaren Sammlungen." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Eine Organisationsrichtlinie beeinflusst Ihre Eigentümer-Optionen." } } diff --git a/src/_locales/el/messages.json b/src/_locales/el/messages.json index 7fb110f648..9a55d23b69 100644 --- a/src/_locales/el/messages.json +++ b/src/_locales/el/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Επιβεβαίωση εξαγωγής Vault" }, "exportWarningDesc": { "message": "Αυτή η εξαγωγή περιέχει τα δεδομένα σε μη κρυπτογραφημένη μορφή. Δεν πρέπει να αποθηκεύετε ή να στείλετε το εξαγόμενο αρχείο μέσω μη ασφαλών τρόπων (όπως μέσω email). Διαγράψτε το αμέσως μόλις τελειώσετε με τη χρήση του." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Αυτή η εξαγωγή κρυπτογραφεί τα δεδομένα σας χρησιμοποιώντας το κλειδί κρυπτογράφησης του λογαριασμού σας. Εάν ποτέ περιστρέψετε το κλειδί κρυπτογράφησης του λογαριασμού σας, θα πρέπει να κάνετε εξαγωγή ξανά, καθώς δεν θα μπορείτε να αποκρυπτογραφήσετε αυτό το αρχείο εξαγωγής." }, "exportMasterPassword": { "message": "Πληκτρολογήστε τον κύριο κωδικό για εξαγωγή δεδομένων vault." @@ -1257,13 +1257,13 @@ "message": "Το vault σας είναι κλειδωμένο. Επαληθεύστε τον κωδικό PIN για να συνεχίσετε." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Ξεκλείδωμα με βιομετρικά στοιχεία" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Αναμονή επιβεβαίωσης από την επιφάνεια εργασίας" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Παρακαλώ επιβεβαιώστε τη χρήση βιομετρικών στοιχείων στην εφαρμογή Bitwarden Desktop για να ενεργοποιήσετε τα βιομετρικά στοιχεία για το πρόγραμμα περιήγησης." }, "lockWithMasterPassOnRestart": { "message": "Κλείδωμα με κύριο κωδικό πρόσβασης στην επανεκκίνηση του προγράμματος περιήγησης" @@ -1385,63 +1385,63 @@ "message": "Πολιτική Απορρήτου" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Η υπόδειξη κωδικού πρόσβασης, δεν μπορεί να είναι η ίδια με τον κωδικό πρόσβασης σας." }, "ok": { - "message": "Ok" + "message": "Οκ" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Επιβεβαίωση συγχρονισμού επιφάνειας εργασίας" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Παρακαλώ επιβεβαιώστε ότι η εφαρμογή επιφάνειας εργασίας εμφανίζει αυτό το αποτύπωμα: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Η ενσωμάτωση του περιηγητή δεν είναι ενεργοποιημένη" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Η ενσωμάτωση του προγράμματος περιήγησης δεν είναι ενεργοποιημένη στην εφαρμογή Bitwarden Desktop. Παρακαλώ ενεργοποιήστε την στις ρυθμίσεις της εφαρμογής desktop." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Ξεκινήστε την εφαρμογή Bitwarden Επιφάνεια εργασίας" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Η εφαρμογή Bitwarden Desktop πρέπει να ξεκινήσει για να μπορεί να χρησιμοποιηθεί αυτή η λειτουργία." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Αδυναμία ενεργοποίησης βιομετρικών στοιχείων" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Η ενέργεια ακυρώθηκε από την εφαρμογή επιφάνειας εργασίας" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Η εφαρμογή επιφάνειας εργασίας ακυρώνει το ασφαλές κανάλι επικοινωνίας. Παρακαλώ δοκιμάστε ξανά αυτή τη λειτουργία" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Η επικοινωνία επιφάνειας εργασίας διακόπηκε" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Η εφαρμογή επιφάνειας εργασίας είναι συνδεδεμένη σε διαφορετικό λογαριασμό. Παρακαλώ βεβαιωθείτε ότι και οι δύο εφαρμογές είναι συνδεδεμένες στον ίδιο λογαριασμό." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Απόρριψη λογαριασμού" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Η βιομετρική δεν είναι ενεργοποιημένη" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Τα βιομετρικά στοιχεία του προγράμματος περιήγησης απαιτούν την ενεργοποίηση της βιομετρικής επιφάνειας εργασίας στις ρυθμίσεις πρώτα." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Δεν υποστηρίζεται η βιομετρική" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Τα βιομετρικά στοιχεία του προγράμματος περιήγησης δεν υποστηρίζονται σε αυτήν τη συσκευή." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Λόγω μιας Πολιτικής Επιχειρήσεων, δεν επιτρέπεται η αποθήκευση στοιχείων στο προσωπικό σας vault. Αλλάξτε την επιλογή Ιδιοκτησίας σε έναν οργανισμό και επιλέξτε από τις διαθέσιμες Συλλογές." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Μια πολιτική του οργανισμού, επηρεάζει τις επιλογές ιδιοκτησίας σας." } } diff --git a/src/_locales/en_GB/messages.json b/src/_locales/en_GB/messages.json index c376a602ad..488e916bb2 100644 --- a/src/_locales/en_GB/messages.json +++ b/src/_locales/en_GB/messages.json @@ -1388,7 +1388,7 @@ "message": "Your password hint cannot be the same as your password." }, "ok": { - "message": "Ok" + "message": "OK" }, "desktopSyncVerificationTitle": { "message": "Desktop sync verification" @@ -1412,7 +1412,7 @@ "message": "Unable to enable biometrics" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Action was cancelled by the desktop application" }, "nativeMessagingInvalidEncryptionDesc": { "message": "Desktop application invalidated the secure communication channel. Please retry this operation" @@ -1424,7 +1424,7 @@ "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Account mismatch" }, "biometricsNotEnabledTitle": { "message": "Biometrics not enabled" @@ -1439,9 +1439,9 @@ "message": "Browser biometrics is not supported on this device." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organisation and choose from available Collections." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "An organisation policy is affecting your ownership options." } } diff --git a/src/_locales/en_IN/messages.json b/src/_locales/en_IN/messages.json index 4d97027dae..5e52ce5c0f 100644 --- a/src/_locales/en_IN/messages.json +++ b/src/_locales/en_IN/messages.json @@ -1388,7 +1388,7 @@ "message": "Your password hint cannot be the same as your password." }, "ok": { - "message": "Ok" + "message": "OK" }, "desktopSyncVerificationTitle": { "message": "Desktop sync verification" diff --git a/src/_locales/et/messages.json b/src/_locales/et/messages.json index 74acc39715..9179492aef 100644 --- a/src/_locales/et/messages.json +++ b/src/_locales/et/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Hoidla eksportimise kinnitamine" }, "exportWarningDesc": { "message": "Eksporditav fail sisaldab hoidla sisu, mis on krüpteeringuta. Seda faili ei tohiks kaua käidelda ning mitte mingil juhul ebaturvaliselt saata (näiteks e-postiga). Kustuta see koheselt pärast kasutamist." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Eksporditavate andmete krüpteerimiseks kasutatakse kontol olevat krüpteerimisvõtit. Kui sa peaksid seda krüpteerimise võtit roteerima, ei saa sa järgnevalt eksporditavaid andmeid enam dekrüpteerida." }, "exportMasterPassword": { "message": "Hoidlas olevate andmete eksportimiseks on vajalik ülemparooli sisestamine." @@ -1257,13 +1257,13 @@ "message": "Hoidla on lukus. Jätkamiseks sisesta PIN kood." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Ava biomeetriaga" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Kinnituse ootamine töölaua rakenduselt" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Kinnitamiseks kasuta biomeetrilist lahtilukustamist Bitwardeni töölaua rakenduses." }, "lockWithMasterPassOnRestart": { "message": "Nõua ülemparooli, kui brauser taaskäivitatakse" @@ -1385,63 +1385,63 @@ "message": "Privaatsuspoliitika" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Parooli vihje ei saa olla sama mis parool ise." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Töölaua sünkroonimise kinnitamine" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Veendu, et töölaua rakendus kuvab järgnevat sõrmejälge: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Brauseri integratsioon ei ole sisse lülitatud" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Brauseri integratsioon ei ole Bitwardeni töölaua rakenduses sisse lülitatud. Palun lülita see töölaua rakenduse seadetes sisse." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Käivita Bitwardeni töölaua rakendus" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Enne selle funktsiooni sisselülitamist peab käivitama Bitwardeni töölaua rakenduse." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Biomeetria sisselülitamine nurjus" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Töölaua rakendus tühistas tegevuse" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Töölaua rakendusel ei õnnestunud turvalist ühenduskanalit luua. Palun proovi uuesti" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Suhtlus töölaua rakendusega katkes" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Töölaua rakenduses on sisse logitud teise kasutajaga. Veendu, et oled mõlemas rakenduses sisse loginud ühe ja sama kontoga." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Kontod ei ühti" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biomeetria ei ole sisse lülitatud" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Biomeetria kasutamiseks brauseris peab esmalt Bitwardeni töölaua rakenduse seadetes biomeetria lubama." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Biomeetriat ei toetata" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Brauseri biomeetria ei ole selles seadmes toetatud" }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Ettevõtte poliitika tõttu ei saa sa andmeid oma personaalsesse Hoidlasse salvestada. Vali Omanikuks organisatsioon ja vali mõni saadavaolevatest Kogumikest." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Organisatsiooni poliitika on seadnud omaniku valikutele piirangu." } } diff --git a/src/_locales/fa/messages.json b/src/_locales/fa/messages.json index b08fcc02f2..1eb516ef8d 100644 --- a/src/_locales/fa/messages.json +++ b/src/_locales/fa/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "صادرات گاوصندوق را تأیید کنید" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "این صادرات با استفاده از کلید رمزگذاری حساب شما ، اطلاعات شما را رمزگذاری می کند. اگر حتی کلید رمزگذاری حساب خود را بچرخانید ، باید دوباره صادر کنید چون قادر به رمزگشایی این پرونده صادراتی نخواهید بود." }, "exportMasterPassword": { "message": "کلمه عبور اصلی خود را برای صادرات داده ها از گاوصندوقتان وارد کنید." @@ -1257,13 +1257,13 @@ "message": "گاوصندوق شما قفل شده است. برای ادامه کد پین خود را تایید کنید." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "با استفاده از بیومتریک باز کنید" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "در انتظار تأیید از دسکتاپ" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "لطفاً استفاده از بیومتریک را در برنامه دسکتاپ Bitwarden تأیید کنید تا بیومتریک را برای مرورگر فعال کنید." }, "lockWithMasterPassOnRestart": { "message": "در زمان شروع مجدد مرورگر، با رمز اصلی قفل کن" @@ -1385,63 +1385,63 @@ "message": "سیاست حفظ حریم خصوصی" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "نکته رمز عبور شما نمی تواند همان رمز عبور شما باشد." }, "ok": { - "message": "Ok" + "message": "تایید" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "تأیید همگام سازی دسکتاپ" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "لطفاً تأیید کنید که برنامه دسکتاپ این اثر انگشت را نشان می دهد:" }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "ادغام مرورگر فعال نیست" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "ادغام مرورگر در برنامه دسکتاپ Bitwarden فعال نیست. لطفاً آن را در تنظیمات موجود در برنامه دسکتاپ فعال کنید." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "برنامه دسکتاپ Bitwarden را شروع کنید" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "قبل از استفاده از این عملکرد، برنامه دسکتاپ Bitwarden باید شروع شود." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "بیومتریک فعال نیست" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "فعالیت توسط برنامه دسکتاپ لغو شد" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "برنامه دسکتاپ کانال ارتباط امن را نامعتبر کرد. لطفاً این عملیات را دوباره امتحان کنید" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "ارتباط دسکتاپ قطع شد" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "برنامه دسکتاپ به یک حساب دیگر وارد شده است. لطفاً اطمینان حاصل کنید که هر دو برنامه به یک حساب وارد شده اند." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "عدم تطابق حساب" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "بیومتریک فعال نیست" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "بیومتریک مرورگر ابتدا نیاز به فعالسازی بیومتریک دسکتاپ در تنظیمات دارد." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "بیومتریک پشتیبانی نمی شود" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "بیومتریک مرورگر در این دستگاه پشتیبانی نمی شود." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "به دلیل خط مشی Enterprise ، برای ذخیره موارد در گاوصندوق شخصی خود محدود شده اید. گزینه مالکیت را به یک سازمان تغییر دهید و مجموعه های موجود را انتخاب کنید." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "خط مشی سازمانی بر تنظیمات مالکیت شما تأثیر می گذارد." } } diff --git a/src/_locales/fi/messages.json b/src/_locales/fi/messages.json index 323564faaf..5d9bd32252 100644 --- a/src/_locales/fi/messages.json +++ b/src/_locales/fi/messages.json @@ -498,7 +498,7 @@ "message": "Muokattiin kohdetta" }, "deleteItemConfirmation": { - "message": "Haluatko varmasti poistaa tämän kohteen?" + "message": "Haluatko varmasti siirtää roskakoriin?" }, "deletedItem": { "message": "Siirrettiin kohde roskakoriin" @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Vahvista holvin vienti" }, "exportWarningDesc": { "message": "Tämä vienti sisältää holvisi tiedot salaamattomassa muodossa. Sinun ei tulisi säilyttää tai lähettää vietyä tiedostoa suojaamattomien kanavien (kuten sähköpostin) välityksellä. Poista se välittömästi kun sille ei enää ole käyttöä." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Tämä vienti salaa tietosi käyttäen käyttäjätilisi salausavainta. Jos joskus uudistat tilisi salausavaimen, tulee sinun viedä tiedot uudelleen, koska et voi enää purkaa nyt viedyn tiedoston salausta." }, "exportMasterPassword": { "message": "Syötä pääsalasana viedäksesi holvisi tiedot." @@ -1257,13 +1257,13 @@ "message": "Holvisi on lukittu. Vahvista PIN-koodisi jatkaaksesi." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Avaa käyttäen biometriaa" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Odottaa vahvistusta työpöydältä" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Vahvista biometrian käyttö Bitwardenin työpöytäsovelluksessa käyttääksesi sitä selaimessa." }, "lockWithMasterPassOnRestart": { "message": "Lukitse pääsalasanalla kun selain käynnistetään uudelleen" @@ -1385,63 +1385,63 @@ "message": "Tietosuojakäytäntö" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Salasanavihjeesi ei voi olla sama kuin salasanasi." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Työpöytäsynkronoinnin vahvistus" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Varmista, että työpöytäsovellus näyttää tämän tunnistelausekkeen:" }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Selainintegrointi ei ole käytössä" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Selainintegrointi ei ole käytössä Bitwardenin työpöytäsovelluksessa. Ota se käyttöön työpöytäsovelluksen asetuksista." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Käynnistä Bitwardenin työpöytäsovellus" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Bitwardenin työpöytäsovellus on käynnistettävä ennen kuin tätä toimintoa voidaan käyttää." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Biometrian käyttöönotto ei onnistu" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Toiminto peruttiin työpöytäsovelluksen toimesta" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Työpöytäsovellus hyläsi suojatun viestintäväylän. Yritä toimintoa uudelleen" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Työpöytäyhteys keskeytyi" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Työpöytäsovellus on kirjautuneena eri tilille. Varmista, että molemmat sovellukset ovat kirjautuneet samalle tilille." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Tili ei täsmää" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometria ei ole käytössä" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Käyttääksesi biometriaa selaimessa, on biometria otettava käyttöön työpöytäsovelluksen asetuksista." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Biometriaa ei tueta" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Selaimen biometriaa ei tueta tällä laitteella." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Yrityksen asettaman käytännön johdosta kohteiden tallennus omaan holviisi ei ole mahdollista. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Organisaatiokäytäntö vaikuttaa omistajuusvalintoihisi." } } diff --git a/src/_locales/he/messages.json b/src/_locales/he/messages.json index 5640cfa21c..d916bccc18 100644 --- a/src/_locales/he/messages.json +++ b/src/_locales/he/messages.json @@ -607,7 +607,7 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "אישור ייצוא כספת" }, "exportWarningDesc": { "message": "הקובץ מכיל את פרטי הכספת שלך בפורמט לא מוצפן. מומלץ להעביר את הקובץ רק בדרכים מוצפנות, ומאוד לא מומלץ לשמור או לשלוח את הקובץ הזה בדרכים לא מוצפנות (כדוגמת סתם אימייל). מחק את הקובץ מיד לאחר שסיימת את השימוש בו." @@ -1257,7 +1257,7 @@ "message": "הכספת שלך נעולה. הזן את קוד הPIN שלך כדי להמשיך." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "ביטול נעילה עם זיהוי ביומטרי" }, "awaitDesktop": { "message": "Awaiting confirmation from desktop" @@ -1388,7 +1388,7 @@ "message": "Your password hint cannot be the same as your password." }, "ok": { - "message": "Ok" + "message": "אוקי" }, "desktopSyncVerificationTitle": { "message": "Desktop sync verification" @@ -1397,7 +1397,7 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "אינטרציית דפדפן לא מאופשרת" }, "desktopIntegrationDisabledDesc": { "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." @@ -1409,7 +1409,7 @@ "message": "The Bitwarden Desktop application needs to be started before this function can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "לא ניתן להפעיל זיהוי ביומטרי" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1427,16 +1427,16 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "זיהוי בימוטרי לא מאופשר." }, "biometricsNotEnabledDesc": { "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "אין תמיכה באמצעי זיהוי ביומטרים" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "אין תמיכה בזיהוי ביומטרי בדפדפן במכשיר זה." }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." diff --git a/src/_locales/hu/messages.json b/src/_locales/hu/messages.json index a2257f3c75..6529c30e95 100644 --- a/src/_locales/hu/messages.json +++ b/src/_locales/hu/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Széf exportálás megerősítése" }, "exportWarningDesc": { "message": "Ez az exportálás titkosítás nélkül tartalmazza a széfadatokat. Nem célszerű az exportált fájlt nem biztonságos csatornákon tárolni és tovább küldeni (például emailben). A felhasználás után erősen ajánlott a törlés." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Ez az exportálás titkosítja az adatokat a fiók titkosítási kulcsával. Ha valaha a fiók forgatási kulcsa más lesz, akkor újra exportálni kell, mert nem lehet visszafejteni ezt az exportálási fájlt." }, "exportMasterPassword": { "message": "Add meg a jelszavad a széf adataid exportálásához." @@ -1257,13 +1257,13 @@ "message": "A széf zárolásra került. A folytatáshoz meg kell adni a pinkódot." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Biometrikus feloldás" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Várakozás megerősítésre az asztali alkalmazásból" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Erősítsük meg a biometrikus adatok használatát a Bitwarden asztali alkalmazásban a biometrikus adatok engedélyezéséhez a böngészőben." }, "lockWithMasterPassOnRestart": { "message": "Lezárás mesterjelszóval a böngésző újraindításakor" @@ -1385,63 +1385,63 @@ "message": "Adatvédelem" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "A jelszavas tipp nem lehet azonos a jelszóval." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Asztali szinkronizálás ellenőrzés" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Ellenőrizzük, hogy az asztali alkalmazás megjeleníti-e ezt az ujjlenyomatot: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "A böngésző integráció nem engedélyezett." }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "A böngésző integráció nincs engedélyezve a Bitwarden asztali alkalmazásban. Engedélyezzük az asztali alkalmazás beállításai között." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "A Bitwarden asztali alkalmazás indítása" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "A funkció használatához el kell indítani a Bitwarden asztali alkalmazást." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Nem lehet engedélyezni a biometrikus adatokat." }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "A műveletet az asztali alkalmazás törölte." }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Az asztali alkalmazás érvénytelenítette a biztonságos kommunikációs csatornát. Próbálkozzunk újra ezzel a művelettel" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Az asztali kommunikáció megszakadt." }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Az asztali alkalmazás egy másik fiókba van bejelentkezve. Ellenőrizzük, hogy mindkét alkalmazást azonos fiókba van bejelentkezve." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "A fiók nem egyezik." }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "A biometrikus adatok nincsenek engedélyezve." }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "A böngésző biometrikus adataihoz először az asztali biometrikus adatokat kell engedélyezni a beállításokban." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "A biometrikus adatok nem támogatottak." }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "A böngésző biometrikus adatait ez az eszköz nem támogatja." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Egy vállalati házirend miatt korlátozásra került az elemek személyes tárolóba történő mentése. Módosítsuk a Tulajdon opciót egy szervezetre és válasszunk az elérhető gyűjtemények közül." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "A szervezeti házirend befolyásolja a tulajdonosi opciókat." } } diff --git a/src/_locales/id/messages.json b/src/_locales/id/messages.json index f0f370fc03..07b588a0d5 100644 --- a/src/_locales/id/messages.json +++ b/src/_locales/id/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Konfirmasi Ekspor Vault" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Ekspor ini mengenkripsi data Anda menggunakan kunci enkripsi akun Anda. Jika Anda pernah merotasi kunci enkripsi akun Anda, Anda harus mengekspor lagi karena Anda tidak akan dapat mendekripsi file ekspor ini." }, "exportMasterPassword": { "message": "Masukkan sandi utama Anda untuk mengekspor data brankas Anda." @@ -1257,13 +1257,13 @@ "message": "Brankas Anda terkunci. Verifikasi kode PIN Anda untuk melanjutkan." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Buka kunci dengan biometrik" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Menunggu konfirmasi dari desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Harap konfirmasi menggunakan biometrik di aplikasi Bitwarden Desktop untuk mengaktifkan biometrik untuk browser." }, "lockWithMasterPassOnRestart": { "message": "Kunci dengan kata sandi utama saat browser dihidupkan ulang" @@ -1385,63 +1385,63 @@ "message": "Kebijakan Privasi" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Petunjuk kata sandi Anda tidak boleh sama dengan kata sandi Anda." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Verifikasi sinkronisasi desktop" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Harap verifikasi bahwa aplikasi desktop menunjukkan sidik jari ini:" }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Integrasi browser tidak diaktifkan" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Integrasi browser tidak diaktifkan di aplikasi Bitwarden Desktop. Harap aktifkan di pengaturan dalam aplikasi desktop." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Jalankan aplikasi Bitwarden Desktop" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Aplikasi Bitwarden Desktop harus dijalankan sebelum fungsi ini dapat digunakan." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Tidak dapat mengaktifkan biometrik" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Tindakan dibatalkan oleh aplikasi desktop" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Aplikasi desktop membatalkan saluran komunikasi aman. Silakan coba lagi operasi ini" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Komunikasi desktop terputus" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Aplikasi desktop masuk ke akun yang berbeda. Harap pastikan kedua aplikasi masuk ke akun yang sama." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Akun tidak cocok" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrik tidak diaktifkan" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Biometrik browser mengharuskan biometrik desktop diaktifkan di pengaturan terlebih dahulu." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Biometrik tidak didukung" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Biometrik browser tidak didukung di perangkat ini." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Karena Kebijakan Perusahaan, Anda dilarang menyimpan item ke lemari besi pribadi Anda. Ubah opsi Kepemilikan ke organisasi dan pilih dari Koleksi yang tersedia." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Kebijakan organisasi memengaruhi opsi kepemilikan Anda." } } diff --git a/src/_locales/it/messages.json b/src/_locales/it/messages.json index 7ef6d45df6..37a49acdc3 100644 --- a/src/_locales/it/messages.json +++ b/src/_locales/it/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Conferma esportazione della Cassaforte" }, "exportWarningDesc": { "message": "Questa esportazione contiene i dati del tuo portachiavi in un formato non criptato. Non salvare o inviare il file esportato su canali non protetti (come la posta elettronica). Eliminalo immediatamente dopo aver finito di usarlo." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Questa esportazione crittografa i tuoi dati utilizzando la chiave di crittografia del tuo account. Se dovessi cambiare la chiave di crittografia del tuo account, dovresti esportare di nuovo poiché non sarai in grado di decifrare questo file di esportazione." }, "exportMasterPassword": { "message": "Inserisci la tua password principale per esportare i dati della tua cassaforte." @@ -1257,13 +1257,13 @@ "message": "Il tuo portachiavi è bloccato. Inserisci il tuo codice PIN per continuare." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Sblocca utilizzando i dati biometrici" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "In attesa di conferma dal desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Si prega di confermare utilizzando l'autenticazione biometrica nell'applicazione Bitwarden Desktop per abilitare l'autenticazione biometrica per il browser." }, "lockWithMasterPassOnRestart": { "message": "Blocca con la password principale al riavvio del browser" @@ -1385,63 +1385,63 @@ "message": "Informativa sulla privacy" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Il suggerimento password non può essere uguale alla password." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Verifica sincronizzazione desktop" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Verifica che l'applicazione desktop mostri questa impronta digitale: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "L'integrazione del browser non è abilitata" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "L'integrazione del browser non è abilitata nell'applicazione Bitwarden Desktop. Si prega di attivarla nelle impostazioni all'interno dell'applicazione desktop." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Avvia l'applicazione desktop Bitwarden" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "L'applicazione Bitwarden Desktop deve essere avviata prima che questa funzione possa essere utilizzata." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Impossibile abilitare l'autenticazione biometrica" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "L'azione è stata annullata dall'applicazione desktop" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "L'applicazione desktop ha invalidato il canale di comunicazione sicuro. Riprova questa operazione" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Comunicazione desktop interrotta" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "L'applicazione desktop è collegata a un account diverso. Assicurarsi che entrambe le applicazioni siano collegate allo stesso account." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Account non corrispondente" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Autenticazione biometrica non abilitata" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "L'autenticazione biometrica del browser richiede che il desktop sia abilitato prima nelle impostazioni." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Autenticazione biometrica non supportata" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "L'autenticazione biometrica del browser non è supportata su questo dispositivo." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "A causa di una politica aziendale, non è possibile salvare elementi nella tua cassaforte personale. Cambia l'opzione Proprietà in un'organizzazione e scegli tra le Collezioni disponibili." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Una politica dell'organizzazione sta influenzando le opzioni di proprietà." } } diff --git a/src/_locales/ja/messages.json b/src/_locales/ja/messages.json index 3af4097053..4b9c896652 100644 --- a/src/_locales/ja/messages.json +++ b/src/_locales/ja/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "保管庫のエクスポートの確認" }, "exportWarningDesc": { "message": "このエクスポートデータは暗号化されていない形式の保管庫データを含んでいます。メールなどのセキュリティ保護されていない方法で共有したり保管したりしないでください。使用した後はすぐに削除してください。" }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "このエクスポートは、アカウントの暗号化キーを使用してデータを暗号化します。 暗号化キーをローテーションした場合は、このエクスポートファイルを復号することはできなくなるので、もう一度エクスポートする必要があります。" }, "exportMasterPassword": { "message": "保管庫のデータをエクスポートするにはマスターパスワードを入力してください。" @@ -1257,13 +1257,13 @@ "message": "保管庫がロックされています。PIN コードで認証してください。" }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "生体認証でロック解除" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "デスクトップからの確認待ち" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "ブラウザの生体認証を有効にするには、Bitwarden デスクトップアプリの生体認証を使用してください。" }, "lockWithMasterPassOnRestart": { "message": "ブラウザー再起動時にマスターパスワードでロック" @@ -1385,63 +1385,63 @@ "message": "プライバシーポリシー" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "パスワードのヒントをパスワードと同じにすることはできません。" }, "ok": { - "message": "Ok" + "message": "OK" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "デスクトップ同期の検証" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "デスクトップアプリにこの指紋が表示されていることを確認してください: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "ブラウザ統合が有効になっていません" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Bitwarden デスクトップアプリでブラウザ統合が有効になっていません。デスクトップアプリの設定で有効にしてください。" }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Bitwarden デスクトップアプリを起動" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "この機能を使用するには、Bitwarden デスクトップアプリを起動してください。" }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "生体認証を有効にできません" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "デスクトップアプリによってアクションがキャンセルされました" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "デスクトップアプリが安全な通信チャネルを無効にしました。操作をやり直してください。" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "デスクトップ通信が中断されました" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "デスクトップアプリは別のアカウントにログインしています。両方のアプリが同じアカウントにログインしているか確認してください。" }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "アカウントが一致しません" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "生体認証が有効になっていません" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "ブラウザ生体認証を利用するには、まず設定でデスクトップ生体認証を有効にする必要があります。" }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "生体認証に対応していません" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "このデバイスではブラウザの生体認証に対応していません。" }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "組織のポリシーにより、個人の保管庫へのアイテムの保存が制限されています。 所有権を組織に変更し、利用可能なコレクションから選択してください。" }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "組織のポリシーが所有者のオプションに影響を与えています。" } } diff --git a/src/_locales/ko/messages.json b/src/_locales/ko/messages.json index 47ea166205..937c282b7d 100644 --- a/src/_locales/ko/messages.json +++ b/src/_locales/ko/messages.json @@ -498,7 +498,7 @@ "message": "항목 편집함" }, "deleteItemConfirmation": { - "message": "정말 이 항목을 삭제하시겠습니까?" + "message": "정말로 휴지통으로 이동시킬까요?" }, "deletedItem": { "message": "항목 삭제함" @@ -607,7 +607,7 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "보관함 내보내기 확인" }, "exportWarningDesc": { "message": "내보내기는 보관함 데이터가 암호화되지 않은 형식으로 포함됩니다. 내보낸 파일을 안전하지 않은 채널(예: 이메일)을 통해 저장하거나 보내지 마십시오. 사용이 끝난 후에는 즉시 삭제하십시오." @@ -901,7 +901,7 @@ "message": "새 무작위 비밀번호를 만들고 클립보드에 복사합니다." }, "commandLockVaultDesc": { - "message": "금고 잠그기" + "message": "보관함 잠그기" }, "privateModeMessage": { "message": "죄송합니다. 이 브라우저에서는 시크릿 창에서 이 창을 사용할 수 없습니다." @@ -1257,10 +1257,10 @@ "message": "보관함이 잠겨 있습니다. PIN 코드를 입력하여 계속하세요." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "생체 인식을 사용하여 잠금 해제" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "데스크톱으로부터의 확인을 대기 중" }, "awaitDesktopDesc": { "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." @@ -1385,10 +1385,10 @@ "message": "개인 정보 보호 정책" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "비밀번호 힌트는 비밀번호와 같을 수 없습니다." }, "ok": { - "message": "Ok" + "message": "확인" }, "desktopSyncVerificationTitle": { "message": "Desktop sync verification" @@ -1397,22 +1397,22 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "브라우저와 연결이 활성화되지 않았습니다" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "브라우저와 연결이 Bitwarden 데스크톱 앱에서 활성화되지 않았습니다. 데스크톱 앱의 설정에서 브라우저와 연결을 활성화해주세요." }, "startDesktopTitle": { "message": "Start the Bitwarden Desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "이 기능을 사용하기 위해서는 Bitwarden 데스크톱 앱이 먼저 실행되어 있어야 합니다." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "생체 인식을 활성화할 수 없음" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "데스크톱 앱에서 작업이 취소되었습니다" }, "nativeMessagingInvalidEncryptionDesc": { "message": "Desktop application invalidated the secure communication channel. Please retry this operation" @@ -1421,27 +1421,27 @@ "message": "Desktop communication interrupted" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "데스크톱 앱에 다른 계정으로 로그인된 상태입니다. 두 앱에 같은 계정으로 로그인되어 있는지 확인해주세요." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "계정이 일치하지 않음" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "생체 인식이 활성화되지 않음" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "브라우저에서 생체 인식을 사용하기 위해서는 설정에서 데스크톱 생체 인식을 먼저 활성화해야 합니다." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "생체 인식이 지원되지 않음" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "이 기기에서는 생체 인식이 지원되지 않습니다." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "엔터프라이즈 정책으로 인해 개인 보관함에 항목을 저장할 수 없습니다. 조직에서 소유권 설정을 변경한 다음, 사용 가능한 컬렉션 중에서 선택해주세요." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "조직의 정책이 소유권 설정에 영향을 미치고 있습니다." } } diff --git a/src/_locales/nl/messages.json b/src/_locales/nl/messages.json index 2464e1d22c..2e9a71f939 100644 --- a/src/_locales/nl/messages.json +++ b/src/_locales/nl/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Kluisexport bevestigen" }, "exportWarningDesc": { "message": "Deze export bevat jouw kluisgegevens in een niet-versleutelde opmaak. Je moet het geëxporteerde bestand niet opslaan of verzenden over onbeveiligde kanalen (zoals e-mail). Verwijder het exportbestand direct na gebruik." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Deze export versleutelt je gegevens met de encryptiesleutel van je account. Als je je encryptiesleutel verandert moet je opnieuw exporteren, omdat je deze export dan niet meer kunt ontcijferen." }, "exportMasterPassword": { "message": "Voer je hoofdwachtwoord in om de kluisgegevens te exporteren." @@ -1257,13 +1257,13 @@ "message": "Je kluis is vergrendeld. Voer je PIN-code in om door te gaan." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Biometrisch ontgrendelen" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Wacht op bevestiging van de desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Bevestig het gebruik van biometrie in de Bitwarden-desktopapplicatie om biometrie voor de browser in te schakelen." }, "lockWithMasterPassOnRestart": { "message": "Vergrendelen met hoofdwachtwoord bij herstart browser" @@ -1385,63 +1385,63 @@ "message": "Privacybeleid" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Je wachtwoordhint moet anders zijn dan je wachtwoord." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Desktopsynchronisatieverificatie" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Controleer of de desktopapplicatie deze vingerafdruk weergeeft: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browserintegratie is niet ingeschakeld" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browserintegratie is niet ingeschakeld in de Bitwarden-desktopapplicatie. Schakel deze optie in de instellingen binnen de desktop-applicatie in." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Bitwarden-desktopapplicatie opstarten" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Je moet de Bitwarden-desktopapplicatie starten om deze functie te gebruiken." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Kon biometrie niet inschakelen" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Actie is geannuleerd door de desktopapplicatie" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "De desktopapplicatie heeft het beveiligde communicatiekanaal ongeldig verklaard. Probeer het opnieuw" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Desktopcommunicatie onderbroken" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "De desktopapplicatie is aangemeld bij een ander account. Zorg ervoor dat beide applicaties op hetzelfde account zijn aangemeld." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Accounts komt niet overeen" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrie niet ingeschakeld" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Voor browserbiometrie moet je eerst desktopbiometrie inschakelen in de instellingen." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Biometrie niet ondersteund" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Dit apparaat ondersteunt geen browserbiometrie." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Wegens bedrijfsbeleid mag je geen wachtwoorden opslaan in je persoonlijke kluis. Verander het eigenaarschap naar een organisatie en kies uit een van de beschikbare collecties." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Een organisatiebeleid heeft invloed op je eigendomsopties." } } diff --git a/src/_locales/pl/messages.json b/src/_locales/pl/messages.json index 210979b1c0..f7417293a0 100644 --- a/src/_locales/pl/messages.json +++ b/src/_locales/pl/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Potwierdź eksportowanie sejfu" }, "exportWarningDesc": { "message": "Plik zawiera dane sejfu w niezaszyfrowanym formacie. Nie powinieneś go przechowywać, ani przesyłać poprzez niezabezpieczone kanały (takie jak poczta e-mail). Skasuj go natychmiast po użyciu." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Dane eksportu zostaną zaszyfrowane za pomocą klucza szyfrowania konta. Jeśli kiedykolwiek zmienisz ten klucz, wyeksportuj dane ponownie, ponieważ nie będziesz w stanie odszyfrować tego pliku." }, "exportMasterPassword": { "message": "Wpisz hasło główne, aby wyeksportować dane z sejfu." @@ -1257,10 +1257,10 @@ "message": "Sejf jest zablokowany. Wpisz kod PIN, aby kontynuować." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Odblokuj danymi biometrycznymi" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Oczekiwanie na potwierdzenie z aplikacji" }, "awaitDesktopDesc": { "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." @@ -1391,57 +1391,57 @@ "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Weryfikacja synchronizacji z aplikacją" }, "desktopIntegrationVerificationText": { "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Integracja z przeglądarką jest wyłączona" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Integracja z przeglądarką jest wyłączona. Włącz funkcję w ustawieniach aplikacji Bitwarden." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Uruchom aplikację Bitwarden" }, "startDesktopDesc": { "message": "The Bitwarden Desktop application needs to be started before this function can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Nie można włączyć danych biometrycznych" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Operacja została anulowana przez aplikację" }, "nativeMessagingInvalidEncryptionDesc": { "message": "Desktop application invalidated the secure communication channel. Please retry this operation" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Komunikacja z aplikacją została przerwana" }, "nativeMessagingWrongUserDesc": { "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Konto jest niezgodne" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Dane biometryczne są wyłączone" }, "biometricsNotEnabledDesc": { "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Dane biometryczne nie są obsługiwane" }, "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Ze względu na zasadę przedsiębiorstwa nie możesz zapisywać elementów w osobistym sejfie. Zmień właściciela elementu na organizację i wybierz jedną z dostępnych kolekcji." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Zasada organizacji ma wpływ na opcję własności elementów." } } diff --git a/src/_locales/ro/messages.json b/src/_locales/ro/messages.json index 5bd5452130..2845b7b6f7 100644 --- a/src/_locales/ro/messages.json +++ b/src/_locales/ro/messages.json @@ -498,7 +498,7 @@ "message": "Articol editat" }, "deleteItemConfirmation": { - "message": "Sigur doriți să ștergeți acest articol?" + "message": "Sigur doriți să trimiteți în coșul de reciclare?" }, "deletedItem": { "message": "Articolul a fost trimis în coșul de reciclare" @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirmare export seif" }, "exportWarningDesc": { "message": "Acest export conține datele dvs. din seif în format necriptat. Nu ar trebui să stocați sau să trimiteți fișierul pe canale nesecurizate (cum ar fi e-mail). Ștergeți-l imediat după ce nu îl mai folosiți." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Acest export criptează datele folosind cheia de criptare a contului. Dacă schimbați vreodată cheia de criptare a contului, ar trebui să o exportați din nou, deoarece nu veți putea decripta acest fișier exportat." }, "exportMasterPassword": { "message": "Introduceți parola principală pentru a exporta datele din seif." @@ -1257,13 +1257,13 @@ "message": "Seiful dvs. este blocat. Verificați codul PIN pentru a continua." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Deblocare folosind biometria" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Se așteaptă confirmarea de la desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Vă rugăm să confirmați utilizarea biometriei în aplicația Bitwarden Desktop pentru a activa biometria pentru browser." }, "lockWithMasterPassOnRestart": { "message": "Blocare cu parola principală la repornirea browserului" @@ -1385,63 +1385,63 @@ "message": "Politică de confidențialitate" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Indiciul dvs. de parolă nu poate fi același cu parola dvs." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Verificare sincronizare desktop" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Verificați dacă aplicația desktop afișează această amprentă digitală:" }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Integrarea browserului nu este activată" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Integrarea browserului nu este activată în aplicația Bitwarden Desktop. Vă rugăm să o activați în setările din aplicația desktop." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Porniți aplicația Bitwarden Desktop" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Aplicația Bitwarden Desktop trebuie pornită înainte de a putea utiliza această funcție." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Nu se poate activa biometria" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Acțiunea a fost anulată de aplicația desktop" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Aplicația desktop a invalidat canalul de comunicare securizată. Reîncercați această operație" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Comunicare desktop întreruptă" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Aplicația desktop este conectată la un alt cont. Vă rugăm să vă asigurați că ambele aplicații sunt înregistrate în același cont." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Eroare de cont" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometria nu a fost activată" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Biometria browserului necesită activarea mai întâi a biometriei de pe desktop în setări." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Biometria nu este acceptată" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Biometria browserului nu este acceptată pe acest dispozitiv." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Datorită unei politici pentru întreprinderi, vă este restricționată salvarea de elemente în seiful dvs. personal. Schimbați opțiunea de proprietate la o organizație și alegeți dintre colecțiile disponibile." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "O politică de organizație vă afectează opțiunile de proprietate." } } diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 69f8596b4b..89e0bcd34d 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -498,7 +498,7 @@ "message": "Элемент изменен" }, "deleteItemConfirmation": { - "message": "Вы действительно хотите удалить этот элемент?" + "message": "Вы действительно хотите отправить в корзину?" }, "deletedItem": { "message": "Элемент отправлен в корзину" @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Подтвердить экспорт хранилища" }, "exportWarningDesc": { "message": "Экспортируемый файл содержит данные вашего хранилища в незашифрованном формате. Его не следует хранить или отправлять по небезопасным каналам (например, по электронной почте). Удалите его сразу после использования." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "При экспорте данные шифруются с помощью ключа шифрования учетной записи. Если вы когда-либо повернете ключ шифрования учетной записи, вам следует экспортировать данные повторно, поскольку вы не сможете расшифровать этот файл экспорта." }, "exportMasterPassword": { "message": "Для экспорта данных из хранилища введите мастер-пароль." @@ -1257,13 +1257,13 @@ "message": "Ваше хранилище заблокировано. Для продолжения введите PIN-код." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Разблокировать с помощью биометрии" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Ожидание подтверждения с компьютера" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Для включения биометрии в браузере, подтвердите это в приложении Bitwarden для компьютера." }, "lockWithMasterPassOnRestart": { "message": "Блокировать мастер-паролем при перезапуске браузера" @@ -1385,63 +1385,63 @@ "message": "Политика конфиденциальности" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Подсказка для пароля не может совпадать с паролем." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Проверка синхронизации на компьютере" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Пожалуйста, убедитесь, что приложение для компьютера отображает этот отпечаток: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Интеграция с браузером не включена" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Интеграция браузера не включена в приложении Bitwarden для компьютера. Пожалуйста, включите ее в настройках приложения для компьютера." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Запустить приложение Bitwarden для компьютера" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Перед использованием этой функции необходимо запустить приложение Bitwarden для компьютера." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Не удается включить биометрию" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Действие было отменено приложением для компьютера" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Приложению для компьютера не удалось создать защищенный канал подключения. Пожалуйста, попробуйте еще раз" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Соединение с приложением для компьютера прервано" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Приложение для компьютера авторизовано под другим аккаунтом. Необходимо чтобы оба приложения были авторизованы под одной учетной записью." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Несоответствие аккаунта" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Биометрия не включена" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Для активации биометрии в браузере сначала необходимо включить биометрию в приложении для компьютера." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Биометрия не поддерживается" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Биометрия в браузере не поддерживается этом устройстве." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "В соответствии с корпоративной политикой вам запрещено сохранять элементы в личном хранилище. Измените владельца на организацию и выберите из доступных Коллекций." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Политика организации влияет на ваши варианты владения." } } diff --git a/src/_locales/sr/messages.json b/src/_locales/sr/messages.json index 6373bd3fd0..627c3efa80 100644 --- a/src/_locales/sr/messages.json +++ b/src/_locales/sr/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Потврдите извоз сефа" }, "exportWarningDesc": { "message": "Овај извоз садржи податке сефа у нешифрираном формату. Не бисте смели да сачувате или шаљете извезену датотеку преко несигурних канала (као што је имејл). Избришите датотеку одмах након што завршите са коришћењем." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Овај извоз шифрује податке користећи кључ за шифровање вашег налога. Ако икада промените кључ за шифровање свог налога, требало би да поново извезете, јер нећете моћи да дешифрујете овај извоз." }, "exportMasterPassword": { "message": "Унети главну лозинку за извиз сефа." @@ -1257,13 +1257,13 @@ "message": "Сеф је блокиран. Проверити ПИН код за наставак." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Откључавајте помоћу биометрије" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Чекање потврде са десктопа" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Потврдити са биометриком у Bitwarden Desktop апликацији да би упалили биометрику у претраживачу." }, "lockWithMasterPassOnRestart": { "message": "Закључајте са главном лозинком при поновном покретању прегледача" @@ -1385,63 +1385,63 @@ "message": "Политика приватности" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Ваша помоћ за лозинку не може да буде иста као лозинка." }, "ok": { - "message": "Ok" + "message": "У реду" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Провера синх Desktop-а" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Проверите да десктоп апликација показује овај отисак: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Интеграција претраживача није омогућена" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Интеграција претраживача није омогућена у Bitwarden Desktop. Омогућите је у подешавања из Bitwarden Desktop апликације." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Покрени Bitwarden Desktop апликацију" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Bitwarden Desktop апликација треба да се покрене пре употребе ове функције." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Погрешно омогућавање биометрике" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Desktop апликација је поништила акцију" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Desktop апликација је онемогућила безбедни комуникациони канал. Поновите ову операцију" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Desktop комуникација прекинута" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Desktop апликација је пријављена на други налог. Проверите да су обе апликације са истим налогом." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Неподударање налога" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Биометрија није омогућена" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Биометрија прегледача захтева да у поставкама прво буде омогућена биометрија desktop-а." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Биометрија није подржана" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Биометрија прегледача није подржана на овом уређају." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Због смерница за предузећа, ограничено вам је чување предмета у вашем личном трезору. Промените опцију власништва у организацију и изаберите из доступних колекција." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Политика организације утичу на ваше могућности власништва." } } diff --git a/src/_locales/tr/messages.json b/src/_locales/tr/messages.json index 9bf1ad50cc..aca6546d21 100644 --- a/src/_locales/tr/messages.json +++ b/src/_locales/tr/messages.json @@ -1388,7 +1388,7 @@ "message": "Your password hint cannot be the same as your password." }, "ok": { - "message": "Ok" + "message": "Tamam" }, "desktopSyncVerificationTitle": { "message": "Desktop sync verification" diff --git a/src/_locales/uk/messages.json b/src/_locales/uk/messages.json index 6c8758a6fe..28fd67996c 100644 --- a/src/_locales/uk/messages.json +++ b/src/_locales/uk/messages.json @@ -467,7 +467,7 @@ "message": "Перегляньте знайомство, щоб дізнатися про можливості розширення для браузера." }, "syncingComplete": { - "message": "Синхронізація завершена" + "message": "Синхронізацію завершено" }, "syncingFailed": { "message": "Не вдалося синхронізувати" @@ -498,7 +498,7 @@ "message": "Запис змінено" }, "deleteItemConfirmation": { - "message": "Ви дійсно хочете видалити цей запис?" + "message": "Ви дійсно хочете перенести до смітника?" }, "deletedItem": { "message": "Запис перенесено до смітника" @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Підтвердити експорт сховища" }, "exportWarningDesc": { "message": "Експортовані дані вашого сховища знаходяться в незашифрованому вигляді. Вам не слід зберігати чи надсилати їх через незахищені канали (наприклад, е-поштою). Після використання негайно видаліть їх." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Цей експорт шифрує ваші дані за допомогою ключа шифрування облікового запису. Якщо ви коли-небудь оновите ключ шифрування облікового запису, ви повинні виконати експорт знову, оскільки не зможете розшифрувати цей файл експорту." }, "exportMasterPassword": { "message": "Введіть головний пароль, щоб експортувати дані сховища." @@ -1257,13 +1257,13 @@ "message": "Ваше сховище заблоковане. Для продовження підтвердьте свій PIN-код." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Розблокувати з біометрикою" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Очікується підтвердження з комп'ютера" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Для увімкнення біометрики у браузері, будь ласка, підтвердьте це у програмі Bitwarden на комп'ютері." }, "lockWithMasterPassOnRestart": { "message": "Блокувати головним паролем при перезапуску браузера" @@ -1385,63 +1385,63 @@ "message": "Політика приватності" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Підказка для пароля не може бути такою самою, як ваш пароль." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Перевірка синхронізації на комп'ютері" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Перевірте, чи програма на комп'ютері показує відбиток: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Інтеграція з браузером не увімкнена" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Інтеграція з браузером не увімкнена в програмі Bitwarden на комп'ютері. Увімкніть її в налаштуваннях програми на комп'ютері." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Запустити програму Bitwarden на комп'ютері" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Для використання цієї функції необхідно запустити програму Bitwarden на комп'ютері." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Не вдається увімкнути біометрику" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Дію було скасовано програмою на комп'ютері" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Програма на комп'ютері не схвалила безпечний канал зв'язку. Будь ласка, спробуйте знову" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "З'єднання з комп'ютером перервано" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Програма на комп'ютері використовує інший обліковий запис. Переконайтеся, що програма й розширення використовують однаковий обліковий запис." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Невідповідність облікових записів" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Біометрію не увімкнено" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Для активації біометрії в браузері необхідно спершу увімкнути біометрію в програмі на комп'ютері." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Біометрія не підтримується" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Біометрія в браузері не підтримується на цьому пристрої." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "У зв'язку з корпоративною політикою, вам не дозволено зберігати записи до особистого сховища. Змініть налаштування власності на організацію та виберіть серед доступних збірок." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Політика організації впливає на ваші параметри власності." } } diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json index c6347a66ca..e58abff2f4 100644 --- a/src/_locales/zh_CN/messages.json +++ b/src/_locales/zh_CN/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "确认密码库导出" }, "exportWarningDesc": { "message": "导出的密码库数据包含未加密格式。您不应该通过不安全的渠道(例如电子邮件)来存储或发送导出的文件。用完后请立即将其删除。" }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "此导出将使用您账户的加密密钥来加密您的数据。 如果您曾经轮换过账户的加密密钥,您应将其重新导出,否则您将无法解密导出的文件。" }, "exportMasterPassword": { "message": "输入主密码来导出你的密码库。" @@ -1257,13 +1257,13 @@ "message": "您的密码库已锁定。请验证您的 PIN 码以继续。" }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "使用生物识别解锁" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "等待来自桌面应用程序的确认" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "请确认在 Bitwarden 桌面应用程序中使用了生物识别以启用浏览器的生物识别。" }, "lockWithMasterPassOnRestart": { "message": "浏览器重启后使用主密码锁定" @@ -1385,63 +1385,63 @@ "message": "隐私政策" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "您的密码提示不能与您的密码相同。" }, "ok": { - "message": "Ok" + "message": "确定" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "桌面同步验证" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "请确认桌面应用程序显示此指纹: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "浏览器集成未启用" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "浏览器集成在 Bitwarden 桌面应用程序中未启用。请在桌面应用程序的设置中启用它。" }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "启动 Bitwarden 桌面应用程序" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Bitwarden 桌面应用程序需要以运行才能使用此功能。" }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "无法启用生物识别" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "操作被桌面应用程序取消" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "桌面应用程序使安全通道无效。请重试此操作" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "桌面通信已中断" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "桌面应用程序登录到了不同的帐户。请确保两个应用程序都登录到同一个帐户。" }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "账户不匹配" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "生物识别未启用" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "需要首先在桌面应用程序的设置中启用生物识别才能使用浏览器的生物识别。" }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "不支持生物识别" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "此设备不支持浏览器生物识别。" }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "由于企业策略,您被限制为保存项目到您的个人密码库。将所有权选项更改为组织,并从可用的集合中选择。" }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "一个组织策略正影响您的所有权选项。" } } diff --git a/src/_locales/zh_TW/messages.json b/src/_locales/zh_TW/messages.json index 8ec5399df0..420cc9fd44 100644 --- a/src/_locales/zh_TW/messages.json +++ b/src/_locales/zh_TW/messages.json @@ -1382,7 +1382,7 @@ "message": "Terms of Service" }, "privacyPolicy": { - "message": "Privacy Policy" + "message": "隱私權政策" }, "hintEqualsPassword": { "message": "Your password hint cannot be the same as your password." From c6af9266b7ce913920d3a5ec9508956dd6c86ec1 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 25 Jan 2021 11:23:50 -0500 Subject: [PATCH 55/73] bump version --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index 944a7f1d3d..42670dda10 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "__MSG_extName__", "short_name": "__MSG_appName__", - "version": "1.48.0", + "version": "1.48.1", "description": "__MSG_extDesc__", "default_locale": "en", "author": "Bitwarden Inc.", From 54da244340622e7ee6f94f6ab24c3b3e94a24a89 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Mon, 25 Jan 2021 17:24:33 +0100 Subject: [PATCH 56/73] Make nativeMessaging optional on all platforms except firefox (#1565) Make nativeMessaging optional on all platforms except firefox --- gulpfile.js | 11 +++++++++++ src/_locales/en/messages.json | 6 ++++++ src/popup/settings/settings.component.ts | 19 +++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/gulpfile.js b/gulpfile.js index c90d6361ef..541d4def69 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -75,6 +75,7 @@ function distOpera() { delete manifest.applications; delete manifest.content_security_policy; removeShortcuts(manifest); + moveNativeMessagingToOptional(manifest); return manifest; }); } @@ -85,6 +86,7 @@ function distChrome() { delete manifest.content_security_policy; delete manifest.sidebar_action; delete manifest.commands._execute_sidebar_action; + moveNativeMessagingToOptional(manifest); return manifest; }); } @@ -95,6 +97,7 @@ function distEdge() { delete manifest.content_security_policy; delete manifest.sidebar_action; delete manifest.commands._execute_sidebar_action; + moveNativeMessagingToOptional(manifest); return manifest; }); } @@ -108,6 +111,14 @@ function removeShortcuts(manifest) { } } +function moveNativeMessagingToOptional(manifest) { + const index = manifest.permissions.indexOf("nativeMessaging"); + index > -1 ? manifest.permissions.splice(index, 1) : false + manifest.optional_permissions = [ + "nativeMessaging" + ]; +} + function distSafariMas(cb) { return distSafariApp(cb, 'mas'); } diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index a1b4aa76d2..02c4279727 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/popup/settings/settings.component.ts b/src/popup/settings/settings.component.ts index 0cf3972dce..b61dedd9b2 100644 --- a/src/popup/settings/settings.component.ts +++ b/src/popup/settings/settings.component.ts @@ -23,6 +23,7 @@ import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; import { StorageService } from 'jslib/abstractions/storage.service'; import { UserService } from 'jslib/abstractions/user.service'; import { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service'; +import { resolve } from '@angular/compiler-cli/src/ngtsc/file_system'; const RateUrls = { [DeviceType.ChromeExtension]: @@ -208,6 +209,24 @@ export class SettingsComponent implements OnInit { async updateBiometric() { if (this.biometric) { + + // Request permission to use the optional permission for nativeMessaging + if (!this.platformUtilsService.isFirefox()) { + const granted = await new Promise((resolve, reject) => { + chrome.permissions.request({permissions: ['nativeMessaging']}, function(granted) { + resolve(granted); + }); + }); + + if (!granted) { + await this.platformUtilsService.showDialog( + this.i18nService.t('nativeMessaginPermissionErrorDesc'), this.i18nService.t('nativeMessaginPermissionErrorTitle'), + this.i18nService.t('ok'), null); + this.biometric = false; + return; + } + } + const submitted = Swal.fire({ heightAuto: false, buttonsStyling: false, From f71bf7713726404e9e58f2710073c93b84f5311b Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 25 Jan 2021 12:54:45 -0500 Subject: [PATCH 57/73] New Crowdin updates (#1566) * New translations messages.json (Romanian) * New translations messages.json (German) * New translations messages.json (French) * New translations messages.json (Hebrew) * New translations copy.resx (Finnish) * New translations messages.json (Finnish) * New translations messages.json (Greek) * New translations messages.json (Danish) * New translations messages.json (Czech) * New translations messages.json (Catalan) * New translations messages.json (Bulgarian) * New translations messages.json (Belarusian) * New translations messages.json (Spanish) * New translations messages.json (Croatian) * New translations messages.json (Portuguese, Brazilian) * New translations messages.json (Indonesian) * New translations messages.json (Persian) * New translations messages.json (Thai) * New translations messages.json (Norwegian Bokmal) * New translations messages.json (Estonian) * New translations messages.json (Latvian) * New translations messages.json (Hindi) * New translations messages.json (English, United Kingdom) * New translations messages.json (Malayalam) * New translations messages.json (Sinhala) * New translations messages.json (Chinese Traditional) * New translations messages.json (Vietnamese) * New translations messages.json (Slovenian) * New translations messages.json (Chinese Simplified) * New translations messages.json (Ukrainian) * New translations messages.json (Turkish) * New translations messages.json (Swedish) * New translations messages.json (Serbian (Cyrillic)) * New translations messages.json (Slovak) * New translations messages.json (Russian) * New translations messages.json (Portuguese) * New translations messages.json (Polish) * New translations messages.json (Dutch) * New translations messages.json (Korean) * New translations messages.json (Japanese) * New translations messages.json (Italian) * New translations messages.json (Hungarian) * New translations messages.json (English, India) * New translations messages.json (French) * New translations messages.json (German) * New translations messages.json (Italian) * New translations messages.json (Polish) * New translations messages.json (Russian) * New translations messages.json (Dutch) * New translations messages.json (Dutch) * New translations messages.json (Persian) --- src/_locales/be/messages.json | 8 ++++- src/_locales/bg/messages.json | 6 ++++ src/_locales/ca/messages.json | 6 ++++ src/_locales/cs/messages.json | 6 ++++ src/_locales/da/messages.json | 14 +++++--- src/_locales/de/messages.json | 6 ++++ src/_locales/el/messages.json | 6 ++++ src/_locales/en_GB/messages.json | 6 ++++ src/_locales/en_IN/messages.json | 6 ++++ src/_locales/es/messages.json | 6 ++++ src/_locales/et/messages.json | 10 ++++-- src/_locales/fa/messages.json | 6 ++++ src/_locales/fi/messages.json | 50 +++++++++++++++------------- src/_locales/fr/messages.json | 54 ++++++++++++++++-------------- src/_locales/he/messages.json | 6 ++++ src/_locales/hi/messages.json | 6 ++++ src/_locales/hr/messages.json | 6 ++++ src/_locales/hu/messages.json | 6 ++++ src/_locales/id/messages.json | 6 ++++ src/_locales/it/messages.json | 22 ++++++++----- src/_locales/ja/messages.json | 6 ++++ src/_locales/ko/messages.json | 6 ++++ src/_locales/lv/messages.json | 6 ++++ src/_locales/ml/messages.json | 6 ++++ src/_locales/nb/messages.json | 6 ++++ src/_locales/nl/messages.json | 6 ++++ src/_locales/pl/messages.json | 36 +++++++++++--------- src/_locales/pt_BR/messages.json | 54 ++++++++++++++++-------------- src/_locales/pt_PT/messages.json | 6 ++++ src/_locales/ro/messages.json | 6 ++++ src/_locales/ru/messages.json | 6 ++++ src/_locales/si/messages.json | 6 ++++ src/_locales/sk/messages.json | 6 ++++ src/_locales/sl/messages.json | 6 ++++ src/_locales/sr/messages.json | 18 ++++++---- src/_locales/sv/messages.json | 56 ++++++++++++++++++-------------- src/_locales/th/messages.json | 6 ++++ src/_locales/tr/messages.json | 6 ++++ src/_locales/uk/messages.json | 12 +++++-- src/_locales/vi/messages.json | 6 ++++ src/_locales/zh_CN/messages.json | 6 ++++ src/_locales/zh_TW/messages.json | 6 ++++ store/locales/fi/copy.resx | 4 +-- 43 files changed, 388 insertions(+), 136 deletions(-) diff --git a/src/_locales/be/messages.json b/src/_locales/be/messages.json index 95aa675bdb..956de57b91 100644 --- a/src/_locales/be/messages.json +++ b/src/_locales/be/messages.json @@ -1388,7 +1388,7 @@ "message": "Your password hint cannot be the same as your password." }, "ok": { - "message": "Ok" + "message": "ОК" }, "desktopSyncVerificationTitle": { "message": "Desktop sync verification" @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/bg/messages.json b/src/_locales/bg/messages.json index 19abd658c5..2eb262834b 100644 --- a/src/_locales/bg/messages.json +++ b/src/_locales/bg/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/ca/messages.json b/src/_locales/ca/messages.json index dee7d2ae85..7276453ab9 100644 --- a/src/_locales/ca/messages.json +++ b/src/_locales/ca/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "La biometria del navegador no és compatible amb aquest dispositiu." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "A causa d'una política empresarial, no podeu guardar elements a la vostra caixa forta personal. Canvieu l'opció Propietat en organització i trieu entre les col·leccions disponibles." }, diff --git a/src/_locales/cs/messages.json b/src/_locales/cs/messages.json index 29fcff9bcc..405077097c 100644 --- a/src/_locales/cs/messages.json +++ b/src/_locales/cs/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/da/messages.json b/src/_locales/da/messages.json index 4f47c8588f..2c0727473a 100644 --- a/src/_locales/da/messages.json +++ b/src/_locales/da/messages.json @@ -498,7 +498,7 @@ "message": "Redigerede element" }, "deleteItemConfirmation": { - "message": "Er du sikker på, at du vil slette dette element?" + "message": "Er du sikker på, at du sende til papirkurven?" }, "deletedItem": { "message": "Element sendt til papirkurven" @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Bekræft eksport af boks" }, "exportWarningDesc": { "message": "Denne eksport indeholder dine boksdata i ukrypteret form. Du bør ikke gemme eller sende den eksporterede fil over usikre kanaler (f.eks. e-mail). Slet den straks efter at du er færdig med at bruge den." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Denne eksport krypterer dine data vha. din kontos krypteringsnøgle. Roterer du på et tidspunkt denne krypteringsnøgle, skal du eksportere igen, da du ellers ikke vil kunne dekryptere denne eksportfil." }, "exportMasterPassword": { "message": "Indtast din hovedadgangskode for at eksportere dine data fra boksen." @@ -1257,7 +1257,7 @@ "message": "Din boks er låst. Bekræft din pinkode for at fortsætte." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Lås op med biometri" }, "awaitDesktop": { "message": "Awaiting confirmation from desktop" @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index d168d09412..c8bb5a923b 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Biometrie im Browser wird auf diesem Gerät nicht unterstützt." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Berechtigung nicht erteilt" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Ohne die Berechtigung zur Kommunikation mit der Bitwarden Desktop-Anwendung können wir keine Biometrie in der Browser-Erweiterung anbieten. Bitte versuchen Sie es erneut." + }, "personalOwnershipSubmitError": { "message": "Aufgrund einer Unternehmensrichtlinie dürfen Sie keine Einträge in Ihrem persönlichen Tresor speichern. Ändern Sie die Eigentümer-Option in eine Organisation und wählen Sie aus den verfügbaren Sammlungen." }, diff --git a/src/_locales/el/messages.json b/src/_locales/el/messages.json index 9a55d23b69..3a644b5bbb 100644 --- a/src/_locales/el/messages.json +++ b/src/_locales/el/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Τα βιομετρικά στοιχεία του προγράμματος περιήγησης δεν υποστηρίζονται σε αυτήν τη συσκευή." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Λόγω μιας Πολιτικής Επιχειρήσεων, δεν επιτρέπεται η αποθήκευση στοιχείων στο προσωπικό σας vault. Αλλάξτε την επιλογή Ιδιοκτησίας σε έναν οργανισμό και επιλέξτε από τις διαθέσιμες Συλλογές." }, diff --git a/src/_locales/en_GB/messages.json b/src/_locales/en_GB/messages.json index 488e916bb2..d7cf71a4f2 100644 --- a/src/_locales/en_GB/messages.json +++ b/src/_locales/en_GB/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organisation and choose from available Collections." }, diff --git a/src/_locales/en_IN/messages.json b/src/_locales/en_IN/messages.json index 5e52ce5c0f..1c1c318cdd 100644 --- a/src/_locales/en_IN/messages.json +++ b/src/_locales/en_IN/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/es/messages.json b/src/_locales/es/messages.json index 70fb62441b..6da2f45368 100644 --- a/src/_locales/es/messages.json +++ b/src/_locales/es/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/et/messages.json b/src/_locales/et/messages.json index 9179492aef..3681c1ed4a 100644 --- a/src/_locales/et/messages.json +++ b/src/_locales/et/messages.json @@ -331,7 +331,7 @@ "message": "Hoidla ajalõpp" }, "lockNow": { - "message": "Kliki paroolihoidla lukustamiseks" + "message": "Lukusta paroolihoidla" }, "immediately": { "message": "Koheselt" @@ -535,7 +535,7 @@ "message": "Krediit- ja teiste kaartide andmed kuvatakse vaikeseadena \"Kaart\" vaates, et neid oleks lihtsam sisestada." }, "dontShowIdentitiesCurrentTab": { - "message": "Ära kuva \"Kaart\" vaates Identiteete" + "message": "Ära kuva \"Kaart\" vaates identiteete" }, "dontShowIdentitiesCurrentTabDesc": { "message": "Identiteediandmeid kuvatakse vaikeseadena \"Kaart\" vaates, et neid oleks lihtsam sisestada." @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Brauseri biomeetria ei ole selles seadmes toetatud" }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Ettevõtte poliitika tõttu ei saa sa andmeid oma personaalsesse Hoidlasse salvestada. Vali Omanikuks organisatsioon ja vali mõni saadavaolevatest Kogumikest." }, diff --git a/src/_locales/fa/messages.json b/src/_locales/fa/messages.json index 1eb516ef8d..0fad3213e4 100644 --- a/src/_locales/fa/messages.json +++ b/src/_locales/fa/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "بیومتریک مرورگر در این دستگاه پشتیبانی نمی شود." }, + "nativeMessaginPermissionErrorTitle": { + "message": "مجوز ارائه نشده است" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "بدون اجازه ارتباط با برنامه دسکتاپ Bitwarden ، نمی توانیم بیومتریک را در افزونه مرورگر ارائه دهیم. لطفا دوباره تلاش کنید." + }, "personalOwnershipSubmitError": { "message": "به دلیل خط مشی Enterprise ، برای ذخیره موارد در گاوصندوق شخصی خود محدود شده اید. گزینه مالکیت را به یک سازمان تغییر دهید و مجموعه های موجود را انتخاب کنید." }, diff --git a/src/_locales/fi/messages.json b/src/_locales/fi/messages.json index 5d9bd32252..a356dbe0cd 100644 --- a/src/_locales/fi/messages.json +++ b/src/_locales/fi/messages.json @@ -3,11 +3,11 @@ "message": "Bitwarden" }, "extName": { - "message": "Bitwarden - Ilmainen salasanojen hallinta", + "message": "Bitwarden – Ilmainen salasanojen hallinta", "description": "Extension name" }, "extDesc": { - "message": "Turvallinen ja ilmainen salasanojen hallintapalvelu kaikille laitteillesi.", + "message": "Turvallinen ja ilmainen salasanojen hallinta kaikille laitteillesi.", "description": "Extension description" }, "loginOrCreateNewAccount": { @@ -98,7 +98,7 @@ "message": "Holvista on kirjauduttu ulos." }, "autoFillInfo": { - "message": "Nykyiselle selaimen välilehdelle ei ole automaattisesti täytettäviä kirjautumistietoja." + "message": "Selaimen avoimelle välilehdelle ei ole automaattisesti täytettäviä kirjautumistietoja." }, "addLogin": { "message": "Lisää kirjautumistieto" @@ -561,7 +561,7 @@ "message": "Älä näytä \"Salasana vaihdettu\" -ilmoitusta" }, "disableChangedPasswordNotificationDesc": { - "message": "\"Salasana vaihdettu\" -kehote ehdottaa holviisi tallennetun salasanan automaattista päivitystä kun se havaitsee, että olet vaihtanut sen verkkosivustolla." + "message": "\"Salasana vaihdettu\" -ilmoitus ehdottaa holviisi tallennetun salasanan automaattista päivitystä kun se havaitsee, että olet vaihtanut sen verkkosivustolla." }, "notificationChangeDesc": { "message": "Haluatko päivittää salasanan Bitwardeniin?" @@ -613,7 +613,7 @@ "message": "Tämä vienti sisältää holvisi tiedot salaamattomassa muodossa. Sinun ei tulisi säilyttää tai lähettää vietyä tiedostoa suojaamattomien kanavien (kuten sähköpostin) välityksellä. Poista se välittömästi kun sille ei enää ole käyttöä." }, "encExportWarningDesc": { - "message": "Tämä vienti salaa tietosi käyttäen käyttäjätilisi salausavainta. Jos joskus uudistat tilisi salausavaimen, tulee sinun viedä tiedot uudelleen, koska et voi enää purkaa nyt viedyn tiedoston salausta." + "message": "Tämä vienti salaa tietosi käyttäjätilisi salausavaimella. Jos joskus uudistat tilisi salausavaimen, on teitojen vienti tehtävä uudelleen, koska et voi enää purkaa nyt viedyn tiedoston salausta." }, "exportMasterPassword": { "message": "Syötä pääsalasana viedäksesi holvisi tiedot." @@ -655,22 +655,22 @@ "message": "Liitteet" }, "deleteAttachment": { - "message": "Poista liite" + "message": "Poista tiedostoliite" }, "deleteAttachmentConfirmation": { "message": "Haluatko varmasti poistaa liitteen?" }, "deletedAttachment": { - "message": "Poistettiin liite" + "message": "Poistettiin tiedostoliite" }, "newAttachment": { - "message": "Lisää uusi liite" + "message": "Lisää uusi tiedostoliite" }, "noAttachments": { "message": "Liitteitä ei ole." }, "attachmentSaved": { - "message": "Liite on tallennettiin." + "message": "Tiedostoliite tallennettiin." }, "file": { "message": "Tiedosto" @@ -706,7 +706,7 @@ "message": "Ryhdy Premium-jäseneksi saadaksesi:" }, "ppremiumSignUpStorage": { - "message": "1 Gt salattua tallennustilaa liitetiedostoille." + "message": "1 Gt salattua tallennustilaa tiedostoliitteille." }, "ppremiumSignUpTwoStep": { "message": "Muita kaksivaiheisen kirjautumisen todennusmenetelmiä kuten YubiKey, FIDO U2F ja Duo Security." @@ -790,7 +790,7 @@ "message": "Käytä eri kaksivaiheisen kirjautumisen todennusmenetelmää" }, "insertYubiKey": { - "message": "Kytke YubiKey-todennuslaitteesi tietokoneesi USB-porttiin ja paina sen painiketta." + "message": "Kytke YubiKey-todennuslaitteesi tietokoneen USB-porttiin ja paina sen painiketta." }, "insertU2f": { "message": "Kytke todennuslaitteesi tietokoneen USB-porttiin. Jos laitteessa on painike, paina sitä." @@ -904,7 +904,7 @@ "message": "Lukitse holvi" }, "privateModeMessage": { - "message": "Valitettavasti tämä ikkuna ei ole saatavilla tämän selaimen yksityisyystilassa." + "message": "Valitettavasti tämä ikkuna ei ole käytettävissä tämän selaimen yksityisessä selaustilassa." }, "customFields": { "message": "Lisäkentät" @@ -913,7 +913,7 @@ "message": "Kopioi arvo" }, "value": { - "message": "Teksti" + "message": "Arvo" }, "newCustomField": { "message": "Uusi lisäkenttä" @@ -997,7 +997,7 @@ "message": "Joulukuu" }, "securityCode": { - "message": "Turvakoodi (CVV)" + "message": "Turvakoodi (CVC/CVV)" }, "ex": { "message": "esim." @@ -1124,7 +1124,7 @@ "description": "To clear something out. example: To clear browser history." }, "checkPassword": { - "message": "Tarkista, onko salasana vuotanut." + "message": "Tarkasta, onko salasana vuotanut." }, "passwordExposed": { "message": "Salasana on paljastunut $VALUE$ tietovuodossa. Se tulisi vaihtaa.", @@ -1167,7 +1167,7 @@ "message": "Näytä tai piilota asetukset" }, "toggleCurrentUris": { - "message": "Näytä/piilota nykyiset URI:t", + "message": "Näytä tai piilota nykyiset URI:t", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1257,7 +1257,7 @@ "message": "Holvisi on lukittu. Vahvista PIN-koodisi jatkaaksesi." }, "unlockWithBiometrics": { - "message": "Avaa käyttäen biometriaa" + "message": "Avaa biometrialla" }, "awaitDesktop": { "message": "Odottaa vahvistusta työpöydältä" @@ -1278,7 +1278,7 @@ "message": "Kloonaa" }, "passwordGeneratorPolicyInEffect": { - "message": "Yksi tai useampi organisaation käytäntö vaikuttaa generaattorisi asetuksiin." + "message": "Yksi tai useampi organisaatiokäytäntö vaikuttaa generaattorisi asetuksiin." }, "vaultTimeoutAction": { "message": "Holvin aikakatkaisun toiminto" @@ -1322,16 +1322,16 @@ "message": "Täytä automaattisesti ja tallenna" }, "autoFillSuccessAndSavedUri": { - "message": "Täytettiin kohde automaattisesti ja URI tallennettiin" + "message": "Kohde täytettiin automaattisesti ja URI tallennettiin" }, "autoFillSuccess": { - "message": "Täytettiin kohde automaattisesti" + "message": "Kohde täytettiin automaattisesti" }, "setMasterPassword": { "message": "Aseta pääsalasana" }, "masterPasswordPolicyInEffect": { - "message": "Yksi tai useampi organisaation käytäntö edellyttää, että pääsalasanasi täyttää seuraavat vaatimukset:" + "message": "Yksi tai useampi organisaatiokäytäntö edellyttää, että pääsalasanasi täyttää seuraavat vaatimukset:" }, "policyInEffectMinComplexity": { "message": "Monimutkaisuuden vähimmäispistemäärä on $SCORE$", @@ -1370,7 +1370,7 @@ } }, "masterPasswordPolicyRequirementsNotMet": { - "message": "Uusi pääsalasanasi ei täytä käytännön vaatimuksia." + "message": "Uusi pääsalasanasi ei täytä käytännön määrittämiä vaatimuksia." }, "acceptPolicies": { "message": "Valitsemalla tämän ruudun hyväksyt seuraavat:" @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Selaimen biometriaa ei tueta tällä laitteella." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Yrityksen asettaman käytännön johdosta kohteiden tallennus omaan holviisi ei ole mahdollista. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." }, diff --git a/src/_locales/fr/messages.json b/src/_locales/fr/messages.json index 530e901e4b..88660194fb 100644 --- a/src/_locales/fr/messages.json +++ b/src/_locales/fr/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirmer l'export du coffre" }, "exportWarningDesc": { "message": "Cet export contient les données de votre coffre dans un format non chiffré. Vous ne devriez ni le stocker ni l'envoyer via des canaux non sécurisés (tel que l'e-mail). Supprimez-le immédiatement après l'avoir utilisé." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Cet export chiffre vos données en utilisant la clé de chiffrement de votre compte. Si jamais vous modifiez la clé de chiffrement de votre compte, vous devriez exporter à nouveau car vous ne pourrez pas déchiffrer ce fichier." }, "exportMasterPassword": { "message": "Saisissez votre mot de passe maître pour exporter les données de votre coffre." @@ -1257,13 +1257,13 @@ "message": "Votre coffre est verrouillé. Saisissez votre code PIN pour continuer." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Déverrouiller par biométrie" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "En attente de confirmation de l'application de bureau" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Veuillez confirmer l'utilisation de la biométrie dans l'application Bitwarden de bureau pour activer la biométrie dans le navigateur." }, "lockWithMasterPassOnRestart": { "message": "Verrouiller avec le mot de passe maître lors du redémarrage" @@ -1385,63 +1385,69 @@ "message": "Politique de confidentialité" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Votre indice de mot de passe ne peut pas être identique à votre mot de passe." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Vérification de la synchronisation avec l'application de bureau" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Veuillez vérifier que l'application de bureau affiche cette phrase d'empreinte : " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "L'intégration avec le navigateur n'est pas activée" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "L'intégration avec le navigateur n'est pas activée dans l'application de bureau Bitwarden. Veuillez l'activer dans les paramètres de l'application de bureau." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Démarrer l'application de bureau Bitwarden." }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "L'application de bureau Bitwarden doit être démarrée avant que cette fonction puisse être utilisée." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Impossible d'activer la biométrie" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "L'action a été annulée par l'application de bureau" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "L'application de bureau a invalidé le canal de communication sécurisé. Veuillez réessayer cette opération" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Communication interrompue avec l'application de bureau" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "L'application de bureau est connectée à un autre compte. Veuillez vous assurer que les deux applications sont connectées au même compte." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Erreur de correspondance entre les comptes" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Le déverrouillage biométrique n'est pas activé" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Les options de biométrie dans le navigateur nécessitent au préalable l'activation des options de biométrie dans l'application de bureau." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Le déverrouillage biométrique n'est pas pris en charge" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Le déverrouillage biométrique dans le navigateur n’est pas pris en charge sur cet appareil" + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission non accordée" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Sans la permission de communiquer avec l'application de bureau Bitwarden, nous ne pouvons pas activer le déverrouillage biométrique dans l'extension navigateur. Veuillez réessayer." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "En raison d'une politique d'entreprise, il vous est interdit d'enregistrer des éléments dans votre coffre personnel. Sélectionnez une organisation dans l'option Propriété et choisissez parmi les collections disponibles." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Une politique d'organisation affecte vos options de propriété." } } diff --git a/src/_locales/he/messages.json b/src/_locales/he/messages.json index d916bccc18..c573ac2593 100644 --- a/src/_locales/he/messages.json +++ b/src/_locales/he/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "אין תמיכה בזיהוי ביומטרי בדפדפן במכשיר זה." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/hi/messages.json b/src/_locales/hi/messages.json index 03d8067cd7..fe1e9c05c3 100644 --- a/src/_locales/hi/messages.json +++ b/src/_locales/hi/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/hr/messages.json b/src/_locales/hr/messages.json index e199d87f0f..e0ade3e04a 100644 --- a/src/_locales/hr/messages.json +++ b/src/_locales/hr/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/hu/messages.json b/src/_locales/hu/messages.json index 6529c30e95..9577ddfa47 100644 --- a/src/_locales/hu/messages.json +++ b/src/_locales/hu/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "A böngésző biometrikus adatait ez az eszköz nem támogatja." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Egy vállalati házirend miatt korlátozásra került az elemek személyes tárolóba történő mentése. Módosítsuk a Tulajdon opciót egy szervezetre és válasszunk az elérhető gyűjtemények közül." }, diff --git a/src/_locales/id/messages.json b/src/_locales/id/messages.json index 07b588a0d5..577b2dbf29 100644 --- a/src/_locales/id/messages.json +++ b/src/_locales/id/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Biometrik browser tidak didukung di perangkat ini." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Karena Kebijakan Perusahaan, Anda dilarang menyimpan item ke lemari besi pribadi Anda. Ubah opsi Kepemilikan ke organisasi dan pilih dari Koleksi yang tersedia." }, diff --git a/src/_locales/it/messages.json b/src/_locales/it/messages.json index 37a49acdc3..4d540c7b27 100644 --- a/src/_locales/it/messages.json +++ b/src/_locales/it/messages.json @@ -501,7 +501,7 @@ "message": "Sei sicuro di voler eliminare questo elemento?" }, "deletedItem": { - "message": "Elemento eliminato" + "message": "Elemento spostato nel cestino" }, "overwritePassword": { "message": "Sovrascrivi password" @@ -613,7 +613,7 @@ "message": "Questa esportazione contiene i dati del tuo portachiavi in un formato non criptato. Non salvare o inviare il file esportato su canali non protetti (come la posta elettronica). Eliminalo immediatamente dopo aver finito di usarlo." }, "encExportWarningDesc": { - "message": "Questa esportazione crittografa i tuoi dati utilizzando la chiave di crittografia del tuo account. Se dovessi cambiare la chiave di crittografia del tuo account, dovresti esportare di nuovo poiché non sarai in grado di decifrare questo file di esportazione." + "message": "Questa esportazione cifra i tuoi dati utilizzando la chiave di crittografia del tuo account. Se cambi la chiave di crittografia del tuo account, non sarai più in grado di decifrare il file esportato e sarà necessario eseguire nuovo export." }, "exportMasterPassword": { "message": "Inserisci la tua password principale per esportare i dati della tua cassaforte." @@ -1257,7 +1257,7 @@ "message": "Il tuo portachiavi è bloccato. Inserisci il tuo codice PIN per continuare." }, "unlockWithBiometrics": { - "message": "Sblocca utilizzando i dati biometrici" + "message": "Sblocca utilizzando l'autenticazione biometrica" }, "awaitDesktop": { "message": "In attesa di conferma dal desktop" @@ -1278,7 +1278,7 @@ "message": "Clona" }, "passwordGeneratorPolicyInEffect": { - "message": "Una o più politiche dell'organizzazione stanno influenzando le impostazioni del tuo generatore." + "message": "Una o più policy dell'organizzazione controllano le impostazioni del tuo generatore." }, "vaultTimeoutAction": { "message": "Azione Timeout Portachiavi" @@ -1415,7 +1415,7 @@ "message": "L'azione è stata annullata dall'applicazione desktop" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "L'applicazione desktop ha invalidato il canale di comunicazione sicuro. Riprova questa operazione" + "message": "L'applicazione desktop ha invalidato il canale di comunicazione sicuro. Ritenta l'operazione" }, "nativeMessagingInvalidEncryptionTitle": { "message": "Comunicazione desktop interrotta" @@ -1430,7 +1430,7 @@ "message": "Autenticazione biometrica non abilitata" }, "biometricsNotEnabledDesc": { - "message": "L'autenticazione biometrica del browser richiede che il desktop sia abilitato prima nelle impostazioni." + "message": "L'autenticazione biometrica del browser richiede che l'autenticazione biometrica del desktop sia prima abilitata nelle impostazioni." }, "biometricsNotSupportedTitle": { "message": "Autenticazione biometrica non supportata" @@ -1438,10 +1438,16 @@ "biometricsNotSupportedDesc": { "message": "L'autenticazione biometrica del browser non è supportata su questo dispositivo." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permesso non concesso" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Senza l'autorizzazione per comunicare con l'applicazione Bitwarden Desktop non è possibile fornire l'autenticazione biometrica nell'estensione del browser.\nRiprova di nuovo." + }, "personalOwnershipSubmitError": { - "message": "A causa di una politica aziendale, non è possibile salvare elementi nella tua cassaforte personale. Cambia l'opzione Proprietà in un'organizzazione e scegli tra le Collezioni disponibili." + "message": "A causa di una policy aziendale, non è possibile salvare elementi nella tua cassaforte personale. Cambia l'opzione proprietà in un'organizzazione e scegli tra le raccolte disponibili." }, "personalOwnershipPolicyInEffect": { - "message": "Una politica dell'organizzazione sta influenzando le opzioni di proprietà." + "message": "Una policy dell'organizzazione controlla le opzioni di proprietà." } } diff --git a/src/_locales/ja/messages.json b/src/_locales/ja/messages.json index 4b9c896652..003e346ce6 100644 --- a/src/_locales/ja/messages.json +++ b/src/_locales/ja/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "このデバイスではブラウザの生体認証に対応していません。" }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "組織のポリシーにより、個人の保管庫へのアイテムの保存が制限されています。 所有権を組織に変更し、利用可能なコレクションから選択してください。" }, diff --git a/src/_locales/ko/messages.json b/src/_locales/ko/messages.json index 937c282b7d..83d8a1f935 100644 --- a/src/_locales/ko/messages.json +++ b/src/_locales/ko/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "이 기기에서는 생체 인식이 지원되지 않습니다." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "엔터프라이즈 정책으로 인해 개인 보관함에 항목을 저장할 수 없습니다. 조직에서 소유권 설정을 변경한 다음, 사용 가능한 컬렉션 중에서 선택해주세요." }, diff --git a/src/_locales/lv/messages.json b/src/_locales/lv/messages.json index 8b64a150e7..bb7a1f7898 100644 --- a/src/_locales/lv/messages.json +++ b/src/_locales/lv/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/ml/messages.json b/src/_locales/ml/messages.json index 4ce63ccea8..89ca2891af 100644 --- a/src/_locales/ml/messages.json +++ b/src/_locales/ml/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/nb/messages.json b/src/_locales/nb/messages.json index 98fb95861d..17fa03525f 100644 --- a/src/_locales/nb/messages.json +++ b/src/_locales/nb/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/nl/messages.json b/src/_locales/nl/messages.json index 2e9a71f939..984ed2a19f 100644 --- a/src/_locales/nl/messages.json +++ b/src/_locales/nl/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Dit apparaat ondersteunt geen browserbiometrie." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Toestemming niet verleend" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Zonder toestemming om te communiceren met de Bitwarden Desktop-applicatie, kunnen we biometrisch inloggen in de browserextensie niet leveren. Probeer het opnieuw." + }, "personalOwnershipSubmitError": { "message": "Wegens bedrijfsbeleid mag je geen wachtwoorden opslaan in je persoonlijke kluis. Verander het eigenaarschap naar een organisatie en kies uit een van de beschikbare collecties." }, diff --git a/src/_locales/pl/messages.json b/src/_locales/pl/messages.json index f7417293a0..7c16a89c45 100644 --- a/src/_locales/pl/messages.json +++ b/src/_locales/pl/messages.json @@ -1260,10 +1260,10 @@ "message": "Odblokuj danymi biometrycznymi" }, "awaitDesktop": { - "message": "Oczekiwanie na potwierdzenie z aplikacji" + "message": "Oczekiwanie na potwierdzenie z aplikacji desktopowej" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Włącz dane biometryczne w aplikacji desktopowej Bitwarden, aby włączyć tę samą funkcję w przeglądarce." }, "lockWithMasterPassOnRestart": { "message": "Zablokuj hasłem głównym po uruchomieniu przeglądarki" @@ -1385,43 +1385,43 @@ "message": "Polityka prywatności" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Podpowiedź do hasła nie może być taka sama jak hasło." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Weryfikacja synchronizacji z aplikacją" + "message": "Weryfikacja synchronizacji z aplikacją desktopową" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Zweryfikuj aplikację desktopową z wyświetlonym identyfikatorem: " }, "desktopIntegrationDisabledTitle": { - "message": "Integracja z przeglądarką jest wyłączona" + "message": "Połączenie z przeglądarką jest wyłączone" }, "desktopIntegrationDisabledDesc": { - "message": "Integracja z przeglądarką jest wyłączona. Włącz funkcję w ustawieniach aplikacji Bitwarden." + "message": "Połączenie z przeglądarką jest wyłączone. Włącz funkcję w ustawieniach aplikacji desktopowej Bitwarden." }, "startDesktopTitle": { - "message": "Uruchom aplikację Bitwarden" + "message": "Uruchom aplikację desktopową Bitwarden" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Aplikacja desktopowa Bitwarden musi zostać uruchomiona przed użyciem tej funkcji." }, "errorEnableBiometricTitle": { "message": "Nie można włączyć danych biometrycznych" }, "errorEnableBiometricDesc": { - "message": "Operacja została anulowana przez aplikację" + "message": "Operacja została anulowana przez aplikację desktopową" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Aplikacja desktopowa unieważniła bezpieczny kanał komunikacji. Spróbuj ponownie wykonać tę operację" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Komunikacja z aplikacją została przerwana" + "message": "Komunikacja z aplikacją desktopową została przerwana" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "W aplikacji desktopowej jesteś zalogowany na inne konto. Upewnij się, że w obu aplikacjach jesteś zalogowany na te same konto." }, "nativeMessagingWrongUserTitle": { "message": "Konto jest niezgodne" @@ -1430,13 +1430,19 @@ "message": "Dane biometryczne są wyłączone" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Aby włączyć dane biometryczne w przeglądarce, musisz włączyć tę samą funkcję w ustawianiach aplikacji desktopowej." }, "biometricsNotSupportedTitle": { "message": "Dane biometryczne nie są obsługiwane" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Dane biometryczne przeglądarki nie są obsługiwane na tym urządzenie." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Uprawnienie nie zostało przyznane" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Bez uprawnienia do komunikowania się z aplikacją desktopową Bitwarden nie możemy dostarczyć obsługi danych biometrycznych w rozszerzeniu przeglądarki. Spróbuj ponownie." }, "personalOwnershipSubmitError": { "message": "Ze względu na zasadę przedsiębiorstwa nie możesz zapisywać elementów w osobistym sejfie. Zmień właściciela elementu na organizację i wybierz jedną z dostępnych kolekcji." diff --git a/src/_locales/pt_BR/messages.json b/src/_locales/pt_BR/messages.json index 9a815c3cff..43b3fbaf0c 100644 --- a/src/_locales/pt_BR/messages.json +++ b/src/_locales/pt_BR/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "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). Exclua o arquivo imediatamente após terminar de usá-lo." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "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." }, "exportMasterPassword": { "message": "Insira a sua senha mestra para exportar os dados do seu cofre." @@ -1257,13 +1257,13 @@ "message": "O seu cofre está bloqueado. Verifique o seu PIN para continuar." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Desbloquear com a biometria" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Aguardando confirmação do desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Por favor, confirme o uso de dados biométricos no aplicativo Bitwarden Desktop para habilitar os dados biométricos para o navegador." }, "lockWithMasterPassOnRestart": { "message": "Bloquear com senha mestra ao reiniciar o navegador" @@ -1385,63 +1385,69 @@ "message": "Política de Privacidade" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Sua dica de senha senha não pode ser a mesma que a sua senha." }, "ok": { "message": "Ok" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Verificação de sincronização do Desktop" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Por favor, verifique se o aplicativo desktop mostra esta impressão digital: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "A integração com o navegador não está ativada" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "A integração com o navegador não está habilitada no aplicativo Bitwarden Desktop. Por favor, habilite-a nas configurações do aplicativo desktop." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Iniciar o aplicativo Bitwarden Desktop" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "O aplicativo Bitwarden Desktop precisa ser iniciado antes que esta função possa ser usada." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Não foi possível ativar os dados biométricos" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Ação foi cancelada pelo desktop" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "O aplicativo desktop invalidou o canal de comunicação seguro. Por favor, tente esta operação novamente" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Comunicação com o desktop interrompida" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "O aplicativo de desktop está conectado em uma conta diferente. Por favor, certifique-se de que ambos os aplicativos estejam conectados na mesma conta." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "A conta não confere" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometria não habilitada" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "A biometria com o navegador requer que a biometria de desktop seja ativada nas configurações primeiro." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Biometria não suportada" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "A biometria com o navegador não é suportada neste dispositivo." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Devido a uma Política Empresarial, você está restrito de salvar itens para seu cofre pessoal. Altere a opção de Propriedade para uma organização e escolha entre as Coleções disponíveis." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Uma política de organização está afetando suas opções de propriedade." } } diff --git a/src/_locales/pt_PT/messages.json b/src/_locales/pt_PT/messages.json index d4aee8e35e..d6ba0ef652 100644 --- a/src/_locales/pt_PT/messages.json +++ b/src/_locales/pt_PT/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/ro/messages.json b/src/_locales/ro/messages.json index 2845b7b6f7..7c8acac2f7 100644 --- a/src/_locales/ro/messages.json +++ b/src/_locales/ro/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Biometria browserului nu este acceptată pe acest dispozitiv." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Datorită unei politici pentru întreprinderi, vă este restricționată salvarea de elemente în seiful dvs. personal. Schimbați opțiunea de proprietate la o organizație și alegeți dintre colecțiile disponibile." }, diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 89e0bcd34d..2a550b56aa 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Биометрия в браузере не поддерживается этом устройстве." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Разрешение не представлено" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Без разрешения на взаимодействие с Bitwarden для компьютера биометрия в расширении браузера работать не сможет. Попробуйте еще раз." + }, "personalOwnershipSubmitError": { "message": "В соответствии с корпоративной политикой вам запрещено сохранять элементы в личном хранилище. Измените владельца на организацию и выберите из доступных Коллекций." }, diff --git a/src/_locales/si/messages.json b/src/_locales/si/messages.json index 636c4673ae..650045089f 100644 --- a/src/_locales/si/messages.json +++ b/src/_locales/si/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/sk/messages.json b/src/_locales/sk/messages.json index d6c1ee4eae..e4fbf404c9 100644 --- a/src/_locales/sk/messages.json +++ b/src/_locales/sk/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/sl/messages.json b/src/_locales/sl/messages.json index a1b4aa76d2..02c4279727 100644 --- a/src/_locales/sl/messages.json +++ b/src/_locales/sl/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/sr/messages.json b/src/_locales/sr/messages.json index 627c3efa80..7be8e1c76f 100644 --- a/src/_locales/sr/messages.json +++ b/src/_locales/sr/messages.json @@ -125,7 +125,7 @@ "message": "Налог" }, "changeMasterPassword": { - "message": "Промени Главну Лозинку" + "message": "Промени главну лозинку" }, "fingerprintPhrase": { "message": "Сигурносна Фраза Сефа", @@ -303,10 +303,10 @@ "message": "Ваш прегледач не подржава једноставно копирање клипборда. Уместо тога копирајте га ручно." }, "verifyMasterPassword": { - "message": "Проверити Главну Лозинку" + "message": "Верификујте Главну Лозинку" }, "yourVaultIsLocked": { - "message": "Сеф је блокиран. Проверити главну лозинку за наставак." + "message": "Сеф је блокиран. Унесите главну лозинку за наставак." }, "unlock": { "message": "Откључај" @@ -443,7 +443,7 @@ "message": "Фасцикла додата" }, "changeMasterPass": { - "message": "Промени Главну Лозинку" + "message": "Промени главну лозинку" }, "changeMasterPasswordConfirmation": { "message": "Можете променити главну лозинку у Вашем сефу на bitwarden.com. Да ли желите да посетите веб страницу сада?" @@ -649,7 +649,7 @@ "message": "Једнократни код" }, "copyVerificationCode": { - "message": "Копирај Верификациони код" + "message": "Копирај верификациони код" }, "attachments": { "message": "Прилози" @@ -1194,7 +1194,7 @@ "message": "Подразумевано" }, "dateUpdated": { - "message": "Ажурирано", + "message": "Промењено", "description": "ex. Date this item was updated" }, "datePasswordUpdated": { @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Биометрија прегледача није подржана на овом уређају." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Због смерница за предузећа, ограничено вам је чување предмета у вашем личном трезору. Промените опцију власништва у организацију и изаберите из доступних колекција." }, diff --git a/src/_locales/sv/messages.json b/src/_locales/sv/messages.json index da553e0aaf..4077aeb50e 100644 --- a/src/_locales/sv/messages.json +++ b/src/_locales/sv/messages.json @@ -607,13 +607,13 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Bekräfta export av valv" }, "exportWarningDesc": { "message": "Den här exporten innehåller ditt valvs okrypterade data i .csv-format. Du bör inte lagra eller skicka filen över osäkra anslutningar (genom t.ex. mejl). Radera filen efter du är färdig med den." }, "encExportWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "Denna export krypterar dina data med kontots krypteringsnyckel. Om du någonsin roterar kontots krypteringsnyckel bör du exportera igen eftersom du inte kommer att kunna dekryptera denna exportfil." }, "exportMasterPassword": { "message": "Ange ditt huvudlösenord för att exportera ditt valv." @@ -1257,13 +1257,13 @@ "message": "Valvet är låst. Kontrollera din PIN-kod för att fortsätta." }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Lås upp med biometri" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Väntar på bekräftelse från skrivbordsprogrammet" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Säkerställ att du använder biometri i Bitwardens skrivbordsprogram för att aktivera biometri för webbläsaren." }, "lockWithMasterPassOnRestart": { "message": "Lås med huvudlösenordet vid omstart av webbläsaren" @@ -1385,63 +1385,69 @@ "message": "Integritetspolicy" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Din lösenordsledtråd får inte vara samma som ditt lösenord." }, "ok": { - "message": "Ok" + "message": "OK" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Verifiering av synkronisering med skrivbordsprogrammet" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Vänligen bekräfta att skrivbordsprogrammet visar det här fingeravtrycket: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Webbläsarintegration är inte aktiverad" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Webbläsarintegration är inte aktiverad i Bitwardens skrivbordsprogram. Aktivera det i inställningarna i skrivbordsprogrammet." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Starta Bitwardens skrivbordsprogram" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before this function can be used." + "message": "Bitwardens skrivbordsprogram måste köras innan denna funktion kan användas." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Det gick inte att aktivera biometri" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Åtgärden avbröts av skrivbordsprogrammet" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Skrivbordsprogrammet ogiltigförklarade den säkra kommunikationskanalen. Försök igen" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Kommunikationen med skrivbordsprogrammet avbröts" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Skrivbordsprogrammet är inloggat på ett annat konto. Se till att båda applikationerna är inloggade på samma konto." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Kontoavvikelse" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometri är inte aktiverat" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Biometri i webbläsaren kräver att biometri på skrivbordet aktiveras i inställningarna först." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Biometri stöds inte" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "Biometri i webbläsaren stöds inte på den här enheten." + }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "På grund av en av företagets policyer är du begränsad från att spara objekt till ditt personliga valv. Ändra ägarskap till en organisation och välj från tillgängliga samlingar." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "En organisationspolicy påverkar dina ägarskapsalternativ." } } diff --git a/src/_locales/th/messages.json b/src/_locales/th/messages.json index f7035f9226..8093dedcae 100644 --- a/src/_locales/th/messages.json +++ b/src/_locales/th/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/tr/messages.json b/src/_locales/tr/messages.json index aca6546d21..319068c0dd 100644 --- a/src/_locales/tr/messages.json +++ b/src/_locales/tr/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/uk/messages.json b/src/_locales/uk/messages.json index 28fd67996c..59e733c0a6 100644 --- a/src/_locales/uk/messages.json +++ b/src/_locales/uk/messages.json @@ -1257,13 +1257,13 @@ "message": "Ваше сховище заблоковане. Для продовження підтвердьте свій PIN-код." }, "unlockWithBiometrics": { - "message": "Розблокувати з біометрикою" + "message": "Розблокувати з біометрією" }, "awaitDesktop": { "message": "Очікується підтвердження з комп'ютера" }, "awaitDesktopDesc": { - "message": "Для увімкнення біометрики у браузері, будь ласка, підтвердьте це у програмі Bitwarden на комп'ютері." + "message": "Для увімкнення біометрії в браузері, будь ласка, підтвердьте це у програмі Bitwarden на комп'ютері." }, "lockWithMasterPassOnRestart": { "message": "Блокувати головним паролем при перезапуску браузера" @@ -1409,7 +1409,7 @@ "message": "Для використання цієї функції необхідно запустити програму Bitwarden на комп'ютері." }, "errorEnableBiometricTitle": { - "message": "Не вдається увімкнути біометрику" + "message": "Не вдається увімкнути біометрію" }, "errorEnableBiometricDesc": { "message": "Дію було скасовано програмою на комп'ютері" @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Біометрія в браузері не підтримується на цьому пристрої." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "У зв'язку з корпоративною політикою, вам не дозволено зберігати записи до особистого сховища. Змініть налаштування власності на організацію та виберіть серед доступних збірок." }, diff --git a/src/_locales/vi/messages.json b/src/_locales/vi/messages.json index 46af9ca591..02e9e7f6c7 100644 --- a/src/_locales/vi/messages.json +++ b/src/_locales/vi/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json index e58abff2f4..d28a314f64 100644 --- a/src/_locales/zh_CN/messages.json +++ b/src/_locales/zh_CN/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "此设备不支持浏览器生物识别。" }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "由于企业策略,您被限制为保存项目到您的个人密码库。将所有权选项更改为组织,并从可用的集合中选择。" }, diff --git a/src/_locales/zh_TW/messages.json b/src/_locales/zh_TW/messages.json index 420cc9fd44..6babbc50cb 100644 --- a/src/_locales/zh_TW/messages.json +++ b/src/_locales/zh_TW/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessaginPermissionErrorTitle": { + "message": "Permission not provided" + }, + "nativeMessaginPermissionErrorDesc": { + "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + }, "personalOwnershipSubmitError": { "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." }, diff --git a/store/locales/fi/copy.resx b/store/locales/fi/copy.resx index e1dcb50010..e4a13b0276 100644 --- a/store/locales/fi/copy.resx +++ b/store/locales/fi/copy.resx @@ -121,7 +121,7 @@ Bitwarden – Ilmainen salasanojen hallinta - Turvallinen ja ilmainen salasanojen hallintapalvelu kaikille laitteillesi + Turvallinen ja ilmainen salasanojen hallinta kaikille laitteillesi Bitwarden on helpoin ja turvallisin tapa säilyttää käyttäjätunnuksesi ja salasanasi, samalla pitäen ne synkronoituna laitteidesi välillä. @@ -135,7 +135,7 @@ Bitwarden säilyttää kaikki kirjautumistietosi salattussa holvissa, joka synkr Bitwarden on 100% avointa lähdekoodia. Bitwardenin lähdekoodi on esillä GitHubissa ja kuka tahansa voi tutkia ja tarkastella sitä sekä osallistua Bitwardenin kehitykseen. - Turvallinen ja ilmainen salasanojen hallintapalvelu kaikille laitteillesi + Turvallinen ja ilmainen salasanojen hallinta kaikille laitteillesi Synkronoi ja hallitse holviasi useilla laitteilla From a26169750a6f044e2f5ca29a22e2d874ac6ddeae Mon Sep 17 00:00:00 2001 From: Matt Gibson Date: Mon, 25 Jan 2021 12:03:51 -0600 Subject: [PATCH 58/73] Fix action button disable css (#1567) * Darken light theme to comply with WCAG AA * Adjust opacity on disabled Color and/or opacity is used to delineate enabled vs disabled elements. Both are required becaus some themes do not change color on disabled. --- src/popup/scss/box.scss | 2 ++ src/popup/scss/variables.scss | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/popup/scss/box.scss b/src/popup/scss/box.scss index 71ad813d7a..34b6e363a2 100644 --- a/src/popup/scss/box.scss +++ b/src/popup/scss/box.scss @@ -378,11 +378,13 @@ &.disabled { @include themify($themes) { color: themed('disabledIconColor'); + opacity: themed('disabledBoxOpacity'); } &:hover { @include themify($themes) { color: themed('disabledIconColor'); + opacity: themed('disabledBoxOpacity'); } } } diff --git a/src/popup/scss/variables.scss b/src/popup/scss/variables.scss index 8d29409eb8..8ec057f6e9 100644 --- a/src/popup/scss/variables.scss +++ b/src/popup/scss/variables.scss @@ -9,7 +9,8 @@ $text-color: #000000; $border-color: #f0f0f0; $border-color-dark: #ddd; $list-item-hover: #fbfbfb; -$list-icon-color: #c7c7cd; +$list-icon-color: #767679; +$disabled-box-opacity: 1; $border-radius: 3px; $line-height-base: 1.42857143; @@ -59,6 +60,7 @@ $themes: ( headerInputPlaceholderColor: lighten($brand-primary, 35%), listItemBackgroundHoverColor: $list-item-hover, disabledIconColor: $list-icon-color, + disabledBoxOpacity: $disabled-box-opacity, headingColor: $gray-light, labelColor: $gray-light, mutedColor: $text-muted, @@ -106,7 +108,8 @@ $themes: ( headerInputColor: #ffffff, headerInputPlaceholderColor: #707070, listItemBackgroundHoverColor: #3c3c3c, - disabledIconColor: #c7c7cd, + disabledIconColor: #cacaca, + disabledBoxOpacity: 0.5, headingColor: #a3a3a3, labelColor: #a3a3a3, mutedColor: #a3a3a3, @@ -154,7 +157,8 @@ $themes: ( headerInputColor: $nord2, headerInputPlaceholderColor: $nord3, listItemBackgroundHoverColor: $nord3, - disabledIconColor: $nord5, + disabledIconColor: $nord4, + disabledBoxOpacity: 0.5, headingColor: $nord4, labelColor: $nord4, mutedColor: $nord4, From b05a2a2b9d1b9f0e575e0031e1be1b8169c468b1 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 25 Jan 2021 13:08:20 -0500 Subject: [PATCH 59/73] New translations messages.json (Hungarian) --- src/_locales/hu/messages.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_locales/hu/messages.json b/src/_locales/hu/messages.json index 9577ddfa47..07e30b6d7e 100644 --- a/src/_locales/hu/messages.json +++ b/src/_locales/hu/messages.json @@ -1439,10 +1439,10 @@ "message": "A böngésző biometrikus adatait ez az eszköz nem támogatja." }, "nativeMessaginPermissionErrorTitle": { - "message": "Permission not provided" + "message": "A jogosultság nincs megadva." }, "nativeMessaginPermissionErrorDesc": { - "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + "message": "A Bitwarden Desktop alkalmazással való kommunikáció engedélye nélkül nem adhatunk meg biometrikus adatokat a böngésző kiterjesztésében. Próbáljuk újra." }, "personalOwnershipSubmitError": { "message": "Egy vállalati házirend miatt korlátozásra került az elemek személyes tárolóba történő mentése. Módosítsuk a Tulajdon opciót egy szervezetre és válasszunk az elérhető gyűjtemények közül." From 7526c5bfa7f6103258bc5d49ec9255a3c62cf448 Mon Sep 17 00:00:00 2001 From: addison Date: Mon, 25 Jan 2021 13:36:21 -0500 Subject: [PATCH 60/73] changed hrtime library --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index d907f23b21..2884680e63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1894,10 +1894,10 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "browser-hrtime": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/browser-hrtime/-/browser-hrtime-1.1.8.tgz", + "integrity": "sha512-kzXheikaJsBtzUBlyVtPIY5r0soQePzjwVwT4IlDpU2RvfB5Py52gpU98M77rgqMCheoSSZvrcrdj3t6cZ3suA==" }, "browser-resolve": { "version": "1.11.3", diff --git a/package.json b/package.json index 764d5e0c48..471e632be7 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "angular2-toaster": "8.0.0", "angulartics2": "9.1.0", "big-integer": "1.6.36", - "browser-process-hrtime": "1.0.0", + "browser-hrtime": "^1.1.8", "core-js": "2.6.2", "duo_web_sdk": "git+https://github.com/duosecurity/duo_web_sdk.git", "font-awesome": "4.7.0", From 88a6cbb874cad3c4046a0aedb066957283f5e358 Mon Sep 17 00:00:00 2001 From: addison Date: Mon, 25 Jan 2021 15:08:53 -0500 Subject: [PATCH 61/73] updated jslib --- jslib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jslib b/jslib index 6ac6df75d7..9ddec9baf8 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit 6ac6df75d7a9bd5ea58f5d8310f1b3e34abd2bde +Subproject commit 9ddec9baf8b6e7de58c00744eb371dc68e1b6383 From ab759a4746b4b694b4e5e7940c79c35baf7f1fb5 Mon Sep 17 00:00:00 2001 From: Hinton Date: Mon, 25 Jan 2021 21:23:18 +0100 Subject: [PATCH 62/73] Remove biometric from firefox --- gulpfile.js | 12 +----------- src/manifest.json | 4 +++- src/popup/settings/settings.component.html | 2 +- src/popup/settings/settings.component.ts | 5 ++++- src/services/browserPlatformUtils.service.ts | 2 +- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 541d4def69..5428873f59 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -65,6 +65,7 @@ function dist(browserName, manifest) { function distFirefox() { return dist('firefox', (manifest) => { delete manifest.content_security_policy; + delete manifest.optional_permissions; removeShortcuts(manifest); return manifest; }); @@ -75,7 +76,6 @@ function distOpera() { delete manifest.applications; delete manifest.content_security_policy; removeShortcuts(manifest); - moveNativeMessagingToOptional(manifest); return manifest; }); } @@ -86,7 +86,6 @@ function distChrome() { delete manifest.content_security_policy; delete manifest.sidebar_action; delete manifest.commands._execute_sidebar_action; - moveNativeMessagingToOptional(manifest); return manifest; }); } @@ -97,7 +96,6 @@ function distEdge() { delete manifest.content_security_policy; delete manifest.sidebar_action; delete manifest.commands._execute_sidebar_action; - moveNativeMessagingToOptional(manifest); return manifest; }); } @@ -111,14 +109,6 @@ function removeShortcuts(manifest) { } } -function moveNativeMessagingToOptional(manifest) { - const index = manifest.permissions.indexOf("nativeMessaging"); - index > -1 ? manifest.permissions.splice(index, 1) : false - manifest.optional_permissions = [ - "nativeMessaging" - ]; -} - function distSafariMas(cb) { return distSafariApp(cb, 'mas'); } diff --git a/src/manifest.json b/src/manifest.json index 42670dda10..3e50886648 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -89,7 +89,9 @@ "http://*/*", "https://*/*", "webRequest", - "webRequestBlocking", + "webRequestBlocking" + ], + "optional_permissions": [ "nativeMessaging" ], "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", diff --git a/src/popup/settings/settings.component.html b/src/popup/settings/settings.component.html index fc1eeedfe7..7a8558e816 100644 --- a/src/popup/settings/settings.component.html +++ b/src/popup/settings/settings.component.html @@ -42,7 +42,7 @@
-
+
diff --git a/src/popup/settings/settings.component.ts b/src/popup/settings/settings.component.ts index b61dedd9b2..c194e51d83 100644 --- a/src/popup/settings/settings.component.ts +++ b/src/popup/settings/settings.component.ts @@ -52,6 +52,7 @@ export class SettingsComponent implements OnInit { vaultTimeoutActions: any[]; vaultTimeoutAction: string; pin: boolean = null; + supportsBiometric: boolean; biometric: boolean = false; previousVaultTimeout: number = null; @@ -102,6 +103,8 @@ export class SettingsComponent implements OnInit { const pinSet = await this.vaultTimeoutService.isPinLockSet(); this.pin = pinSet[0] || pinSet[1]; + + this.supportsBiometric = await this.platformUtilsService.supportsBiometric(); this.biometric = await this.vaultTimeoutService.isBiometricLockSet(); } @@ -208,7 +211,7 @@ export class SettingsComponent implements OnInit { } async updateBiometric() { - if (this.biometric) { + if (this.biometric && this.supportsBiometric) { // Request permission to use the optional permission for nativeMessaging if (!this.platformUtilsService.isFirefox()) { diff --git a/src/services/browserPlatformUtils.service.ts b/src/services/browserPlatformUtils.service.ts index 38bab53b43..7f9835cd1e 100644 --- a/src/services/browserPlatformUtils.service.ts +++ b/src/services/browserPlatformUtils.service.ts @@ -290,7 +290,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService } supportsBiometric() { - return Promise.resolve(true); + return Promise.resolve(!this.isFirefox() && !this.isSafari()); } authenticateBiometric() { From 559a18a32d7faa3ef15aa817629c7df5363b28e6 Mon Sep 17 00:00:00 2001 From: Hinton Date: Mon, 25 Jan 2021 21:27:17 +0100 Subject: [PATCH 63/73] Fix linting warnings --- src/popup/settings/settings.component.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/popup/settings/settings.component.ts b/src/popup/settings/settings.component.ts index c194e51d83..6d5d473315 100644 --- a/src/popup/settings/settings.component.ts +++ b/src/popup/settings/settings.component.ts @@ -23,7 +23,6 @@ import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; import { StorageService } from 'jslib/abstractions/storage.service'; import { UserService } from 'jslib/abstractions/user.service'; import { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service'; -import { resolve } from '@angular/compiler-cli/src/ngtsc/file_system'; const RateUrls = { [DeviceType.ChromeExtension]: @@ -216,11 +215,9 @@ export class SettingsComponent implements OnInit { // Request permission to use the optional permission for nativeMessaging if (!this.platformUtilsService.isFirefox()) { const granted = await new Promise((resolve, reject) => { - chrome.permissions.request({permissions: ['nativeMessaging']}, function(granted) { - resolve(granted); - }); + chrome.permissions.request({permissions: ['nativeMessaging']}, resolve); }); - + if (!granted) { await this.platformUtilsService.showDialog( this.i18nService.t('nativeMessaginPermissionErrorDesc'), this.i18nService.t('nativeMessaginPermissionErrorTitle'), From 4045ce2d157f2087d0080258d68a442be64064e5 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Wed, 27 Jan 2021 15:34:14 +1000 Subject: [PATCH 64/73] Pass launchCipher down to grandchild for reuse --- src/popup/components/action-buttons.component.ts | 11 ++--------- src/popup/components/ciphers-list.component.html | 3 ++- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/popup/components/action-buttons.component.ts b/src/popup/components/action-buttons.component.ts index 909d20b8e2..605ca6f63a 100644 --- a/src/popup/components/action-buttons.component.ts +++ b/src/popup/components/action-buttons.component.ts @@ -29,6 +29,7 @@ import { PopupUtilsService } from '../services/popup-utils.service'; }) export class ActionButtonsComponent { @Output() onView = new EventEmitter(); + @Output() onLaunch = new EventEmitter(); @Input() cipher: CipherView; @Input() showView = false; @@ -45,15 +46,7 @@ export class ActionButtonsComponent { } launch() { - if (this.cipher.type !== CipherType.Login || !this.cipher.login.canLaunch) { - return; - } - - this.analytics.eventTrack.next({ action: 'Launched URI From Listing' }); - BrowserApi.createNewTab(this.cipher.login.launchUri); - if (this.popupUtilsService.inPopup(window)) { - BrowserApi.closePopup(window); - } + this.onLaunch.emit(this.cipher); } async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) { diff --git a/src/popup/components/ciphers-list.component.html b/src/popup/components/ciphers-list.component.html index 33c585ad1f..39217fe5c1 100644 --- a/src/popup/components/ciphers-list.component.html +++ b/src/popup/components/ciphers-list.component.html @@ -17,6 +17,7 @@ {{c.subTitle}}
- + From ea1a1cc99b6eb74a9008aa0b20a7c5334cba550b Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Thu, 28 Jan 2021 07:45:54 +1000 Subject: [PATCH 65/73] Use consistent naming convention for launchCipher --- src/popup/components/action-buttons.component.html | 2 +- src/popup/components/action-buttons.component.ts | 6 +++--- src/popup/components/ciphers-list.component.html | 4 ++-- src/popup/components/ciphers-list.component.ts | 6 +++--- src/popup/vault/ciphers.component.html | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/popup/components/action-buttons.component.html b/src/popup/components/action-buttons.component.html index 5d81817e9c..a3caa2c933 100644 --- a/src/popup/components/action-buttons.component.html +++ b/src/popup/components/action-buttons.component.html @@ -2,7 +2,7 @@ - diff --git a/src/popup/components/action-buttons.component.ts b/src/popup/components/action-buttons.component.ts index 605ca6f63a..8cc92d8842 100644 --- a/src/popup/components/action-buttons.component.ts +++ b/src/popup/components/action-buttons.component.ts @@ -29,7 +29,7 @@ import { PopupUtilsService } from '../services/popup-utils.service'; }) export class ActionButtonsComponent { @Output() onView = new EventEmitter(); - @Output() onLaunch = new EventEmitter(); + @Output() launchEvent = new EventEmitter(); @Input() cipher: CipherView; @Input() showView = false; @@ -45,8 +45,8 @@ export class ActionButtonsComponent { this.userHasPremiumAccess = await this.userService.canAccessPremium(); } - launch() { - this.onLaunch.emit(this.cipher); + launchCipher() { + this.launchEvent.emit(this.cipher); } async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) { diff --git a/src/popup/components/ciphers-list.component.html b/src/popup/components/ciphers-list.component.html index 39217fe5c1..6c8c4a407b 100644 --- a/src/popup/components/ciphers-list.component.html +++ b/src/popup/components/ciphers-list.component.html @@ -1,4 +1,4 @@ -
@@ -17,7 +17,7 @@ {{c.subTitle}}
-
diff --git a/src/popup/components/ciphers-list.component.ts b/src/popup/components/ciphers-list.component.ts index 81b477af3d..4c1101826c 100644 --- a/src/popup/components/ciphers-list.component.ts +++ b/src/popup/components/ciphers-list.component.ts @@ -15,7 +15,7 @@ import { CipherView } from 'jslib/models/view/cipherView'; }) export class CiphersListComponent { @Output() onSelected = new EventEmitter(); - @Output() onDoubleSelected = new EventEmitter(); + @Output() launchEvent = new EventEmitter(); @Output() onView = new EventEmitter(); @Input() ciphers: CipherView[]; @Input() showView = false; @@ -27,8 +27,8 @@ export class CiphersListComponent { this.onSelected.emit(c); } - doubleSelectCipher(c: CipherView) { - this.onDoubleSelected.emit(c); + launchCipher(c: CipherView) { + this.launchEvent.emit(c); } viewCipher(c: CipherView) { diff --git a/src/popup/vault/ciphers.component.html b/src/popup/vault/ciphers.component.html index 05f4eeb094..3581afa21d 100644 --- a/src/popup/vault/ciphers.component.html +++ b/src/popup/vault/ciphers.component.html @@ -72,7 +72,7 @@
+ (onSelected)="selectCipher($event)" (launchEvent)="launchCipher($event)">
From 14293a7831760445f5d8f742070f05b8b95c62af Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Wed, 27 Jan 2021 23:05:50 +0100 Subject: [PATCH 66/73] Reload browser extension after enabling nativeMessaging (#1577) --- src/_locales/en/messages.json | 6 ++++++ src/background/nativeMessaging.background.ts | 5 +++++ src/popup/settings/settings.component.ts | 22 ++++++++++++++------ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index a5cc4c20b5..3b2d447c16 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -1438,6 +1438,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "nativeMessagingPermissionPromptTitle": { + "message": "Additional Permission required" + }, + "nativeMessagingPermissionPromptDesc": { + "message": "To enable browser biometrics we need to request an additional permission. Once allowed, the browser extension will reload and you may need to unlock your vault again." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, diff --git a/src/background/nativeMessaging.background.ts b/src/background/nativeMessaging.background.ts index f1bcdf148a..3ac41756e2 100644 --- a/src/background/nativeMessaging.background.ts +++ b/src/background/nativeMessaging.background.ts @@ -35,6 +35,11 @@ export class NativeMessagingBackground { private runtimeBackground: RuntimeBackground, private i18nService: I18nService, private userService: UserService, private messagingService: MessagingService, private appIdService: AppIdService) { this.storageService.save(ConstantsService.biometricFingerprintValidated, false); + + // Reload extension to activate nativeMessaging + chrome.permissions.onAdded.addListener((permissions) => { + BrowserApi.reloadExtension(null); + }); } async connect() { diff --git a/src/popup/settings/settings.component.ts b/src/popup/settings/settings.component.ts index 6d5d473315..cddb5c07f8 100644 --- a/src/popup/settings/settings.component.ts +++ b/src/popup/settings/settings.component.ts @@ -214,16 +214,26 @@ export class SettingsComponent implements OnInit { // Request permission to use the optional permission for nativeMessaging if (!this.platformUtilsService.isFirefox()) { - const granted = await new Promise((resolve, reject) => { - chrome.permissions.request({permissions: ['nativeMessaging']}, resolve); + const hasPermission = await new Promise((resolve) => { + chrome.permissions.contains({permissions: ['nativeMessaging']}, resolve); }); - if (!granted) { + if (!hasPermission) { await this.platformUtilsService.showDialog( - this.i18nService.t('nativeMessaginPermissionErrorDesc'), this.i18nService.t('nativeMessaginPermissionErrorTitle'), + this.i18nService.t('nativeMessagingPermissionPromptDesc'), this.i18nService.t('nativeMessagingPermissionPromptTitle'), this.i18nService.t('ok'), null); - this.biometric = false; - return; + + const granted = await new Promise((resolve, reject) => { + chrome.permissions.request({permissions: ['nativeMessaging']}, resolve); + }); + + if (!granted) { + await this.platformUtilsService.showDialog( + this.i18nService.t('nativeMessaginPermissionErrorDesc'), this.i18nService.t('nativeMessaginPermissionErrorTitle'), + this.i18nService.t('ok'), null); + this.biometric = false; + return; + } } } From ccac6307c68e78c86ce0c31c2142ac5816e8680f Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Thu, 28 Jan 2021 20:24:33 +0100 Subject: [PATCH 67/73] Make biometric button tabable to improve accessibility (#1578) --- src/popup/accounts/lock.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/popup/accounts/lock.component.html b/src/popup/accounts/lock.component.html index 1a40769500..173487f001 100644 --- a/src/popup/accounts/lock.component.html +++ b/src/popup/accounts/lock.component.html @@ -38,7 +38,7 @@

From c9717729250f928c7bb124022497a2ea2cd122a2 Mon Sep 17 00:00:00 2001 From: Thomas Rittson <31796059+eliykat@users.noreply.github.com> Date: Fri, 29 Jan 2021 17:27:19 +1000 Subject: [PATCH 68/73] Add UI text to explain functionality --- src/_locales/en/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 3b2d447c16..018ee7c6c2 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -1460,7 +1460,7 @@ "message": "Excluded Domains" }, "excludedDomainsDesc": { - "message": "Bitwarden will not ask to save login details for these domains." + "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", From 8e20e483733d9be1ff50d495f88a29cdb6647ef7 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Fri, 29 Jan 2021 23:31:36 +0100 Subject: [PATCH 69/73] Resolve safari not working due to missing chrome api (nativeMessaging) (#1585) --- src/background/nativeMessaging.background.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/background/nativeMessaging.background.ts b/src/background/nativeMessaging.background.ts index 3ac41756e2..7c74c38db3 100644 --- a/src/background/nativeMessaging.background.ts +++ b/src/background/nativeMessaging.background.ts @@ -36,10 +36,12 @@ export class NativeMessagingBackground { private messagingService: MessagingService, private appIdService: AppIdService) { this.storageService.save(ConstantsService.biometricFingerprintValidated, false); - // Reload extension to activate nativeMessaging - chrome.permissions.onAdded.addListener((permissions) => { - BrowserApi.reloadExtension(null); - }); + if (BrowserApi.isChromeApi) { + // Reload extension to activate nativeMessaging + chrome.permissions.onAdded.addListener((permissions) => { + BrowserApi.reloadExtension(null); + }); + } } async connect() { From db5a660b2d540611d07595d366dfd54cda12f6f5 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Mon, 1 Feb 2021 09:52:23 +1000 Subject: [PATCH 70/73] Add build:xcode script --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 471e632be7..47827bd1fd 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "build:watch": "gulp build && webpack --watch", "build:prod": "gulp build && cross-env NODE_ENV=production webpack", "build:prod:watch": "gulp build && cross-env NODE_ENV=production webpack --watch", + "build:xcode": "npm run build && rsync -av build/./ src/safari/safari/app --exclude popup/index.html", "clean:l10n": "git push origin --delete l10n_master", "dist": "npm run build:prod && gulp dist", "dist:firefox": "npm run build:prod && gulp dist:firefox", From 07f5be39d80aad99dacf8a71d82c2e6e2b105476 Mon Sep 17 00:00:00 2001 From: Vincent Salucci <26154748+vincentsalucci@users.noreply.github.com> Date: Tue, 2 Feb 2021 11:43:31 -0600 Subject: [PATCH 71/73] [Send] Navigation Tab (#1591) * Initial commit of send tab * update jslib (9ddec9b -> 859f317) * updated skeleton class/html * removed added space * cleaned up import groupings * Updated to use flex container and removed unnecessary scss class --- jslib | 2 +- src/_locales/en/messages.json | 4 ++++ src/popup/app-routing.module.ts | 16 ++++++++++++-- src/popup/app.module.ts | 11 ++++++++-- src/popup/scss/base.scss | 11 ++-------- src/popup/send/send.component.html | 8 +++++++ src/popup/send/send.component.ts | 35 ++++++++++++++++++++++++++++++ src/popup/tabs.component.html | 7 +++++- 8 files changed, 79 insertions(+), 15 deletions(-) create mode 100644 src/popup/send/send.component.html create mode 100644 src/popup/send/send.component.ts diff --git a/jslib b/jslib index 9ddec9baf8..859f317d59 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit 9ddec9baf8b6e7de58c00744eb371dc68e1b6383 +Subproject commit 859f317d59189d223072a406bc2d6924e1fb71bc diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 3b2d447c16..1760e002a6 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -1470,5 +1470,9 @@ "example": "googlecom" } } + }, + "send": { + "message": "Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." } } diff --git a/src/popup/app-routing.module.ts b/src/popup/app-routing.module.ts index 96090c98f3..cf253b8d9f 100644 --- a/src/popup/app-routing.module.ts +++ b/src/popup/app-routing.module.ts @@ -20,9 +20,13 @@ import { SetPasswordComponent } from './accounts/set-password.component'; import { TwoFactorOptionsComponent } from './accounts/two-factor-options.component'; import { TwoFactorComponent } from './accounts/two-factor.component'; import { SsoComponent } from './accounts/sso.component'; -import { PasswordGeneratorHistoryComponent } from './generator/password-generator-history.component'; + import { PasswordGeneratorComponent } from './generator/password-generator.component'; +import { PasswordGeneratorHistoryComponent } from './generator/password-generator-history.component'; + import { PrivateModeComponent } from './private-mode.component'; +import { TabsComponent } from './tabs.component'; + import { ExcludedDomainsComponent } from './settings/excluded-domains.component'; import { ExportComponent } from './settings/export.component'; import { FolderAddEditComponent } from './settings/folder-add-edit.component'; @@ -31,7 +35,7 @@ import { OptionsComponent } from './settings/options.component'; import { PremiumComponent } from './settings/premium.component'; import { SettingsComponent } from './settings/settings.component'; import { SyncComponent } from './settings/sync.component'; -import { TabsComponent } from './tabs.component'; + import { AddEditComponent } from './vault/add-edit.component'; import { AttachmentsComponent } from './vault/attachments.component'; import { CiphersComponent } from './vault/ciphers.component'; @@ -42,6 +46,8 @@ import { PasswordHistoryComponent } from './vault/password-history.component'; import { ShareComponent } from './vault/share.component'; import { ViewComponent } from './vault/view.component'; +import { SendComponent } from './send/send.component'; + const routes: Routes = [ { path: '', @@ -265,6 +271,12 @@ const routes: Routes = [ canActivate: [AuthGuardService], data: { state: 'tabs_settings' }, }, + { + path: 'send', + component: SendComponent, + canActivate: [AuthGuardService], + data: { state: 'tabs_send' }, + }, ], }, ]; diff --git a/src/popup/app.module.ts b/src/popup/app.module.ts index 63e8c92c32..b1a1efc800 100644 --- a/src/popup/app.module.ts +++ b/src/popup/app.module.ts @@ -25,10 +25,14 @@ import { SetPasswordComponent } from './accounts/set-password.component'; import { TwoFactorOptionsComponent } from './accounts/two-factor-options.component'; import { TwoFactorComponent } from './accounts/two-factor.component'; import { SsoComponent } from './accounts/sso.component'; -import { AppComponent } from './app.component'; + import { PasswordGeneratorHistoryComponent } from './generator/password-generator-history.component'; import { PasswordGeneratorComponent } from './generator/password-generator.component'; + +import { AppComponent } from './app.component'; import { PrivateModeComponent } from './private-mode.component'; +import { TabsComponent } from './tabs.component'; + import { ExcludedDomainsComponent } from './settings/excluded-domains.component'; import { ExportComponent } from './settings/export.component'; import { FolderAddEditComponent } from './settings/folder-add-edit.component'; @@ -37,7 +41,7 @@ import { OptionsComponent } from './settings/options.component'; import { PremiumComponent } from './settings/premium.component'; import { SettingsComponent } from './settings/settings.component'; import { SyncComponent } from './settings/sync.component'; -import { TabsComponent } from './tabs.component'; + import { AddEditComponent } from './vault/add-edit.component'; import { AttachmentsComponent } from './vault/attachments.component'; import { CiphersComponent } from './vault/ciphers.component'; @@ -48,6 +52,8 @@ import { PasswordHistoryComponent } from './vault/password-history.component'; import { ShareComponent } from './vault/share.component'; import { ViewComponent } from './vault/view.component'; +import { SendComponent } from './send/send.component'; + import { A11yTitleDirective } from 'jslib/angular/directives/a11y-title.directive'; import { ApiActionDirective } from 'jslib/angular/directives/api-action.directive'; import { AutofocusDirective } from 'jslib/angular/directives/autofocus.directive'; @@ -205,6 +211,7 @@ registerLocaleData(localeZhTw, 'zh-TW'); RegisterComponent, SearchCiphersPipe, SelectCopyDirective, + SendComponent, SettingsComponent, ShareComponent, StopClickDirective, diff --git a/src/popup/scss/base.scss b/src/popup/scss/base.scss index 000e4f23a3..7911b0acd4 100644 --- a/src/popup/scss/base.scss +++ b/src/popup/scss/base.scss @@ -281,14 +281,13 @@ header { } ul { - width: 100%; + display: flex; list-style: none; padding: 0; margin: 0; li { - width: 25%; - float: left; + flex: 1; display: inline-block; padding: 0; margin: 0; @@ -329,12 +328,6 @@ header { } } } - - &.tabs-3 { - ul li { - width: 33.33%; - } - } } app-root { diff --git a/src/popup/send/send.component.html b/src/popup/send/send.component.html new file mode 100644 index 0000000000..7c646071e9 --- /dev/null +++ b/src/popup/send/send.component.html @@ -0,0 +1,8 @@ +

+
+ +
+ +

Coming soon...

+
+
diff --git a/src/popup/send/send.component.ts b/src/popup/send/send.component.ts new file mode 100644 index 0000000000..540e3989d1 --- /dev/null +++ b/src/popup/send/send.component.ts @@ -0,0 +1,35 @@ +import { + Component, + NgZone, +} from '@angular/core'; + +import { SendView } from 'jslib/models/view/sendView'; + +import { SendComponent as BaseSendComponent } from 'jslib/angular/components/send/send.component'; + +import { EnvironmentService } from 'jslib/abstractions/environment.service'; +import { I18nService } from 'jslib/abstractions/i18n.service'; +import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; +import { SendService } from 'jslib/abstractions/send.service'; + +import { BroadcasterService } from 'jslib/angular/services/broadcaster.service'; + +@Component({ + selector: 'app-send', + templateUrl: 'send.component.html', +}) +export class SendComponent extends BaseSendComponent { + constructor(sendService: SendService, i18nService: I18nService, + platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService, + broadcasterService: BroadcasterService, ngZone: NgZone) { + super(sendService, i18nService, platformUtilsService, environmentService, broadcasterService, ngZone); + } + + addSend() { + // TODO + } + + editSend(send: SendView) { + // TODO + } +} diff --git a/src/popup/tabs.component.html b/src/popup/tabs.component.html index 71de2575bf..645bd2359e 100644 --- a/src/popup/tabs.component.html +++ b/src/popup/tabs.component.html @@ -1,6 +1,6 @@
+ (onSelected)="selectCipher($event)" (launchEvent)="launchCipher($event)">
@@ -118,7 +118,7 @@
+ (onSelected)="selectCipher($event)" (launchEvent)="launchCipher($event)">
@@ -146,7 +146,7 @@
+ (launchEvent)="launchCipher($event)">
From 3e79dd245b446f79ed48fea19159036141eb2f34 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Wed, 3 Feb 2021 20:36:05 +0100 Subject: [PATCH 73/73] Safari Web Extension Port from App Extension (#1531) --- gulpfile.js | 12 +- jslib | 2 +- src/background/commands.background.ts | 2 +- src/background/main.background.ts | 43 +- src/background/runtime.background.ts | 32 +- src/browser/browserApi.ts | 126 +--- src/browser/safariApp.ts | 86 +-- src/content/autofill.js | 29 - src/content/autofiller.ts | 54 +- src/content/notificationBar.ts | 76 +- src/content/shortcuts.ts | 7 +- src/content/sso.ts | 9 - src/notification/bar.js | 47 +- src/popup/accounts/two-factor.component.ts | 3 +- src/popup/app-routing.animations.ts | 6 +- src/popup/components/pop-out.component.html | 2 +- src/popup/components/pop-out.component.ts | 3 +- src/popup/scss/environment.scss | 12 + src/popup/services/popup-utils.service.ts | 2 - src/popup/settings/options.component.html | 2 +- src/popup/settings/options.component.ts | 3 - src/popup/vault/current-tab.component.html | 2 +- src/popup/vault/current-tab.component.ts | 3 +- src/popup/vault/groupings.component.html | 2 +- src/popup/vault/groupings.component.ts | 3 +- src/safari/desktop.xcodeproj/project.pbxproj | 309 ++++---- .../contents.xcworkspacedata | 2 +- .../xcshareddata/xcschemes/desktop.xcscheme | 78 ++ src/safari/desktop/AppDelegate.swift | 12 +- .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 36 +- .../AppIcon.appiconset/icon128.png | Bin 0 -> 5763 bytes .../AppIcon.appiconset/icon16.png | Bin 0 -> 3245 bytes .../AppIcon.appiconset/icon32.png | Bin 0 -> 3653 bytes .../desktop/Assets.xcassets/Contents.json | 6 +- src/safari/desktop/Base.lproj/Main.storyboard | 684 ++---------------- src/safari/desktop/Info.plist | 6 +- src/safari/desktop/ViewController.swift | 40 +- .../SafariExtensionViewController.xib | 20 - src/safari/safari/Info.plist | 64 +- .../safari/SafariExtensionHandler.swift | 101 --- .../SafariExtensionViewController.swift | 440 ----------- .../safari/SafariWebExtensionHandler.swift | 109 +++ src/safari/safari/ToolbarItemIcon.pdf | Bin 46066 -> 0 bytes src/safari/safari/app/popup/index.html | 29 - src/services/browserMessaging.service.ts | 10 +- src/services/browserPlatformUtils.service.ts | 20 +- src/services/browserStorage.service.ts | 72 +- src/services/i18n.service.ts | 16 +- 49 files changed, 681 insertions(+), 1952 deletions(-) create mode 100644 src/safari/desktop.xcodeproj/xcshareddata/xcschemes/desktop.xcscheme create mode 100644 src/safari/desktop/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon128.png create mode 100644 src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon16.png create mode 100644 src/safari/desktop/Assets.xcassets/AppIcon.appiconset/icon32.png delete mode 100644 src/safari/safari/Base.lproj/SafariExtensionViewController.xib delete mode 100644 src/safari/safari/SafariExtensionHandler.swift delete mode 100644 src/safari/safari/SafariExtensionViewController.swift create mode 100644 src/safari/safari/SafariWebExtensionHandler.swift delete mode 100644 src/safari/safari/ToolbarItemIcon.pdf delete mode 100644 src/safari/safari/app/popup/index.html diff --git a/gulpfile.js b/gulpfile.js index 5428873f59..98422896d8 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -30,13 +30,6 @@ const filters = { safari: [ '!build/safari/**/*' ], - webExt: [ - '!build/manifest.json' - ], - nonSafariApp: [ - '!build/background.html', - '!build/popup/index.html' - ], }; function buildString() { @@ -187,6 +180,7 @@ function safariCopyAssets(source, dest) { .on('error', reject) .pipe(gulpif('safari/Info.plist', replace('0.0.1', manifest.version))) .pipe(gulpif('safari/Info.plist', replace('0.0.2', process.env.BUILD_NUMBER || manifest.version))) + .pipe(gulpif('desktop.xcodeproj/project.pbxproj', replace('../../../build', '../safari/app'))) .pipe(gulp.dest(dest)) .on('end', resolve); }); @@ -196,8 +190,8 @@ function safariCopyBuild(source, dest) { return new Promise((resolve, reject) => { gulp.src(source) .on('error', reject) - .pipe(filter(['**'].concat(filters.fonts) - .concat(filters.webExt).concat(filters.nonSafariApp))) + .pipe(filter(['**'].concat(filters.fonts))) + .pipe(gulpif('popup/index.html', replace('__BROWSER__', 'browser_safari'))) .pipe(gulp.dest(dest)) .on('end', resolve); }); diff --git a/jslib b/jslib index 859f317d59..11249e3444 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit 859f317d59189d223072a406bc2d6924e1fb71bc +Subproject commit 11249e34441ea747f53fcb0b6e38f690366b46b5 diff --git a/src/background/commands.background.ts b/src/background/commands.background.ts index 625eb4cd67..463862852a 100644 --- a/src/background/commands.background.ts +++ b/src/background/commands.background.ts @@ -20,7 +20,7 @@ export default class CommandsBackground { } async init() { - if (this.isSafari || this.isVivaldi) { + if (this.isVivaldi) { BrowserApi.messageListener('commands.background', async (msg: any, sender: any, sendResponse: any) => { if (msg.command === 'keyboardShortcutTriggered' && msg.shortcut) { await this.processCommand(msg.shortcut, sender); diff --git a/src/background/main.background.ts b/src/background/main.background.ts index a929d52749..82d1f739a6 100644 --- a/src/background/main.background.ts +++ b/src/background/main.background.ts @@ -167,8 +167,8 @@ export default class MainBackground { return promise.then((result) => result.response === 'unlocked'); } }); - this.storageService = new BrowserStorageService(this.platformUtilsService); - this.secureStorageService = new BrowserStorageService(this.platformUtilsService); + this.storageService = new BrowserStorageService(); + this.secureStorageService = new BrowserStorageService(); this.i18nService = new I18nService(BrowserApi.getUILanguage(window)); this.cryptoFunctionService = new WebCryptoFunctionService(window, this.platformUtilsService); this.consoleLogService = new ConsoleLogService(false); @@ -252,21 +252,18 @@ export default class MainBackground { this.commandsBackground = new CommandsBackground(this, this.passwordGenerationService, this.platformUtilsService, this.analytics, this.vaultTimeoutService); - if (!this.isSafari) { - this.tabsBackground = new TabsBackground(this); - this.contextMenusBackground = new ContextMenusBackground(this, this.cipherService, - this.passwordGenerationService, this.analytics, this.platformUtilsService, this.vaultTimeoutService, - this.eventService, this.totpService); - this.idleBackground = new IdleBackground(this.vaultTimeoutService, this.storageService, - this.notificationsService); - this.webRequestBackground = new WebRequestBackground(this.platformUtilsService, this.cipherService, - this.vaultTimeoutService); - this.windowsBackground = new WindowsBackground(this); - } + this.tabsBackground = new TabsBackground(this); + this.contextMenusBackground = new ContextMenusBackground(this, this.cipherService, + this.passwordGenerationService, this.analytics, this.platformUtilsService, this.vaultTimeoutService, + this.eventService, this.totpService); + this.idleBackground = new IdleBackground(this.vaultTimeoutService, this.storageService, + this.notificationsService); + this.webRequestBackground = new WebRequestBackground(this.platformUtilsService, this.cipherService, + this.vaultTimeoutService); + this.windowsBackground = new WindowsBackground(this); } async bootstrap() { - SafariApp.init(); this.analytics.ga('send', 'pageview', '/background.html'); this.containerService.attachToWindow(window); @@ -276,13 +273,11 @@ export default class MainBackground { await this.runtimeBackground.init(); await this.commandsBackground.init(); - if (!this.isSafari) { - await this.tabsBackground.init(); - await this.contextMenusBackground.init(); - await this.idleBackground.init(); - await this.webRequestBackground.init(); - await this.windowsBackground.init(); - } + await this.tabsBackground.init(); + await this.contextMenusBackground.init(); + await this.idleBackground.init(); + await this.webRequestBackground.init(); + await this.windowsBackground.init(); return new Promise((resolve) => { setTimeout(async () => { @@ -297,7 +292,7 @@ export default class MainBackground { } async setIcon() { - if (this.isSafari || (!chrome.browserAction && !this.sidebarAction)) { + if (!chrome.browserAction && !this.sidebarAction) { return; } @@ -316,7 +311,7 @@ export default class MainBackground { } async refreshBadgeAndMenu(forLocked: boolean = false) { - if (this.isSafari || !chrome.windows || !chrome.contextMenus) { + if (!chrome.windows || !chrome.contextMenus) { return; } @@ -447,7 +442,7 @@ export default class MainBackground { } private async buildContextMenu() { - if (this.isSafari || !chrome.contextMenus || this.buildingContextMenu) { + if (!chrome.contextMenus || this.buildingContextMenu) { return; } diff --git a/src/background/runtime.background.ts b/src/background/runtime.background.ts index f08915352b..685ffc1414 100644 --- a/src/background/runtime.background.ts +++ b/src/background/runtime.background.ts @@ -4,7 +4,6 @@ import { CipherView } from 'jslib/models/view/cipherView'; import { LoginUriView } from 'jslib/models/view/loginUriView'; import { LoginView } from 'jslib/models/view/loginView'; -import { AuthService } from 'jslib/abstractions/auth.service'; import { AutofillService } from '../services/abstractions/autofill.service'; import BrowserPlatformUtilsService from '../services/browserPlatformUtils.service'; import { CipherService } from 'jslib/abstractions/cipher.service'; @@ -13,10 +12,7 @@ import { EnvironmentService } from 'jslib/abstractions/environment.service'; import { I18nService } from 'jslib/abstractions/i18n.service'; import { NotificationsService } from 'jslib/abstractions/notifications.service'; import { PolicyService } from 'jslib/abstractions/policy.service'; -import { PopupUtilsService } from '../popup/services/popup-utils.service'; -import { StateService } from 'jslib/abstractions/state.service'; import { StorageService } from 'jslib/abstractions/storage.service'; -import { SyncService } from 'jslib/abstractions/sync.service'; import { SystemService } from 'jslib/abstractions/system.service'; import { UserService } from 'jslib/abstractions/user.service'; import { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service'; @@ -24,7 +20,6 @@ import { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service'; import { BrowserApi } from '../browser/browserApi'; import MainBackground from './main.background'; -import { NativeMessagingBackground } from './nativeMessaging.background'; import { Analytics } from 'jslib/misc'; import { Utils } from 'jslib/misc/utils'; @@ -36,7 +31,6 @@ export default class RuntimeBackground { private runtime: any; private autofillTimeout: any; private pageDetailsToAutoFill: any[] = []; - private isSafari: boolean; private onInstalledReason: string = null; constructor(private main: MainBackground, private autofillService: AutofillService, @@ -46,19 +40,15 @@ export default class RuntimeBackground { private systemService: SystemService, private vaultTimeoutService: VaultTimeoutService, private environmentService: EnvironmentService, private policyService: PolicyService, private userService: UserService) { - this.isSafari = this.platformUtilsService.isSafari(); - this.runtime = this.isSafari ? {} : chrome.runtime; // onInstalled listener must be wired up before anything else, so we do it in the ctor - if (!this.isSafari) { - this.runtime.onInstalled.addListener((details: any) => { - this.onInstalledReason = details.reason; - }); - } + chrome.runtime.onInstalled.addListener((details: any) => { + this.onInstalledReason = details.reason; + }); } async init() { - if (!this.runtime) { + if (!chrome.runtime) { return; } @@ -399,20 +389,6 @@ export default class RuntimeBackground { } private async checkOnInstalled() { - if (this.isSafari) { - const installedVersion = await this.storageService.get(ConstantsService.installedVersionKey); - if (installedVersion == null) { - this.onInstalledReason = 'install'; - } else if (BrowserApi.getApplicationVersion() !== installedVersion) { - this.onInstalledReason = 'update'; - } - - if (this.onInstalledReason != null) { - await this.storageService.save(ConstantsService.installedVersionKey, - BrowserApi.getApplicationVersion()); - } - } - setTimeout(async () => { if (this.onInstalledReason != null) { if (this.onInstalledReason === 'install') { diff --git a/src/browser/browserApi.ts b/src/browser/browserApi.ts index 1ee54a45b1..c5e5b2f118 100644 --- a/src/browser/browserApi.ts +++ b/src/browser/browserApi.ts @@ -4,20 +4,18 @@ import { Utils } from 'jslib/misc/utils'; export class BrowserApi { static isWebExtensionsApi: boolean = (typeof browser !== 'undefined'); - static isSafariApi: boolean = (window as any).safariAppExtension === true; + static isSafariApi: boolean = navigator.userAgent.indexOf(' Safari/') !== -1 && + navigator.userAgent.indexOf(' Chrome/') === -1 && + navigator.userAgent.indexOf(' Chromium/') === -1; static isChromeApi: boolean = !BrowserApi.isSafariApi && (typeof chrome !== 'undefined'); static isFirefoxOnAndroid: boolean = navigator.userAgent.indexOf('Firefox/') !== -1 && navigator.userAgent.indexOf('Android') !== -1; static async getTabFromCurrentWindowId(): Promise { - if (BrowserApi.isChromeApi) { - return await BrowserApi.tabsQueryFirst({ - active: true, - windowId: chrome.windows.WINDOW_ID_CURRENT, - }); - } else if (BrowserApi.isSafariApi) { - return await BrowserApi.getTabFromCurrentWindow(); - } + return await BrowserApi.tabsQueryFirst({ + active: true, + windowId: chrome.windows.WINDOW_ID_CURRENT, + }); } static async getTabFromCurrentWindow(): Promise { @@ -34,16 +32,11 @@ export class BrowserApi { } static async tabsQuery(options: any): Promise { - if (BrowserApi.isChromeApi) { - return new Promise((resolve) => { - chrome.tabs.query(options, (tabs: any[]) => { - resolve(tabs); - }); + return new Promise((resolve) => { + chrome.tabs.query(options, (tabs: any[]) => { + resolve(tabs); }); - } else if (BrowserApi.isSafariApi) { - const tabs = await SafariApp.sendMessageToApp('tabs_query', JSON.stringify(options)); - return tabs != null ? JSON.parse(tabs) : null; - } + }); } static async tabsQueryFirst(options: any): Promise { @@ -72,81 +65,36 @@ export class BrowserApi { return; } - if (BrowserApi.isChromeApi) { - return new Promise((resolve) => { - chrome.tabs.sendMessage(tab.id, obj, options, () => { - if (chrome.runtime.lastError) { - // Some error happened - } - resolve(); - }); + return new Promise((resolve) => { + chrome.tabs.sendMessage(tab.id, obj, options, () => { + if (chrome.runtime.lastError) { + // Some error happened + } + resolve(); }); - } else if (BrowserApi.isSafariApi) { - if (options != null && options.frameId != null && obj.bitwardenFrameId == null) { - obj.bitwardenFrameId = options.frameId; - } - await SafariApp.sendMessageToApp('tabs_message', JSON.stringify({ - tab: tab, - obj: JSON.stringify(obj), - options: options, - }), true); - } + }); } static getBackgroundPage(): any { - if (BrowserApi.isChromeApi) { - return chrome.extension.getBackgroundPage(); - } else if (BrowserApi.isSafariApi) { - return window; - } else { - return null; - } + return chrome.extension.getBackgroundPage(); } static getApplicationVersion(): string { - if (BrowserApi.isChromeApi) { - return chrome.runtime.getManifest().version; - } else if (BrowserApi.isSafariApi) { - return (window as any).bitwardenApplicationVersion; - } else { - return null; - } + return chrome.runtime.getManifest().version; } static async isPopupOpen(): Promise { - if (BrowserApi.isChromeApi) { - return Promise.resolve(chrome.extension.getViews({ type: 'popup' }).length > 0); - } else if (BrowserApi.isSafariApi) { - const open = await SafariApp.sendMessageToApp('isPopoverOpen'); - return open === 'true'; - } else { - return Promise.resolve(false); - } + return Promise.resolve(chrome.extension.getViews({ type: 'popup' }).length > 0); } static createNewTab(url: string, extensionPage: boolean = false) { - if (BrowserApi.isChromeApi) { - chrome.tabs.create({ url: url }); - } else if (BrowserApi.isSafariApi) { - SafariApp.sendMessageToApp('createNewTab', url, true); - } + chrome.tabs.create({ url: url }); } static messageListener(name: string, callback: (message: any, sender: any, response: any) => void) { - if (BrowserApi.isChromeApi) { - chrome.runtime.onMessage.addListener((msg: any, sender: any, response: any) => { - callback(msg, sender, response); - }); - } else if (BrowserApi.isSafariApi) { - SafariApp.addMessageListener(name, (message: any, sender: any, response: any) => { - if (message.bitwardenFrameId != null) { - if (sender != null && typeof (sender) === 'object' && sender.frameId == null) { - sender.frameId = message.bitwardenFrameId; - } - } - callback(message, sender, response); - }); - } + chrome.runtime.onMessage.addListener((msg: any, sender: any, response: any) => { + callback(msg, sender, response); + }); } static closePopup(win: Window) { @@ -155,10 +103,8 @@ export class BrowserApi { // condition is only called if the popup wasn't already dismissed (future proofing). // ref: https://bugzilla.mozilla.org/show_bug.cgi?id=1433604 browser.tabs.update({ active: true }).finally(win.close); - } else if (BrowserApi.isWebExtensionsApi || BrowserApi.isChromeApi) { + } else { win.close(); - } else if (BrowserApi.isSafariApi) { - SafariApp.sendMessageToApp('hidePopover'); } } @@ -196,30 +142,22 @@ export class BrowserApi { } static getUILanguage(win: Window) { - if (BrowserApi.isSafariApi) { - return win.navigator.language; - } else { - return chrome.i18n.getUILanguage(); - } + return chrome.i18n.getUILanguage(); } static reloadExtension(win: Window) { if (win != null) { return win.location.reload(true); - } else if (BrowserApi.isSafariApi) { - SafariApp.sendMessageToApp('reloadExtension'); - } else if (!BrowserApi.isSafariApi) { + } else { return chrome.runtime.reload(); } } static reloadOpenWindows() { - if (!BrowserApi.isSafariApi) { - const views = chrome.extension.getViews() as Window[]; - views.filter((w) => w.location.href != null).forEach((w) => { - w.location.reload(); - }); - } + const views = chrome.extension.getViews() as Window[]; + views.filter((w) => w.location.href != null).forEach((w) => { + w.location.reload(); + }); } static connectNative(application: string): browser.runtime.Port | chrome.runtime.Port { diff --git a/src/browser/safariApp.ts b/src/browser/safariApp.ts index 894ae2c6d4..b53d3754b7 100644 --- a/src/browser/safariApp.ts +++ b/src/browser/safariApp.ts @@ -1,23 +1,6 @@ import { BrowserApi } from './browserApi'; export class SafariApp { - static init() { - if ((window as any).bitwardenSafariAppInited) { - return; - } - (window as any).bitwardenSafariAppInited = true; - if (BrowserApi.isSafariApi) { - (window as any).bitwardenSafariAppRequests = - new Map void, timeoutDate: Date }>(); - (window as any).bitwardenSafariAppMessageListeners = - new Map void>(); - (window as any).bitwardenSafariAppMessageReceiver = (message: any) => { - SafariApp.receiveMessageFromApp(message); - }; - setInterval(() => SafariApp.cleanupOldRequests(), 5 * 60000); // every 5 mins - } - } - static sendMessageToApp(command: string, data: any = null, resolveNow = false): Promise { if (!BrowserApi.isSafariApi) { return Promise.resolve(null); @@ -25,69 +8,14 @@ export class SafariApp { return new Promise((resolve) => { const now = new Date(); const messageId = now.getTime().toString() + '_' + Math.floor(Math.random() * Number.MAX_SAFE_INTEGER); - if (typeof safari === typeof undefined) { - (window as any).webkit.messageHandlers.bitwardenApp.postMessage(JSON.stringify({ - id: messageId, - command: command, - data: data, - responseData: null, - })); - } else { - safari.extension.dispatchMessage('bitwarden', { - command: command, - data: data, - responseData: null, - }); - } - if (resolveNow) { - resolve(); - } else { - (window as any).bitwardenSafariAppRequests.set(messageId, { - resolve: resolve, - timeoutDate: new Date(now.getTime() + 5 * 60000), - }); - } - }); - } - - static addMessageListener(name: string, callback: (message: any, sender: any, response: any) => void) { - (window as any).bitwardenSafariAppMessageListeners.set(name, callback); - } - - static sendMessageToListeners(message: any, sender: any, response: any) { - (window as any).bitwardenSafariAppMessageListeners.forEach((f: any) => f(message, sender, response)); - } - - private static receiveMessageFromApp(message: any) { - if (message == null) { - return; - } - if ((message.id == null || message.id === '') && message.command === 'app_message') { - try { - const msg = JSON.parse(message.data); - SafariApp.sendMessageToListeners(msg, { - id: 'app_message', - tab: message.senderTab, - }, null); - } catch { } - } else if (message.id != null && (window as any).bitwardenSafariAppRequests.has(message.id)) { - const p = (window as any).bitwardenSafariAppRequests.get(message.id); - p.resolve(message.responseData); - (window as any).bitwardenSafariAppRequests.delete(message.id); - } - } - - private static cleanupOldRequests() { - const removeIds: string[] = []; - ((window as any).bitwardenSafariAppRequests as - Map void, timeoutDate: Date }>) - .forEach((v, key) => { - if (v.timeoutDate < new Date()) { - removeIds.push(key); - } + (browser as any).runtime.sendNativeMessage('com.bitwarden.desktop', { + id: messageId, + command: command, + data: data, + responseData: null, + }, (response: any) => { + resolve(response); }); - removeIds.forEach((id) => { - (window as any).bitwardenSafariAppRequests.delete(id); }); } } diff --git a/src/content/autofill.js b/src/content/autofill.js index ca6c75ae08..956708fe3e 100644 --- a/src/content/autofill.js +++ b/src/content/autofill.js @@ -989,35 +989,6 @@ End 1Password Extension */ - if ((typeof safari !== 'undefined') && navigator.userAgent.indexOf(' Safari/') !== -1 && - navigator.userAgent.indexOf('Chrome') === -1) { - if (window.__bitwardenFrameId == null) { - window.__bitwardenFrameId = Math.floor(Math.random() * Math.floor(99999999)); - } - safari.self.addEventListener('message', function (msgEvent) { - var msg = JSON.parse(msgEvent.message.msg); - if (msg.bitwardenFrameId != null && window.__bitwardenFrameId !== msg.bitwardenFrameId) { - return; - } - - if (msg.command === 'collectPageDetails') { - var pageDetails = collect(document); - var pageDetailsObj = JSON.parse(pageDetails); - safari.extension.dispatchMessage('bitwarden', { - command: 'collectPageDetailsResponse', - tab: msg.tab, - details: pageDetailsObj, - sender: msg.sender, - bitwardenFrameId: window.__bitwardenFrameId - }); - } - else if (msg.command === 'fillForm') { - fill(document, msg.fillScript); - } - }, false); - return; - } - chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) { if (msg.command === 'collectPageDetails') { var pageDetails = collect(document); diff --git a/src/content/autofiller.ts b/src/content/autofiller.ts index 253c82603c..1d756b8451 100644 --- a/src/content/autofiller.ts +++ b/src/content/autofiller.ts @@ -3,44 +3,17 @@ document.addEventListener('DOMContentLoaded', (event) => { let filledThisHref = false; let delayFillTimeout: number; - const isSafari = (typeof safari !== 'undefined') && navigator.userAgent.indexOf(' Safari/') !== -1 && - navigator.userAgent.indexOf('Chrome') === -1; - - if (isSafari) { - if ((window as any).__bitwardenFrameId == null) { - (window as any).__bitwardenFrameId = Math.floor(Math.random() * Math.floor(99999999)); + const enabledKey = 'enableAutoFillOnPageLoad'; + chrome.storage.local.get(enabledKey, (obj: any) => { + if (obj != null && obj[enabledKey] === true) { + setInterval(() => doFillIfNeeded(), 500); } - const responseCommand = 'autofillerAutofillOnPageLoadEnabledResponse'; - safari.extension.dispatchMessage('bitwarden', { - command: 'bgGetDataForTab', - responseCommand: responseCommand, - bitwardenFrameId: (window as any).__bitwardenFrameId, - }); - safari.self.addEventListener('message', (msgEvent: any) => { - const msg = JSON.parse(msgEvent.message.msg); - if (msg.bitwardenFrameId != null && (window as any).__bitwardenFrameId !== msg.bitwardenFrameId) { - return; - } - if (msg.command === responseCommand && msg.data.autofillEnabled === true) { - setInterval(() => doFillIfNeeded(), 500); - } else if (msg.command === 'fillForm' && pageHref === msg.url) { - filledThisHref = true; - } - }, false); - return; - } else { - const enabledKey = 'enableAutoFillOnPageLoad'; - chrome.storage.local.get(enabledKey, (obj: any) => { - if (obj != null && obj[enabledKey] === true) { - setInterval(() => doFillIfNeeded(), 500); - } - }); - chrome.runtime.onMessage.addListener((msg: any, sender: any, sendResponse: Function) => { - if (msg.command === 'fillForm' && pageHref === msg.url) { - filledThisHref = true; - } - }); - } + }); + chrome.runtime.onMessage.addListener((msg: any, sender: any, sendResponse: Function) => { + if (msg.command === 'fillForm' && pageHref === msg.url) { + filledThisHref = true; + } + }); function doFillIfNeeded(force: boolean = false) { if (force || pageHref !== window.location.href) { @@ -64,12 +37,7 @@ document.addEventListener('DOMContentLoaded', (event) => { sender: 'autofiller', }; - if (isSafari) { - msg.bitwardenFrameId = (window as any).__bitwardenFrameId; - safari.extension.dispatchMessage('bitwarden', msg); - } else { - chrome.runtime.sendMessage(msg); - } + chrome.runtime.sendMessage(msg); } } }); diff --git a/src/content/notificationBar.ts b/src/content/notificationBar.ts index 4974f53ad8..70fbd5e413 100644 --- a/src/content/notificationBar.ts +++ b/src/content/notificationBar.ts @@ -17,71 +17,30 @@ document.addEventListener('DOMContentLoaded', (event) => { const logInButtonNames = new Set(['log in', 'sign in', 'login', 'go', 'submit', 'continue', 'next']); const changePasswordButtonNames = new Set(['save password', 'update password', 'change password', 'change']); const changePasswordButtonContainsNames = new Set(['pass', 'change', 'contras', 'senha']); - let notificationBarData = null; - const isSafari = (typeof safari !== 'undefined') && navigator.userAgent.indexOf(' Safari/') !== -1 && - navigator.userAgent.indexOf('Chrome') === -1; let disabledAddLoginNotification = false; let disabledChangedPasswordNotification = false; - if (isSafari) { - if ((window as any).__bitwardenFrameId == null) { - (window as any).__bitwardenFrameId = Math.floor(Math.random() * Math.floor(99999999)); - } - if (inIframe) { + chrome.storage.local.get('neverDomains', (ndObj: any) => { + const domains = ndObj.neverDomains; + if (domains != null && domains.hasOwnProperty(window.location.hostname)) { return; } - const responseCommand = 'notificationBarDataResponse'; - safari.extension.dispatchMessage('bitwarden', { - command: 'bgGetDataForTab', - responseCommand: responseCommand, - bitwardenFrameId: (window as any).__bitwardenFrameId, - }); - safari.self.addEventListener('message', (msgEvent: any) => { - const msg = JSON.parse(msgEvent.message.msg); - if (msg.bitwardenFrameId != null && (window as any).__bitwardenFrameId !== msg.bitwardenFrameId) { - return; - } - if (msg.command === responseCommand && msg.data) { - notificationBarData = msg.data; - if (notificationBarData.neverDomains && - notificationBarData.neverDomains.hasOwnProperty(window.location.hostname)) { - return; - } - - disabledAddLoginNotification = notificationBarData.disabledAddLoginNotification === true; - disabledChangedPasswordNotification = notificationBarData.disabledChangedPasswordNotification === true; + chrome.storage.local.get('disableAddLoginNotification', (disAddObj: any) => { + disabledAddLoginNotification = disAddObj != null && disAddObj.disableAddLoginNotification === true; + chrome.storage.local.get('disableChangedPasswordNotification', (disChangedObj: any) => { + disabledChangedPasswordNotification = disChangedObj != null && + disChangedObj.disableChangedPasswordNotification === true; if (!disabledAddLoginNotification || !disabledChangedPasswordNotification) { collectIfNeededWithTimeout(); } - } - - processMessages(msg, () => { /* do nothing on send response for Safari */ }); - }, false); - return; - } else { - chrome.storage.local.get('neverDomains', (ndObj: any) => { - const domains = ndObj.neverDomains; - if (domains != null && domains.hasOwnProperty(window.location.hostname)) { - return; - } - - chrome.storage.local.get('disableAddLoginNotification', (disAddObj: any) => { - disabledAddLoginNotification = disAddObj != null && disAddObj.disableAddLoginNotification === true; - chrome.storage.local.get('disableChangedPasswordNotification', (disChangedObj: any) => { - disabledChangedPasswordNotification = disChangedObj != null && - disChangedObj.disableChangedPasswordNotification === true; - if (!disabledAddLoginNotification || !disabledChangedPasswordNotification) { - collectIfNeededWithTimeout(); - } - }); }); }); + }); - chrome.runtime.onMessage.addListener((msg: any, sender: any, sendResponse: Function) => { - processMessages(msg, sendResponse); - }); - } + chrome.runtime.onMessage.addListener((msg: any, sender: any, sendResponse: Function) => { + processMessages(msg, sendResponse); + }); function processMessages(msg: any, sendResponse: Function) { if (msg.command === 'openNotificationBar') { @@ -470,7 +429,7 @@ document.addEventListener('DOMContentLoaded', (event) => { } function closeExistingAndOpenBar(type: string, typeData: any) { - let barPage = (isSafari ? 'app/' : '') + 'notification/bar.html'; + let barPage = 'notification/bar.html'; switch (type) { case 'info': barPage = barPage + '?info=' + typeData.text; @@ -510,7 +469,7 @@ document.addEventListener('DOMContentLoaded', (event) => { return; } - const barPageUrl: string = isSafari ? (safari.extension.baseURI + barPage) : chrome.extension.getURL(barPage); + const barPageUrl: string = chrome.extension.getURL(barPage); const iframe = document.createElement('iframe'); iframe.style.cssText = 'height: 42px; width: 100%; border: 0; min-height: initial;'; @@ -580,11 +539,6 @@ document.addEventListener('DOMContentLoaded', (event) => { } function sendPlatformMessage(msg: any) { - if (isSafari) { - msg.bitwardenFrameId = (window as any).__bitwardenFrameId; - safari.extension.dispatchMessage('bitwarden', msg); - } else { - chrome.runtime.sendMessage(msg); - } + chrome.runtime.sendMessage(msg); } }); diff --git a/src/content/shortcuts.ts b/src/content/shortcuts.ts index f2d8de67dc..fe9699ac52 100644 --- a/src/content/shortcuts.ts +++ b/src/content/shortcuts.ts @@ -45,11 +45,6 @@ document.addEventListener('DOMContentLoaded', (event) => { shortcut: shortcut, }; - if (isSafari) { - msg.bitwardenFrameId = (window as any).__bitwardenFrameId; - safari.extension.dispatchMessage('bitwarden', msg); - } else { - chrome.runtime.sendMessage(msg); - } + chrome.runtime.sendMessage(msg); } }); diff --git a/src/content/sso.ts b/src/content/sso.ts index a127a39d55..508bc2aea3 100644 --- a/src/content/sso.ts +++ b/src/content/sso.ts @@ -3,15 +3,6 @@ window.addEventListener('message', (event) => { return; if (event.data.command && (event.data.command === 'authResult')) { - if (typeof chrome === typeof undefined) { - safari.extension.dispatchMessage('bitwarden', { - command: event.data.command, - code: event.data.code, - state: event.data.state, - referrer: event.source.location.hostname, - }); - return; - } chrome.runtime.sendMessage({ command: event.data.command, code: event.data.code, diff --git a/src/notification/bar.js b/src/notification/bar.js index c882bd2931..a5e55ca664 100644 --- a/src/notification/bar.js +++ b/src/notification/bar.js @@ -3,34 +3,21 @@ require('./bar.scss'); document.addEventListener('DOMContentLoaded', () => { var i18n = {}; var lang = window.navigator.language; - if (typeof safari !== 'undefined') { - const responseCommand = 'notificationBarFrameDataResponse'; - sendPlatformMessage({ - command: 'bgGetDataForTab', - responseCommand: responseCommand - }); - safari.self.addEventListener('message', (msgEvent) => { - const msg = JSON.parse(msgEvent.message.msg); - if (msg.command === responseCommand && msg.data) { - i18n = msg.data.i18n; - load(); - } - }, false); - } else { - i18n.appName = chrome.i18n.getMessage('appName'); - i18n.close = chrome.i18n.getMessage('close'); - i18n.yes = chrome.i18n.getMessage('yes'); - i18n.never = chrome.i18n.getMessage('never'); - i18n.notificationAddSave = chrome.i18n.getMessage('notificationAddSave'); - i18n.notificationNeverSave = chrome.i18n.getMessage('notificationNeverSave'); - i18n.notificationAddDesc = chrome.i18n.getMessage('notificationAddDesc'); - i18n.notificationChangeSave = chrome.i18n.getMessage('notificationChangeSave'); - i18n.notificationChangeDesc = chrome.i18n.getMessage('notificationChangeDesc'); - lang = chrome.i18n.getUILanguage(); + + i18n.appName = chrome.i18n.getMessage('appName'); + i18n.close = chrome.i18n.getMessage('close'); + i18n.yes = chrome.i18n.getMessage('yes'); + i18n.never = chrome.i18n.getMessage('never'); + i18n.notificationAddSave = chrome.i18n.getMessage('notificationAddSave'); + i18n.notificationNeverSave = chrome.i18n.getMessage('notificationNeverSave'); + i18n.notificationAddDesc = chrome.i18n.getMessage('notificationAddDesc'); + i18n.notificationChangeSave = chrome.i18n.getMessage('notificationChangeSave'); + i18n.notificationChangeDesc = chrome.i18n.getMessage('notificationChangeDesc'); + lang = chrome.i18n.getUILanguage(); - // delay 50ms so that we get proper body dimensions - setTimeout(load, 50); - } + // delay 50ms so that we get proper body dimensions + setTimeout(load, 50); + function load() { var closeButton = document.getElementById('close-button'), @@ -131,10 +118,6 @@ document.addEventListener('DOMContentLoaded', () => { } function sendPlatformMessage(msg) { - if (typeof safari !== 'undefined') { - safari.extension.dispatchMessage('bitwarden', msg); - } else { - chrome.runtime.sendMessage(msg); - } + chrome.runtime.sendMessage(msg); } }); diff --git a/src/popup/accounts/two-factor.component.ts b/src/popup/accounts/two-factor.component.ts index a84ed5070a..57aef6e4d9 100644 --- a/src/popup/accounts/two-factor.component.ts +++ b/src/popup/accounts/two-factor.component.ts @@ -58,13 +58,12 @@ export class TwoFactorComponent extends BaseTwoFactorComponent { // ref: https://bugzilla.mozilla.org/show_bug.cgi?id=1562620 this.initU2f = false; } - const isSafari = this.platformUtilsService.isSafari(); await super.ngOnInit(); if (this.selectedProviderType == null) { return; } - if (!isSafari && this.selectedProviderType === TwoFactorProviderType.Email && + if (this.selectedProviderType === TwoFactorProviderType.Email && this.popupUtilsService.inPopup(window)) { const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('popup2faCloseMessage'), null, this.i18nService.t('yes'), this.i18nService.t('no')); diff --git a/src/popup/app-routing.animations.ts b/src/popup/app-routing.animations.ts index b75b15e2a7..0c44460d62 100644 --- a/src/popup/app-routing.animations.ts +++ b/src/popup/app-routing.animations.ts @@ -185,8 +185,6 @@ export const routerTransition = trigger('routerTransition', [ transition('tabs => premium', inSlideLeft), transition('premium => tabs', outSlideRight), -]); -if (!BrowserApi.isSafariApi) { - routerTransition.definitions.push(transition('tabs => lock', inSlideDown)); -} + transition('tabs => lock', inSlideDown), +]); diff --git a/src/popup/components/pop-out.component.html b/src/popup/components/pop-out.component.html index 2f14e7c0cb..1c34a1c762 100644 --- a/src/popup/components/pop-out.component.html +++ b/src/popup/components/pop-out.component.html @@ -1,4 +1,4 @@ - + diff --git a/src/popup/components/pop-out.component.ts b/src/popup/components/pop-out.component.ts index 40e02c6906..df9ceba57f 100644 --- a/src/popup/components/pop-out.component.ts +++ b/src/popup/components/pop-out.component.ts @@ -22,8 +22,7 @@ export class PopOutComponent implements OnInit { ngOnInit() { if (this.show) { - this.show = !this.platformUtilsService.isSafari(); - if (this.show && this.popupUtilsService.inSidebar(window) && this.platformUtilsService.isFirefox()) { + if (this.popupUtilsService.inSidebar(window) && this.platformUtilsService.isFirefox()) { this.show = false; } } diff --git a/src/popup/scss/environment.scss b/src/popup/scss/environment.scss index eddd550e07..c3b5378ee2 100644 --- a/src/popup/scss/environment.scss +++ b/src/popup/scss/environment.scss @@ -1,6 +1,18 @@ @import "variables.scss"; html.browser_safari { + body { + height: 360px !important; + + &.body-xs { + height: 300px !important; + } + + &.body-full { + height: 100% !important; + } + } + header { .search .fa { left: 20px; diff --git a/src/popup/services/popup-utils.service.ts b/src/popup/services/popup-utils.service.ts index 8f694c87b4..297c6c1470 100644 --- a/src/popup/services/popup-utils.service.ts +++ b/src/popup/services/popup-utils.service.ts @@ -68,8 +68,6 @@ export class PopupUtilsService { chrome.tabs.create({ url: href, }); - } else if ((typeof safari !== 'undefined')) { - // Safari can't open popup in full page tab :( } } } diff --git a/src/popup/settings/options.component.html b/src/popup/settings/options.component.html index 6104b85d84..938bcd756e 100644 --- a/src/popup/settings/options.component.html +++ b/src/popup/settings/options.component.html @@ -96,7 +96,7 @@
-
+
diff --git a/src/popup/settings/options.component.ts b/src/popup/settings/options.component.ts index 4050060617..e5cf6322bb 100644 --- a/src/popup/settings/options.component.ts +++ b/src/popup/settings/options.component.ts @@ -29,7 +29,6 @@ export class OptionsComponent implements OnInit { disableChangedPasswordNotification = false; dontShowCards = false; dontShowIdentities = false; - showDisableContextMenu = true; showClearClipboard = true; theme: string; themeOptions: any[]; @@ -68,8 +67,6 @@ export class OptionsComponent implements OnInit { } async ngOnInit() { - this.showDisableContextMenu = !this.platformUtilsService.isSafari(); - this.enableAutoFillOnPageLoad = await this.storageService.get( ConstantsService.enableAutoFillOnPageLoadKey); diff --git a/src/popup/vault/current-tab.component.html b/src/popup/vault/current-tab.component.html index 4fe67ae9b2..0d4181f5cb 100644 --- a/src/popup/vault/current-tab.component.html +++ b/src/popup/vault/current-tab.component.html @@ -1,5 +1,5 @@
-
+
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/safari/desktop/Info.plist b/src/safari/desktop/Info.plist index 3c9b847a73..201669d037 100644 --- a/src/safari/desktop/Info.plist +++ b/src/safari/desktop/Info.plist @@ -11,13 +11,13 @@ CFBundleIconFile CFBundleIdentifier - com.bitwarden.desktop + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName - Bitwarden + $(PRODUCT_NAME) CFBundlePackageType - APPL + $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString 1.0 CFBundleVersion diff --git a/src/safari/desktop/ViewController.swift b/src/safari/desktop/ViewController.swift index 5af73ffee0..fbda5decf8 100644 --- a/src/safari/desktop/ViewController.swift +++ b/src/safari/desktop/ViewController.swift @@ -1,14 +1,44 @@ import Cocoa +import SafariServices.SFSafariApplication +import SafariServices.SFSafariExtensionManager + +let appName = "desktop" +let extensionBundleIdentifier = "com.bitwarden.desktop.Extension" class ViewController: NSViewController { + + @IBOutlet var appNameLabel: NSTextField! + override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view. - } + self.appNameLabel.stringValue = appName + SFSafariExtensionManager.getStateOfSafariExtension(withIdentifier: extensionBundleIdentifier) { (state, error) in + guard let state = state, error == nil else { + // Insert code to inform the user that something went wrong. + return + } - override var representedObject: Any? { - didSet { - // Update the view, if already loaded. + DispatchQueue.main.async { + if (state.isEnabled) { + self.appNameLabel.stringValue = "\(appName)'s extension is currently on." + } else { + self.appNameLabel.stringValue = "\(appName)'s extension is currently off. You can turn it on in Safari Extensions preferences." + } + } } } + + @IBAction func openSafariExtensionPreferences(_ sender: AnyObject?) { + SFSafariApplication.showPreferencesForExtension(withIdentifier: extensionBundleIdentifier) { error in + guard error == nil else { + // Insert code to inform the user that something went wrong. + return + } + + DispatchQueue.main.async { + NSApplication.shared.terminate(nil) + } + } + } + } diff --git a/src/safari/safari/Base.lproj/SafariExtensionViewController.xib b/src/safari/safari/Base.lproj/SafariExtensionViewController.xib deleted file mode 100644 index 3716df7567..0000000000 --- a/src/safari/safari/Base.lproj/SafariExtensionViewController.xib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/src/safari/safari/Info.plist b/src/safari/safari/Info.plist index 82f785e9c6..8f23fb23e0 100644 --- a/src/safari/safari/Info.plist +++ b/src/safari/safari/Info.plist @@ -9,13 +9,13 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.bitwarden.desktop.safari + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName - Bitwarden + $(PRODUCT_NAME) CFBundlePackageType - XPC! + $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString 0.0.1 CFBundleVersion @@ -25,63 +25,17 @@ NSExtension NSExtensionPointIdentifier - com.apple.Safari.extension + com.apple.Safari.web-extension NSExtensionPrincipalClass - $(PRODUCT_MODULE_NAME).SafariExtensionHandler - SFSafariStyleSheet - - - Style Sheet - app/content/autofill.css - - - SFSafariContentScript - - - Script - app/content/autofill.js - - - Script - app/content/autofiller.js - - - Script - app/content/notificationBar.js - - - Script - app/content/shortcuts.js - - - Script - app/content/sso.js - - - SFSafariToolbarItem - - Action - Popover - Identifier - Button - Image - ToolbarItemIcon.pdf - Label - Bitwarden - - SFSafariWebsiteAccess - - Level - All - - SFSafariExtensionBundleIdentifiersToUninstall - - com.bitwarden.safari - + $(PRODUCT_MODULE_NAME).SafariWebExtensionHandler NSHumanReadableCopyright Copyright © 2020 Bitwarden Inc. All rights reserved. NSHumanReadableDescription A secure and free password manager for all of your devices. + SFSafariAppExtensionBundleIdentifiersToReplace + + com.bitwarden.desktop.safari + diff --git a/src/safari/safari/SafariExtensionHandler.swift b/src/safari/safari/SafariExtensionHandler.swift deleted file mode 100644 index 3d8711f401..0000000000 --- a/src/safari/safari/SafariExtensionHandler.swift +++ /dev/null @@ -1,101 +0,0 @@ -import SafariServices - -class SafariExtensionHandler: SFSafariExtensionHandler { - override init() { - super.init() - SafariExtensionViewController.shared.initWebView() - } - - override func messageReceived(withName messageName: String, from page: SFSafariPage, userInfo: [String: Any]?) { - // This method will be called when a content script provided by your extension - // calls safari.extension.dispatchMessage("message"). - if messageName == "bitwarden" { - page.getPropertiesWithCompletionHandler { properties in - DispatchQueue.main.async { - makeSenderTabObject(page: page, props: properties, complete: { senderTab in - DispatchQueue.main.async { - self.sendMessage(msg: userInfo, sender: senderTab) - } - }) - } - } - } - } - - override func toolbarItemClicked(in _: SFSafariWindow) { - // This method will be called when your toolbar item is clicked. - } - - override func validateToolbarItem(in _: SFSafariWindow, validationHandler: @escaping ((Bool, String) -> Void)) { - // This is called when Safari's state changed in some way that would require the extension's - // toolbar item to be validated again. - validationHandler(true, "") - } - - override func popoverViewController() -> SFSafariExtensionViewController { - return SafariExtensionViewController.shared - } - - override func popoverWillShow(in _: SFSafariWindow) { - SafariExtensionViewController.shared.popoverOpenCount += 1 - DispatchQueue.main.async { - self.sendMessage(msg: ["command": "reloadPopup"], sender: nil) - } - } - - override func popoverDidClose(in _: SFSafariWindow) { - SafariExtensionViewController.shared.popoverOpenCount -= 1 - } - - func sendMessage(msg: [String: Any]?, sender: Tab? = nil) { - if SafariExtensionViewController.shared.webView == nil { - return - } - let newMsg = AppMessage() - newMsg.command = "app_message" - newMsg.senderTab = sender - do { - let jsonData = try JSONSerialization.data(withJSONObject: msg as Any, options: []) - newMsg.data = String(data: jsonData, encoding: .utf8) - } catch let error { - print("error converting to json: \(error)") - } - SafariExtensionViewController.shared.replyMessage(message: newMsg) - } -} - -func makeSenderTabObject(page: SFSafariPage, props: SFSafariPageProperties?, complete: @escaping (Tab) -> Void) { - let t = Tab() - t.title = props?.title - t.url = props?.url?.absoluteString - page.getContainingTab { tab in - tab.getContainingWindow(completionHandler: { win in - guard let window = win else { - t.active = false; - t.windowId = -100 - SFSafariApplication.getAllWindows(completionHandler: { allWins in - if (allWins.count == 0) { - return - } - allWins[0].getAllTabs { allWinTabs in - t.index = allWinTabs.firstIndex(of: tab) ?? -1 - t.id = "\(t.windowId)_\(t.index)" - complete(t) - } - }) - return - } - window.getActiveTab(completionHandler: { activeTab in - t.active = activeTab != nil && tab == activeTab - SFSafariApplication.getAllWindows(completionHandler: { allWins in - t.windowId = allWins.firstIndex(of: window) ?? -100 - window.getAllTabs { allWinTabs in - t.index = allWinTabs.firstIndex(of: tab) ?? -1 - t.id = "\(t.windowId)_\(t.index)" - complete(t) - } - }) - }) - }) - } -} diff --git a/src/safari/safari/SafariExtensionViewController.swift b/src/safari/safari/SafariExtensionViewController.swift deleted file mode 100644 index 0241df00ce..0000000000 --- a/src/safari/safari/SafariExtensionViewController.swift +++ /dev/null @@ -1,440 +0,0 @@ -import SafariServices -import WebKit - -class SafariExtensionViewController: SFSafariExtensionViewController, WKScriptMessageHandler, WKNavigationDelegate { - var webView: WKWebView! - var initedWebView: Bool = false - var popoverOpenCount: Int = 0 - - static let shared: SafariExtensionViewController = { - let shared = SafariExtensionViewController() - shared.preferredContentSize = NSSize(width: 375, height: 600) - return shared - }() - - func initWebView() { - if initedWebView { - return - } - initedWebView = true - let parentHeight = SafariExtensionViewController.shared.preferredContentSize.height - let parentWidth = SafariExtensionViewController.shared.preferredContentSize.width - let webViewConfig = WKWebViewConfiguration() - webViewConfig.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs") - webViewConfig.preferences.setValue(true, forKey: "developerExtrasEnabled") - webViewConfig.userContentController.add(self, name: "bitwardenApp") - webView = WKWebView(frame: CGRect(x: 0, y: 0, width: parentWidth, height: parentHeight), - configuration: webViewConfig) - webView.navigationDelegate = self - webView.allowsLinkPreview = false - navigateWebView("app/popup/index.html") - webView.alphaValue = 0.0 - webView.uiDelegate = self - view.addSubview(webView) - } - - func navigateWebView(_ relativeUrl: String){ - let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String - let bundleUrl = Bundle.main.resourceURL!.absoluteURL - - if var urlComponents = URLComponents(string: bundleUrl.absoluteString + relativeUrl) { - if (urlComponents.queryItems?.first(where: { $0.name == "appVersion" })?.value == nil) { - urlComponents.queryItems = urlComponents.queryItems ?? [] - urlComponents.queryItems!.append(URLQueryItem(name: "appVersion", value: version)) - } - - webView.loadFileURL(urlComponents.url!, allowingReadAccessTo: bundleUrl) - } - } - - func webView(_ webView: WKWebView, didFinish _: WKNavigation!) { - if #available(OSXApplicationExtension 10.12, *) { - NSAnimationContext.runAnimationGroup({ _ in - NSAnimationContext.current.duration = 0.35 - webView.animator().alphaValue = 1.0 - }) - } else { - // Fallback on earlier versions - } - } - - override func viewDidLoad() { - super.viewDidLoad() - let backgroundColor = NSColor(red: (39 / 255.0), green: (42 / 255.0), blue: (46 / 255.0), alpha: 1.0) - view.setValue(backgroundColor, forKey: "backgroundColor") - initWebView() - } - - func userContentController(_: WKUserContentController, didReceive message: WKScriptMessage) { - if message.name != "bitwardenApp" { - return - } - guard let messageBody = message.body as? String else { - return - } - guard let m: AppMessage = jsonDeserialize(json: messageBody) else { - return - } - let command = m.command - NSLog("Command: \(command)") - if command == "storage_get" { - if let data = m.data { - let obj = UserDefaults.standard.string(forKey: data) - m.responseData = obj - replyMessage(message: m) - } - } else if command == "storage_save" { - guard let data: StorageData = jsonDeserialize(json: m.data) else { - return - } - if let obj = data.obj { - UserDefaults.standard.set(obj, forKey: data.key) - } else { - UserDefaults.standard.removeObject(forKey: data.key) - } - replyMessage(message: m) - } else if command == "storage_remove" { - if let data = m.data { - UserDefaults.standard.removeObject(forKey: data) - replyMessage(message: m) - } - } else if command == "getLocaleStrings" { - let language = m.data ?? "en" - guard let bundleUrl = Bundle.main.resourceURL?.absoluteURL else { - return - } - let messagesUrl = bundleUrl.appendingPathComponent("app/_locales/\(language)/messages.json") - do { - let json = try String(contentsOf: messagesUrl, encoding: .utf8) - webView.evaluateJavaScript("window.bitwardenLocaleStrings = \(json);", completionHandler: {(result, error) in - guard let err = error else { - return; - } - NSLog("evaluateJavaScript error : %@", err.localizedDescription); - }) - } catch { - NSLog("ERROR on getLocaleStrings, \(error)") - } - replyMessage(message: m) - } else if command == "tabs_query" { - guard let options: TabQueryOptions = jsonDeserialize(json: m.data) else { - return - } - if options.currentWindow ?? false { - SFSafariApplication.getActiveWindow { win in - if win != nil { - processWindowsForTabs(wins: [win!], options: options, complete: { tabs in - m.responseData = jsonSerialize(obj: tabs) - self.replyMessage(message: m) - }) - } else { - SFSafariApplication.getAllWindows { wins in - processWindowsForTabs(wins: wins, options: options, complete: { tabs in - m.responseData = jsonSerialize(obj: tabs) - self.replyMessage(message: m) - }) - } - } - } - } else { - SFSafariApplication.getAllWindows { wins in - processWindowsForTabs(wins: wins, options: options, complete: { tabs in - m.responseData = jsonSerialize(obj: tabs) - self.replyMessage(message: m) - }) - } - } - } else if command == "tabs_message" { - guard let tabMsg: TabMessage = jsonDeserialize(json: m.data) else { - return - } - SFSafariApplication.getAllWindows { wins in - var theWin: SFSafariWindow? - var winIndex = 0 - for win in wins { - if tabMsg.tab.windowId == winIndex { - theWin = win - break - } - winIndex = winIndex + 1 - } - var theTab: SFSafariTab? - theWin?.getAllTabs { tabs in - var tabIndex = 0 - for tab in tabs { - if tabMsg.tab.index == tabIndex { - theTab = tab - break - } - tabIndex = tabIndex + 1 - } - theTab?.getActivePage { activePage in - activePage?.dispatchMessageToScript(withName: "bitwarden", userInfo: ["msg": tabMsg.obj]) - } - } - } - } else if command == "hidePopover" { - dismissPopover() - replyMessage(message: m) - } else if command == "showPopover" { - if popoverOpenCount <= 0 { - SFSafariApplication.getActiveWindow { win in - win?.getToolbarItem(completionHandler: { item in - item?.showPopover() - }) - } - } - } else if command == "isPopoverOpen" { - m.responseData = popoverOpenCount > 0 ? "true" : "false" - replyMessage(message: m) - } else if command == "createNewTab" { - if let data = m.data, let url = URL(string: data) { - if !data.starts(with: "https://") && !data.starts(with: "http://") { - SFSafariApplication.getActiveWindow { win in - win?.getToolbarItem(completionHandler: { item in - item?.showPopover() - self.navigateWebView("app/" + url.absoluteString) - }) - } - } - SFSafariApplication.getActiveWindow { win in - win?.openTab(with: url, makeActiveIfPossible: true, completionHandler: { _ in - // Tab opened - }) - } - } - } else if command == "reloadExtension" { - webView?.reload() - replyMessage(message: m) - } else if command == "copyToClipboard" { - let pasteboard = NSPasteboard.general - pasteboard.declareTypes([NSPasteboard.PasteboardType.string], owner: nil) - pasteboard.setString(m.data ?? "", forType: NSPasteboard.PasteboardType.string) - replyMessage(message: m) - } else if command == "readFromClipboard" { - let pasteboard = NSPasteboard.general - m.responseData = pasteboard.pasteboardItems?.first?.string(forType: .string) - replyMessage(message: m) - } else if command == "downloadFile" { - guard let jsonData = m.data else { - return - } - guard let dlMsg: DownloadFileMessage = jsonDeserialize(json: jsonData) else { - return - } - var blobData: Data? - if dlMsg.blobOptions?.type == "text/plain" { - blobData = dlMsg.blobData?.data(using: .utf8) - } else if let blob = dlMsg.blobData { - blobData = Data(base64Encoded: blob) - } - guard let data = blobData else { - return - } - let panel = NSSavePanel() - panel.canCreateDirectories = true - panel.nameFieldStringValue = dlMsg.fileName - panel.begin { response in - if response == NSApplication.ModalResponse.OK { - if let url = panel.url { - do { - let fileManager = FileManager.default - if !fileManager.fileExists(atPath: url.absoluteString) { - fileManager.createFile(atPath: url.absoluteString, contents: Data(), - attributes: nil) - } - try data.write(to: url) - } catch { - print(error) - NSLog("ERROR in downloadFile, \(error)") - } - } - } - } - } - } - - func replyMessage(message: AppMessage) { - if webView == nil { - return - } - let json = (jsonSerialize(obj: message) ?? "null") - webView.evaluateJavaScript("window.bitwardenSafariAppMessageReceiver(\(json));", completionHandler: {(result, error) in - guard let err = error else { - return; - } - NSLog("evaluateJavaScript error : %@", err.localizedDescription); - }) - } -} - -extension SafariExtensionViewController: WKUIDelegate { - @available(OSXApplicationExtension 10.12, *) - func webView(_: WKWebView, runOpenPanelWith _: WKOpenPanelParameters, initiatedByFrame _: WKFrameInfo, - completionHandler: @escaping ([URL]?) -> Void) { - let openPanel = NSOpenPanel() - openPanel.canChooseFiles = true - openPanel.begin { result in - if result == NSApplication.ModalResponse.OK && openPanel.url != nil { - completionHandler([openPanel.url!]) - } else { - completionHandler(nil) - } - } - } -} - -func processWindowsForTabs(wins: [SFSafariWindow], options: TabQueryOptions?, complete: @escaping ([Tab]) -> Void) { - if wins.count == 0 { - complete([]) - return - } - var newTabs: [Tab] = [] - let winGroup = DispatchGroup() - for win in wins { - winGroup.enter() - win.getActiveTab { activeTab in - win.getAllTabs { allTabs in - let tabGroup = DispatchGroup() - for tab in allTabs { - tabGroup.enter() - if options?.active ?? false { - if activeTab != nil && activeTab == tab { - let windowIndex = wins.firstIndex(of: win) ?? -100 - let tabIndex = allTabs.firstIndex(of: tab) ?? -1 - makeTabObject(tab: tab, activeTab: activeTab, windowIndex: windowIndex, - tabIndex: tabIndex, complete: { t in - newTabs.append(t) - tabGroup.leave() - }) - } else { - tabGroup.leave() - } - } else { - let windowIndex = wins.firstIndex(of: win) ?? -100 - let tabIndex = allTabs.firstIndex(of: tab) ?? -1 - makeTabObject(tab: tab, activeTab: activeTab, windowIndex: windowIndex, - tabIndex: tabIndex, complete: { t in - newTabs.append(t) - tabGroup.leave() - }) - } - } - tabGroup.notify(queue: .main) { - winGroup.leave() - } - } - } - } - winGroup.notify(queue: .main) { - complete(newTabs) - } -} - -func makeTabObject(tab: SFSafariTab, activeTab: SFSafariTab?, windowIndex: Int, tabIndex: Int, - complete: @escaping (Tab) -> Void) { - let t = Tab() - t.active = activeTab != nil && tab == activeTab - t.windowId = windowIndex - t.index = tabIndex - t.id = "\(windowIndex)_\(tabIndex)" - tab.getActivePage { page in - guard let activePage = page else { - complete(t) - return - } - activePage.getPropertiesWithCompletionHandler({ props in - t.title = props?.title - t.url = props?.url?.absoluteString - complete(t) - }) - } -} - -func jsonSerialize(obj: T?) -> String? { - let encoder = JSONEncoder() - do { - let data = try encoder.encode(obj) - return String(data: data, encoding: .utf8) ?? "null" - } catch _ { - return "null" - } -} - -func jsonDeserialize(json: String?) -> T? { - if json == nil { - return nil - } - let decoder = JSONDecoder() - do { - let obj = try decoder.decode(T.self, from: json!.data(using: .utf8)!) - return obj - } catch _ { - return nil - } -} - -class AppMessage: Decodable, Encodable { - init() { - id = "" - command = "" - data = nil - responseData = nil - responseError = nil - } - - var id: String - var command: String - var data: String? - var responseData: String? - var responseError: Bool? - var senderTab: Tab? -} - -class StorageData: Decodable, Encodable { - var key: String - var obj: String? -} - -class TabQueryOptions: Decodable, Encodable { - var currentWindow: Bool? - var active: Bool? -} - -class Tab: Decodable, Encodable { - init() { - id = "" - index = -1 - windowId = -100 - title = "" - active = false - url = "" - } - - var id: String - var index: Int - var windowId: Int - var title: String? - var active: Bool - var url: String? -} - -class TabMessage: Decodable, Encodable { - var tab: Tab - var obj: String - var options: TabMessageOptions? -} - -class TabMessageOptions: Decodable, Encodable { - var frameId: Int? -} - -class DownloadFileMessage: Decodable, Encodable { - var fileName: String - var blobData: String? - var blobOptions: DownloadFileMessageBlobOptions? -} - -class DownloadFileMessageBlobOptions: Decodable, Encodable { - var type: String? -} diff --git a/src/safari/safari/SafariWebExtensionHandler.swift b/src/safari/safari/SafariWebExtensionHandler.swift new file mode 100644 index 0000000000..001d388e6e --- /dev/null +++ b/src/safari/safari/SafariWebExtensionHandler.swift @@ -0,0 +1,109 @@ +import SafariServices +import os.log + +let SFExtensionMessageKey = "message" + +class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { + + func beginRequest(with context: NSExtensionContext) { + let item = context.inputItems[0] as! NSExtensionItem + let message = item.userInfo?[SFExtensionMessageKey] as AnyObject? + os_log(.default, "Received message from browser.runtime.sendNativeMessage: %@", message as! CVarArg) + + let response = NSExtensionItem() + + guard let command = message?["command"] as? String else { + return + } + + switch (command) { + case "readFromClipboard": + let pasteboard = NSPasteboard.general + response.userInfo = [ SFExtensionMessageKey: pasteboard.pasteboardItems?.first?.string(forType: .string) as Any ] + break + case "showPopover": + SFSafariApplication.getActiveWindow { win in + win?.getToolbarItem(completionHandler: { item in + item?.showPopover() + }) + } + break + case "downloadFile": + guard let jsonData = message?["data"] as? String else { + return + } + guard let dlMsg: DownloadFileMessage = jsonDeserialize(json: jsonData) else { + return + } + var blobData: Data? + if dlMsg.blobOptions?.type == "text/plain" { + blobData = dlMsg.blobData?.data(using: .utf8) + } else if let blob = dlMsg.blobData { + blobData = Data(base64Encoded: blob) + } + guard let data = blobData else { + return + } + let panel = NSSavePanel() + panel.canCreateDirectories = true + panel.nameFieldStringValue = dlMsg.fileName + panel.begin { response in + if response == NSApplication.ModalResponse.OK { + if let url = panel.url { + do { + let fileManager = FileManager.default + if !fileManager.fileExists(atPath: url.absoluteString) { + fileManager.createFile(atPath: url.absoluteString, contents: Data(), + attributes: nil) + } + try data.write(to: url) + } catch { + print(error) + NSLog("ERROR in downloadFile, \(error)") + } + } + } + } + break + + default: + return + } + + context.completeRequest(returningItems: [response], completionHandler: nil) + } + +} + +func jsonSerialize(obj: T?) -> String? { + let encoder = JSONEncoder() + do { + let data = try encoder.encode(obj) + return String(data: data, encoding: .utf8) ?? "null" + } catch _ { + return "null" + } +} + +func jsonDeserialize(json: String?) -> T? { + if json == nil { + return nil + } + let decoder = JSONDecoder() + do { + let obj = try decoder.decode(T.self, from: json!.data(using: .utf8)!) + return obj + } catch _ { + return nil + } +} + +class DownloadFileMessage: Decodable, Encodable { + var fileName: String + var blobData: String? + var blobOptions: DownloadFileMessageBlobOptions? +} + +class DownloadFileMessageBlobOptions: Decodable, Encodable { + var type: String? +} diff --git a/src/safari/safari/ToolbarItemIcon.pdf b/src/safari/safari/ToolbarItemIcon.pdf deleted file mode 100644 index dbf98ce90e57cfe02aca29db06dc6f2678a6586d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46066 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 - - - - - - Bitwarden - - - - - - -
-
- - - - - - - - - diff --git a/src/services/browserMessaging.service.ts b/src/services/browserMessaging.service.ts index 01f94269fb..e5bd9b1e98 100644 --- a/src/services/browserMessaging.service.ts +++ b/src/services/browserMessaging.service.ts @@ -1,16 +1,8 @@ -import { BrowserApi } from '../browser/browserApi'; -import { SafariApp } from '../browser/safariApp'; - import { MessagingService } from 'jslib/abstractions/messaging.service'; export default class BrowserMessagingService implements MessagingService { send(subscriber: string, arg: any = {}) { const message = Object.assign({}, { command: subscriber }, arg); - if (BrowserApi.isSafariApi) { - SafariApp.sendMessageToApp(subscriber, arg); - SafariApp.sendMessageToListeners(message, 'BrowserMessagingService', null); - } else { - chrome.runtime.sendMessage(message); - } + chrome.runtime.sendMessage(message); } } diff --git a/src/services/browserPlatformUtils.service.ts b/src/services/browserPlatformUtils.service.ts index 7f9835cd1e..969ab45bab 100644 --- a/src/services/browserPlatformUtils.service.ts +++ b/src/services/browserPlatformUtils.service.ts @@ -27,9 +27,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService return this.deviceCache; } - if (this.isSafariExtension()) { - this.deviceCache = DeviceType.SafariExtension; - } else if (navigator.userAgent.indexOf(' Firefox/') !== -1 || navigator.userAgent.indexOf(' Gecko/') !== -1) { + if (navigator.userAgent.indexOf(' Firefox/') !== -1 || navigator.userAgent.indexOf(' Gecko/') !== -1) { this.deviceCache = DeviceType.FirefoxExtension; } else if ((!!(window as any).opr && !!opr.addons) || !!(window as any).opera || navigator.userAgent.indexOf(' OPR/') >= 0) { @@ -40,6 +38,8 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService this.deviceCache = DeviceType.VivaldiExtension; } else if ((window as any).chrome && navigator.userAgent.indexOf(' Chrome/') !== -1) { this.deviceCache = DeviceType.ChromeExtension; + } else if (navigator.userAgent.indexOf(' Safari/') !== -1) { + this.deviceCache = DeviceType.SafariExtension; } return this.deviceCache; @@ -190,13 +190,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService } const clearing = options ? !!options.clearing : false; const clearMs: number = options && options.clearMs ? options.clearMs : null; - if (this.isSafariExtension()) { - SafariApp.sendMessageToApp('copyToClipboard', text).then(() => { - if (!clearing && this.clipboardWriteCallback != null) { - this.clipboardWriteCallback(text, clearMs); - } - }); - } else if (this.isFirefox() && (win as any).navigator.clipboard && (win as any).navigator.clipboard.writeText) { + if (this.isFirefox() && (win as any).navigator.clipboard && (win as any).navigator.clipboard.writeText) { (win as any).navigator.clipboard.writeText(text).then(() => { if (!clearing && this.clipboardWriteCallback != null) { this.clipboardWriteCallback(text, clearMs); @@ -244,7 +238,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService doc = options.doc; } - if (this.isSafariExtension()) { + if (this.isSafari()) { return await SafariApp.sendMessageToApp('readFromClipboard'); } else if (this.isFirefox() && (win as any).navigator.clipboard && (win as any).navigator.clipboard.readText) { return await (win as any).navigator.clipboard.readText(); @@ -311,10 +305,6 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService return false; } - private isSafariExtension(): boolean { - return (window as any).safariAppExtension === true; - } - getDefaultSystemTheme() { return this.prefersColorSchemeDark.matches ? 'dark' : 'light'; } diff --git a/src/services/browserStorage.service.ts b/src/services/browserStorage.service.ts index 7510327d7d..9d3a6bc677 100644 --- a/src/services/browserStorage.service.ts +++ b/src/services/browserStorage.service.ts @@ -1,63 +1,47 @@ -import { - PlatformUtilsService, - StorageService, -} from 'jslib/abstractions'; - -import { SafariApp } from '../browser/safariApp'; +import { StorageService } from 'jslib/abstractions/storage.service'; export default class BrowserStorageService implements StorageService { private chromeStorageApi: any; - private isSafari: boolean; - constructor(platformUtilsService: PlatformUtilsService) { - this.isSafari = platformUtilsService.isSafari(); - if (!this.isSafari) { - this.chromeStorageApi = chrome.storage.local; - } + constructor() { + this.chromeStorageApi = chrome.storage.local; } async get(key: string): Promise { - if (this.isSafari) { - const obj = await SafariApp.sendMessageToApp('storage_get', key); - return obj == null ? null : JSON.parse(obj) as T; - } else { - return new Promise((resolve) => { - this.chromeStorageApi.get(key, (obj: any) => { - if (obj != null && obj[key] != null) { - resolve(obj[key] as T); - return; - } - resolve(null); - }); + return new Promise((resolve) => { + this.chromeStorageApi.get(key, (obj: any) => { + if (obj != null && obj[key] != null) { + resolve(obj[key] as T); + return; + } + resolve(null); }); - } + }); } async save(key: string, obj: any): Promise { - const keyedObj = { [key]: obj }; - if (this.isSafari) { - await SafariApp.sendMessageToApp('storage_save', JSON.stringify({ - key: key, - obj: JSON.stringify(obj), - })); - } else { - return new Promise((resolve) => { - this.chromeStorageApi.set(keyedObj, () => { - resolve(); - }); - }); - } - } - - async remove(key: string): Promise { - if (this.isSafari) { - await SafariApp.sendMessageToApp('storage_remove', key); - } else { + if (obj == null) { + // Fix safari not liking null in set return new Promise((resolve) => { this.chromeStorageApi.remove(key, () => { resolve(); }); }); } + + const keyedObj = { [key]: obj }; + return new Promise((resolve) => { + this.chromeStorageApi.set(keyedObj, () => { + resolve(); + }); + }); + } + + async remove(key: string): Promise { + return new Promise((resolve) => { + this.chromeStorageApi.remove(key, () => { + resolve(); + }); + }); } } diff --git a/src/services/i18n.service.ts b/src/services/i18n.service.ts index 4eb880424d..542dbb6f35 100644 --- a/src/services/i18n.service.ts +++ b/src/services/i18n.service.ts @@ -1,19 +1,11 @@ import { I18nService as BaseI18nService } from 'jslib/services/i18n.service'; -import { BrowserApi } from '../browser/browserApi'; -import { SafariApp } from '../browser/safariApp'; - export default class I18nService extends BaseI18nService { constructor(systemLanguage: string) { - super(systemLanguage, BrowserApi.isSafariApi ? 'safari' : null, async (formattedLocale: string) => { - if (BrowserApi.isSafariApi) { - await SafariApp.sendMessageToApp('getLocaleStrings', formattedLocale); - return (window as any).bitwardenLocaleStrings; - } else { - // Deprecated - const file = await fetch(this.localesDirectory + formattedLocale + '/messages.json'); - return await file.json(); - } + super(systemLanguage, null, async (formattedLocale: string) => { + // Deprecated + const file = await fetch(this.localesDirectory + formattedLocale + '/messages.json'); + return await file.json(); }); this.supportedTranslationLocales = [