From acf332b689625e1f9179d4f9113e6f0c8d775d27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Filipe=20da=20Silva=20Bispo?= Date: Tue, 13 Sep 2022 17:56:10 +0100 Subject: [PATCH 01/28] [SG-659] Classic 2019 plans no longer generating TOTP codes for Free users (#3509) * [SG-659] Fixed TOTP code visibility for users with classic plans. * [SG-659] Refactored condition. * [SG-659] Ran prettier * [SG-659] Simplified expression. --- apps/browser/src/popup/vault/view.component.html | 7 ++----- apps/desktop/src/app/vault/view.component.html | 7 ++----- apps/web/src/app/vault/add-edit.component.html | 4 ++-- libs/angular/src/components/view.component.ts | 3 +++ 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/apps/browser/src/popup/vault/view.component.html b/apps/browser/src/popup/vault/view.component.html index e168879dd06..d8bf6da7343 100644 --- a/apps/browser/src/popup/vault/view.component.html +++ b/apps/browser/src/popup/vault/view.component.html @@ -139,7 +139,7 @@
-
+
{{ "verificationCodeTotp" | i18n }} diff --git a/apps/desktop/src/app/vault/view.component.html b/apps/desktop/src/app/vault/view.component.html index 3d613736235..55da1b8e178 100644 --- a/apps/desktop/src/app/vault/view.component.html +++ b/apps/desktop/src/app/vault/view.component.html @@ -100,7 +100,7 @@
-
+
{{ "verificationCodeTotp" | i18n }} diff --git a/apps/web/src/app/vault/add-edit.component.html b/apps/web/src/app/vault/add-edit.component.html index 5ec27d02065..50c88c51dd2 100644 --- a/apps/web/src/app/vault/add-edit.component.html +++ b/apps/web/src/app/vault/add-edit.component.html @@ -182,7 +182,7 @@
15 @@ -237,7 +237,7 @@
diff --git a/libs/angular/src/components/view.component.ts b/libs/angular/src/components/view.component.ts index 66dbae786cf..cbd88383f5c 100644 --- a/libs/angular/src/components/view.component.ts +++ b/libs/angular/src/components/view.component.ts @@ -50,6 +50,7 @@ export class ViewComponent implements OnDestroy, OnInit { showCardNumber: boolean; showCardCode: boolean; canAccessPremium: boolean; + showPremiumRequiredTotp: boolean; totpCode: string; totpCodeFormatted: string; totpDash: number; @@ -108,6 +109,8 @@ export class ViewComponent implements OnDestroy, OnInit { const cipher = await this.cipherService.get(this.cipherId); this.cipher = await cipher.decrypt(); this.canAccessPremium = await this.stateService.getCanAccessPremium(); + this.showPremiumRequiredTotp = + this.cipher.login.totp && !this.canAccessPremium && !this.cipher.organizationUseTotp; if ( this.cipher.type === CipherType.Login && From 06e88a38e0e3e366e313bd20086122de1ae0dd4d Mon Sep 17 00:00:00 2001 From: "Patrick H. Lauke" Date: Tue, 13 Sep 2022 19:38:38 +0100 Subject: [PATCH 02/28] Make all item fields (except linked fields) draggable (#3321) Co-authored-by: Daniel James Smith --- .../vault/view-custom-fields.component.html | 9 +- .../src/popup/vault/view.component.html | 147 +++++++++++++++--- .../vault/view-custom-fields.component.html | 9 +- .../desktop/src/app/vault/view.component.html | 139 ++++++++++++++--- .../view-custom-fields.component.ts | 4 + 5 files changed, 266 insertions(+), 42 deletions(-) diff --git a/apps/browser/src/popup/vault/view-custom-fields.component.html b/apps/browser/src/popup/vault/view-custom-fields.component.html index ebedd30776f..4fbca28734b 100644 --- a/apps/browser/src/popup/vault/view-custom-fields.component.html +++ b/apps/browser/src/popup/vault/view-custom-fields.component.html @@ -5,7 +5,14 @@
- {{ field.name }} + {{ field.name }} + {{ field.name }}
{{ field.value || " " }}
diff --git a/apps/browser/src/popup/vault/view.component.html b/apps/browser/src/popup/vault/view.component.html index d8bf6da7343..0b5d0fb1528 100644 --- a/apps/browser/src/popup/vault/view.component.html +++ b/apps/browser/src/popup/vault/view.component.html @@ -18,7 +18,13 @@
- +
@@ -192,12 +198,22 @@
- {{ "cardholderName" | i18n }} + {{ "cardholderName" | i18n }} {{ cipher.card.cardholderName }}
- {{ "number" | i18n }} + {{ "number" | i18n }} {{ cipher.card.maskedNumber | creditCardNumber: cipher.card.brand }} @@ -233,16 +249,31 @@
- {{ "brand" | i18n }} + {{ "brand" | i18n }} {{ cipher.card.brand }}
- {{ "expiration" | i18n }} + {{ "expiration" | i18n }} {{ cipher.card.expiration }}
- {{ "securityCode" | i18n }} + {{ "securityCode" | i18n }} {{ cipher.card.maskedCode }} {{ cipher.card.code }}
@@ -277,42 +308,98 @@
- {{ "identityName" | i18n }} + {{ "identityName" | i18n }} {{ cipher.identity.fullName }}
- {{ "username" | i18n }} + {{ "username" | i18n }} {{ cipher.identity.username }}
- {{ "company" | i18n }} + {{ "company" | i18n }} {{ cipher.identity.company }}
- {{ "ssn" | i18n }} + {{ "ssn" | i18n }} {{ cipher.identity.ssn }}
- {{ "passportNumber" | i18n }} + {{ "passportNumber" | i18n }} {{ cipher.identity.passportNumber }}
- {{ "licenseNumber" | i18n }} + {{ "licenseNumber" | i18n }} {{ cipher.identity.licenseNumber }}
- {{ "email" | i18n }} + {{ "email" | i18n }} {{ cipher.identity.email }}
- {{ "phone" | i18n }} + {{ "phone" | i18n }} {{ cipher.identity.phone }}
- {{ "address" | i18n }} + {{ "address" | i18n }}
{{ cipher.identity.address1 }}
{{ cipher.identity.address2 }}
{{ cipher.identity.address3 }}
@@ -329,12 +416,22 @@ *ngFor="let u of cipher.login.uris; let i = index" >
- - + +

- +

diff --git a/apps/desktop/src/app/vault/view-custom-fields.component.html b/apps/desktop/src/app/vault/view-custom-fields.component.html index 598c4c0f8dd..5f2f110fbaa 100644 --- a/apps/desktop/src/app/vault/view-custom-fields.component.html +++ b/apps/desktop/src/app/vault/view-custom-fields.component.html @@ -5,7 +5,14 @@
- {{ field.name }} + {{ field.name }} + {{ field.name }}
{{ field.value || " " }}
diff --git a/apps/desktop/src/app/vault/view.component.html b/apps/desktop/src/app/vault/view.component.html index 55da1b8e178..7fdca0b667d 100644 --- a/apps/desktop/src/app/vault/view.component.html +++ b/apps/desktop/src/app/vault/view.component.html @@ -6,7 +6,12 @@
- {{ "name" | i18n }} + {{ "name" | i18n }} {{ cipher.name }}
@@ -152,12 +157,22 @@
- {{ "cardholderName" | i18n }} + {{ "cardholderName" | i18n }} {{ cipher.card.cardholderName }}
- {{ "number" | i18n }} + {{ "number" | i18n }} {{ cipher.card.maskedNumber | creditCardNumber: cipher.card.brand }} @@ -192,16 +207,31 @@
- {{ "brand" | i18n }} + {{ "brand" | i18n }} {{ cipher.card.brand }}
- {{ "expiration" | i18n }} + {{ "expiration" | i18n }} {{ cipher.card.expiration }}
- {{ "securityCode" | i18n }} + {{ "securityCode" | i18n }} {{ cipher.card.maskedCode }} {{ cipher.card.code }}
@@ -235,42 +265,98 @@
- {{ "identityName" | i18n }} + {{ "identityName" | i18n }} {{ cipher.identity.fullName }}
- {{ "username" | i18n }} + {{ "username" | i18n }} {{ cipher.identity.username }}
- {{ "company" | i18n }} + {{ "company" | i18n }} {{ cipher.identity.company }}
- {{ "ssn" | i18n }} + {{ "ssn" | i18n }} {{ cipher.identity.ssn }}
- {{ "passportNumber" | i18n }} + {{ "passportNumber" | i18n }} {{ cipher.identity.passportNumber }}
- {{ "licenseNumber" | i18n }} + {{ "licenseNumber" | i18n }} {{ cipher.identity.licenseNumber }}
- {{ "email" | i18n }} + {{ "email" | i18n }} {{ cipher.identity.email }}
- {{ "phone" | i18n }} + {{ "phone" | i18n }} {{ cipher.identity.phone }}
- {{ "address" | i18n }} + {{ "address" | i18n }}
{{ cipher.identity.address1 }}
{{ cipher.identity.address2 }}
{{ cipher.identity.address3 }}
@@ -289,8 +375,20 @@ *ngFor="let u of cipher.login.uris; let i = index" >
- {{ "uri" | i18n }} - {{ "website" | i18n }} + {{ "uri" | i18n }} + {{ "website" | i18n }} {{ u.hostOrUri }}
@@ -319,7 +417,12 @@

- {{ "notes" | i18n }} + {{ "notes" | i18n }}

{{ cipher.notes }}
diff --git a/libs/angular/src/components/view-custom-fields.component.ts b/libs/angular/src/components/view-custom-fields.component.ts index d1ca8934fa0..10a072945a8 100644 --- a/libs/angular/src/components/view-custom-fields.component.ts +++ b/libs/angular/src/components/view-custom-fields.component.ts @@ -36,4 +36,8 @@ export class ViewCustomFieldsComponent { field.showCount = !field.showCount; } + + setTextDataOnDrag(event: DragEvent, data: string) { + event.dataTransfer.setData("text", data); + } } From 248ac958042d54dd4a1cb7279909df0c81f657bb Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Tue, 13 Sep 2022 23:08:40 +0200 Subject: [PATCH 03/28] [PS-1474] Bump rust dependencies (#3515) * Bump rust dependencies * Selecitvely upgrade only napi * Upgrade only parking_lot_core --- apps/desktop/desktop_native/Cargo.lock | 122 +++++++++++++------------ apps/desktop/desktop_native/Cargo.toml | 6 +- 2 files changed, 66 insertions(+), 62 deletions(-) diff --git a/apps/desktop/desktop_native/Cargo.lock b/apps/desktop/desktop_native/Cargo.lock index aec92d256aa..a3a20cd647e 100644 --- a/apps/desktop/desktop_native/Cargo.lock +++ b/apps/desktop/desktop_native/Cargo.lock @@ -153,7 +153,7 @@ dependencies = [ "security-framework-sys", "tokio", "widestring", - "windows 0.32.0", + "windows", ] [[package]] @@ -329,18 +329,22 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - [[package]] name = "libc" version = "0.2.119" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if", + "winapi", +] + [[package]] name = "libsecret" version = "0.1.4" @@ -426,28 +430,29 @@ dependencies = [ [[package]] name = "napi" -version = "2.1.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ec66e60f000c78dd7c6215b6fa260e0591e09805024332bc5b3f55acc12244" +checksum = "743fece4c26c5132f8559080145fde9ba88700c0f1aa30a1ab3e057ab105814d" dependencies = [ + "bitflags", "ctor", - "lazy_static", "napi-sys", + "once_cell", + "thread_local", "tokio", - "windows 0.30.0", ] [[package]] name = "napi-build" -version = "1.2.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd4419172727423cf30351406c54f6cc1b354a2cfb4f1dba3e6cd07f6d5522b" +checksum = "882a73d9ef23e8dc2ebbffb6a6ae2ef467c0f18ac10711e4cc59c5485d41df0e" [[package]] name = "napi-derive" -version = "2.1.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ac5287a5e94a8728fc82d16c5127acc5eb5b8ad6404ef5f82d6a4ce8d5bdd2" +checksum = "39f3d8b02ef355898ea98f69082d9a183c8701c836942c2daf3e92364e88a0fa" dependencies = [ "convert_case", "napi-derive-backend", @@ -458,9 +463,9 @@ dependencies = [ [[package]] name = "napi-derive-backend" -version = "1.0.25" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427f4f04525635cdf22005d1be62d6d671bcb5550d694a1efb480a315422b4af" +checksum = "6c35640513eb442fcbd1653a1c112fb6b2cc12b54d82f9c141f5859c721cab36" dependencies = [ "convert_case", "once_cell", @@ -472,9 +477,12 @@ dependencies = [ [[package]] name = "napi-sys" -version = "2.1.0" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a385494dac3c52cbcacb393bb3b42669e7db8ab240c7ad5115f549eb061f2cc" +checksum = "529671ebfae679f2ce9630b62dd53c72c56b3eb8b2c852e7e2fa91704ff93d67" +dependencies = [ + "libloading", +] [[package]] name = "ntapi" @@ -513,9 +521,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" dependencies = [ "cfg-if", "libc", @@ -745,6 +753,15 @@ dependencies = [ "syn", ] +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + [[package]] name = "tokio" version = "1.17.0" @@ -846,19 +863,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b749ebd2304aa012c5992d11a25d07b406bdbe5f79d371cb7a918ce501a19eb0" -dependencies = [ - "windows_aarch64_msvc 0.30.0", - "windows_i686_gnu 0.30.0", - "windows_i686_msvc 0.30.0", - "windows_x86_64_gnu 0.30.0", - "windows_x86_64_msvc 0.30.0", -] - [[package]] name = "windows" version = "0.32.0" @@ -874,23 +878,17 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.32.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" dependencies = [ - "windows_aarch64_msvc 0.32.0", - "windows_i686_gnu 0.32.0", - "windows_i686_msvc 0.32.0", - "windows_x86_64_gnu 0.32.0", - "windows_x86_64_msvc 0.32.0", + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", ] -[[package]] -name = "windows_aarch64_msvc" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29277a4435d642f775f63c7d1faeb927adba532886ce0287bd985bffb16b6bca" - [[package]] name = "windows_aarch64_msvc" version = "0.32.0" @@ -898,10 +896,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" [[package]] -name = "windows_i686_gnu" -version = "0.30.0" +name = "windows_aarch64_msvc" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145e1989da93956c68d1864f32fb97c8f561a8f89a5125f6a2b7ea75524e4b8" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] name = "windows_i686_gnu" @@ -910,10 +908,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" [[package]] -name = "windows_i686_msvc" -version = "0.30.0" +name = "windows_i686_gnu" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a09e3a0d4753b73019db171c1339cd4362c8c44baf1bcea336235e955954a6" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] name = "windows_i686_msvc" @@ -922,10 +920,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" [[package]] -name = "windows_x86_64_gnu" -version = "0.30.0" +name = "windows_i686_msvc" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca64fcb0220d58db4c119e050e7af03c69e6f4f415ef69ec1773d9aab422d5a" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] name = "windows_x86_64_gnu" @@ -934,13 +932,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" [[package]] -name = "windows_x86_64_msvc" -version = "0.30.0" +name = "windows_x86_64_gnu" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08cabc9f0066848fef4bc6a1c1668e6efce38b661d2aeec75d18d8617eebb5f1" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] name = "windows_x86_64_msvc" version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" diff --git a/apps/desktop/desktop_native/Cargo.toml b/apps/desktop/desktop_native/Cargo.toml index 0c990fe622d..1285ef43685 100644 --- a/apps/desktop/desktop_native/Cargo.toml +++ b/apps/desktop/desktop_native/Cargo.toml @@ -12,13 +12,13 @@ crate-type = ["cdylib"] [dependencies] anyhow = "1.0" -napi = {version = "2", features = ["async"]} -napi-derive = "2" +napi = {version = "2.9.1", features = ["async"]} +napi-derive = "2.9.1" scopeguard = "1.1.0" tokio = {version = "1.17.0", features = ["full"]} [build-dependencies] -napi-build = "1" +napi-build = "2.0.1" [target.'cfg(windows)'.dependencies] widestring = "0.5.1" From 7d9ad150abca57b5c702dc4866a4d379cf99b5f4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 00:28:21 +0200 Subject: [PATCH 04/28] Autosync the updated translations (#3519) Co-authored-by: github-actions <> --- apps/desktop/src/locales/bn/messages.json | 2 +- apps/desktop/src/locales/eo/messages.json | 2 +- apps/desktop/src/locales/eu/messages.json | 2 +- apps/desktop/src/locales/fil/messages.json | 2 +- apps/desktop/src/locales/hi/messages.json | 2 +- apps/desktop/src/locales/hu/messages.json | 2 +- apps/desktop/src/locales/ka/messages.json | 2 +- apps/desktop/src/locales/km/messages.json | 2 +- apps/desktop/src/locales/me/messages.json | 2 +- apps/desktop/src/locales/ml/messages.json | 2 +- apps/desktop/src/locales/nn/messages.json | 2 +- apps/desktop/src/locales/pt_PT/messages.json | 2 +- apps/desktop/src/locales/ro/messages.json | 2 +- apps/desktop/src/locales/si/messages.json | 2 +- apps/desktop/src/locales/sl/messages.json | 2 +- apps/desktop/src/locales/th/messages.json | 2 +- apps/desktop/src/locales/uk/messages.json | 2 +- apps/desktop/src/locales/vi/messages.json | 2 +- apps/desktop/src/locales/zh_CN/messages.json | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/apps/desktop/src/locales/bn/messages.json b/apps/desktop/src/locales/bn/messages.json index 82114ee0a72..65d8092ff6f 100644 --- a/apps/desktop/src/locales/bn/messages.json +++ b/apps/desktop/src/locales/bn/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/eo/messages.json b/apps/desktop/src/locales/eo/messages.json index 472ff720952..8f7fadf676f 100644 --- a/apps/desktop/src/locales/eo/messages.json +++ b/apps/desktop/src/locales/eo/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/eu/messages.json b/apps/desktop/src/locales/eu/messages.json index 5b05618ec4f..6e66891de1f 100644 --- a/apps/desktop/src/locales/eu/messages.json +++ b/apps/desktop/src/locales/eu/messages.json @@ -1631,7 +1631,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "myVault": { - "message": "Nire kutxa gotorra" + "message": "Kutxa gotorra" }, "text": { "message": "Testua" diff --git a/apps/desktop/src/locales/fil/messages.json b/apps/desktop/src/locales/fil/messages.json index 2fa3065ba8a..be525fbead3 100644 --- a/apps/desktop/src/locales/fil/messages.json +++ b/apps/desktop/src/locales/fil/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/hi/messages.json b/apps/desktop/src/locales/hi/messages.json index 103e5e29fca..32baaaee779 100644 --- a/apps/desktop/src/locales/hi/messages.json +++ b/apps/desktop/src/locales/hi/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/hu/messages.json b/apps/desktop/src/locales/hu/messages.json index 8ef78286a8a..abe0c4d4c87 100644 --- a/apps/desktop/src/locales/hu/messages.json +++ b/apps/desktop/src/locales/hu/messages.json @@ -1577,7 +1577,7 @@ "message": "Sajnos a böngésző integrációt egyelőre csak a Mac App Store verzió támogatja." }, "browserIntegrationWindowsStoreDesc": { - "message": "A böngésző integrációt egyelőre csak a Windows Store verzió támogatja." + "message": "A böngésző integrációt egyelőre csak a Microsoft Store verzió támogatja." }, "browserIntegrationLinuxDesc": { "message": "Sajnos a böngésző integrációját a linux verzió jelenleg nem támogatja." diff --git a/apps/desktop/src/locales/ka/messages.json b/apps/desktop/src/locales/ka/messages.json index 2fa3065ba8a..be525fbead3 100644 --- a/apps/desktop/src/locales/ka/messages.json +++ b/apps/desktop/src/locales/ka/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/km/messages.json b/apps/desktop/src/locales/km/messages.json index 2fa3065ba8a..be525fbead3 100644 --- a/apps/desktop/src/locales/km/messages.json +++ b/apps/desktop/src/locales/km/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/me/messages.json b/apps/desktop/src/locales/me/messages.json index b82d2d22878..ea5435a7b1f 100644 --- a/apps/desktop/src/locales/me/messages.json +++ b/apps/desktop/src/locales/me/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/ml/messages.json b/apps/desktop/src/locales/ml/messages.json index 8f59bdda26e..4c27fb602b6 100644 --- a/apps/desktop/src/locales/ml/messages.json +++ b/apps/desktop/src/locales/ml/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/nn/messages.json b/apps/desktop/src/locales/nn/messages.json index 20d47b8237f..a632f47d392 100644 --- a/apps/desktop/src/locales/nn/messages.json +++ b/apps/desktop/src/locales/nn/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/pt_PT/messages.json b/apps/desktop/src/locales/pt_PT/messages.json index da1c8755a0f..c070f9318ce 100644 --- a/apps/desktop/src/locales/pt_PT/messages.json +++ b/apps/desktop/src/locales/pt_PT/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Infelizmente, a integração com o navegador não é, atualmente, suportada para a versão linux." diff --git a/apps/desktop/src/locales/ro/messages.json b/apps/desktop/src/locales/ro/messages.json index 3e7c8ad194d..bb301018fbe 100644 --- a/apps/desktop/src/locales/ro/messages.json +++ b/apps/desktop/src/locales/ro/messages.json @@ -1577,7 +1577,7 @@ "message": "Din păcate, integrarea browserului este acceptată numai în versiunea Mac App Store pentru moment." }, "browserIntegrationWindowsStoreDesc": { - "message": "Din păcate, integrarea browserului nu este acceptată în prezent în versiunea Windows Store." + "message": "Din păcate, integrarea browserului nu este susținută în prezent în versiunea Microsoft Store." }, "browserIntegrationLinuxDesc": { "message": "Din păcate, integrarea browserului nu este acceptată în prezent în versiunea Linux." diff --git a/apps/desktop/src/locales/si/messages.json b/apps/desktop/src/locales/si/messages.json index 5aa923b05d0..15e1493fb06 100644 --- a/apps/desktop/src/locales/si/messages.json +++ b/apps/desktop/src/locales/si/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/sl/messages.json b/apps/desktop/src/locales/sl/messages.json index b090983ea25..62711d4bd9a 100644 --- a/apps/desktop/src/locales/sl/messages.json +++ b/apps/desktop/src/locales/sl/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/th/messages.json b/apps/desktop/src/locales/th/messages.json index f439ddd8817..697f99b069f 100644 --- a/apps/desktop/src/locales/th/messages.json +++ b/apps/desktop/src/locales/th/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/uk/messages.json b/apps/desktop/src/locales/uk/messages.json index 8856f724ebf..d05867e1224 100644 --- a/apps/desktop/src/locales/uk/messages.json +++ b/apps/desktop/src/locales/uk/messages.json @@ -1577,7 +1577,7 @@ "message": "На жаль, зараз інтеграція з браузером підтримується лише у версії для Mac з App Store." }, "browserIntegrationWindowsStoreDesc": { - "message": "На жаль, зараз інтеграція з браузером не підтримується у версії з Windows Store." + "message": "На жаль, зараз інтеграція з браузером не підтримується у версії з Microsoft Store." }, "browserIntegrationLinuxDesc": { "message": "На жаль, зараз інтеграція з браузером не підтримується у версії для Linux." diff --git a/apps/desktop/src/locales/vi/messages.json b/apps/desktop/src/locales/vi/messages.json index 5c73bd0132c..6076ede6949 100644 --- a/apps/desktop/src/locales/vi/messages.json +++ b/apps/desktop/src/locales/vi/messages.json @@ -1577,7 +1577,7 @@ "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." }, "browserIntegrationLinuxDesc": { "message": "Unfortunately browser integration is currently not supported in the linux version." diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json index b1f5e56049b..851d168d7ff 100644 --- a/apps/desktop/src/locales/zh_CN/messages.json +++ b/apps/desktop/src/locales/zh_CN/messages.json @@ -376,7 +376,7 @@ "message": "您确定要覆盖当前用户名吗?" }, "noneFolder": { - "message": "默认文件夹", + "message": "无文件夹", "description": "This is the folder for uncategorized items" }, "addFolder": { From 44fbba49d165395f990946b4ec49ea6d99b7c162 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 00:31:24 +0200 Subject: [PATCH 05/28] Autosync the updated translations (#3518) Co-authored-by: github-actions <> --- apps/web/src/locales/be/messages.json | 378 +++++++++++------------ apps/web/src/locales/da/messages.json | 4 +- apps/web/src/locales/de/messages.json | 4 +- apps/web/src/locales/en_GB/messages.json | 4 +- apps/web/src/locales/es/messages.json | 16 +- apps/web/src/locales/eu/messages.json | 2 +- apps/web/src/locales/fi/messages.json | 4 +- apps/web/src/locales/hu/messages.json | 24 +- apps/web/src/locales/it/messages.json | 30 +- apps/web/src/locales/ja/messages.json | 18 +- apps/web/src/locales/nl/messages.json | 38 +-- apps/web/src/locales/sk/messages.json | 2 +- apps/web/src/locales/sv/messages.json | 2 +- apps/web/src/locales/zh_CN/messages.json | 2 +- apps/web/src/locales/zh_TW/messages.json | 6 +- 15 files changed, 267 insertions(+), 267 deletions(-) diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json index 252e101dace..6d2e7e409a3 100644 --- a/apps/web/src/locales/be/messages.json +++ b/apps/web/src/locales/be/messages.json @@ -388,7 +388,7 @@ "message": "Перамясціць у арганізацыю" }, "valueCopied": { - "message": "$VALUE$ скапіяваны(-а)", + "message": "$VALUE$ скапіяваны", "description": "Value has been copied to the clipboard.", "placeholders": { "value": { @@ -600,7 +600,7 @@ "message": "Асноўныя паролі немагчыма будзе аднавіць, калі вы іх забудзеце!" }, "masterPassHintDesc": { - "message": "Падказка да асноўнага пароля можа дапамагчы вам яго ўспомніць, калі вы яго забылі." + "message": "Падказка да асноўнага пароля можа дапамагчы вам успомніць яго, калі вы яго забылі." }, "reTypeMasterPass": { "message": "Увядзіце асноўны пароль паўторна" @@ -838,7 +838,7 @@ } }, "moveSelectedItemsDesc": { - "message": "Выберыце папку ў якую вы хочаце перамясціць выбраныя элементы (колькасць: $COUNT$).", + "message": "Выберыце папку ў якую вы хочаце перамясціць выбраныя элементы (колькасць: $COUNT$ шт.).", "placeholders": { "count": { "content": "$1", @@ -930,7 +930,7 @@ "message": "“Пароль файла” і “Пацвярджэнне пароля файла“ не супадаюць." }, "confirmVaultImport": { - "message": "Пацвердзіць імпартаванне сімвала" + "message": "Пацвердзіць імпартаванне сховішча" }, "confirmVaultImportDesc": { "message": "Гэты файл абаронены паролем. Калі ласка, увядзіце пароль для імпартавання даных." @@ -1058,7 +1058,7 @@ "message": "Ітэрацыя KDF" }, "kdfIterationsDesc": { - "message": "Высокае значэнне ітэрацыі KDF дапаможа абараніць галоўны пароль ад атакі поўным пераборам. Мы рэкамендуем значэнне $VALUE$ або вышэй.", + "message": "Высокае значэнне ітэрацыі KDF дапаможа абараніць асноўны пароль ад атакі поўным пераборам. Мы рэкамендуем значэнне $VALUE$ або вышэй.", "placeholders": { "value": { "content": "$1", @@ -1091,13 +1091,13 @@ "message": "Скасаваць аўтарызацыю сеанса" }, "deauthorizeSessionsDesc": { - "message": "Непакоіцеся пра тое, што ўваход у ваш уліковы запіс выкананы іншай прыладзе? Перайдзіце ніжэй, каб закрыць сеансы на ўсіх камп'ютарах або іншых прыладах, якія вы раней выкарыстоўвалі. Гэты крок бяспекі рэкамендаваны, калі вы раней выкарыстоўвалі агульнадаступны камп'ютар або выпадкова захавалі пароль на прыладзе, якая не належыць вам. Гэта дзеянне таксама ачысціць усе папярэднія сеансы двухэтапнага ўваходу." + "message": "Непакоіцеся, што ўваход у ваш уліковы запіс можа быць выкананы на іншай прыладзе? Перайдзіце ніжэй, каб скасаваць аўтарызацыю на ўсіх камп'ютарах або іншых прыладах, якія вы раней выкарыстоўвалі. Гэты крок бяспекі рэкамендаваны, калі вы раней выкарыстоўвалі агульнадаступны камп'ютар або выпадкова захавалі пароль на прыладзе, якая не належыць вам. Гэта дзеянне таксама ачысціць усе папярэднія сеансы двухэтапнага ўваходу." }, "deauthorizeSessionsWarning": { "message": "Працягваючы, вы таксама выйдзіце з бягучага сеанса і вам неабходна будзе ўвайсці паўторна. Вы таксама атрымаеце паўторны запыт двухэтапнага ўваходу, калі гэта функцыя ў вас уключана. Сеансы на іншых прыладах могуць заставацца актыўнымі на працягу адной гадзіны." }, "sessionsDeauthorized": { - "message": "Усе сеансы адкліканы" + "message": "Аўтарызацыя ўсіх сеансаў скасавана" }, "purgeVault": { "message": "Ачысціць сховішча" @@ -1197,7 +1197,7 @@ "message": "Параметры" }, "preferencesDesc": { - "message": "Дастасуйце працу з вэб-сховішчам." + "message": "Дапасуйце працу з вэб-сховішчам." }, "preferencesUpdated": { "message": "Параметры абноўлены" @@ -1330,7 +1330,7 @@ "message": "Гэты пастаўшчык двухэтапнага ўваходу ўключаны для вашага ўліковага запісу." }, "twoStepLoginAuthDesc": { - "message": "Увядзіце галоўны пароль для змянення наладаў двухэтапнага ўваходу." + "message": "Увядзіце асноўны пароль для змянення наладаў двухэтапнага ўваходу." }, "twoStepAuthenticatorDesc": { "message": "Прытрымлівайцеся гэтых крокаў, каб прызначыць двухэтапны ўваход з дапамогай праграмы аўтэнтыфікацыі:" @@ -1369,7 +1369,7 @@ "message": "Вы ўпэўнены, што хочаце адключыць гэтага пастаўшчыка двухэтапнага ўваходу?" }, "twoStepDisabled": { - "message": "Пастаўшчык двухэтапнага ўваходу выключаны." + "message": "Пастаўшчык двухэтапнага ўваходу адключаны." }, "twoFactorYubikeyAdd": { "message": "Дадаць новы YubiKey у ваш уліковы запіс" @@ -1668,7 +1668,7 @@ "message": "Праверыць па базах уцечак" }, "breachUsernameNotFound": { - "message": "$USERNAME$ не знойдзены ў вядомых базах уцечак.", + "message": "$USERNAME$ не знойдзены ў вядомых уцечках даных.", "placeholders": { "username": { "content": "$1", @@ -1780,7 +1780,7 @@ "message": "Усе будучыя функцыі прэміяльнага статусу. Іх будзе больш!" }, "premiumPrice": { - "message": "Усяго толькі за $PRICE$ на год!", + "message": "Усяго за $PRICE$ у год!", "placeholders": { "price": { "content": "$1", @@ -2009,7 +2009,7 @@ "message": "ГБ сховішча для выдалення" }, "storageAddNote": { - "message": "Дадаванне сховішча прывядзе да карэкціроўкі ў вашым выніковым рахунку і адразу будзе спагнана аплата згодна з азначаным метадам. Першы плацеж будзе прапарцыйны астачы бягучага плацежнага перыяду." + "message": "Дабаўленне сховішча прывядзе да карэкціроўкі ў вашым выніковым рахунку і адразу будзе спагнана аплата згодна з азначаным спосабам. Першы плацеж будзе прапарцыйны астачы бягучага плацежнага перыяду." }, "storageRemoveNote": { "message": "Выдаленне сховішча прывядзе да карэкціроўкі вашага выніковага рахунку, які будзе прапарцыйна раздзелены ў выглядзе крэдытаў за наступны плацежны перыяд." @@ -2066,7 +2066,7 @@ "message": "Гэты ўліковы запіс належыць кампаніі." }, "billingEmail": { - "message": "Адрас пошты для разлікаў" + "message": "Адрас пошты для аплаты" }, "businessName": { "message": "Назва кампаніі" @@ -2084,10 +2084,10 @@ "message": "Дадатковыя месцы карыстальнікаў" }, "userSeatsDesc": { - "message": "# карыстальніцкіх ліцэнзій" + "message": "# карыстальніцкіх месцаў" }, "userSeatsAdditionalDesc": { - "message": "Ваш тарыфны план мае наступную колькасць карыстальніцкіх ліцэнзій: $BASE_SEATS$. Вы можаце дадаць дадатковую колькасць карыстальнікаў па кошце $SEAT_PRICE$ за карыстальніка ў месяц.", + "message": "Ваш тарыфны план мае наступную колькасць карыстальніцкіх месцаў: $BASE_SEATS$. Вы можаце дадаць дадатковую колькасць карыстальнікаў па кошце $SEAT_PRICE$ за карыстальніка ў месяц.", "placeholders": { "base_seats": { "content": "$1", @@ -2100,7 +2100,7 @@ } }, "userSeatsHowManyDesc": { - "message": "Колькі ліцэнзій вам неабходна? Пры неабходнасці, вы заўсёды можаце дакупіць дадатковыя ліцэнзіі." + "message": "Колькі месцаў вам неабходна? Пры неабходнасці, вы заўсёды можаце дакупіць дадатковыя месцы." }, "planNameFree": { "message": "Бясплатна", @@ -2176,7 +2176,7 @@ } }, "addShareLimitedUsers": { - "message": "Дабаўленне і абагульненне з $COUNT$ карыстальнікамі", + "message": "Дабаўленне і абагуленне з $COUNT$ карыстальнікамі", "placeholders": { "count": { "content": "$1", @@ -2257,7 +2257,7 @@ "message": "Штогадова" }, "annual": { - "message": "Штогадова" + "message": "Штогадовы" }, "basePrice": { "message": "Базавы кошт" @@ -2899,7 +2899,7 @@ "message": "Спачатку неабходна праверыць адрас электроннай пошты вашага ўліковага запісу." }, "checkInboxForVerification": { - "message": "У папцы ўваходныя павінен быць праверачны код." + "message": "У папцы з уваходнымі павінна быць праверачная спасылка." }, "emailVerified": { "message": "Ваша пошта была праверана." @@ -2974,7 +2974,7 @@ "message": "Выдаліць арганізацыю" }, "deletingOrganizationContentWarning": { - "message": "Увядзіце галоўны пароль для пацвярджэння выдалення $ORGANIZATION$ і ўсіх звязаных даных. Даныя сховішча $ORGANIZATION$ уключаюць:", + "message": "Увядзіце асноўны пароль для пацвярджэння выдалення $ORGANIZATION$ і ўсіх звязаных даных. Даныя сховішча $ORGANIZATION$ уключаюць:", "placeholders": { "organization": { "content": "$1", @@ -3091,7 +3091,7 @@ "message": "Прызначыць абмежаванне месцаў для вашай падпіскі. Пасля дасягнення гэтага абмежавання, вы не зможаце запрашаць новых карыстальнікаў." }, "maxSeatLimit": { - "message": "Максімальная колькасць ліцэнзій (неабавязкова)", + "message": "Максімальная колькасць месцаў (неабавязкова)", "description": "Upper limit of seats to allow through autoscaling" }, "maxSeatCost": { @@ -3106,10 +3106,10 @@ "description": "Seat = User Seat" }, "subscriptionDesc": { - "message": "Карэкціроўка вашай падпіскі прывядзе да прапарцыйнага змянення ў вашым выніковым рахунку. Калі колькасць карыстальнікаў перавысіць колькасць ліцэнзій у вашай падпісцы, вы адразу атрымаеце прапарцыйную плату за дадатковых карыстальнікаў." + "message": "Карэкціроўка вашай падпіскі прывядзе да прапарцыйнага змянення ў вашым выніковым рахунку. Калі колькасць карыстальнікаў перавысіць колькасць месцаў у вашай падпісцы, вы адразу атрымаеце прапарцыйную плату за дадатковых карыстальнікаў." }, "subscriptionUserSeats": { - "message": "Колькасць карыстальнікаў для вашай падпіскі: $COUNT$.", + "message": "Агульная колькасць карыстальнікаў для вашай падпіскі: $COUNT$.", "placeholders": { "count": { "content": "$1", @@ -3133,10 +3133,10 @@ "message": "Для атрымання дадатковай дапамогі ў кіраванні вашай падпіскай, калі ласка, звярніцеся ў службу падтрымкі." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Карэкціроўка вашай падпіскі прывядзе да прапарцыйнага змянення ў вашым выніковым рахунку. Калі колькасць карыстальнікаў перавысіць колькасць ліцэнзій у вашай падпісцы, вы адразу атрымаеце прапарцыйную плату за дадатковых карыстальнікаў." + "message": "Карэкціроўка вашай падпіскі прывядзе да прапарцыйнага змянення ў вашым выніковым рахунку. Калі колькасць карыстальнікаў перавысіць колькасць месцаў у вашай падпісцы, вы адразу атрымаеце прапарцыйную плату за дадатковых карыстальнікаў." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Карэкціроўка вашай падпіскі прывядзе да прапарцыйнага змянення ў вашым выніковым рахунку. Калі колькасць карыстальнікаў перавысіць колькасць ліцэнзій у вашай падпісцы, вы адразу атрымаеце прапарцыйную плату за дадатковых карыстальнікаў, пакуль не будзе дасягнута абмежаванне $MAX$ ліцэнзій.", + "message": "Карэкціроўка вашай падпіскі прывядзе да прапарцыйнага змянення ў вашым выніковым рахунку. Калі колькасць карыстальнікаў перавысіць колькасць месцаў у вашай падпісцы, вы адразу атрымаеце прапарцыйную плату за дадатковых карыстальнікаў, пакуль не будзе дасягнута абмежаванне (максімальная колькасць месцаў: $MAX$).", "placeholders": { "max": { "content": "$1", @@ -3172,7 +3172,7 @@ } }, "subscriptionMaxReached": { - "message": "Карэкціроўка вашай падпіскі прывядзе да прапарцыйнага змянення ў вашым выніковым рахунку. Вы не зможаце запрасіць больш за $COUNT$ карыстальнікаў без павелічэння ліцэнзій вашай падпіскі.", + "message": "Карэкціроўка вашай падпіскі прывядзе да прапарцыйнага змянення ў вашым выніковым рахунку. Вы не зможаце запрасіць больш за $COUNT$ карыстальнікаў без павелічэння месцаў у вашай падпісцы.", "placeholders": { "count": { "content": "$1", @@ -3181,16 +3181,16 @@ } }, "seatsToAdd": { - "message": "Дадаецца месца" + "message": "Дадаецца месцаў" }, "seatsToRemove": { - "message": "Ліцэнзіі для выдалення" + "message": "Месцаў для выдалення" }, "seatsAddNote": { - "message": "Дадаванне карыстальніцкіх ліцэнзій прывядзе да карэкціроўкі ў вашым выніковым рахунку і адразу будзе спагнана аплата згодна з азначаным метадам. Першы плацеж будзе прапарцыйны астачы бягучага плацежнага перыяду." + "message": "Дадаванне карыстальніцкіх месцаў прывядзе да карэкціроўкі ў вашым выніковым рахунку і адразу будзе спагнана аплата згодна з азначаным спосабам. Першы плацеж будзе прапарцыйны астачы бягучага плацежнага перыяду." }, "seatsRemoveNote": { - "message": "Выдаленне карыстальніцкіх ліцэнзій прывядзе да змен у вашым выніковым рахунку, які будзе прапарцыйна раздзелены ў выглядзе крэдытаў за наступны плацежны перыяд." + "message": "Выдаленне карыстальніцкіх месцаў прывядзе да карэкціроўкі вашага выніковага рахунку, які будзе прапарцыйна раздзелены ў выглядзе крэдытаў за наступны плацежны перыяд." }, "adjustedSeats": { "message": "Скарэктавана месцаў карыстальніка: $AMOUNT$.", @@ -3214,7 +3214,7 @@ "message": "Зараз вы выкарыстоўваеце састарэлую схему шыфравання." }, "updateEncryptionKeyDesc": { - "message": "Мы перайшлі на больш складаныя ключы шыфравання, якія забяспечваюць лепшую бяспеку і доступ да самых новых функцый. Абнаўленне вашы ключоў шыфравання адбываецца хутка і лёгка. Проста ўвядзіце свой галоўны пароль знізу. Гэта абнаўленне ўрэшце стане абавязковым." + "message": "Мы перайшлі на больш складаныя ключы шыфравання, якія забяспечваюць лепшую бяспеку і доступ да самых новых функцый. Абнаўленне вашы ключоў шыфравання адбываецца хутка і лёгка. Проста ўвядзіце свой асноўны пароль знізу. Гэта абнаўленне ўрэшце стане абавязковым." }, "updateEncryptionKeyWarning": { "message": "Пасля абнаўлення вашага ключа шыфравання вам неабходна выйсці з сістэмы, а потым выканаць паўторны ўваход ва ўсе праграмы Bitwarden, якія вы зараз выкарыстоўваеце (напрыклад, мабільныя праграмы або пашырэнні для браўзераў). Збой пры выхадзе і паўторным уваходзе (пры гэтым спампоўваецца ваш новы ключ шыфравання) можа стаць прычынай пашкоджання даных. Мы паспрабуем аўтаматычна ажыццявіць завяршэнне ўсіх вашых сеансаў, але гэта можа адбывацца з затрымкай." @@ -3250,7 +3250,7 @@ "message": "Вы нічога не выбралі." }, "acceptPolicies": { - "message": "Ставячы гэты сцяжок вы пагаджаецеся з наступным:" + "message": "Ставячы гэты сцяжок, вы пагаджаецеся з наступным:" }, "acceptPoliciesRequired": { "message": "Умовы выкарыстання і Палітыка прыватнасці не былі пацверджаны." @@ -3433,7 +3433,7 @@ "message": "Патрабуецца асноўны пароль" }, "masterPassPolicyDesc": { - "message": "Задайце мінімальныя патрабаванні для надзейнасці асноўнага пароля." + "message": "Задайце мінімальныя патрабаванні да надзейнасці асноўнага пароля." }, "twoStepLoginPolicyTitle": { "message": "Патрабуецца двухэтапны ўваход" @@ -3445,7 +3445,7 @@ "message": "Удзельнікі арганізацыі, якія не з'яўляюцца ўладальнікамі або адміністратарамі і якія не ўключылі двухэтапны ўваход у сваіх уліковых запісаць будуць выдалены з арганізацыі і атрымаюць адпаведнае апавяшчэнне па электроннай пошце." }, "twoStepLoginPolicyUserWarning": { - "message": "Вы з'яўляецеся ўдзельнікам арганізацыі, якая патрабуе выкарыстанне двухэтапнага ўваходу для вашага ўліковага запісу. Калі вы адключыце ўсіх пастаўшчыкоў двухэтапнага ўваходу, то вы будзеце аўтаматычна выдалены з гэтай арганізацыі." + "message": "Вы з'яўляецеся ўдзельнікам арганізацыі, якая патрабуе выкарыстанне двухэтапнага ўваходу для вашага ўліковага запісу. Калі вы адключыце ўсіх пастаўшчыкоў двухэтапнага ўваходу, вы будзеце аўтаматычна выдалены з гэтай арганізацыі." }, "passwordGeneratorPolicyDesc": { "message": "Прызначыць патрабаванні для генератара пароляў." @@ -3475,13 +3475,13 @@ } }, "policyInEffectUppercase": { - "message": "Уключыць адну ці больш вялікіх літар" + "message": "Уключыць адну або некалькі вялікіх літар" }, "policyInEffectLowercase": { - "message": "Уключыць адну ці больш малых літар" + "message": "Уключыць адну або некалькі малых літар" }, "policyInEffectNumbers": { - "message": "Уключыць адну або больш лічбаў" + "message": "Уключыць адну або некалькі лічбаў" }, "policyInEffectSpecial": { "message": "Уключаць хаця б адзін з наступных спецыяльных сімвалаў $CHARS$", @@ -3493,7 +3493,7 @@ } }, "masterPasswordPolicyRequirementsNotMet": { - "message": "Ваш новы асноўны пароль не адпавядае патрабаванням палітыцы." + "message": "Ваш новы асноўны пароль не адпавядае патрабаванням палітыкі." }, "minimumNumberOfWords": { "message": "Мінімум лічбаў або слоў" @@ -3508,7 +3508,7 @@ "message": "Дзеянне пасля заканчэння часу сховішча" }, "vaultTimeoutActionLockDesc": { - "message": "Для таго, каб атрымаць доступ да заблакіраванага сховішча, вам неабходна ўвесці галоўны пароль або скарыстацца іншым метадам разблакіроўкі." + "message": "Для атрымання доступу да заблакіраванага сховішча, вам неабходна ўвесці асноўны пароль або скарыстацца іншым метадам разблакіроўкі." }, "vaultTimeoutActionLogOutDesc": { "message": "Для таго, каб аднавіць доступ да сховішча, патрабуецца паўторная аўтарызацыя." @@ -3624,7 +3624,7 @@ "message": "Задаць асноўны пароль" }, "ssoCompleteRegistration": { - "message": "Для завяршэння працэсу ўваходу з дапамогай SSO, прызначце галоўны пароль для доступу да вашага сховішча і яго абароны." + "message": "Для завяршэння працэсу ўваходу з дапамогай SSO, прызначце асноўны пароль для доступу да вашага сховішча і яго абароны." }, "identifier": { "message": "Ідэнтыфікатар" @@ -3710,7 +3710,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Адпраўленне створана", + "message": "Створаны Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { @@ -3718,11 +3718,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { - "message": "Адпраўленне выдалена", + "message": "Send выдалены", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSend": { - "message": "Выдаленне Send", + "message": "Выдаліць Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendConfirmation": { @@ -3796,7 +3796,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "allSends": { - "message": "Усе адпраўленні" + "message": "Усе Send'ы" }, "maxAccessCountReached": { "message": "Дасягнута максімальная колькасць доступаў", @@ -3885,7 +3885,7 @@ "message": "Перадача ўласнасці" }, "takeoverDesc": { - "message": "Можа скідаць пароль вашага ўліковага запісу." + "message": "Можа скідаць асноўны пароль вашага ўліковага запісу." }, "waitTime": { "message": "Час чакання" @@ -3930,7 +3930,7 @@ "message": "Запытаць доступ" }, "requestAccessConfirmation": { - "message": "Вы ўпэўнены, што хочаце запытаць экстранны доступ? Вам будзе забяспечаны доступ праз $WAITTIME$ дзён або калі карыстальнік уручную ўхваліць вас.", + "message": "Вы ўпэўнены, што хочаце запытаць экстранны доступ? Вам будзе забяспечаны доступ (меркаваная колькасць дзён: $WAITTIME$) або калі карыстальнік уручную ўхваліць запыт.", "placeholders": { "waittime": { "content": "$1", @@ -4118,10 +4118,10 @@ "message": "Палітыка арганізацыі ўплывае на вашы параметры ўласнасці." }, "personalOwnershipPolicyInEffectImports": { - "message": "Імпартаванне элементаў у вашым асабістым сховішчы адключаны палітыкай арганізацыі." + "message": "Імпартаванне элементаў у вашым асабістым сховішчы адключана палітыкай арганізацыі." }, "personalOwnershipCheckboxDesc": { - "message": "Адключыць асабістую ўласная для карыстальнікаў арганізацыі" + "message": "Адключыць асабістую ўласнасць для карыстальнікаў арганізацыі" }, "textHiddenByDefault": { "message": "Пры доступе да Send прадвызначана хаваць тэкст", @@ -4268,7 +4268,7 @@ } }, "eventAdminPasswordReset": { - "message": "Галоўны пароль скінуты карыстальнікам $ID$.", + "message": "Асноўны пароль скінуты карыстальнікам $ID$.", "placeholders": { "id": { "content": "$1", @@ -4316,73 +4316,73 @@ "message": "Пароль паспяхова скінуты!" }, "resetPasswordEnrollmentWarning": { - "message": "Рэгістрацыя дазволіць адміністратарам арганізацыі змяць ваш галоўны пароль" + "message": "Рэгістрацыя дазволіць адміністратарам арганізацыі змяняць ваш асноўны пароль" }, "resetPasswordPolicy": { "message": "Скіданне асноўнага пароля" }, "resetPasswordPolicyDescription": { - "message": "Дазволіць адміністратарам скідаць галоўны пароль для ўдзельнікаў." + "message": "Дазволіць адміністратарам скідаць асноўны пароль для ўдзельнікаў." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Карыстальнікі арганізацыі павінны зарэгістравацца самастойна або быць зарэгістраванымі аўтаматычна, каб адміністратары маглі скінуць іх асноўны пароль." }, "resetPasswordPolicyAutoEnroll": { "message": "Аўтаматычная рэгістрацыя" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "Усе карыстальнікі будуць аўтаматычна зарэгістраваны на скіданне пароля, пасля таго як іх запрашэнне будзе прынята і ім не будзе дазволена адмовіцца ад яго выканання." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Карыстальнікі, якія ўжо ўваходзяць у арганізацыю не змогуць зарэгістравацца на скіданне пароля папярэднім чыслом. Яны павінны будуць самастойна зарэгістравацца, перад тым як адміністратары змогуць скінуць іх асноўны пароль." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Аўтаматычна рэгістраваць новых карыстальнікаў" }, "resetPasswordAutoEnrollInviteWarning": { - "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + "message": "Гэта арганізацыя мае карпаратыўную палітыку, якая аўтаматычна зарэгіструе ваша скіданне пароля. Рэгістрацыя дазволіць адміністратарам арганізацыі змяняць ваш асноўны пароль." }, "resetPasswordOrgKeysError": { - "message": "Organization Keys response is null" + "message": "Пусты адказ на ключы арганізацыі" }, "resetPasswordDetailsError": { - "message": "Reset Password Details response is null" + "message": "Пусты адказ на скіданне пароля" }, "trashCleanupWarning": { - "message": "Items that have been in Trash more than 30 days will be automatically deleted." + "message": "Элементы, якія знаходзяцца ў сметніцы больш чым 30 дзён будуць выдаляцца аўтаматычна." }, "trashCleanupWarningSelfHosted": { - "message": "Items that have been in Trash for a while will be automatically deleted." + "message": "Элементы, якія будуць знаходзіцца ў сметніцы пэўны час будуць выдаляцца аўтаматычна." }, "passwordPrompt": { - "message": "Master password re-prompt" + "message": "Паўторны запыт асноўнага пароля" }, "passwordConfirmation": { - "message": "Master password confirmation" + "message": "Пацвярджэнне асноўнага пароля" }, "passwordConfirmationDesc": { - "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + "message": "Гэта дзеянне абаронена. Для працягу, калі ласка, паўторна ўвядзіце свой асноўны пароль, каб пацвердзіць вашу асобу." }, "reinviteSelected": { "message": "Паўторна адправіць запрашэнні" }, "noSelectedUsersApplicable": { - "message": "This action is not applicable to any of the selected users." + "message": "Гэта дзеянне нельга ўжыць для ніводнага з выбраных карыстальнікаў." }, "removeUsersWarning": { - "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + "message": "Вы ўпэўнены, што хочаце выдаліць наступных карыстальнікаў? Для завяршэння працэсу можа спатрэбіцца некалькі секунд і гэта дзеянне нельга перарваць або скасаваць." }, "removeOrgUsersConfirmation": { "message": "Пасля выдалення ўдзельніка(-ў) яны згубяць доступ да даных арганізацыі і гэта дзеянне з'яўляецца незваротным. Для паўторнага дабаўлення ўдзельніка ў арганізацыю, яго неабходна будзе зноў запрасіць туды. Працэс можа заняць некалькі секунд і яго немагчыма перарваць або скасаваць." }, "revokeUsersWarning": { - "message": "When member(s) are revoked, they no longer have access to organization data. To quickly restore member access, go to the Revoked tab. The process may take a few seconds to complete and cannot be interrupted or canceled." + "message": "Калі ўдзельнік(-і) адкліканы, яны больш не змогуць атрымаць доступ да даных арганізацыі. Для хуткага аднаўлення доступу ўдзельніка, перайдзіце ва ўкладку \"Адкліканыя\". Для завяршэння працэсу можа спатрэбіцца некалькі секунд і гэта дзеянне не можа быць перарвана або скасавана." }, "theme": { "message": "Тэма" }, "themeDesc": { - "message": "Choose a theme for your web vault." + "message": "Выберыце тэму для свайго вэб-сховішча." }, "themeSystem": { "message": "Выкарыстоўваць сістэмную тэму" @@ -4400,22 +4400,22 @@ "message": "Статус масавага дзеяння" }, "bulkConfirmMessage": { - "message": "Confirmed successfully." + "message": "Паспяхова пацверджана." }, "bulkReinviteMessage": { - "message": "Reinvited successfully." + "message": "Паспяхова паўторна запрошаны." }, "bulkRemovedMessage": { "message": "Паспяхова выдалена" }, "bulkRevokedMessage": { - "message": "Revoked organization access successfully" + "message": "Паспяхова адкліканы доступ да арганізацыі" }, "bulkRestoredMessage": { - "message": "Restored organization access successfully" + "message": "Паспяхова адноўлены доступ да арганізацыі" }, "bulkFilteredMessage": { - "message": "Excluded, not applicable for this action." + "message": "Выключэнне нельга ўжыць для гэтага дзеяння." }, "fingerprint": { "message": "Адбітак" @@ -4433,7 +4433,7 @@ "message": "Памылка" }, "resetPasswordManageUsers": { - "message": "Manage Users must also be enabled with the Manage Password Reset permission" + "message": "Кіраванне карыстальнікамі павінна таксама быць уключана з дазволам \"Кіраванне скіданнем пароля\"" }, "setupProvider": { "message": "Налады пастаўшчыка" @@ -4463,7 +4463,7 @@ "message": "Сэрвісны карыстальнік" }, "serviceUserDesc": { - "message": "Service users can access and manage all client organizations." + "message": "Сэрвісныя карыстальнікі могуць атрымліваць доступ і кіраваць усімі кліенцкімі арганізацыямі." }, "providerInviteUserDesc": { "message": "Запрасіць новага карыстальніка да вашага пастаўшчыка, увёўшы электронную пошту яго ўліковага запісу Bitwarden ніжэй. Калі ён не мае ўліковага запісу, то ён атрымае запыт на яго стварэнне." @@ -4554,16 +4554,16 @@ "message": "Дадаць" }, "updatedMasterPassword": { - "message": "Галоўны пароль абноўлены" + "message": "Асноўны пароль абноўлены" }, "updateMasterPassword": { - "message": "Абнавіць галоўны пароль" + "message": "Абнавіць асноўны пароль" }, "updateMasterPasswordWarning": { - "message": "Ваш галоўны пароль быў нядаўна зменены адміністратарам вашай арганізацыі. Для атрымання доступу да сховішча, вы павінны абнавіць галоўны пароль. Працягваючы, вы выйдзіце з бягучага сеанса і вам неабходна будзе ўвайсці паўторна. Сеансы на іншых прыладах могуць заставацца актыўнымі на працягу адной гадзіны." + "message": "Ваш асноўны пароль быў нядаўна зменены адміністратарам вашай арганізацыі. Для атрымання доступу да сховішча, вы павінны абнавіць асноўны пароль. Працягваючы, вы выйдзіце з бягучага сеанса і вам неабходна будзе ўвайсці паўторна. Сеансы на іншых прыладах могуць заставацца актыўнымі на працягу адной гадзіны." }, "masterPasswordInvalidWarning": { - "message": "Ваш галоўны пароль не адпавядае патрабаванням гэтай арганізацыі. Каб далучыцца да арганізацыі, вам неабходна абнавіць свой галоўны пароль зараз. Працягнуўшы, вы выйдзіце з бягучага сеанса і вам спатрэбіцца ўвайсці зноў. Сеансы на іншых прыладах могуць заставацца актыўнымі на працягу гадзіны." + "message": "Ваш асноўны пароль не адпавядае патрабаванням гэтай арганізацыі. Каб далучыцца да арганізацыі, вам неабходна абнавіць свой асноўны пароль зараз. Працягнуўшы, вы выйдзіце з бягучага сеанса і вам спатрэбіцца ўвайсці зноў. Сеансы на іншых прыладах могуць заставацца актыўнымі на працягу гадзіны." }, "maximumVaultTimeout": { "message": "Час чакання сховішча" @@ -4584,7 +4584,7 @@ "message": "Хвіліны" }, "vaultTimeoutPolicyInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "message": "Палітыка вашай арганізацыі ўплывае на час чакання сховішча. Максімальны дазволены час чакання сховішча $HOURS$ гадз. і $MINUTES$ хв.", "placeholders": { "hours": { "content": "$1", @@ -4600,34 +4600,34 @@ "message": "Карыстальніцкі час чакання сховішча" }, "vaultTimeoutToLarge": { - "message": "Your vault timeout exceeds the restriction set by your organization." + "message": "Час чакання вашага сховішча перавышае дазволеныя абмежаванні, якія прызначыла ваша арганізацыя." }, "vaultCustomTimeoutMinimum": { - "message": "Minimum custom timeout is 1 minute." + "message": "Мінімальны карыстальніцкі час чакання складае 1 хвіліну." }, "vaultTimeoutRangeError": { - "message": "Vault Timeout is not within allowed range." + "message": "Час чакання сховішча па-за межамі дазволенага дыяпазону." }, "disablePersonalVaultExport": { - "message": "Remove individual vault export" + "message": "Выдаліць экспартаванне асабістага сховішча" }, "disablePersonalVaultExportDesc": { - "message": "Do not allow members to export their individual vault data." + "message": "Не дазваляць удзельнікам экспартаваць іх індывідуальнае сховішча." }, "vaultExportDisabled": { "message": "Экспартаванне сховішча адключана" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "Адна або больш палітык арганізацыі не дазваляюць вам экспартаваць асабістае сховішча." }, "selectType": { - "message": "Select SSO Type" + "message": "Выберыце тып SSO" }, "type": { "message": "Тып" }, "openIdConnectConfig": { - "message": "OpenID Connect Configuration" + "message": "Канфігурацыя злучэння OpenID" }, "samlSpConfig": { "message": "Канфігурацыя пастаўшчыка паслуг SAML" @@ -4639,10 +4639,10 @@ "message": "Шлях да зваротнага выкліку" }, "signedOutCallbackPath": { - "message": "Signed Out Callback Path" + "message": "Выйсці са шляху да зваротнага выкліку" }, "authority": { - "message": "Authority" + "message": "Аўтарызацыя" }, "clientId": { "message": "Ідэнт. кліента" @@ -4654,28 +4654,28 @@ "message": "Адрас метаданых" }, "oidcRedirectBehavior": { - "message": "OIDC Redirect Behavior" + "message": "Паводзіны перанакіравання OIDC" }, "getClaimsFromUserInfoEndpoint": { - "message": "Get claims from user info endpoint" + "message": "Атрымліваць патрабаванні ад канцавога пункту інфармацыі аб карыстальніку" }, "additionalScopes": { "message": "Карыстальніцкія вобласці" }, "additionalUserIdClaimTypes": { - "message": "Custom User ID Claim Types" + "message": "Тыпы патрабаванняў да ідэнтыфікатара карыстальніка" }, "additionalEmailClaimTypes": { "message": "Тыпы патрабаванняў электроннай пошты" }, "additionalNameClaimTypes": { - "message": "Custom Name Claim Types" + "message": "Тыпы патрабаванняў да імя карыстальніка" }, "acrValues": { "message": "Запытаныя значэнні спасылак класа кантэксту аўтэнтыфікацыі" }, "expectedReturnAcrValue": { - "message": "Expected \"acr\" Claim Value In Response" + "message": "Чакаецца значэнне запыту \"acr\" у адказе" }, "spEntityId": { "message": "ID аб'екта SP" @@ -4684,76 +4684,76 @@ "message": "URL-адрас метаданых SAML 2.0" }, "spAcsUrl": { - "message": "Assertion Consumer Service (ACS) URL" + "message": "URL-адрасы службы пацвярджэння кліентаў (ACS)" }, "spNameIdFormat": { "message": "Фармат ідэнтыфікатара назвы" }, "spOutboundSigningAlgorithm": { - "message": "Outbound Signing Algorithm" + "message": "Алгарытм выходнага подпісу" }, "spSigningBehavior": { "message": "Паводзіны пры падпісанні" }, "spMinIncomingSigningAlgorithm": { - "message": "Minimum Incoming Signing Algorithm" + "message": "Мінімальны алгарытм уваходнага подпісу" }, "spWantAssertionsSigned": { - "message": "Expect signed assertions" + "message": "Чакаецца подпіс пацвярджэнняў" }, "spValidateCertificates": { "message": "Праверка сертыфікатаў" }, "idpEntityId": { - "message": "Entity ID" + "message": "Ідэнтыфікатар аб'екта" }, "idpBindingType": { "message": "Тып прывязкі" }, "idpSingleSignOnServiceUrl": { - "message": "Single Sign On Service URL" + "message": "URL-службы адзінага ўваходу" }, "idpSingleLogoutServiceUrl": { - "message": "Single Log Out Service URL" + "message": "URL-службы адзінага выхаду" }, "idpX509PublicCert": { - "message": "X509 Public Certificate" + "message": "Публічны сертыфікат X509" }, "idpOutboundSigningAlgorithm": { - "message": "Outbound Signing Algorithm" + "message": "Алгарытм выходнага подпісу" }, "idpAllowUnsolicitedAuthnResponse": { "message": "Дазваляць непажаданы адказ аўтэнтыфікацыі" }, "idpAllowOutboundLogoutRequests": { - "message": "Allow outbound logout requests" + "message": "Дазваляць выходныя запыты для завяршэння сеансу" }, "idpSignAuthenticationRequests": { "message": "Падпісваць запыты аўтэнтыфікацыі" }, "ssoSettingsSaved": { - "message": "Single Sign-On configuration was saved." + "message": "Канфігурацыя адзінага ўваходу захавана." }, "sponsoredFamilies": { - "message": "Free Bitwarden Families" + "message": "Бясплатны тарыфны план Bitwarden Families" }, "sponsoredFamiliesEligible": { - "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + "message": "Вы і ваша сям'я маеце права на бясплатны тарыфны план Bitwarden Families. Актывуйце доступ з асабістай электроннай поштай, каб захаваць свае даныя ў бяспецы, нават калі вы не на працы." }, "sponsoredFamiliesEligibleCard": { - "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + "message": "Актывуйце сёння бясплатны тарыфны план Bitwarden Families, каб захаваць свае даныя ў бяспецы, нават калі вы не на працы." }, "sponsoredFamiliesInclude": { - "message": "The Bitwarden for Families plan include" + "message": "Тарыфны план Bitwarden Families уключае" }, "sponsoredFamiliesPremiumAccess": { - "message": "Premium access for up to 6 users" + "message": "Прэміяльны доступ, які абмяжоўваецца 6 карыстальнікамі" }, "sponsoredFamiliesSharedCollections": { - "message": "Shared collections for Family secrets" + "message": "Абагуленыя калекцыі для сямейных сакрэтаў" }, "badToken": { - "message": "The link is no longer valid. Please have the sponsor resend the offer." + "message": "Спасылка больш не дзейнічае. Калі ласка, папрасіце спонсара паўторна адправіць прапанову." }, "reclaimedFreePlan": { "message": "Бясплатны план адноўлены" @@ -4762,28 +4762,28 @@ "message": "Актываваць" }, "sponsoredFamiliesSelectOffer": { - "message": "Select the organization you would like sponsored" + "message": "Выберыце арганізацыю, якую хочаце спансіраваць" }, "familiesSponsoringOrgSelect": { - "message": "Which Free Families offer would you like to redeem?" + "message": "Якую бясплатную сямейную прапанову вы хочаце актываваць?" }, "sponsoredFamiliesEmail": { - "message": "Enter your personal email to redeem Bitwarden Families" + "message": "Увядзіце свой асабісты адрас электроннай пошты Bitwarden Families" }, "sponsoredFamiliesLeaveCopy": { - "message": "If you remove an offer or are removed from the sponsoring organization, your Families sponsorship will expire at the next renewal date." + "message": "Калі вы выдаліце прапанову або будзеце выключаны са спонсарскай арганізацыі, ваш доступ да тарыфнага плана Bitwarden Families завершыцца ў наступную дату падаўжэння." }, "acceptBitwardenFamiliesHelp": { - "message": "Accept offer for an existing organization or create a new Families organization." + "message": "Пагадзіцеся на прапанову для існуючай арганізацыі або стварыце новую сямейную арганізацыю." }, "setupSponsoredFamiliesLoginDesc": { - "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + "message": "Вам прапанаваны бясплатны тарыфны план Bitwarden Families ад арганізацыі. Для працягу, вам неабходна ўвайсці ва ўліковы запіс з якога вы атрымалі прапанову." }, "sponsoredFamiliesAcceptFailed": { - "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + "message": "Немагчыма праняць прапанову. Калі ласка, адпраўце прапанову на электронную пошту паўторна са свайго карпаратыўнага ўліковага запісу." }, "sponsoredFamiliesAcceptFailedShort": { - "message": "Unable to accept offer. $DESCRIPTION$", + "message": "Немагчыма праняць прапанову. $DESCRIPTION$", "placeholders": { "description": { "content": "$1", @@ -4792,10 +4792,10 @@ } }, "sponsoredFamiliesOffer": { - "message": "Accept Free Bitwarden Families" + "message": "Прыняць бясплатна Bitwarden Families" }, "sponsoredFamiliesOfferRedeemed": { - "message": "Free Bitwarden Families offer successfully redeemed" + "message": "Прапанова на бясплатны тарыфны план Bitwarden Families паспяхова актывавана" }, "redeemed": { "message": "Актывавана" @@ -4813,7 +4813,7 @@ } }, "resendEmailLabel": { - "message": "Resend Sponsorship email to $NAME$ sponsorship", + "message": "Паўторна адправіць ліст пра спансаванне карыстальніку $NAME$", "placeholders": { "name": { "content": "$1", @@ -4831,25 +4831,25 @@ "message": "Атрымальнік" }, "removeSponsorship": { - "message": "Выдаліць спонсара" + "message": "Выдаліць спансаванне" }, "removeSponsorshipConfirmation": { - "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + "message": "Пасля выдалення спонсарства, вы будзеце адказваць за гэту падпіску і звязаныя рахункі. Вы ўпэўнены, што хочаце працягнуць?" }, "sponsorshipCreated": { - "message": "Спонсар створаны" + "message": "Спансаванне створана" }, "emailSent": { "message": "Ліст адпраўлены" }, "revokeSponsorshipConfirmation": { - "message": "After removing this account, the Families plan sponsorship will expire at the end of the billing period. You will not be able to redeem a new sponsorship offer until the existing one expires. Are you sure you want to continue?" + "message": "Пасля выдалення гэтага ўліковага запісу спонсарства тарыфнага плана Bitwarden Families завяршыцца ў канцы плацежнага перыяду. У вас не будзе магчымасці скарыстацца новай спонсарскай прапановай, пакуль не завяршыцца тэрмін бягучай прапановы. Вы ўпэўнены, што хочаце працягнуць?" }, "removeSponsorshipSuccess": { - "message": "Спонсар выдалены" + "message": "Спансаванне выдалена" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Памылка Key Connector: пераканайцеся, што Key Connector даступны і карэктна працуе." }, "keyConnectorUrl": { "message": "URL-адрас Key Connector" @@ -4867,7 +4867,7 @@ "message": "Праверачны код" }, "confirmIdentity": { - "message": "Confirm your identity to continue." + "message": "Пацвердзіце сваю асобу для працягу." }, "verificationCodeRequired": { "message": "Патрабуецца праверачны код." @@ -4876,7 +4876,7 @@ "message": "Памылковы праверачны код" }, "convertOrganizationEncryptionDesc": { - "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "message": "$ORGANIZATION$ выкарыстоўвае SSO з уласным серверам ключоў. Асноўны пароль для ўдзельнікаў гэтай арганізацыі больш не патрабуецца.", "placeholders": { "organization": { "content": "$1", @@ -4888,10 +4888,10 @@ "message": "Пакінуць арганізацыю" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Выдаліць асноўны пароль" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Асноўны пароль выдалены." }, "allowSso": { "message": "Дазволіць аўтэнтыфікацыю SSO" @@ -4915,19 +4915,19 @@ "message": "Для наладжвання расшыфроўкі Key Connector неабходна палітыка аўтэнтыфікацыі SSO і адзінай арганізацыі." }, "memberDecryptionOption": { - "message": "Member Decryption Options" + "message": "Параметры расшыфроўкі ўдзельніка" }, "memberDecryptionPassDesc": { - "message": "Once authenticated, members will decrypt vault data using their Master Passwords." + "message": "Пасля аўтэнтыфікацыі ўдзельнікі будуць расшыфроўваць даныя сховішча з выкарыстаннем сваіх асноўных пароляў." }, "keyConnector": { "message": "Key Connector" }, "memberDecryptionKeyConnectorDesc": { - "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + "message": "Падключыце аўтарызацыю з дапамогай SSO да свайго ўласнага сервера расшыфроўкі ключоў. Пры дапамозе гэтага параметра ўдзельнікам больш непатрэбна будзе выкарыстоўваць свае асноўныя паролі для расшыфроўкі даных сховішча. Звярніцеся ў службу падтрымкі, каб атрымаць дапамогу з наладжваннем." }, "keyConnectorPolicyRestriction": { - "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + "message": "\"Уваход з дапамогай SSO і расшыфроўкай Key Connector\" уключаны. Гэта палітыка распаўсюджваецца толькі на ўладальнікаў і адміністратараў." }, "enabledSso": { "message": "SSO уключана" @@ -4939,55 +4939,55 @@ "message": "Key Connector уключаны" }, "disabledKeyConnector": { - "message": "Disabled Key Connector" + "message": "Key Connector адключаны" }, "keyConnectorWarning": { - "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + "message": "Як толькі ўдзельнікі пачнуць выкарыстоўваць Key Connector, ваша арганізацыя не зможа вярнуцца да расшыфроўкі з асноўным паролем. Працягвайце толькі калі вы гатовы разгарнуць сервер ключоў і кіраваць ім." }, "migratedKeyConnector": { - "message": "Migrated to Key Connector" + "message": "Выканана міграцыя на Key Connector" }, "paymentSponsored": { - "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + "message": "Калі ласка, забяспечце спосаб аплаты для звязанай арганізацыі. Не хвалюйцеся, мы нічога не будзем спаганяць з вас, калі вы не выберыце дадатковыя функцыі або ваша спонсарская прапанова не будзе пратэрмінавана. " }, "orgCreatedSponsorshipInvalid": { - "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + "message": "Спонсарская прапанова пратэрмінавана. Вы можаце выдаліць створаную арганізацыю, каб пазбегнуць спагнання грашовых сродкаў пасля завяршэння 7-дзённага выпрабавальнага перыяду. У адваротным выпадку вы можаце закрыць гэта апавяшчэнне і ўзяць на сябе плацежныя абавязкі." }, "newFamiliesOrganization": { - "message": "New Families Organization" + "message": "Новая сямейная арганізацыя" }, "acceptOffer": { "message": "Прыняць прапанову" }, "sponsoringOrg": { - "message": "Sponsoring Organization" + "message": "Спонсарская арганізацыя" }, "keyConnectorTest": { "message": "Тэст" }, "keyConnectorTestSuccess": { - "message": "Success! Key Connector reached." + "message": "Паспяхова! Key Connector падлучаны." }, "keyConnectorTestFail": { - "message": "Cannot reach Key Connector. Check URL." + "message": "Немагчыма падлучыцца да Key Connector. Праверце URL-адрас." }, "sponsorshipTokenHasExpired": { - "message": "The sponsorship offer has expired." + "message": "Тэрмін дзеяння спонсарскай прапановы пратэрмінаваны." }, "freeWithSponsorship": { - "message": "БЯСПЛАТНА дзякуючы спонсару" + "message": "БЯСПЛАТНА дзякуючы спонсарству" }, "viewBillingSyncToken": { - "message": "View Billing Sync Token" + "message": "Паглядзець плацежны токен сінхранізацыі" }, "generateBillingSyncToken": { - "message": "Generate Billing Sync Token" + "message": "Генерыраваць плацежны токен сінхранізацыі" }, "copyPasteBillingSync": { - "message": "Copy and paste this token into the Billing Sync settings of your self-hosted organization." + "message": "Скапіюйце і ўстаўце гэты токен у налады плацежнай сінхранізацыі сваёй уласнай размешчанай арганізацыі." }, "billingSyncCanAccess": { - "message": "Your Billing Sync token can access and edit this organization's subscription settings." + "message": "Ваш токен плацежнай сінхранізацыі можа атрымаць доступ і адрэдагаваць налады падпіскі гэтай арганізацыі." }, "manageBillingSync": { "message": "Кіраваць плацежнай сінхранізацыяй" @@ -5002,16 +5002,16 @@ "message": "Змяніць токен" }, "rotateBillingSyncTokenWarning": { - "message": "If you proceed, you will need to re-setup billing sync on your self-hosted server." + "message": "Калі вы працягніце, вам будзе неабходна паўторна наладзіць плацежную сінхранізацыю на вашым серверы." }, "rotateBillingSyncTokenTitle": { - "message": "Rotating the Billing Sync Token will invalidate the previous token." + "message": "Змяненне токена плацежнай сінхранізацыі прывядзе да скасавання папярэдняга токена." }, "selfHostingTitle": { "message": "Уласнае размяшчэнне" }, "selfHostingEnterpriseOrganizationSectionCopy": { - "message": "To set-up your organization on your own server, you will need to upload your license file. To support Free Families plans and advanced billing capabilities for your self-hosted organization, you will need to set up billing sync." + "message": "Для наладжвання арганізацыі на вашым уласным серверы, вам неабходна будзе загрузіць файл ліцэнзіі. Для падтрымкі тарыфных планаў Bitwarden Families і пашыраных магчымасцяў выстаўлення рахункаў для вашай арганізацыі, вам неабходна наладзіць плацежную сінхранізацыю." }, "billingSyncApiKeyRotated": { "message": "Токен зменены." @@ -5020,10 +5020,10 @@ "message": "Плацежная сінхранізацыя" }, "billingSyncDesc": { - "message": "Billing Sync provides Free Families plans for members and advanced billing capabilities by linking your self-hosted Bitwarden to the Bitwarden cloud server." + "message": "Плацежная сінхранізацыя дае магчымасць удзельнікам атрымаць бясплатны тарыфны план Bitwarden Families і пашыраныя магчымасці выстаўлення рахункаў звязваючы ваш уласны сервер Bitwarden з воблачным серверам нашай кампаніі." }, "billingSyncKeyDesc": { - "message": "A Billing Sync Token from your cloud organization's subscription settings is required to complete this form." + "message": "Для запаўнення гэтай формы неабходны токен плацежнай сінхранізацыі з наладаў падпіскі арганізацыі ў воблачным сховішчы." }, "billingSyncKey": { "message": "Токен плацежнай сінхранізацыі" @@ -5041,13 +5041,13 @@ "message": "Адпраўлена" }, "requestRemoved": { - "message": "Removed (Awaiting Sync)" + "message": "Выдалены (чакаецца сінхранізацыя)" }, "requested": { "message": "Запытана" }, "formErrorSummaryPlural": { - "message": "$COUNT$ fields above need your attention.", + "message": "$COUNT$ поле вышэй патрабуе вашай увагі.", "placeholders": { "count": { "content": "$1", @@ -5077,22 +5077,22 @@ "message": "Дадатковыя дапасаванні" }, "openIdAuthorityRequired": { - "message": "Required if Authority is not valid." + "message": "Абавязкова, калі ўстанова не дзейнічае." }, "separateMultipleWithComma": { - "message": "Separate multiple with a comma." + "message": "Некалькі значэнняў, якія раздзелыны коскай." }, "sessionTimeout": { - "message": "Your session has timed out. Please go back and try logging in again." + "message": "Час чакання вашай сесіі завяршыўся. Калі ласка, увайдзіце паўторна." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Экспартаванне асабістага сховішча" }, "exportingOrganizationVaultTitle": { - "message": "Exporting Organization Vault" + "message": "Экспартавання сховішча арганізацыі" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Будуць экспартаваны толькі асабістыя элементы сховішча, якія звязаны з $EMAIL$. Элементы сховішча арганізацыі не будуць уключаны.", "placeholders": { "email": { "content": "$1", @@ -5101,7 +5101,7 @@ } }, "exportingOrganizationVaultDescription": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Personal vault items and items from other organizations will not be included.", + "message": "Будуць экспартаваны толькі запісы сховішча арганізацыі, які звязаны з $ORGANIZATION$. Элементы асабістага сховішча і элементы з іншых арганізацый не будуць уключаны.", "placeholders": { "organization": { "content": "$1", @@ -5110,7 +5110,7 @@ } }, "accessDenied": { - "message": "Access Denied. You do not have permission to view this page." + "message": "Доступ забаронены. У вас не дастаткова правоў для прагляду гэтай старонкі." }, "masterPassword": { "message": "Асноўны пароль" @@ -5125,7 +5125,7 @@ "message": "Гісторыя плацяжоў" }, "backToReports": { - "message": "Back to Reports" + "message": "Вярнуцца да справаздач" }, "organizationPicker": { "message": "Выбар арганізацыі" @@ -5141,7 +5141,7 @@ "message": "Генератар" }, "whatWouldYouLikeToGenerate": { - "message": "What would you like to generate?" + "message": "Што вы хочаце генерыраваць?" }, "passwordType": { "message": "Тып пароля" @@ -5160,13 +5160,13 @@ "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { - "message": "Use your email provider's sub-addressing capabilities." + "message": "Выкарыстоўваць магчымасці пададрасацыі вашага пастаўшчыка паслуг электроннай пошты." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Адрас для ўсёй пошты дамена" }, "catchallEmailDesc": { - "message": "Use your domain's configured catch-all inbox." + "message": "Выкарыстоўвайце сваю сканфігураваную скрыню для ўсё пошты дамена." }, "random": { "message": "Выпадкова", @@ -5179,10 +5179,10 @@ "message": "Сэрвіс" }, "unknownCipher": { - "message": "Unknown Item, you may need to request permission to access this item." + "message": "Невядомы элемент. Магчыма, што вам неабходна запытаць дазвол на доступ да гэтага элемента." }, "cannotSponsorSelf": { - "message": "You cannot redeem for the active account. Enter a different email." + "message": "Вы не можаце актываваць актыўны ўліковы запіс. Увядзіце іншы адрас электроннай пошты." }, "revokeWhenExpired": { "message": "Міне $DATE$", @@ -5194,7 +5194,7 @@ } }, "awaitingSyncSingular": { - "message": "Token rotated $DAYS$ day ago. Update the billing sync token in your self-hosted organization settings.", + "message": "Токен зменены $DAYS$ дзень таму. Абнавіце токен плацежнай сінхранізацыі ў наладах уласнай размешчанай арганізацыі.", "placeholders": { "days": { "content": "$1", @@ -5203,7 +5203,7 @@ } }, "awaitingSyncPlural": { - "message": "Token rotated $DAYS$ days ago. Update the billing sync token in your self-hosted organization settings.", + "message": "Токен зменены $DAYS$ дні/дзён таму. Абнавіце токен плацежнай сінхранізацыі ў наладах уласнай размешчанай арганізацыі.", "placeholders": { "days": { "content": "$1", @@ -5216,7 +5216,7 @@ "Description": "Used as a prefix to indicate the last time a sync occured. Example \"Last sync 1968-11-16 00:00:00\"" }, "sponsorshipsSynced": { - "message": "Self-hosted sponsorships synced." + "message": "Уласнае размяшчэнне спансавання сінхранізавана." }, "billingManagedByProvider": { "message": "Кіруецца $PROVIDER$", @@ -5273,7 +5273,7 @@ "description": "The text, 'SCIM', is an acronymn and should not be translated." }, "scimDescription": { - "message": "Аўтаматычна забяспечваць карыстальнікаў і групы пажаданымі пасведчаннямі пастаўшчыка праз забеспячэнне SCIM", + "message": "Аўтаматычна забяспечваць карыстальнікаў і групы пажаданымі пасведчаннямі пастаўшчыка праз SCIM", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDesc": { @@ -5285,18 +5285,18 @@ "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimApiKeyHelperText": { - "message": "This API key has access to manage users within your organization. It should be kept secret." + "message": "Гэты ключ API мае доступ да кіравання карыстальнікаў у межах вашай арганізацыі. Яго неабходна захоўваць у надзейным месцы." }, "copyScimKey": { - "message": "Copy the SCIM API Key to your clipboard", + "message": "Капіяваць ключ API для SCIM у буфер абмену", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKey": { - "message": "Rotate the SCIM API Key", + "message": "Змяніць ключ API для SCIM", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKeyWarning": { - "message": "Are you sure you want to rotate the SCIM API Key? The current key will no longer work for any existing integrations.", + "message": "Вы ўпэўнены, што хочаце змяніць ключ API для SCIM? Бягучы ключ не будзе больш працаваць для любых бягучых інтэграцый.", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateKey": { @@ -5307,7 +5307,7 @@ "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "copyScimUrl": { - "message": "Copy the SCIM endpoint URL to your clipboard", + "message": "Скапіяваць SCIM канцавога пункту URL-адраса ў ваш буфер абмену", "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimUrl": { @@ -5315,21 +5315,21 @@ "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimApiKeyRotated": { - "message": "The SCIM API Key has been successfully rotated", + "message": "Ключ API для SCIM быў паспяхова зменены", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "SCIM settings have been saved successfully", + "message": "Налады SCIM былі паспяхова захаваны", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { "message": "Неабходны ўвод даных." }, "inputEmail": { - "message": "Input is not an email-address." + "message": "Уведзеныя даныя не з'яўляюцца адрасам электроннай пошты." }, "inputMinLength": { - "message": "Input must be at least $COUNT$ characters long.", + "message": "Даўжыня ўведзеных даных павінна складаць прынамсі $COUNT$ сімв.", "placeholders": { "count": { "content": "$1", @@ -5338,7 +5338,7 @@ } }, "fieldsNeedAttention": { - "message": "$COUNT$ field(s) above need your attention.", + "message": "$COUNT$ полі(-ёў) вышэй патрабуе вашай увагі.", "placeholders": { "count": { "content": "$1", diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json index c2a64d74c91..9631152699d 100644 --- a/apps/web/src/locales/da/messages.json +++ b/apps/web/src/locales/da/messages.json @@ -912,10 +912,10 @@ "message": "Bekræft filadgangskode" }, "accountBackupOptionDescription": { - "message": "Udnytter din Bitwarden-kontokryptering, ikke hovedadgangskode, for at beskytte eksporten. Denne eksport kan kun importeres til den aktuelle konto. Brug denne til at oprette en sikkerhedskopi, der ikke kan bruges andre steder." + "message": "Brug din kontos krypteringsnøgle til at kryptere eksporten og begrænse importen til udelukkende den aktuelle Bitwarden-konto." }, "passwordProtectedOptionDescription": { - "message": "Opret en brugergenereret adgangskode for at beskytte eksporten. Brug denne til at oprette en eksport, der kan bruges via andre konti." + "message": "Opret en adgangskode til at kryptere eksporten og importér den til enhver Bitwarden-konto ved hjælp af adgangskoden til dekryptering." }, "fileTypeHeading": { "message": "Filtype" diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index a31fb03b2f2..1b111344357 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -679,7 +679,7 @@ "message": "Ungültiges Master-Passwort" }, "invalidFilePassword": { - "message": "Ungültiges Dateipasswort, bitte verwende das Passwort, das du beim Erstellen der Exportdatei eingegeben hast." + "message": "Ungültiges Dateipasswort. Bitte verwende das Passwort, das du beim Erstellen der Exportdatei eingegeben hast." }, "lockNow": { "message": "Jetzt sperren" @@ -912,7 +912,7 @@ "message": "Dateipasswort bestätigen" }, "accountBackupOptionDescription": { - "message": "Nutzt die Verschlüsselung Ihres Bitwarden-Kontos, nicht das Master-Passwort, zum Schutz des Exports. Dieser Export kann nur in das aktuelle Konto importiert werden. Hiermit kannst du ein Backup erstellen, das nicht anderweitig verwendet werden kann." + "message": "Nutzt die Verschlüsselung deines Bitwarden-Kontos, nicht das Master-Passwort, zum Schutz des Exports. Dieser Export kann nur in das aktuelle Konto importiert werden. Hiermit kannst du ein Backup erstellen, das nicht anderweitig verwendet werden kann." }, "passwordProtectedOptionDescription": { "message": "Erstelle ein benutzergeneriertes Passwort, um den Export zu schützen. Verwende dies, um einen Export zu erstellen, der in anderen Konten verwendet werden kann." diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json index b9a10e569b0..eac57249883 100644 --- a/apps/web/src/locales/en_GB/messages.json +++ b/apps/web/src/locales/en_GB/messages.json @@ -912,10 +912,10 @@ "message": "Confirm File Password" }, "accountBackupOptionDescription": { - "message": "Leverages your Bitwarden account encryption, not master password, to protect the export. This export can only be imported into the current account. Use this to create a backup that cannot be used elsewhere." + "message": "Use your account encryption key to encrypt the export and restrict import to only the current Bitwarden account." }, "passwordProtectedOptionDescription": { - "message": "Create a user-generated password to protect the export. Use this to create an export that can be used in other accounts." + "message": "Set a password to encrypt the export and import it to any Bitwarden account using the password for decryption." }, "fileTypeHeading": { "message": "File Type" diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json index 2ec91552fd3..686980e052c 100644 --- a/apps/web/src/locales/es/messages.json +++ b/apps/web/src/locales/es/messages.json @@ -4729,7 +4729,7 @@ "message": "Permitir peticiones de cierre de sesión" }, "idpSignAuthenticationRequests": { - "message": "Sign authentication requests" + "message": "Solicitud de inicio de sesión" }, "ssoSettingsSaved": { "message": "Single Sign-On configuration was saved." @@ -4771,13 +4771,13 @@ "message": "Enter your personal email to redeem Bitwarden Families" }, "sponsoredFamiliesLeaveCopy": { - "message": "If you remove an offer or are removed from the sponsoring organization, your Families sponsorship will expire at the next renewal date." + "message": "Si eliminas una oferta o la eliminas de la organización patrocinadora, el patrocinio de tu familia caducará en la próxima fecha de renovación." }, "acceptBitwardenFamiliesHelp": { - "message": "Accept offer for an existing organization or create a new Families organization." + "message": "Aceptar oferta para una organización existente o crear una nueva organización familiar." }, "setupSponsoredFamiliesLoginDesc": { - "message": "You've been offered a free Bitwarden Families Plan Organization. To continue, you need to log in to the account that received the offer." + "message": "Se le ha ofrecido una organización gratuita del Plan de Familias Bitwarden. Para continuar, necesita iniciar sesión en la cuenta que recibió la oferta." }, "sponsoredFamiliesAcceptFailed": { "message": "No se puede aceptar la oferta. Por favor, reenvíe el correo electrónico de la oferta desde su cuenta de empresa e inténtelo de nuevo." @@ -4984,10 +4984,10 @@ "message": "Generar el token de sincronización de facturación" }, "copyPasteBillingSync": { - "message": "Copy and paste this token into the Billing Sync settings of your self-hosted organization." + "message": "Copia y pega este token en la configuración de la sincronización de facturación de tu propia organización." }, "billingSyncCanAccess": { - "message": "Your Billing Sync token can access and edit this organization's subscription settings." + "message": "Su token de sincronización de facturación puede acceder y editar la configuración de suscripción de esta organización." }, "manageBillingSync": { "message": "Administrar la sincronización de facturación" @@ -5002,10 +5002,10 @@ "message": "Regenerar token" }, "rotateBillingSyncTokenWarning": { - "message": "If you proceed, you will need to re-setup billing sync on your self-hosted server." + "message": "Si continúa, necesitará reconfigurar la sincronización de facturación en su servidor autoalojado." }, "rotateBillingSyncTokenTitle": { - "message": "Rotating the Billing Sync Token will invalidate the previous token." + "message": "Rotar el token de sincronización de facturación invalidará el token anterior." }, "selfHostingTitle": { "message": "Autoalojamiento" diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json index d9eca7116d4..c685a9ffb08 100644 --- a/apps/web/src/locales/eu/messages.json +++ b/apps/web/src/locales/eu/messages.json @@ -425,7 +425,7 @@ "message": "Ni" }, "myVault": { - "message": "Nire Kutxa Gotorra" + "message": "Kutxa Gotorra" }, "allVaults": { "message": "Kutxa Gotor guztiak" diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json index 370a51952ab..b064002d08e 100644 --- a/apps/web/src/locales/fi/messages.json +++ b/apps/web/src/locales/fi/messages.json @@ -5273,7 +5273,7 @@ "description": "The text, 'SCIM', is an acronymn and should not be translated." }, "scimDescription": { - "message": "Provisioi käyttäjät ja ryhmät suosimasi tunnistustietojen tarjoajan kanssa SCIM-provisioinnilla", + "message": "Provisioi käyttäjät ja ryhmät haluamasi tunnistustietojen tarjoajan kanssa SCIM-provisioinnilla", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDesc": { @@ -5281,7 +5281,7 @@ "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDescHelpText": { - "message": "Määritä haluamasi SAML-tunnistustietojen tarjoaja määrittämällä URL-osoite ja SCIM API-avain", + "message": "Määritä haluamasi tunnistustietojen tarjoaja määrittämällä URL-osoite ja SCIM API -avain", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimApiKeyHelperText": { diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json index e97ce8698b7..c4c76ad6095 100644 --- a/apps/web/src/locales/hu/messages.json +++ b/apps/web/src/locales/hu/messages.json @@ -1215,7 +1215,7 @@ "message": "Felismerhető kép megjelenítése minden bejelentkezés mellett." }, "enableGravatars": { - "message": "Gravatarok engedélyezése", + "message": "Gravatarok megjelenítése", "description": "Use avatar images loaded from gravatar.com." }, "enableGravatarsDesc": { @@ -3433,7 +3433,7 @@ "message": "Mesterjelszó követelmények" }, "masterPassPolicyDesc": { - "message": "A minimális követelmények beállítása a mesterjelszó hozzához." + "message": "A minimális követelmények beállítása a mesterjelszó hosszához." }, "twoStepLoginPolicyTitle": { "message": "Kétlépéses bejelentkezés szükséges" @@ -3994,10 +3994,10 @@ "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." }, "disableSend": { - "message": "Küdlés letiltása" + "message": "Send letiltása" }, "disableSendPolicyDesc": { - "message": "Ne engedjük a felhasználóknak a Bitwarden Küldés létrehozását vagy szerkesztését. A meglévő küldés törlése továbbra is megengedett.", + "message": "Ne engedjük a felhasználóknak a Bitwarden Send létrehozását vagy szerkesztését. A meglévő küldés törlése továbbra is megengedett.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { @@ -4319,7 +4319,7 @@ "message": "A regisztráció lehetővé teszi a szervezet adminisztrátorainak a saját mesterjelszó megváltoztatását. Biztosan feliratkozunk?" }, "resetPasswordPolicy": { - "message": "Mesterjelszó alaphelyzetbe állítása" + "message": "Mesterjelszó alaphelyzetbe állítás" }, "resetPasswordPolicyDescription": { "message": "A szervezet adminisztrátorai alaphelyzetbe állíthatják a szervezet mesterjelszavát." @@ -4603,16 +4603,16 @@ "message": "A széf időkorlátja túllépi a szervezet által beállított korlátozást." }, "vaultCustomTimeoutMinimum": { - "message": "Minimum custom timeout is 1 minute." + "message": "A minimális egyedi időkifutás 1 perc." }, "vaultTimeoutRangeError": { - "message": "Vault Timeout is not within allowed range." + "message": "A széf időkifutás nincs az engedélyezett intervallunban." }, "disablePersonalVaultExport": { - "message": "A személyes széf exportálás nem engedélyezett." + "message": "A személyes széf exportálás eltávolítása" }, "disablePersonalVaultExportDesc": { - "message": "Biztosan leválasztjuk ezt a szervezetet? A szervezet továbbra is fennáll, de már nem a szolgáltató kezeli." + "message": "A tagok nem exportálhatnak személyes széf adatokat." }, "vaultExportDisabled": { "message": "A széf exportálás nem engedélyezett." @@ -4900,11 +4900,11 @@ "message": "A beüzemeléskor a konfiguráció mentésre kerül és a tagok hitelesíthetnek az azonosítási szolgáltató hitelesítő adataival." }, "ssoPolicyHelpStart": { - "message": "Engedélyezzük az", + "message": "Használat:", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Use the require single-sign-on authentication policy to require all members to log in with SSO.'" }, "ssoPolicyHelpLink": { - "message": "SSO hitelesítési szabályzat", + "message": "önálló bejekentkezés hitelesítés szükséges", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Use the require single-sign-on authentication policy to require all members to log in with SSO.'" }, "ssoPolicyHelpEnd": { @@ -4912,7 +4912,7 @@ "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Use the require single-sign-on authentication policy to require all members to log in with SSO.'" }, "ssoPolicyHelpKeyConnector": { - "message": "A kulcscsatlakozó visszafejtésének beállításához SSO hitelesítés és egy szervezeti szabályzat szükséges." + "message": "A kulcscsatlakozó visszafejtésének beállításához SSO hitelesítés és egy önálló szervezeti szabályzat szükséges." }, "memberDecryptionOption": { "message": "Tagi visszafejtési opciók" diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json index 3c095b31c7a..b9ba2942153 100644 --- a/apps/web/src/locales/it/messages.json +++ b/apps/web/src/locales/it/messages.json @@ -679,7 +679,7 @@ "message": "Password principale errata" }, "invalidFilePassword": { - "message": "Password errata, usa la password che hai inserito quando hai creato il file di esportazione." + "message": "Password errata, usa la password che hai inserito alla creazione del file di esportazione." }, "lockNow": { "message": "Blocca" @@ -894,46 +894,46 @@ "message": "Formato file" }, "fileEncryptedExportWarningDesc": { - "message": "This file export will be password protected and require the file password to decrypt." + "message": "Il file esportato sarà crittato, sarà necessaria una password per decrittare il file." }, "exportPasswordDescription": { - "message": "This password will be used to export and import this file" + "message": "La password sarà utilizzata per importare ed esportare il file" }, "confirmMasterPassword": { - "message": "Confirm Master Password" + "message": "Conferma password principale" }, "confirmFormat": { - "message": "Confirm Format" + "message": "Conferma formato" }, "filePassword": { - "message": "File Password" + "message": "Password del file" }, "confirmFilePassword": { - "message": "Confirm File Password" + "message": "Conferma password del file" }, "accountBackupOptionDescription": { - "message": "Use your account encryption key to encrypt the export and restrict import to only the current Bitwarden account." + "message": "Utilizza la chiave di crittografia del tuo account per crittare l'esportazione e limitare l'import all'attuale account Bitwarden." }, "passwordProtectedOptionDescription": { - "message": "Set a password to encrypt the export and import it to any Bitwarden account using the password for decryption." + "message": "Imposta una password per crittare l'esportazione e importala in qualsiasi account Bitwarden, utilizzando la password impostata." }, "fileTypeHeading": { - "message": "File Type" + "message": "Tipo di file" }, "accountBackup": { - "message": "Account Backup" + "message": "Backup dell'account" }, "passwordProtected": { - "message": "Password Protected" + "message": "Protetto da password" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“File password” and “Confirm File Password“ do not match." + "message": "La password del file e la password inserita nel campo di conferma non corrispondono." }, "confirmVaultImport": { - "message": "Confirm Vault Import" + "message": "Conferma importazione della cassaforte" }, "confirmVaultImportDesc": { - "message": "This file is password-protected. Please enter the file password to import data." + "message": "Questo file è protetto da password. Inserisci la password del file per importare i dati." }, "exportSuccess": { "message": "I dati della tua cassaforte sono stati esportati." diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json index 9345261bc3c..dd3ab6b97a9 100644 --- a/apps/web/src/locales/ja/messages.json +++ b/apps/web/src/locales/ja/messages.json @@ -4627,16 +4627,16 @@ "message": "タイプ" }, "openIdConnectConfig": { - "message": "OpenID Connect Configuration" + "message": "OpenID Connectの設定" }, "samlSpConfig": { - "message": "SAML Service Provider Configuration" + "message": "SAML サービス プロバイダーの設定" }, "samlIdpConfig": { - "message": "SAML Identity Provider Configuration" + "message": "SAML IDプロバイダーの設定" }, "callbackPath": { - "message": "Callback Path" + "message": "コールバックパス" }, "signedOutCallbackPath": { "message": "Signed Out Callback Path" @@ -4705,10 +4705,10 @@ "message": "証明書を検証する" }, "idpEntityId": { - "message": "Entity ID" + "message": "エンティティID" }, "idpBindingType": { - "message": "Binding Type" + "message": "バインディングの種類" }, "idpSingleSignOnServiceUrl": { "message": "Single Sign On Service URL" @@ -4762,7 +4762,7 @@ "message": "引き換える" }, "sponsoredFamiliesSelectOffer": { - "message": "Select the organization you would like sponsored" + "message": "スポンサーしたい組織を選択してください" }, "familiesSponsoringOrgSelect": { "message": "どの家族向けプランの無償提供に引き換えますか?" @@ -4804,7 +4804,7 @@ "message": "引き換えに使用したアカウント" }, "revokeAccount": { - "message": "Revoke account $NAME$", + "message": "アカウント $NAME$ を取り消す", "placeholders": { "name": { "content": "$1", @@ -4813,7 +4813,7 @@ } }, "resendEmailLabel": { - "message": "Resend Sponsorship email to $NAME$ sponsorship", + "message": "$NAME$ スポンサーシップにスポンサーシップメールを再送信する", "placeholders": { "name": { "content": "$1", diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json index 4459abac692..456d2253c6c 100644 --- a/apps/web/src/locales/nl/messages.json +++ b/apps/web/src/locales/nl/messages.json @@ -1296,7 +1296,7 @@ "message": "Ingeschakeld" }, "restoreAccess": { - "message": "Restore Access" + "message": "Toegang herstellen" }, "premium": { "message": "Premium", @@ -1324,7 +1324,7 @@ "message": "Uitschakelen" }, "revokeAccess": { - "message": "Revoke Access" + "message": "Toegang intrekken" }, "twoStepLoginProviderEnabled": { "message": "Deze tweestapsaanmeldingsaanbieder is geactiveerd voor je account." @@ -2326,10 +2326,10 @@ "message": "Weet je zeker dat je deze gebruiker wilt verwijderen?" }, "removeOrgUserConfirmation": { - "message": "When a member is removed, they no longer have access to organization data and this action is irreversible. To add the member back to the organization, they must be invited and onboarded again." + "message": "Na het verwijderen heeft een lid onherroepelijk geen toegang meer tot de gegevens van de organisatie. Om een lid opnieuw aan de organisatie toe te voegen, moet je deze uitnodigen en opnieuw on-boarden." }, "revokeUserConfirmation": { - "message": "When a member is revoked, they no longer have access to organization data. To quickly restore member access, go to the Revoked tab." + "message": "Na het intrekken van toegang heeft een lid geen toegang meer tot de gegevens van de organisatie. Om de toegang snel te herstellen, ga je naar het tabblad Ingetrokken." }, "removeUserConfirmationKeyConnector": { "message": "Waarschuwing! Deze gebruiker vereist de Key Connector om de versleuteling te beheren. Als je deze gebruiker uit je organisatie verwijdert, wordt zijn account permanent uitgeschakeld. Deze actie kan niet ongedaan worden gemaakt. Wil je doorgaan?" @@ -2677,7 +2677,7 @@ } }, "removeUserIdAccess": { - "message": "Remove $ID$ access", + "message": "Toegang $ID$ verwijderen", "placeholders": { "id": { "content": "$1", @@ -2686,7 +2686,7 @@ } }, "revokedUserId": { - "message": "Revoked organization access for $ID$.", + "message": "Toegang tot de organisatie ingetrokken voor $ID$.", "placeholders": { "id": { "content": "$1", @@ -2695,7 +2695,7 @@ } }, "restoredUserId": { - "message": "Restored organization access for $ID$.", + "message": "Toegang tot de organisatie hersteld voor $ID$.", "placeholders": { "id": { "content": "$1", @@ -2704,7 +2704,7 @@ } }, "revokeUserId": { - "message": "Revoke $ID$ access", + "message": "Toegang $ID$ intrekken", "placeholders": { "id": { "content": "$1", @@ -3769,7 +3769,7 @@ "message": "Uitgeschakeld" }, "revoked": { - "message": "Revoked" + "message": "Ingetrokken" }, "sendLink": { "message": "Send-koppeling", @@ -4373,10 +4373,10 @@ "message": "Weet je zeker dat je de volgende gebruikers wilt verwijderen? Dit proces duurt enkele seconden en kan niet worden onderbroken of geannuleerd." }, "removeOrgUsersConfirmation": { - "message": "When member(s) are removed, they no longer have access to organization data and this action is irreversible. To add the member back to the organization, they must be invited and onboarded again. The process may take a few seconds to complete and cannot be interrupted or canceled." + "message": "Na het verwijderen hebben leden onherroepelijk geen toegang meer tot de gegevens van de organisatie. Om een lid opnieuw aan de organisatie toe te voegen, moet je deze uitnodigen en opnieuw on-boarden. Dit proces neemt een paar seconden in beslag en je kunt het niet interrumperen of annuleren." }, "revokeUsersWarning": { - "message": "When member(s) are revoked, they no longer have access to organization data. To quickly restore member access, go to the Revoked tab. The process may take a few seconds to complete and cannot be interrupted or canceled." + "message": "Na het intrekken van toegang hebben leden geen toegang meer tot de gegevens van de organisatie. Om de toegang snel te herstellen, ga je naar het tabblad Ingetrokken. Dit proces neemt een paar seconden in beslag en je kunt het niet interrumperen of annuleren." }, "theme": { "message": "Thema" @@ -4409,10 +4409,10 @@ "message": "Succesvol verwijderd" }, "bulkRevokedMessage": { - "message": "Revoked organization access successfully" + "message": "Toegang tot de organisatie ingetrokkeb" }, "bulkRestoredMessage": { - "message": "Restored organization access successfully" + "message": "Toegang tot de organisatie hersteld" }, "bulkFilteredMessage": { "message": "Uitgezonderd, niet van toepassing voor deze actie." @@ -4424,10 +4424,10 @@ "message": "Gebruikers verwijderen" }, "revokeUsers": { - "message": "Revoke Users" + "message": "Gebruikers intrekken" }, "restoreUsers": { - "message": "Restore Users" + "message": "Gebruikers herstellen" }, "error": { "message": "Fout" @@ -4849,7 +4849,7 @@ "message": "Sponsoring verwijderd" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key-connector fout: zorg ervoor dat Key-connector beschikbaar is en werkt." }, "keyConnectorUrl": { "message": "Key Connector URL" @@ -5156,17 +5156,17 @@ "message": "Type gebruikersnaam" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "E-mailadres-met-plus", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { - "message": "Use your email provider's sub-addressing capabilities." + "message": "Gebruik de subadressen van je e-mailprovider." }, "catchallEmail": { "message": "Catch-all e-mail" }, "catchallEmailDesc": { - "message": "Use your domain's configured catch-all inbox." + "message": "Gebruik de catch-all inbox van je domein." }, "random": { "message": "Willekeurig", diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json index add48f608c5..a90a35f0973 100644 --- a/apps/web/src/locales/sk/messages.json +++ b/apps/web/src/locales/sk/messages.json @@ -930,7 +930,7 @@ "message": "\"Heslo súboru\" a \"Potvrdiť heslo súboru\" sa nezhodujú." }, "confirmVaultImport": { - "message": "Potvrdiť importu trezoru" + "message": "Potvrdiť import trezoru" }, "confirmVaultImportDesc": { "message": "Tento súbor je chránený heslom. Ak chcete importovať údaje, zadajte heslo súboru." diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json index b08424cb977..9b9f40897cc 100644 --- a/apps/web/src/locales/sv/messages.json +++ b/apps/web/src/locales/sv/messages.json @@ -573,7 +573,7 @@ "message": "Skapa konto" }, "startTrial": { - "message": "Start Trial" + "message": "Påbörja utvärdering" }, "logIn": { "message": "Logga in" diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index ac34e62c36c..2fec98de3fb 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -915,7 +915,7 @@ "message": "使用您的账户加密密钥来加密导出的数据,并且限制只能导入到当前的 Bitwarden 账户。" }, "passwordProtectedOptionDescription": { - "message": "设置一个密码用来加密导出的数据,并使用此密码解密以导入到任何 Bitwarden 账户。" + "message": "设置一个密码用来加密导出的数据,并使用此密码解密以导入到任意 Bitwarden 账户。" }, "fileTypeHeading": { "message": "文件类型" diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json index a083d86e490..b9ba520df1e 100644 --- a/apps/web/src/locales/zh_TW/messages.json +++ b/apps/web/src/locales/zh_TW/messages.json @@ -679,7 +679,7 @@ "message": "無效的主密碼" }, "invalidFilePassword": { - "message": "檔案密碼無效,請使用創建匯出檔案時輸入的密碼。" + "message": "檔案密碼無效,請使用您當初匯出檔案時輸入的密碼。" }, "lockNow": { "message": "立即鎖定" @@ -912,10 +912,10 @@ "message": "確認檔案密碼" }, "accountBackupOptionDescription": { - "message": "使用您的帳戶加密金鑰來加密匯出的資料,並限制只能匯入到目前的 Bitwarden 帳戶。" + "message": "使用您的帳戶加密金鑰來加密匯出的資料,並限制它只能匯入至目前的 Bitwarden 帳戶。" }, "passwordProtectedOptionDescription": { - "message": "設定一个密碼來加密匯出的資料,並使用此密碼解密以匯入到任何 Bitwarden 帳戶。" + "message": "設定一組密碼來加密匯出的資料,並使用此密碼解密以匯入至任意 Bitwarden 帳戶。" }, "fileTypeHeading": { "message": "檔案類型" From ea8cb4c66b5cd5ecbd47c06140588532e28e016d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 00:33:59 +0200 Subject: [PATCH 06/28] Autosync the updated translations (#3517) Co-authored-by: github-actions <> --- apps/browser/src/_locales/bg/messages.json | 4 +-- apps/browser/src/_locales/da/messages.json | 10 +++--- apps/browser/src/_locales/de/messages.json | 10 +++--- apps/browser/src/_locales/eu/messages.json | 12 +++---- apps/browser/src/_locales/it/messages.json | 8 ++--- apps/browser/src/_locales/lv/messages.json | 10 +++--- apps/browser/src/_locales/pl/messages.json | 2 +- apps/browser/src/_locales/zh_CN/messages.json | 4 +-- apps/browser/store/locales/bg/copy.resx | 31 ++++++++++++++++--- apps/browser/store/locales/bn/copy.resx | 31 ++++++++++++++++--- apps/browser/store/locales/cs/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/da/copy.resx | 5 +-- apps/browser/store/locales/el/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/et/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/fa/copy.resx | 24 +++++++++++--- apps/browser/store/locales/he/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/hi/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/id/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/ja/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/lt/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/lv/copy.resx | 26 +++++++++++++--- apps/browser/store/locales/nb/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/pt_BR/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/pt_PT/copy.resx | 27 +++++++++++++--- apps/browser/store/locales/sr/copy.resx | 27 +++++++++++++--- 25 files changed, 391 insertions(+), 110 deletions(-) diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json index 7c3f497daba..f9507f48823 100644 --- a/apps/browser/src/_locales/bg/messages.json +++ b/apps/browser/src/_locales/bg/messages.json @@ -2002,7 +2002,7 @@ "message": "Версия на сървъра" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Собствен хостинг" }, "thirdParty": { "message": "Third-Party" @@ -2017,7 +2017,7 @@ } }, "lastSeenOn": { - "message": "last seen on $DATE$", + "message": "последно видян на $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index 7bade191dd1..3a4879980f2 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -1999,16 +1999,16 @@ "message": "for at nulstille til forudkonfigurerede indstillinger" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Selv-hostet" }, "thirdParty": { - "message": "Third-Party" + "message": "Tredjepart" }, "thirdPartyServerMessage": { - "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", + "message": "Forbundet til tredjepartsserverimplementering, $SERVERNAME$. Kontrollér venligst fejl ved hjælp af den officielle server, eller rapportér dem til tredjepartsserveren.", "placeholders": { "servername": { "content": "$1", @@ -2017,7 +2017,7 @@ } }, "lastSeenOn": { - "message": "last seen on $DATE$", + "message": "sidst set den $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json index 859b6523592..0c00c4d6658 100644 --- a/apps/browser/src/_locales/de/messages.json +++ b/apps/browser/src/_locales/de/messages.json @@ -149,7 +149,7 @@ "message": "Master-Passwort ändern" }, "fingerprintPhrase": { - "message": "Prüfschlüssel", + "message": "Fingerabdruck-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": { @@ -193,7 +193,7 @@ "message": "Es gibt keine Ordner zum Anzeigen." }, "helpFeedback": { - "message": "Hilfe & Rückmeldung" + "message": "Hilfe & Feedback" }, "sync": { "message": "Synchronisierung" @@ -215,7 +215,7 @@ "message": "Generiert automatisch ein starkes und einzigartiges Passwort." }, "bitWebVault": { - "message": "Bitwarden Web-Datenspeicher" + "message": "Bitwarden Web-Tresor" }, "importItems": { "message": "Einträge importieren" @@ -1436,7 +1436,7 @@ "message": "Automatisch ausgefüllter Eintrag" }, "setMasterPassword": { - "message": "Masterpasswort festlegen" + "message": "Master-Passwort festlegen" }, "masterPasswordPolicyInEffect": { "message": "Eine oder mehrere Organisationsrichtlinien erfordern, dass dein Masterpasswort die folgenden Anforderungen erfüllt:" @@ -2002,7 +2002,7 @@ "message": "Server-Version" }, "selfHosted": { - "message": "Selbstverwaltet" + "message": "Selbst-gehostet" }, "thirdParty": { "message": "Drittanbieter" diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json index 619efc76b98..9af529421b1 100644 --- a/apps/browser/src/_locales/eu/messages.json +++ b/apps/browser/src/_locales/eu/messages.json @@ -56,7 +56,7 @@ "message": "Kutxa gotorra" }, "myVault": { - "message": "Nire kutxa gotorra" + "message": "Kutxa gotorra" }, "allVaults": { "message": "Kutxa gotor guztiak" @@ -1999,16 +1999,16 @@ "message": "ezarpen lehenetsiak ezartzeko" }, "serverVersion": { - "message": "Server Version" + "message": "Zerbitzariaren bertsioa" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Ostatatze propioduna" }, "thirdParty": { - "message": "Third-Party" + "message": "Hirugarrenen aplikazioak" }, "thirdPartyServerMessage": { - "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", + "message": "Hirugarrenen zerbitzariaren inplementaziora konektatuta, $SERVERNAME$. Mesedez, egiaztatu akatsak zerbitzari ofiziala erabiliz, edo galdetu hirugarren zerbitzariari.", "placeholders": { "servername": { "content": "$1", @@ -2017,7 +2017,7 @@ } }, "lastSeenOn": { - "message": "last seen on $DATE$", + "message": "Azkenekoz ikusia: $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json index 347de759123..069bf8c9384 100644 --- a/apps/browser/src/_locales/it/messages.json +++ b/apps/browser/src/_locales/it/messages.json @@ -1999,16 +1999,16 @@ "message": "per ritornare alle impostazioni preconfigurate" }, "serverVersion": { - "message": "Server Version" + "message": "Versione Server" }, "selfHosted": { "message": "Self-Hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Terze parti" }, "thirdPartyServerMessage": { - "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", + "message": "Connesso a una implementazione server di terze parti, $SERVERNAME$. Controlla i bug utilizzando il server ufficiale o segnalali al server di terze parti.", "placeholders": { "servername": { "content": "$1", @@ -2017,7 +2017,7 @@ } }, "lastSeenOn": { - "message": "last seen on $DATE$", + "message": "visto l'ultima volta il $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json index 63a46fb97dd..622634bb936 100644 --- a/apps/browser/src/_locales/lv/messages.json +++ b/apps/browser/src/_locales/lv/messages.json @@ -1999,16 +1999,16 @@ "message": "lai atiestatītu pirmsuzstādītos iestatījumus" }, "serverVersion": { - "message": "Server Version" + "message": "Servera versija" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Pašizvietots" }, "thirdParty": { - "message": "Third-Party" + "message": "Trešās puses" }, "thirdPartyServerMessage": { - "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", + "message": "Savienots ar trešās puses izvietotu serveri $SERVERNAME$. Lūgums pārbaudīt nepilnību esamību oficiālajā serverī vai ziņot par tām trešās puses servera uzturētājiem.", "placeholders": { "servername": { "content": "$1", @@ -2017,7 +2017,7 @@ } }, "lastSeenOn": { - "message": "last seen on $DATE$", + "message": "pēdējoreiz manīts $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index e6a0203e424..9297eac5ae3 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -1091,7 +1091,7 @@ "message": "Sierpień" }, "september": { - "message": "September" + "message": "Wrzesień" }, "october": { "message": "Październik" diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index 40731c89ccb..d3a1ec4373d 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -567,7 +567,7 @@ "message": "搜索类型" }, "noneFolder": { - "message": "默认文件夹", + "message": "无文件夹", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -2008,7 +2008,7 @@ "message": "第三方" }, "thirdPartyServerMessage": { - "message": "已连接到第三方服务器,$SERVERNAME$。请使用官方服务器验证错误,或将其报告给第三方服务器。", + "message": "已连接到第三方服务器实现,$SERVERNAME$。请使用官方服务器验证错误,或将其报告给第三方服务器。", "placeholders": { "servername": { "content": "$1", diff --git a/apps/browser/store/locales/bg/copy.resx b/apps/browser/store/locales/bg/copy.resx index d632c325ce8..21a01a58e49 100644 --- a/apps/browser/store/locales/bg/copy.resx +++ b/apps/browser/store/locales/bg/copy.resx @@ -124,11 +124,32 @@ Сигурен и свободен управител на пароли за всички устройства - Bitwarden е най-лесният и надежден начин да съхранявате регистрации и пароли като ги синхронизирате на всички свои устройства. -Кражбата на пароли е тежък проблем. Сайтовете в Интернет, програмите и мобилните приложения биват атакувани всеки ден. Пробивите в сигурността са факт и паролите биват откраднати. Ако използвате една и съща парола в много програми или сайтове, злонамерени лица могат лесно да достъпят вашата е-поща, електронно банкиране и други важни регистрации. -Експертите по сигурността препоръчват да ползвате различна, случайно генерирана парола за всяка отделна регистрация. Как да управлявате всичките тези пароли? Bitwarden ви позволява лесно да ги създавате, съхранявате и ползвате. -Bitwarden съхранява всички данни в шифриран трезор, който се синхронизира на всички устройства, които ползвате. Шифрирането се извършва преди данните да напуснат устройството ви — така само вие имате достъп до тях. Дори и екипът на Bitwarden не може да прочете данните, дори и да се опита. Данните са защитени чрез AES с 256-битов ключ, контролни суми с добавени случайни данни и удължаване на ключа с PBKDF2 SHA-256. -Bitwarden е със 100% отворен код! Изходният код е наличен в сайта GitHub и всеки може да го преглежда, извърши одит и даже да допринесе за Bitwarden. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + Сигурен и свободен управител на пароли за всички устройства diff --git a/apps/browser/store/locales/bn/copy.resx b/apps/browser/store/locales/bn/copy.resx index 3a40359b33f..a8eb4f7c756 100644 --- a/apps/browser/store/locales/bn/copy.resx +++ b/apps/browser/store/locales/bn/copy.resx @@ -124,11 +124,32 @@ আপনার সমস্ত ডিভাইসের জন্য একটি সুরক্ষিত এবং বিনামূল্যের পাসওয়ার্ড ব্যবস্থাপক - বিটওয়ার্ডেন আপনার সমস্ত লগইন এবং পাসওয়ার্ডগুলি সহজেই আপনার সমস্ত ডিভাইসের সাথে সিঙ্ক করার সময় সংরক্ষণ করার সবচেয়ে সহজ এবং নিরাপদ উপায়। -পাসওয়ার্ড চুরি একটি গুরুতর সমস্যা। আপনি যে ওয়েবসাইটগুলি এবং অ্যাপ্লিকেশনগুলি ব্যবহার করেন সেগুলি প্রতিদিন আক্রমণের শিকার হয়। সুরক্ষা লঙ্ঘন ঘটে এবং আপনার পাসওয়ার্ডগুলি চুরি হয়ে যায়। আপনি যখন অ্যাপ্লিকেশন এবং ওয়েবসাইট জুড়ে একই পাসওয়ার্ডগুলি পুনরায় ব্যবহার করেন হ্যাকাররা সহজেই আপনার ইমেল, ব্যাংক এবং অন্যান্য গুরুত্বপূর্ণ অ্যাকাউন্টগুলিতে ব্যাবহার করতে পারে। -সুরক্ষা বিশেষজ্ঞরা আপনার তৈরি প্রতিটি অ্যাকাউন্টের জন্য একটি পৃথক, এলোমেলোভাবে উৎপন্ন পাসওয়ার্ড ব্যবহার করার পরামর্শ দেয়। কিন্তু আপনি কীভাবে এই সমস্ত পাসওয়ার্ড পরিচালনা করবেন? Bitwarden আপনার পাসওয়ার্ডগুলি তৈরি, সঞ্চয় এবং ব্যাবহার করা আপনার পক্ষে সহজ করে তোলে। -Bitwarden আপনার সমস্ত লগইন একটি এনক্রিপ্ট করা ভল্টে সঞ্চয় করে যা আপনার সমস্ত ডিভাইস জুড়ে সিঙ্ক করে। যেহেতু আপনার ডিভাইসটি ছাড়ার আগে এটি সম্পূর্ণরূপে এনক্রিপ্ট করা হয়েছে, শুধুমাত্র আপনারই ডেটাতে ব্যাবহারাধিকার রয়েছে। এমনকি আমরা Bitwarden এর দল চাইলেও আপনার তথ্যগুলি পড়তে পারব না। আপনার ডেটা AES-256 বিট এনক্রিপশন, সল্টেড হ্যাশিং এবং PBKDF2 SHA-256 দিয়ে নামমুদ্রাম্কিত করা হয়েছে। -Bitwarden ১০০% মুক্ত সফ্টওয়্যার। Bitwarden এর উৎস কোডটি গিটহাবটিতে হোস্ট করা হয়েছে এবং Bitwarden কোডবেস সকলের পর্যালোচনা, নিরীক্ষণ এবং অবদানের জন্য মুক্ত। + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + আপনার সমস্ত ডিভাইসের জন্য একটি সুরক্ষিত এবং বিনামূল্যের পাসওয়ার্ড ব্যবস্থাপক diff --git a/apps/browser/store/locales/cs/copy.resx b/apps/browser/store/locales/cs/copy.resx index 36a54971d2c..76bd3a97397 100644 --- a/apps/browser/store/locales/cs/copy.resx +++ b/apps/browser/store/locales/cs/copy.resx @@ -124,13 +124,32 @@ Bezpečný a bezplatný správce hesel pro všechna vaše zařízení - bitwarden je nejjednodušší a nejbezpečnější způsob, jak uchovávat veškeré své přihlašovací údaje a zároveň je mít pohodlně synchronizované mezi všemi svými zařízeními. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -Krádež hesla je velice vážný problém. Stránky a aplikace, které každodenně používáte, jsou často pod útokem a vaše hesla mohou být odcizena. Pokud používáte stejné heslo mezi více aplikacemi nebo stránkami, hackeři se mohou snadno dostat k vaší emailové schránce, bankovnímu účtu či do jiných důležitých účtů. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Bezpečnostní experti proto doporučují používat různá, silná a náhodně generovaná hesla pro každý účet zvlášť. Ale jak tato všechna hesla spravovat? bitwarden vám ulehčí jejich správu, ale také jejich generování nebo sdílení. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -bitwarden uchovává veškeré vaše přihlašovací údaje v zašifrovaném trezoru, který se synchronizuje mezi všemi vašimi zařízeními. Jelikož jsou zašifrována ještě před opuštěním vašeho zařízení, máte přístup ke svým datům pouze vy. Dokonce ani tým v bitwardenu nemůže číst vaše data a to ani kdybychom chtěli. Vaše data jsou totiž zakódována pomocí šifrovávání AES-256, náhodným hashem a PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + Bezpečný a bezplatný správce hesel pro všechna vaše zařízení diff --git a/apps/browser/store/locales/da/copy.resx b/apps/browser/store/locales/da/copy.resx index 6159bb2d67c..858c56dea97 100644 --- a/apps/browser/store/locales/da/copy.resx +++ b/apps/browser/store/locales/da/copy.resx @@ -139,7 +139,7 @@ Bitwarden tilbyder Teams og Enterprise-planer for virksomheder, så du sikkert k Hvorfor vælge Bitwarden: Kryptering i verdensklasse -Adgangskoder er beskyttet med avanceret end-to-end-kryptering (AES-256 bit, saltet hashtag og PBKDF2 SHA-256), så dine data forbliver sikre og private. +Adgangskoder er beskyttet med avanceret end-to-end-kryptering (AES-256 bit, saltet hashing og PBKDF2 SHA-256), så dine data forbliver sikre og private. Indbygget adgangskodegenerator Generér stærke, unikke og tilfældige adgangskoder baseret på sikkerhedskrav til hvert websted, du besøger. @@ -148,7 +148,8 @@ Globale oversættelser Bitwarden findes på 40 sprog, og flere kommer til, takket være vores globale fællesskab. Applikationer på tværs af platforme -Beskyt og del følsomme data i din Bitwarden boks fra enhver browser, mobilenhed eller desktop OS og mere. +Beskyt og del følsomme data i din Bitwarden boks fra enhver browser, mobilenhed eller desktop OS og mere. + En sikker og gratis adgangskodemanager til alle dine enheder diff --git a/apps/browser/store/locales/el/copy.resx b/apps/browser/store/locales/el/copy.resx index de4f9e5ff67..e120c906a47 100644 --- a/apps/browser/store/locales/el/copy.resx +++ b/apps/browser/store/locales/el/copy.resx @@ -124,15 +124,32 @@ Ένας ασφαλής και δωρεάν διαχειριστής κωδικών για όλες τις συσκευές σας - Το Bitwarden είναι ο ευκολότερος και ασφαλέστερος τρόπος για να αποθηκεύσετε όλες τις συνδέσεις και τους κωδικούς πρόσβασης σας, διατηρώντας παράλληλα το συγχρονισμό μεταξύ όλων των συσκευών σας. Η επέκταση της εφαρμογής Bitwarden σας επιτρέπει να συνδεθείτε γρήγορα σε οποιαδήποτε ιστοσελίδα μέσω του Safari ή του Chrome και υποστηρίζεται από εκατοντάδες άλλες δημοφιλείς εφαρμογές. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -Η κλοπή κωδικού πρόσβασης είναι ένα σοβαρό πρόβλημα. Οι ιστοσελίδες και οι εφαρμογές που χρησιμοποιείτε υποβάλλονται σε επίθεση κάθε μέρα. Παραβιάσεις ασφαλείας συμβαίνουν και οι κωδικοί ίσως κλαπούν. Όταν επαναχρησιμοποιείτε τους ίδιους κωδικούς πρόσβασης σε εφαρμογές και ιστοσελίδες, οι χάκερ μπορούν εύκολα να έχουν πρόσβαση στο ηλεκτρονικό σας ταχυδρομείο, στην τράπεζα σας και σε άλλους σημαντικούς λογαριασμούς. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Οι ειδικοί ασφαλείας συστήνουν να χρησιμοποιείτε διαφορετικό, τυχαία δημιουργημένο κωδικό πρόσβασης για κάθε λογαριασμό που δημιουργείτε. Αλλά πώς διαχειρίζεστε όλους αυτούς τους κωδικούς πρόσβασης; Το Bitwarden σας διευκολύνει να δημιουργείτε, να αποθηκεύετε και να έχετε πρόσβαση στους κωδικούς πρόσβασης σας. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -Το Bitwarden αποθηκεύει όλες τις συνδέσεις σας σε κρυπτογραφημένη μορφή που συγχρονίζεται σε όλες τις συσκευές σας. Δεδομένου ότι είναι πλήρως κρυπτογραφημένο, μόνο εσείς έχετε πρόσβαση στα δεδομένα σας. Ούτε η ομάδα του Bitwarden μπορεί να διαβάσει τα δεδομένα σας, ακόμα κι αν θέλουμε. Τα δεδομένα σας είναι σφραγισμένα με κρυπτογράφηση AES-256 bit, salted hashing και PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -Το Bitwarden είναι 100% λογισμικό ανοικτού κώδικα. Ο πηγαίος κώδικας για το Bitwarden φιλοξενείται στο GitHub και ο καθένας είναι ελεύθερος να επανεξετάσει, να ελέγξει και να συνεισφέρει στον κώδικα βάσης του Bitwarden. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + Ένας ασφαλής και δωρεάν διαχειριστής κωδικών για όλες τις συσκευές σας diff --git a/apps/browser/store/locales/et/copy.resx b/apps/browser/store/locales/et/copy.resx index 88a5b077708..2014ec88a80 100644 --- a/apps/browser/store/locales/et/copy.resx +++ b/apps/browser/store/locales/et/copy.resx @@ -124,15 +124,32 @@ Tasuta ja turvaline paroolihaldur kõikidele sinu seadmetele - Bitwarden muudab kontoandmete ja teiste isiklike andmete kasutamise erinevate seadmete vahel lihtsaks ja turvaliseks. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -Paroolivargustest on saamas järjest tõsisem probleem. Veebilehed ja rakendused, mida igapäevaselt kasutad, on pidevalt rünnakute all. Muuhulgas toimuvad alalõpmata andmelekked, millega koos saadakse ligipääs ka Sinu paroolidele. Kasutades erinevatel veebilehtedel ühesugust parooli, on häkkeritel lihtne ligi pääseda nii sinu e-postile, pangakontole või teistele tähtsatele kontodele. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Turvaeksperdid soovitavad kasutada kõikides kasutajakontodes erinevaid, juhuslikult koostatud paroole. Kuidas aga kõiki neid paroole hallata? Bitwarden muudab paroolide loomise, talletamise ja nendele ligipääsu lihtsaks ja turvaliseks. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -Bitwarden talletab kõik Sinu andmed krüpteeritud hoidlas, mis sünkroniseeritakse kõikide Sinu poolt kasutatavate seadmete vahel. Kuna hoidla sisu krüpteeritakse enne selle enne seadmest lahkumist, omad andmetele ligipääsu ainult sina. Ka bitwardeni meeskond ei saa Sinu andmeid vaadata, isegi kui neil selleks tahtmine oleks. Sinu andmed kaitsevad AES-256 bitine krüpteering, salted hashing ja PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -Bitwarden on 100% avatud koodiga tarkvara. Bitwarden lähtekood on saadaval GitHubis ja kõik saavad sellega tasuta tutvuda, seda kontrollida ja Bitwardeni koodibaasi panustada. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + Tasuta ja turvaline paroolihaldur kõikidele Sinu seadmetele diff --git a/apps/browser/store/locales/fa/copy.resx b/apps/browser/store/locales/fa/copy.resx index 116e66369cb..60386bf1841 100644 --- a/apps/browser/store/locales/fa/copy.resx +++ b/apps/browser/store/locales/fa/copy.resx @@ -124,18 +124,32 @@ یک مدیریت کننده کلمه عبور رایگان برای تمامی دستگاههایتان - Bitwarden ساده ترین و امن ترین راه گردآوری تمام داده های ورودی و پسوردها است در حالی که به راحتی آنها را بین تمامی دستگاه ها همگام میکند. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -سرقت پسورد یک مشکل جدی است. وبسایت ها و اپلیکیشن هایی که شما از آنها استفاده میکنید هر روز تحت حملات قرار دارند. نقص های امنیتی رخ میدهند و پسوردها به سرقت میروند. زمانی که شما مجدداً از همان پسورد برای تمام وبسایت ها و اپلیکیشن ها استفاده میکنید هکرها می‌توانند به راحتی به ایمیل، حساب بانکی، و سایر حسابهای کاربریتان دسترسی داشته باشند. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -متخصصان امنیتی توصیه میکنند که برای هر حساب کاربری که ایجاد میکنید از پسوردهای متفاوت و تصادفی تولید شده استفاده کنید. اما چطور تمامی این پسورها را مدیریت میکنید؟ بیت واردن ساختن، نگهداری، ودسترسی به پسوردهایتان را آسان میکند. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. -Bitwarden تمامی داده های ورودی شما را در یک گاو صندوق رمزنگاری شده نگهداری میکند که قابل همگام سازی توسط تمامی دستگاه های شماست. از آنجا که این داده ها هر زمان قبل از ترک دستگاهتان کاملا رمزنگاری میشود، فقط شما به اطلاعاتتان دسترسی دارید. حتی اگر تیم ما در بیت واردن هم بخواهند نمیتوانند اطلاعات شما را مشاهده کنند. داده های شما توسط رمزگذاری AES-256 بیتی، هَش خرد شده، و PBKDF2SHA-256 رمزنگاری شده است. +Why Choose Bitwarden: -Bitwarden ۱۰۰٪ یک برنامه متن باز است. کد منبع بیت واردن در GitHub میزبانی میشود و هر کس آزاد است برای بررسی، تفتیش و کمک به کد دسترسی داشته باشد. +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + یک مدیریت کننده کلمه عبور رایگان برای تمامی دستگاههایتان diff --git a/apps/browser/store/locales/he/copy.resx b/apps/browser/store/locales/he/copy.resx index 3ceccc9b9ce..cd980970fca 100644 --- a/apps/browser/store/locales/he/copy.resx +++ b/apps/browser/store/locales/he/copy.resx @@ -124,15 +124,32 @@ מנהל ססמאות חינמי ומאובטח עבור כל המכשירים שלך - תוכנת Bitwarden היא הדרך הקלה והבטוחה לשמירת הסיסמאות שלך ועוזרת לסנכרן את הסיסמאות בין כל המכשירים שברשותך. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -גניבת סיסמאות היא בעיה רצינית. אתרים ואפליקציות מותקפים באופן יום יומי. פירצות אבטחה קורות מדי פעם ומאגרי סיסמאות נחשפים במלואם. כשאתה משתמש באותה סיסמה עבור כמה אתרים או אפליקציות, האקרים יכולים לנצל את אותה הסיסמה עבור אותם האתרים והאפליקציות ויכולים להשיג גישה למייל, לבנק, ולחשבונות חשובים אחרים. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -מומחי אבטחה ממליצים להשתמש בסיסמאות שונות ורנדומליות עבור כל חשבון שאתה יוצר. אבל איך אפשר לנהל את כל הסיסמאות הללו? תוכנת Bitwarden עוזרת לך ליצור, לשמור, ולגשת לכל הסיסמאות שלך. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -תוכנת Bitwarden מאחסנת את כל הפרטים בכספת מוצפנת שמסתנכרנת בין כל המכשירים שלך. מאחר שהמידע מוצפן עוד לפני שהוא יוצא מהמכשיר שלך, רק לך יש גישה למידע. גם הצוות שלנו בBitwarden לא יכול לקרוא את המידע, אפילו אם ירצה. המידע שלך מוגן עם הצפנת AES-256 ביט, salted hashing, וPBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -תוכנת Bitwarden היא 100% תוכנת קוד פתוח. קוד המקור של Bitwarden מאוחסן בGitHub וכל מי שרוצה יכול לתת ביקורת, להוסיף הערות, וכמובן לתרום מזמנו לפיתוח הקוד של Bitwarden. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + מנהל סיסמאות חינמי ומאובטח עבור כל המכשירים שלך diff --git a/apps/browser/store/locales/hi/copy.resx b/apps/browser/store/locales/hi/copy.resx index 9edb8288abb..8db837a3c3a 100644 --- a/apps/browser/store/locales/hi/copy.resx +++ b/apps/browser/store/locales/hi/copy.resx @@ -124,13 +124,32 @@ आपके सभी उपकरणों के लिए एक सुरक्षित और नि: शुल्क कूटशब्द प्रबंधक - 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. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -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. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -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. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -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. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + आपके सभी उपकरणों के लिए एक सुरक्षित और नि: शुल्क पासवर्ड प्रबंधक diff --git a/apps/browser/store/locales/id/copy.resx b/apps/browser/store/locales/id/copy.resx index bf601db1dc1..b52252a342e 100644 --- a/apps/browser/store/locales/id/copy.resx +++ b/apps/browser/store/locales/id/copy.resx @@ -124,15 +124,32 @@ Pengelola sandi yang aman dan gratis untuk semua perangkat Anda - Bitwarden adalah cara termudah dan teraman untuk menyimpan semua info masuk dan sandi Anda sambil tetap menjaga mereka disinkronkan di antara semua perangkat Anda. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -Pencurian sandi adalah masalah serius. Situs web dan aplikasi yang Anda gunakan diserang setiap hari. Pelanggaran keamanan terjadi dan sandi Anda dicuri. Ketika Anda menggunakan sandi yang sama di aplikasi dan situs web peretas dapat dengan mudah mengakses email, bank, dan akun penting Anda yang lain. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Pakar keamanan merekomendasikan agar Anda menggunakan sandi yang berbeda dan dibuat secara acak untuk setiap akun yang Anda buat. Tapi bagaimana mengelola semua sandi tersebut? Bitwarden membuatnya menjadi mudah untuk Anda membuat, menyimpan dan mengakses sandi Anda. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -Bitwarden menyimpan semua info masuk Anda di brankas terenkripsi yang disinkronkan di semua perangkat Anda. Karena sepenuhnya dienkripsi sebelum meninggalkan perangkat Anda, hanya Anda yang memiliki akses ke data Anda. Bahkan tim di Bitwarden tidak dapat membaca data Anda, bahkan jika kami mau. Data Anda disegel dengan ekripsi AES-256 bit, hash yang di-salt, dan PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -Bitwarden adalah 100% perangkat lunak sumber terbuka. Kode sumber untuk Bitwarden berada di GitHub dan setiap orang bebas untuk meninjau, mengaudit, dan berkontribusi ke basis kode Bitwarden. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + Pengelola sandi yang aman dan gratis untuk semua perangkat Anda diff --git a/apps/browser/store/locales/ja/copy.resx b/apps/browser/store/locales/ja/copy.resx index 660708153da..33db9384ae3 100644 --- a/apps/browser/store/locales/ja/copy.resx +++ b/apps/browser/store/locales/ja/copy.resx @@ -124,15 +124,32 @@ あらゆる端末で使える、安全な無料パスワードマネージャー - Bitwarden は、あらゆる端末間で同期しつつログイン情報やパスワードを保管しておける、最も簡単で安全なサービスです。 + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -パスワードの盗難は深刻な問題になっています。ウェブサイトやアプリは毎日攻撃を受けており、もしセキュリティに問題があればパスワードが盗難されてしまいます。 同じパスワードを他のアプリでも再利用していると、攻撃者はメールや銀行口座など大切なアカウントに簡単に侵入できてしまいます。 +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -セキュリティの専門家は、アカウント毎に別のランダムに生成したパスワードを使うことを推奨していますが、ランダムなパスワードをすべて覚えていられますか? Bitwarden を使えば、わざわざパスワードを覚えなくても簡単にパスワードの生成、保管や利用ができます。 +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -Bitwarden は端末間で同期できる、暗号化された保管庫にログイン情報を保管します。端末から送信される前に暗号化されるので、あなただけがそのデータにアクセスできるのです。Bitwarden の開発者チームですら、あなたに頼まれたとしてもデータを読み取ることはできません。データは AES-256 bit 暗号化、ソルト化ハッシュ、PBKDF2 SHA-256 で保護されます。 +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -Bitwarden は100%オープンソースソフトウェアです。Bitwarden のソースコードは GitHub にホストされており、誰でもBitwardenのコードを自由にレビュー、監査、貢献できます。 +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + あらゆる端末で使える、安全な無料パスワードマネージャー diff --git a/apps/browser/store/locales/lt/copy.resx b/apps/browser/store/locales/lt/copy.resx index d7929c0b514..d2aa4024c07 100644 --- a/apps/browser/store/locales/lt/copy.resx +++ b/apps/browser/store/locales/lt/copy.resx @@ -124,15 +124,32 @@ Saugi ir nemokama slaptažodžių tvarkyklė visiems įrenginiams - „Bitwarden“ yra paprasčiausias ir saugiausias būdas išsaugoti visus prisijungimus ir slaptažodžius, tuo pačiu patogu juos pasiekti iš visų jūsų įrenginių. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -Slaptažodžių vagystė yra rimta problema. Jūsų naudojamos svetainės ir programos yra atakuojamos kiekvieną dieną. Įvykus saugumo pažeidimų jūsų slaptažodžiai yra pavogiami. Kai pakartotinai naudojate tuos pačius slaptažodžius programose ir svetainėse, įsilaužėliai gali lengvai pasiekti jūsų el. pašto, banko ir kitas svarbias paskiras. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Saugumo ekspertai rekomenduoja kiekvienai jūsų sukurtai paskyrai naudoti kitą, atsitiktinai sugeneruotą slaptažodį. Bet kaip valdyti visus tuos slaptažodžius? „Bitwarden“ leidžia jums lengvai kurti, saugoti ir pasiekti slaptažodžius. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -„Bitwarden“ visus jūsų prisijungimus saugo šifruotoje saugykloje, kuri pasiekiama visuose jūsų įrenginiuose. Kadangi duomenys visiškai užšifruoti dar neišėjus iš jūsų įrenginio, prieigą prie savo duomenų turite tik jūs. Net „Bitwarden“ komanda negali perskaityti jūsų duomenų, net jei mes to ir norėtume. Jūsų duomenys užklijuojami naudojant AES-256 bitų šifravimą, druskinta maišos funkcija ir PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -„Bitwarden“ yra 100% atvirojo kodo programinė įranga. „Bitwarden“ kodas yra „GitHub“ ir visi gali peržiūrėti, tikrinti ir prisidėti prie „Bitwarden“ kodo bazės. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + Saugi ir nemokama slaptažodžių tvarkyklė visiems įrenginiams diff --git a/apps/browser/store/locales/lv/copy.resx b/apps/browser/store/locales/lv/copy.resx index 252b6f0344a..203ef914839 100644 --- a/apps/browser/store/locales/lv/copy.resx +++ b/apps/browser/store/locales/lv/copy.resx @@ -124,15 +124,31 @@ Drošs bezmaksas paroļu pārvaldnieks visām Tavām ierīcēm - Bitwarden ir vieglākais un drošākais veids, kā glabāt visus pierakstīšanās vienumus un paroles, vienlaicīgi ērti uzturot tās sinhronizētas visās ierīcēs. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -Paroļu zagšana ir nopietna nebūšana. Tīmekļa vietnēm un lietotnēm uzbrūk katru dienu. Datu drošības pārkāpumos tiek nozagtas paroles. Kad viena un tā pati parole tiek izmantota lietotnēs un tīmekļa vietnēs, urķi var viegli piekļūt e-pasta, banku un citiem būtiskiem kontiem. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Drošības lietpratēji iesaka katram izveidotajam kontam izmantot dažādas, nejauši veidotas paroles. Kā tās visas pārvaldīt? Bitwarden atvieglo paroļu izveidošanu, glabāšanu un piekļūšanu tām. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -Bitwarden uzglabā visus pierakstīšanās vienumus šifrētā glabātavā, kas tiek sinhronizēta visās izmantotajās ierīcēs. Tā kā tā dati tiek pilnībā šifrēti, pirms tie tiek izsūtīti no izmantotās ierīces, piekļuve tiem ir tikai glabātavas īpašniekam. Pat Bitwarden izstrādātāji nevar lasīt datus, pat ja to gribētu. Informācija tiek aizsargāta ar AES-256 bitu šifrēšanu, "sālīto" jaukšanu un PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -Bitwarden ir pilnībā atvērtā pirmkoda programmatūra. Bitwarden atvērtais pirmkods ir izvietots GitHub, un ikkatram ir iespēja pārskatīt, pārbaudīt un sniegt ieguldījumu Bitwarden pirmkodā. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. diff --git a/apps/browser/store/locales/nb/copy.resx b/apps/browser/store/locales/nb/copy.resx index 67d9a804504..74a8558db65 100644 --- a/apps/browser/store/locales/nb/copy.resx +++ b/apps/browser/store/locales/nb/copy.resx @@ -124,15 +124,32 @@ En sikker og fri passordbehandler for alle dine PCer og mobiler - Bitwarden er den enkleste og tryggeste måten å lagre alle dine innlogginger og passord på, samtidig som de blir synkronisert mellom alle dine PCer og mobiler. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -Passordtyveri er et seriøst problem. Nettstedene og appene som du bruker er under angrep hver eneste dag. Sikkerhetsbrudd forekommer, og dine passord blir stjålet. Når du bruker de samme passordene over flere apper og nettsteder, kan hackere lett få tilgang til din e-post, bankkonto, og andre viktige kontoer. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Sikkerhetseksperter anbefaler at du bruker forskjellig og tilfeldig genererte passord for hver eneste konto du lager. Men hvordan håndterer du alle de passordene? Bitwarden gjør det lett for deg å lage, lagre, og få tilgang til dine passord. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -Bitwarden lagrer alle dine innlogginger i et kryptert hvelv som synkroniseres mellom alle dine PCer og mobiler. Ettersom hvelvet er fullstendig kryptert før det noensinne forlater enheten din, har bare du tilgang til dine dataer. Selv ikke de som jobber hos Bitwarden kan lese dine dataer, om vi så ville det. Dine dataer er forseglet med AES 256-bitkryptering, saltet hashing, og PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -Bitwardens programvare har 100% åpen kildekode. Kildekoden til Bitwarden betjenes på GitHub, og alle har all rett til å undersøke, gjennomgå og bidra til Bitwarden sin kodebase. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + En sikker og fri passordbehandler for alle dine PCer og mobiler diff --git a/apps/browser/store/locales/pt_BR/copy.resx b/apps/browser/store/locales/pt_BR/copy.resx index 536ad080eca..90a2959e807 100644 --- a/apps/browser/store/locales/pt_BR/copy.resx +++ b/apps/browser/store/locales/pt_BR/copy.resx @@ -124,15 +124,32 @@ Um gerenciador de senhas gratuito e seguro para todos os seus dispositivos - O Bitwarden é a maneira mais fácil e segura de armazenar todos os seus usuários e senhas mantendo-os convenientemente sincronizados entre todos os seus dispositivos. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -O furto de senhas é um problema sério. Os sites e aplicativos que os utiliza estão sob ataque todos os dias. Brechas de segurança ocorrem e as suas senhas são furtadas. Quando você reutiliza as mesmas senhas entre aplicativos e sites, os hackers podem facilmente acessar o seu e-mail, banco, e outras contas importantes. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Os especialistas de segurança recomendam que utilize uma senha diferente e aleatoriamente gerada para todas as contas que você cria. Mas como gerenciar todas essas senhas? O Bitwarden torna-lhe fácil criar, armazenar, e acessar as suas senhas. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -O Bitwarden armazena todas as suas credenciais num cofre encriptado que sincroniza entre todos os seus dispositivos. Como são completamente encriptados antes de se quer sair do seu dispositivo, apenas você tem acesso aos seus dados. Nem se quer a equipe do Bitwarden pode ler os seus dados, mesmo se quiséssemos. Os seus dados são selados com encriptação AES-256 bits, salted hashing, e PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -Bitwarden é um software 100% de código aberto. O código-fonte do Bitwarden está hospedado no GitHub e todos são livres para revisar, auditar e contribuir com a base de códigos do Bitwarden. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + Um gerenciador de senhas gratuito e seguro para todos os seus dispositivos diff --git a/apps/browser/store/locales/pt_PT/copy.resx b/apps/browser/store/locales/pt_PT/copy.resx index 9f0230000c1..9fd0780a540 100644 --- a/apps/browser/store/locales/pt_PT/copy.resx +++ b/apps/browser/store/locales/pt_PT/copy.resx @@ -124,15 +124,32 @@ Um gestor de palavras-passe seguro e gratuito para todos os seus dispositivos - O Bitwarden é a maneira mais fácil e segura de armazenar todas as suas credenciais e palavras-passe mantendo-as convenientemente sincronizadas entre todos os seus dispositivos. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -O furto de palavras-passe é um problema sério. Os websites e aplicações que utiliza estão sob ataque todos os dias. Quebras de segurança ocorrem e as suas palavras-passe são furtadas. Quando reutiliza as mesmas palavras-passe entre aplicações e websites, os hackers podem facilmente aceder ao seu email, banco, e outras contas importantes. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Os especialistas de segurança recomendam que utilize uma palavra-passe diferente e aleatoriamente gerada para todas as contas que cria. Mas como é que gere todas essas palavras-passe? O Bitwarden torna-lhe fácil criar, armazenar, e aceder às suas palavras-passe. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -O Bitwarden armazena todas as suas credenciais num cofre encriptado que sincroniza entre todos os seus dispositivos. Como são completamente encriptados antes de se quer sair do seu dispositivo, apenas você tem acesso aos seus dados. Nem se quer a equipa do Bitwarden pode ler os seus dados, mesmo se quiséssemos. Os seus dados são selados com encriptação AES-256 bits, salted hashing, e PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -O Bitwarden é 100% software de código aberto. O código fonte para o Bitwarden está hospedado no GitHub e todos podem revisar, auditar, e contribuir para a base de código do Bitwarden. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + Um gestor de palavras-passe seguro e gratuito para todos os seus dispositivos diff --git a/apps/browser/store/locales/sr/copy.resx b/apps/browser/store/locales/sr/copy.resx index d67314a07c1..15634809472 100644 --- a/apps/browser/store/locales/sr/copy.resx +++ b/apps/browser/store/locales/sr/copy.resx @@ -124,15 +124,32 @@ Сигурни и бесплатни менаџер лозинке за сва Ваша уређаја - Bitwarden је најједноставнији и најсигурнији начин за складиштење свих ваших података за пријављивање и лозинки, док их истовремено усклађујете на свим својим уређајима. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. -Крађа лозинке је озбиљан проблем. Веб локације и апликације које користите свакодневно су на удару. Дошло је до нарушавања безбедности и крађе лозинки. Када поново користите исте лозинке у апликацијама и на веб локацијама, хакери могу лако да приступе вашој е-пошти, банци и другим важним рачунима. +NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. -Стручњаци за безбедност препоручују употребу различите, насумично генерисане лозинке за сваки налог који креирате. Али како управљате свим тим лозинкама? Bitwarden вам олакшава стварање, чување и приступ вашим лозинкама. +Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. -Bitwarden чува све ваше пријаве у шифрованом сефу који се синхронизује на свим вашим уређајима. Пошто је потпуно шифровано пре него што напусти уређај, само ви имате приступ подацима. Чак ни тим у Bitwarden не може да прочита ваше податке, чак и да то желимо. Ваши подаци су запечаћени са AES-256 битном енкрипцијом, усољеним хеширањем и PBKDF2 SHA-256. +Generate strong, unique, and random passwords based on security requirements for every website you frequent. -Bitwardenје софтвер са 100% отвореног кода. Изворни код Bitwarden-а се налази на GitHub и сви могу слободно да прегледају, провере и дају свој допринос за Bitwarden. +Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + +Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + +Why Choose Bitwarden: + +World-Class Encryption +Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + +Built-in Password Generator +Generate strong, unique, and random passwords based on security requirements for every website you frequent. + +Global Translations +Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + +Cross-Platform Applications +Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. + Сигурни и бесплатни менаџер лозинке за сва Ваша уређаја From 6d10434d66097a76d91d1a10d52e0c75cdd0fffc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 09:26:05 -0600 Subject: [PATCH 07/28] Bump Browser version to 2022.9.1 (#3527) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- apps/browser/package.json | 2 +- apps/browser/src/manifest.json | 2 +- apps/browser/src/manifest.v3.json | 2 +- package-lock.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/browser/package.json b/apps/browser/package.json index 0bc496a190a..57414631013 100644 --- a/apps/browser/package.json +++ b/apps/browser/package.json @@ -1,6 +1,6 @@ { "name": "@bitwarden/browser", - "version": "2022.9.0", + "version": "2022.9.1", "scripts": { "build": "webpack", "build:mv3": "cross-env MANIFEST_VERSION=3 webpack", diff --git a/apps/browser/src/manifest.json b/apps/browser/src/manifest.json index 9d0b491481c..d29223559e0 100644 --- a/apps/browser/src/manifest.json +++ b/apps/browser/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "__MSG_extName__", "short_name": "__MSG_appName__", - "version": "2022.9.0", + "version": "2022.9.1", "description": "__MSG_extDesc__", "default_locale": "en", "author": "Bitwarden Inc.", diff --git a/apps/browser/src/manifest.v3.json b/apps/browser/src/manifest.v3.json index 509fe467c65..68a9ff30c88 100644 --- a/apps/browser/src/manifest.v3.json +++ b/apps/browser/src/manifest.v3.json @@ -3,7 +3,7 @@ "minimum_chrome_version": "102.0", "name": "__MSG_extName__", "short_name": "__MSG_appName__", - "version": "2022.9.0", + "version": "2022.9.1", "description": "__MSG_extDesc__", "default_locale": "en", "author": "Bitwarden Inc.", diff --git a/package-lock.json b/package-lock.json index ded274d4a2c..b58a76c6aa3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -180,7 +180,7 @@ }, "apps/browser": { "name": "@bitwarden/browser", - "version": "2022.9.0" + "version": "2022.9.1" }, "apps/cli": { "name": "@bitwarden/cli", From d2065cc91f4e6928dbe57448be8d0e57c66fe18b Mon Sep 17 00:00:00 2001 From: Justin Baur <19896123+justindbaur@users.noreply.github.com> Date: Wed, 14 Sep 2022 14:02:34 -0400 Subject: [PATCH 08/28] Update CSP rule for Angular CDK (#3529) --- apps/web/webpack.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/webpack.config.js b/apps/web/webpack.config.js index 6ddff6edd5a..6d13cff50be 100644 --- a/apps/web/webpack.config.js +++ b/apps/web/webpack.config.js @@ -235,7 +235,7 @@ const devServer = https://*.paypal.com 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JVRXyYPueLWdwGwY9m/7u4QlZ1xeQdqUj2t8OVIzZE4='; - 'sha256-0xHKHIT3+e2Gknxsm/cpErSprhL+o254L/y5bljg74U=' + 'sha256-or0p3LaHetJ4FRq+flVORVFFNsOjQGWrDvX8Jf7ACWg=' img-src 'self' data: From d666d6688631f17f559806e18b41f20e728c69a4 Mon Sep 17 00:00:00 2001 From: Andreas Coroiu Date: Thu, 15 Sep 2022 07:38:29 +0200 Subject: [PATCH 09/28] [EC-457] Component library icon buttons (#3372) * [EC-457] feat: initial version of icon button * [EC-457] feat: modify template and start adding inputs * [EC-457] feat: implement all styles * [EC-457] chore: cleanup * [EC-457] feat: fix hover styles after discussions * [EC-457] feat: add focus ring workaround * [EC-457] chore: refactor stories a bit * [EC-457] fix: button style attr name reserved word collision * [EC-356] feat: match padding with figma * [EC-457] feat: use icon button in banner * [EC-457] chore: cleanup css classes * [EC-457] feat: improve aria * [EC-457] feat: use icon button in dialog * [EC-457] fix: make focus and hover styles independent * [EC-457] fix: remove primary 500 border * [EC-457] chore: cleanup * [EC-457] chore: move css class to common list * [EC-457] fix: use focus-visible * [EC-457] chore: expand on workaround fix * [EC-457] fix: default sizing * [EC-457] fix: align trash icon right * [EC-457] fix: add missing aria labels * [EC-457] fix: add i18n service to banner tests * [EC-457] chore: rename size `default` to `button` * [EC-457] feat: double padding * [EC-457] feat: simplify sizes - update default * [EC-457] fix: revert selector fix - gonna create separate pr * [EC-457] chore: remove superfluous dependencies * [EC-457] fix: remove non-working onClose handler Removing this storybook action because we already test it as part of the dialog service stories. It requries mocking the dialogRef to capture the close function which makes this story more complex but adds very little value as we already test it elsewhere. --- .../src/banner/banner.component.html | 13 +- .../src/banner/banner.component.spec.ts | 15 +++ libs/components/src/banner/banner.module.ts | 5 +- libs/components/src/banner/banner.stories.ts | 28 ++++- .../components/src/button/button.directive.ts | 16 +-- libs/components/src/dialog/dialog.module.ts | 5 +- .../src/dialog/dialog/dialog.component.html | 14 +-- .../src/dialog/dialog/dialog.stories.ts | 12 +- .../dialog/simple-dialog.service.stories.ts | 25 +++- .../src/icon-button/icon-button.component.ts | 115 ++++++++++++++++++ .../src/icon-button/icon-button.module.ts | 11 ++ .../src/icon-button/icon-button.stories.ts | 59 +++++++++ libs/components/src/icon-button/index.ts | 1 + libs/components/src/index.ts | 1 + libs/components/src/tw-theme.css | 4 + libs/components/tailwind.config.base.js | 5 +- 16 files changed, 293 insertions(+), 36 deletions(-) create mode 100644 libs/components/src/icon-button/icon-button.component.ts create mode 100644 libs/components/src/icon-button/icon-button.module.ts create mode 100644 libs/components/src/icon-button/icon-button.stories.ts create mode 100644 libs/components/src/icon-button/index.ts diff --git a/libs/components/src/banner/banner.component.html b/libs/components/src/banner/banner.component.html index 531682b6407..8ce7da97ed7 100644 --- a/libs/components/src/banner/banner.component.html +++ b/libs/components/src/banner/banner.component.html @@ -1,5 +1,5 @@
- +
diff --git a/libs/components/src/banner/banner.component.spec.ts b/libs/components/src/banner/banner.component.spec.ts index 2cb7fdc15bf..0fe2391a5fc 100644 --- a/libs/components/src/banner/banner.component.spec.ts +++ b/libs/components/src/banner/banner.component.spec.ts @@ -1,5 +1,10 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; + +import { SharedModule } from "../shared/shared.module"; +import { I18nMockService } from "../utils/i18n-mock.service"; + import { BannerComponent } from "./banner.component"; describe("BannerComponent", () => { @@ -8,7 +13,17 @@ describe("BannerComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ + imports: [SharedModule], declarations: [BannerComponent], + providers: [ + { + provide: I18nService, + useFactory: () => + new I18nMockService({ + close: "Close", + }), + }, + ], }).compileComponents(); fixture = TestBed.createComponent(BannerComponent); diff --git a/libs/components/src/banner/banner.module.ts b/libs/components/src/banner/banner.module.ts index df8c8f29b31..2c819fbc5b4 100644 --- a/libs/components/src/banner/banner.module.ts +++ b/libs/components/src/banner/banner.module.ts @@ -1,10 +1,13 @@ import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { IconButtonModule } from "../icon-button"; +import { SharedModule } from "../shared/shared.module"; + import { BannerComponent } from "./banner.component"; @NgModule({ - imports: [CommonModule], + imports: [CommonModule, SharedModule, IconButtonModule], exports: [BannerComponent], declarations: [BannerComponent], }) diff --git a/libs/components/src/banner/banner.stories.ts b/libs/components/src/banner/banner.stories.ts index 871b069a7ab..693731e372b 100644 --- a/libs/components/src/banner/banner.stories.ts +++ b/libs/components/src/banner/banner.stories.ts @@ -1,19 +1,43 @@ -import { Meta, Story } from "@storybook/angular"; +import { Meta, moduleMetadata, Story } from "@storybook/angular"; + +import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; + +import { IconButtonModule } from "../icon-button"; +import { SharedModule } from "../shared/shared.module"; +import { I18nMockService } from "../utils/i18n-mock.service"; import { BannerComponent } from "./banner.component"; export default { title: "Component Library/Banner", component: BannerComponent, + decorators: [ + moduleMetadata({ + imports: [SharedModule, IconButtonModule], + providers: [ + { + provide: I18nService, + useFactory: () => { + return new I18nMockService({ + close: "Close", + }); + }, + }, + ], + }), + ], args: { bannerType: "warning", }, + argTypes: { + onClose: { action: "onClose" }, + }, } as Meta; const Template: Story = (args: BannerComponent) => ({ props: args, template: ` - Content Really Long Text Lorem Ipsum Ipsum Ipsum + Content Really Long Text Lorem Ipsum Ipsum Ipsum `, }); diff --git a/libs/components/src/button/button.directive.ts b/libs/components/src/button/button.directive.ts index b36da8620eb..59e7b4269f7 100644 --- a/libs/components/src/button/button.directive.ts +++ b/libs/components/src/button/button.directive.ts @@ -9,8 +9,6 @@ const buttonStyles: Record = { "!tw-text-contrast", "hover:tw-bg-primary-700", "hover:tw-border-primary-700", - "focus:tw-bg-primary-700", - "focus:tw-border-primary-700", "disabled:tw-bg-primary-500/60", "disabled:tw-border-primary-500/60", "disabled:!tw-text-contrast/60", @@ -23,9 +21,6 @@ const buttonStyles: Record = { "hover:tw-bg-secondary-500", "hover:tw-border-secondary-500", "hover:!tw-text-contrast", - "focus:tw-bg-secondary-500", - "focus:tw-border-secondary-500", - "focus:!tw-text-contrast", "disabled:tw-bg-transparent", "disabled:tw-border-text-muted/60", "disabled:!tw-text-muted/60", @@ -37,9 +32,6 @@ const buttonStyles: Record = { "hover:tw-bg-danger-500", "hover:tw-border-danger-500", "hover:!tw-text-contrast", - "focus:tw-bg-danger-500", - "focus:tw-border-danger-500", - "focus:!tw-text-contrast", "disabled:tw-bg-transparent", "disabled:tw-border-danger-500/60", "disabled:!tw-text-danger/60", @@ -62,10 +54,10 @@ export class ButtonDirective { "tw-text-center", "hover:tw-no-underline", "focus:tw-outline-none", - "focus:tw-ring", - "focus:tw-ring-offset-2", - "focus:tw-ring-primary-700", - "focus:tw-z-10", + "focus-visible:tw-ring", + "focus-visible:tw-ring-offset-2", + "focus-visible:tw-ring-primary-700", + "focus-visible:tw-z-10", ] .concat(this.block ? ["tw-w-full", "tw-block"] : ["tw-inline-block"]) .concat(buttonStyles[this.buttonType ?? "secondary"]); diff --git a/libs/components/src/dialog/dialog.module.ts b/libs/components/src/dialog/dialog.module.ts index 535972417c1..3492a38f10e 100644 --- a/libs/components/src/dialog/dialog.module.ts +++ b/libs/components/src/dialog/dialog.module.ts @@ -1,6 +1,7 @@ import { DialogModule as CdkDialogModule } from "@angular/cdk/dialog"; import { NgModule } from "@angular/core"; +import { IconButtonModule } from "../icon-button"; import { SharedModule } from "../shared"; import { DialogService } from "./dialog.service"; @@ -10,11 +11,11 @@ import { DialogTitleContainerDirective } from "./directives/dialog-title-contain import { SimpleDialogComponent } from "./simple-dialog/simple-dialog.component"; @NgModule({ - imports: [SharedModule, CdkDialogModule], + imports: [SharedModule, IconButtonModule, CdkDialogModule], declarations: [ DialogCloseDirective, - DialogComponent, DialogTitleContainerDirective, + DialogComponent, SimpleDialogComponent, ], exports: [CdkDialogModule, DialogComponent, SimpleDialogComponent], diff --git a/libs/components/src/dialog/dialog/dialog.component.html b/libs/components/src/dialog/dialog/dialog.component.html index 1bc95d5208d..40e1fe75051 100644 --- a/libs/components/src/dialog/dialog/dialog.component.html +++ b/libs/components/src/dialog/dialog/dialog.component.html @@ -3,19 +3,19 @@ class="tw-my-4 tw-flex tw-max-h-screen tw-flex-col tw-overflow-hidden tw-rounded tw-border tw-border-solid tw-border-secondary-300 tw-bg-text-contrast tw-text-main" >

+ [attr.title]="'close' | i18n" + [attr.aria-label]="'close' | i18n" + >
diff --git a/libs/components/src/dialog/dialog/dialog.stories.ts b/libs/components/src/dialog/dialog/dialog.stories.ts index 3bf8457d128..8e2826111fe 100644 --- a/libs/components/src/dialog/dialog/dialog.stories.ts +++ b/libs/components/src/dialog/dialog/dialog.stories.ts @@ -3,6 +3,7 @@ import { Meta, moduleMetadata, Story } from "@storybook/angular"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { ButtonModule } from "../../button"; +import { IconButtonModule } from "../../icon-button"; import { SharedModule } from "../../shared"; import { I18nMockService } from "../../utils/i18n-mock.service"; import { DialogCloseDirective } from "../directives/dialog-close.directive"; @@ -15,7 +16,7 @@ export default { component: DialogComponent, decorators: [ moduleMetadata({ - imports: [SharedModule, ButtonModule], + imports: [ButtonModule, SharedModule, IconButtonModule], declarations: [DialogTitleContainerDirective, DialogCloseDirective], providers: [ { @@ -46,9 +47,16 @@ const Template: Story = (args: DialogComponent) => ({ {{title}} Dialog body text goes here. -
+
+
`, diff --git a/libs/components/src/dialog/simple-dialog.service.stories.ts b/libs/components/src/dialog/simple-dialog.service.stories.ts index 90963515aaa..ab973484c87 100644 --- a/libs/components/src/dialog/simple-dialog.service.stories.ts +++ b/libs/components/src/dialog/simple-dialog.service.stories.ts @@ -2,7 +2,12 @@ import { DialogModule, DialogRef, DIALOG_DATA } from "@angular/cdk/dialog"; import { Component, Inject } from "@angular/core"; import { Meta, moduleMetadata, Story } from "@storybook/angular"; +import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; + import { ButtonModule } from "../button"; +import { IconButtonModule } from "../icon-button"; +import { SharedModule } from "../shared/shared.module"; +import { I18nMockService } from "../utils/i18n-mock.service"; import { DialogService } from "./dialog.service"; import { DialogCloseDirective } from "./directives/dialog-close.directive"; @@ -60,13 +65,23 @@ export default { decorators: [ moduleMetadata({ declarations: [ - DialogCloseDirective, - SimpleDialogComponent, - DialogTitleContainerDirective, StoryDialogContentComponent, + DialogCloseDirective, + DialogTitleContainerDirective, + SimpleDialogComponent, + ], + imports: [SharedModule, IconButtonModule, ButtonModule, DialogModule], + providers: [ + DialogService, + { + provide: I18nService, + useFactory: () => { + return new I18nMockService({ + close: "Close", + }); + }, + }, ], - imports: [ButtonModule, DialogModule], - providers: [DialogService], }), ], parameters: { diff --git a/libs/components/src/icon-button/icon-button.component.ts b/libs/components/src/icon-button/icon-button.component.ts new file mode 100644 index 00000000000..cd6f1be402a --- /dev/null +++ b/libs/components/src/icon-button/icon-button.component.ts @@ -0,0 +1,115 @@ +import { Component, HostBinding, Input } from "@angular/core"; + +export type IconButtonStyle = "contrast" | "main" | "muted" | "primary" | "secondary" | "danger"; + +const styles: Record = { + contrast: [ + "tw-bg-transparent", + "!tw-text-contrast", + "tw-border-transparent", + "hover:tw-bg-transparent-hover", + "hover:tw-border-text-contrast", + "focus-visible:before:tw-ring-text-contrast", + "disabled:hover:tw-bg-transparent", + ], + main: [ + "tw-bg-transparent", + "!tw-text-main", + "tw-border-transparent", + "hover:tw-bg-transparent-hover", + "hover:tw-border-text-main", + "focus-visible:before:tw-ring-text-main", + "disabled:hover:tw-bg-transparent", + ], + muted: [ + "tw-bg-transparent", + "!tw-text-muted", + "tw-border-transparent", + "hover:tw-bg-transparent-hover", + "hover:tw-border-primary-700", + "focus-visible:before:tw-ring-primary-700", + "disabled:hover:tw-bg-transparent", + ], + primary: [ + "tw-bg-primary-500", + "!tw-text-contrast", + "tw-border-primary-500", + "hover:tw-bg-primary-700", + "hover:tw-border-primary-700", + "focus-visible:before:tw-ring-primary-700", + "disabled:hover:tw-bg-primary-500", + ], + secondary: [ + "tw-bg-transparent", + "!tw-text-muted", + "tw-border-text-muted", + "hover:!tw-text-contrast", + "hover:tw-bg-text-muted", + "focus-visible:before:tw-ring-primary-700", + "disabled:hover:tw-bg-transparent", + "disabled:hover:!tw-text-muted", + "disabled:hover:tw-border-text-muted", + ], + danger: [ + "tw-bg-transparent", + "!tw-text-danger", + "tw-border-danger-500", + "hover:!tw-text-contrast", + "hover:tw-bg-danger-500", + "focus-visible:before:tw-ring-primary-700", + "disabled:hover:tw-bg-transparent", + "disabled:hover:!tw-text-danger", + "disabled:hover:tw-border-danger-500", + ], +}; + +export type IconButtonSize = "default" | "small"; + +const sizes: Record = { + default: ["tw-px-2.5", "tw-py-1.5"], + small: ["tw-leading-none", "tw-text-base", "tw-p-1"], +}; + +@Component({ + selector: "button[bitIconButton]", + template: ``, +}) +export class BitIconButtonComponent { + @Input("bitIconButton") icon: string; + + @Input() buttonType: IconButtonStyle = "main"; + + @Input() size: IconButtonSize = "default"; + + @HostBinding("class") get classList() { + return [ + "tw-font-semibold", + "tw-border", + "tw-border-solid", + "tw-rounded", + "tw-transition", + "hover:tw-no-underline", + "disabled:tw-opacity-60", + "disabled:hover:tw-border-transparent", + "focus:tw-outline-none", + + // Workaround for box-shadow with transparent offset issue: + // https://github.com/tailwindlabs/tailwindcss/issues/3595 + // Remove `before:` and use regular `tw-ring` when browser no longer has bug, or better: + // switch to `outline` with `outline-offset` when Safari supports border radius on outline. + // Using `box-shadow` to create outlines is a hack and as such `outline` should be preferred. + "tw-relative", + "before:tw-content-['']", + "before:tw-block", + "before:tw-absolute", + "before:-tw-inset-[3px]", + "before:tw-rounded-md", + "before:tw-transition", + "before:tw-ring", + "focus-visible:before:tw-ring-text-contrast", + "focus-visible:tw-z-10", + ] + .concat(styles[this.buttonType]) + .concat(sizes[this.size]); + } +} diff --git a/libs/components/src/icon-button/icon-button.module.ts b/libs/components/src/icon-button/icon-button.module.ts new file mode 100644 index 00000000000..fb4e8589717 --- /dev/null +++ b/libs/components/src/icon-button/icon-button.module.ts @@ -0,0 +1,11 @@ +import { CommonModule } from "@angular/common"; +import { NgModule } from "@angular/core"; + +import { BitIconButtonComponent } from "./icon-button.component"; + +@NgModule({ + imports: [CommonModule], + declarations: [BitIconButtonComponent], + exports: [BitIconButtonComponent], +}) +export class IconButtonModule {} diff --git a/libs/components/src/icon-button/icon-button.stories.ts b/libs/components/src/icon-button/icon-button.stories.ts new file mode 100644 index 00000000000..7be45d3f719 --- /dev/null +++ b/libs/components/src/icon-button/icon-button.stories.ts @@ -0,0 +1,59 @@ +import { Meta, Story } from "@storybook/angular"; + +import { BitIconButtonComponent } from "./icon-button.component"; + +export default { + title: "Component Library/Icon Button", + component: BitIconButtonComponent, + args: { + bitIconButton: "bwi-plus", + buttonType: "primary", + size: "default", + disabled: false, + }, +} as Meta; + +const Template: Story = (args: BitIconButtonComponent) => ({ + props: args, + template: ` +
+ +
+ `, +}); + +export const Contrast = Template.bind({}); +Contrast.args = { + buttonType: "contrast", +}; + +export const Main = Template.bind({}); +Main.args = { + buttonType: "main", +}; + +export const Muted = Template.bind({}); +Muted.args = { + buttonType: "muted", +}; + +export const Primary = Template.bind({}); +Primary.args = { + buttonType: "primary", +}; + +export const Secondary = Template.bind({}); +Secondary.args = { + buttonType: "secondary", +}; + +export const Danger = Template.bind({}); +Danger.args = { + buttonType: "danger", +}; diff --git a/libs/components/src/icon-button/index.ts b/libs/components/src/icon-button/index.ts new file mode 100644 index 00000000000..9da4a3162bf --- /dev/null +++ b/libs/components/src/icon-button/index.ts @@ -0,0 +1 @@ +export * from "./icon-button.module"; diff --git a/libs/components/src/index.ts b/libs/components/src/index.ts index 2acd60765fd..1f1ae6a8d2b 100644 --- a/libs/components/src/index.ts +++ b/libs/components/src/index.ts @@ -4,6 +4,7 @@ export * from "./button"; export * from "./callout"; export * from "./form-field"; export * from "./icon"; +export * from "./icon-button"; export * from "./menu"; export * from "./dialog"; export * from "./submit-button"; diff --git a/libs/components/src/tw-theme.css b/libs/components/src/tw-theme.css index 3801dd2e9e5..f76c838585d 100644 --- a/libs/components/src/tw-theme.css +++ b/libs/components/src/tw-theme.css @@ -1,4 +1,6 @@ :root { + --color-transparent-hover: rgb(0 0 0 / 0.03); + --color-background: 255 255 255; --color-background-alt: 251 251 251; --color-background-alt2: 23 92 219; @@ -37,6 +39,8 @@ } .theme_dark { + --color-transparent-hover: rgb(255 255 255 / 0.12); + --color-background: 31 36 46; --color-background-alt: 22 28 38; --color-background-alt2: 47 52 61; diff --git a/libs/components/tailwind.config.base.js b/libs/components/tailwind.config.base.js index 67eb96a6c3d..082abe73726 100644 --- a/libs/components/tailwind.config.base.js +++ b/libs/components/tailwind.config.base.js @@ -12,7 +12,10 @@ module.exports = { corePlugins: { preflight: false }, theme: { colors: { - transparent: colors.transparent, + transparent: { + DEFAULT: colors.transparent, + hover: "var(--color-transparent-hover)", + }, current: colors.current, black: colors.black, primary: { From f5336a28396e4c8f5648b24f04486f4a01188321 Mon Sep 17 00:00:00 2001 From: aj-rosado <109146700+aj-rosado@users.noreply.github.com> Date: Thu, 15 Sep 2022 12:27:21 +0100 Subject: [PATCH 10/28] [PS-1111] Added prefix "Vault:" for accessibility on vault selector items (#3188) * PS-1111 Added prefix "Vault:" for accessibility to vault selector items * improved html readability * PS-1111 Added more screen reader accessibility data to the Vault selector on Desktop and Web clients * PS-1111 removed duplicated aria-label * PS-1111 Removed unnecessary aria-label attribute * PS-1111 Changed browser vault item accessibility title from span to button --- .../popup/vault/vault-select.component.html | 9 +++++- .../organization-filter.component.html | 5 ++++ apps/desktop/src/locales/en/messages.json | 3 ++ .../organization-filter.component.html | 29 ++++++++++++++++--- 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/apps/browser/src/popup/vault/vault-select.component.html b/apps/browser/src/popup/vault/vault-select.component.html index ec4d4ff9e3e..d5698e79288 100644 --- a/apps/browser/src/popup/vault/vault-select.component.html +++ b/apps/browser/src/popup/vault/vault-select.component.html @@ -28,11 +28,17 @@ appStopClick (click)="selectAllVaults()" [ngClass]="{ active: !myVaultOnly && !selectOrganizationId }" + appA11yTitle="{{ 'vault' | i18n }}: {{ 'allVaults' | i18n }}" >  {{ "allVaults" | i18n }} - @@ -40,6 +46,7 @@ *ngFor="let organization of organizations" appStopClick (click)="selectOrganization(organization)" + appA11yTitle="{{ 'vault' | i18n }}: {{ organization.name }}" > {{ organizationGrouping.name | i18n }} @@ -40,6 +41,7 @@ class="filter-button" (click)="applyOrganizationFilter(organization)" [attr.aria-pressed]="activeFilter.myVaultOnly" + appA11yTitle="{{ 'vault' | i18n }}: {{ organization.name }}" >  {{ organization.name }} @@ -71,6 +73,7 @@ class="filter-button" (click)="clearFilter()" [attr.aria-pressed]="!hasActiveFilter" + appA11yTitle="{{ 'vault' | i18n }}: {{ organizationGrouping.name }}" > {{ organizationGrouping.name | i18n }} @@ -83,6 +86,7 @@ class="filter-button" (click)="applyMyVaultFilter()" [attr.aria-pressed]="activeFilter.myVaultOnly" + appA11yTitle="{{ 'vault' | i18n }}: {{ 'myVault' | i18n }}" >  {{ "myVault" | i18n }} @@ -98,6 +102,7 @@ @@ -42,6 +46,7 @@ class="filter-button" (click)="clearFilter()" [ngClass]="{ active: !hasActiveFilter }" + appA11yTitle="{{ 'vault' | i18n }}: {{ organizationGrouping.name | i18n }}" >  {{ organizationGrouping.name | i18n }} @@ -53,7 +58,12 @@ [ngClass]="{ active: organization.id === activeFilter.selectedOrganizationId }" > - @@ -79,7 +89,11 @@
- @@ -107,6 +121,7 @@ class="filter-button" (click)="clearFilter()" [ngClass]="{ active: !hasActiveFilter }" + appA11yTitle="{{ 'vault' | i18n }}: {{ organizationGrouping.name | i18n }}" >  {{ organizationGrouping.name | i18n }} @@ -114,7 +129,12 @@
  • - @@ -130,6 +150,7 @@ class="filter-button" [ngClass]="{ 'disabled-organization': !organization.enabled }" (click)="applyOrganizationFilter(organization)" + appA11yTitle="{{ 'vault' | i18n }}: {{ organization.name }}" > {{ organization.name }} From 02a4fe023641c1b90c6054d84a8f9ce2395d4888 Mon Sep 17 00:00:00 2001 From: Daniel James Smith Date: Thu, 15 Sep 2022 15:26:55 +0200 Subject: [PATCH 11/28] Updated description based on what we show on other stores (#3478) --- .../stores/chocolatey/bitwarden.nuspec | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/apps/desktop/stores/chocolatey/bitwarden.nuspec b/apps/desktop/stores/chocolatey/bitwarden.nuspec index 5d90b9a2ee0..779bf16c61e 100644 --- a/apps/desktop/stores/chocolatey/bitwarden.nuspec +++ b/apps/desktop/stores/chocolatey/bitwarden.nuspec @@ -20,15 +20,31 @@ bitwarden 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. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + + NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + + Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + + Generate strong, unique, and random passwords based on security requirements for every website you frequent. + + Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + + Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + + Why Choose Bitwarden: + + World-Class Encryption + Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + + Built-in Password Generator + Generate strong, unique, and random passwords based on security requirements for every website you frequent. + + Global Translations + Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + + Cross-Platform Applications + Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. From 8b73658e54e17b7998ea55517fd7a8dbaa7b971b Mon Sep 17 00:00:00 2001 From: Daniel James Smith Date: Thu, 15 Sep 2022 15:27:08 +0200 Subject: [PATCH 12/28] [PS-1447] Fix issues with CLI stores (npm/choco/snapcraft) (#3477) * Fix repository url to point to the clients repo * Fix missing description in snapcraft.yml * Nuspec: Fix links to point to clients repo * Nuspec: Use the correct brand icon(same as desktop) * Nuspec:Update description based on other stores (browser) --- apps/cli/package.json | 2 +- .../stores/chocolatey/bitwarden-cli.nuspec | 46 +++++++++++++------ apps/cli/stores/snap/snapcraft.yaml | 29 +++++++++++- 3 files changed, 59 insertions(+), 18 deletions(-) diff --git a/apps/cli/package.json b/apps/cli/package.json index b833fe5b072..a360c1bef58 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -13,7 +13,7 @@ "homepage": "https://bitwarden.com", "repository": { "type": "git", - "url": "https://github.com/bitwarden/cli" + "url": "https://github.com/bitwarden/clients" }, "license": "GPL-3.0-only", "scripts": { diff --git a/apps/cli/stores/chocolatey/bitwarden-cli.nuspec b/apps/cli/stores/chocolatey/bitwarden-cli.nuspec index 30de1c6f439..a61a7d12b49 100644 --- a/apps/cli/stores/chocolatey/bitwarden-cli.nuspec +++ b/apps/cli/stores/chocolatey/bitwarden-cli.nuspec @@ -4,18 +4,18 @@ bitwarden-cli 0.0.0 - https://github.com/bitwarden/cli/tree/master/stores/chocolatey + https://github.com/bitwarden/clients/tree/master/apps/cli/stores/chocolatey kspearrin Bitwarden CLI Bitwarden Inc. https://bitwarden.com/ - https://cdn.rawgit.com/bitwarden/desktop/51dd1341/resources/icon.png + https://raw.githubusercontent.com/bitwarden/brand/master/icons/256x256.png Copyright © 2015-2022 Bitwarden Inc. - https://github.com/bitwarden/cli/ + https://github.com/bitwarden/clients/ https://help.bitwarden.com/article/cli/ - https://github.com/bitwarden/cli/issues - https://github.com/bitwarden/cli/releases - https://github.com/bitwarden/cli/blob/master/LICENSE.txt + https://github.com/bitwarden/clients/issues + https://github.com/bitwarden/clients/releases + https://github.com/bitwarden/clients/blob/master/LICENSE.txt false bitwarden password manager cli A secure and free password manager for all of your devices. @@ -24,15 +24,31 @@ ----------------- - 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. + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + + NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + + Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + + Generate strong, unique, and random passwords based on security requirements for every website you frequent. + + Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + + Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + + Why Choose Bitwarden: + + World-Class Encryption + Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + + Built-in Password Generator + Generate strong, unique, and random passwords based on security requirements for every website you frequent. + + Global Translations + Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + + Cross-Platform Applications + Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. diff --git a/apps/cli/stores/snap/snapcraft.yaml b/apps/cli/stores/snap/snapcraft.yaml index b358a586872..d76e30ef104 100644 --- a/apps/cli/stores/snap/snapcraft.yaml +++ b/apps/cli/stores/snap/snapcraft.yaml @@ -1,7 +1,32 @@ name: bw version: __version__ -summary: Bitwarden CLI -description: A secure and free password manager for all of your devices. +summary: Bitwarden CLI - A secure and free password manager for all of your devices. +description: | + Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + + NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. + + Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. + + Generate strong, unique, and random passwords based on security requirements for every website you frequent. + + Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. + + Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. + + Why Choose Bitwarden: + + World-Class Encryption + Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. + + Built-in Password Generator + Generate strong, unique, and random passwords based on security requirements for every website you frequent. + + Global Translations + Bitwarden translations exist in 40 languages and are growing, thanks to our global community. + + Cross-Platform Applications + Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. confinement: strict base: core18 apps: From d2736fe0351f195421ea7ee6267ee12c6ee40105 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Thu, 15 Sep 2022 16:17:09 +0200 Subject: [PATCH 13/28] [PS-1469] Ensure the window is focused when prompting for biometrics (#3534) --- apps/desktop/desktop_native/Cargo.toml | 2 + .../desktop_native/src/biometric/windows.rs | 55 ++++++++++++++++--- 2 files changed, 49 insertions(+), 8 deletions(-) diff --git a/apps/desktop/desktop_native/Cargo.toml b/apps/desktop/desktop_native/Cargo.toml index 1285ef43685..b7d95bf96d5 100644 --- a/apps/desktop/desktop_native/Cargo.toml +++ b/apps/desktop/desktop_native/Cargo.toml @@ -30,6 +30,8 @@ windows = {version = "0.32.0", features = [ "Win32_Foundation", "Win32_Security_Credentials", "Win32_System_WinRT", + "Win32_UI_Input_KeyboardAndMouse", + "Win32_UI_WindowsAndMessaging", ]} [target.'cfg(windows)'.dev-dependencies] diff --git a/apps/desktop/desktop_native/src/biometric/windows.rs b/apps/desktop/desktop_native/src/biometric/windows.rs index d956da064d0..f49730cc559 100644 --- a/apps/desktop/desktop_native/src/biometric/windows.rs +++ b/apps/desktop/desktop_native/src/biometric/windows.rs @@ -1,19 +1,33 @@ use anyhow::Result; use windows::{ - core::factory, Foundation::IAsyncOperation, Security::Credentials::UI::*, - Win32::Foundation::HWND, Win32::System::WinRT::IUserConsentVerifierInterop, + core::{factory, HSTRING}, + Foundation::IAsyncOperation, + Security::Credentials::UI::*, + Win32::{ + Foundation::HWND, + System::WinRT::IUserConsentVerifierInterop, + UI::{ + Input::KeyboardAndMouse::{ + self, keybd_event, GetAsyncKeyState, SetFocus, KEYEVENTF_EXTENDEDKEY, + KEYEVENTF_KEYUP, VK_MENU, + }, + WindowsAndMessaging::{self, SetForegroundWindow}, + }, + }, }; pub fn prompt(hwnd: Vec, message: String) -> Result { - let interop = factory::()?; - - let h = isize::from_le_bytes(hwnd.try_into().unwrap()); + let h = isize::from_le_bytes(hwnd.clone().try_into().unwrap()); let window = HWND(h); - let operation: IAsyncOperation = - unsafe { interop.RequestVerificationForWindowAsync(window, message)? }; + // The Windows Hello prompt is displayed inside the application window. For best result we + // should set the window to the foreground and focus it. + set_focus(window); - let result: UserConsentVerificationResult = operation.get()?; + let interop = factory::()?; + let operation: IAsyncOperation = + unsafe { interop.RequestVerificationForWindowAsync(window, &HSTRING::from(message))? }; + let result = operation.get()?; match result { UserConsentVerificationResult::Verified => Ok(true), @@ -31,6 +45,31 @@ pub fn available() -> Result { } } +fn set_focus(window: HWND) { + let mut pressed = false; + + unsafe { + // Simulate holding down Alt key to bypass windows limitations + // https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getasynckeystate#return-value + // The most significant bit indicates if the key is currently being pressed. This means the + // value will be negative if the key is pressed. + if GetAsyncKeyState(VK_MENU.0 as i32) >= 0 { + pressed = true; + keybd_event(VK_MENU.0 as u8, 0, KEYEVENTF_EXTENDEDKEY, 0); + } + SetForegroundWindow(window); + SetFocus(window); + if pressed { + keybd_event( + VK_MENU.0 as u8, + 0, + KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, + 0, + ); + } + } +} + #[cfg(test)] mod tests { use super::*; From 04c2088360e7b35b59e27cfdb4833f0f8466974c Mon Sep 17 00:00:00 2001 From: Todd Martin <> Date: Thu, 15 Sep 2022 10:17:46 -0400 Subject: [PATCH 14/28] Modified Fastmail CSP to match QA and Production proxies. --- apps/web/webpack.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/webpack.config.js b/apps/web/webpack.config.js index 6d13cff50be..a7b6212943e 100644 --- a/apps/web/webpack.config.js +++ b/apps/web/webpack.config.js @@ -273,7 +273,7 @@ const devServer = https://app.simplelogin.io/api/alias/random/new https://quack.duckduckgo.com/api/email/addresses https://app.anonaddy.com/api/v1/aliases - https://api.fastmail.com/jmap/api; + https://api.fastmail.com; object-src 'self' blob:;`, From 669a3572b896d5931633600cc74bcd768c9c3f01 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 15 Sep 2022 11:52:51 -0400 Subject: [PATCH 15/28] Bumped web version to 2022.9.1 (#3539) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- apps/web/package.json | 2 +- package-lock.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index f2d7d3f48dc..4f6a2a0e802 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@bitwarden/web-vault", - "version": "2022.9.0", + "version": "2022.9.1", "scripts": { "build:oss": "webpack", "build:bit": "webpack -c ../../bitwarden_license/bit-web/webpack.config.js", diff --git a/package-lock.json b/package-lock.json index b58a76c6aa3..eb2ea47d6b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -233,7 +233,7 @@ }, "apps/web": { "name": "@bitwarden/web-vault", - "version": "2022.9.0" + "version": "2022.9.1" }, "libs/angular": { "name": "@bitwarden/angular", From ed78f7e7cb2120bff7acd828201f4d06c09dee71 Mon Sep 17 00:00:00 2001 From: Robyn MacCallum Date: Thu, 15 Sep 2022 12:31:15 -0400 Subject: [PATCH 16/28] [SG-397] Configure jest for Desktop and add simple tests (#3467) * Configure jest for Desktop and add simple tests * Remove Jest from tsconfig types --- apps/desktop/jest.config.js | 14 ++++ apps/desktop/package.json | 5 +- .../src/app/vault/generator.component.spec.ts | 77 +++++++++++++++++++ apps/desktop/test.setup.ts | 23 ++++++ apps/desktop/tsconfig.spec.json | 4 + jest.config.js | 1 + 6 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 apps/desktop/jest.config.js create mode 100644 apps/desktop/src/app/vault/generator.component.spec.ts create mode 100644 apps/desktop/test.setup.ts create mode 100644 apps/desktop/tsconfig.spec.json diff --git a/apps/desktop/jest.config.js b/apps/desktop/jest.config.js new file mode 100644 index 00000000000..4f954afa9e2 --- /dev/null +++ b/apps/desktop/jest.config.js @@ -0,0 +1,14 @@ +const { pathsToModuleNameMapper } = require("ts-jest"); + +const { compilerOptions } = require("./tsconfig"); + +const sharedConfig = require("../../libs/shared/jest.config.base"); + +module.exports = { + ...sharedConfig, + preset: "jest-preset-angular", + setupFilesAfterEnv: ["/test.setup.ts"], + moduleNameMapper: pathsToModuleNameMapper(compilerOptions?.paths || {}, { + prefix: "/", + }), +}; diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 58b31e7dbfd..51ebdbd9167 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -48,6 +48,9 @@ "publish:mac:mas": "npm run dist:mac:mas && npm run upload:mas", "publish:win": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always -c.win.certificateSubjectName=\"8bit Solutions LLC\"", "publish:win:dev": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always", - "upload:mas": "xcrun altool --upload-app --type osx --file \"$(find ./dist/mas-universal/Bitwarden*.pkg)\" --username $APPLE_ID_USERNAME --password $APPLE_ID_PASSWORD" + "upload:mas": "xcrun altool --upload-app --type osx --file \"$(find ./dist/mas-universal/Bitwarden*.pkg)\" --username $APPLE_ID_USERNAME --password $APPLE_ID_PASSWORD", + "test": "jest", + "test:watch": "jest --watch", + "test:watch:all": "jest --watchAll" } } diff --git a/apps/desktop/src/app/vault/generator.component.spec.ts b/apps/desktop/src/app/vault/generator.component.spec.ts new file mode 100644 index 00000000000..6c906e9b367 --- /dev/null +++ b/apps/desktop/src/app/vault/generator.component.spec.ts @@ -0,0 +1,77 @@ +import { NO_ERRORS_SCHEMA } from "@angular/core"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { ActivatedRoute } from "@angular/router"; +import { Substitute } from "@fluffy-spoon/substitute"; +import { mock, MockProxy } from "jest-mock-extended"; + +import { I18nPipe } from "@bitwarden/angular/pipes/i18n.pipe"; +import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; +import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; +import { StateService } from "@bitwarden/common/abstractions/state.service"; +import { UsernameGenerationService } from "@bitwarden/common/abstractions/usernameGeneration.service"; + +import { GeneratorComponent } from "./generator.component"; + +describe("GeneratorComponent", () => { + let component: GeneratorComponent; + let fixture: ComponentFixture; + let platformUtilsServiceMock: MockProxy; + + beforeEach(() => { + platformUtilsServiceMock = mock(); + + TestBed.configureTestingModule({ + declarations: [GeneratorComponent, I18nPipe], + providers: [ + { + provide: PasswordGenerationService, + useClass: Substitute.for(), + }, + { + provide: UsernameGenerationService, + useClass: Substitute.for(), + }, + { + provide: StateService, + useClass: Substitute.for(), + }, + { + provide: PlatformUtilsService, + useValue: platformUtilsServiceMock, + }, + { + provide: I18nService, + useClass: Substitute.for(), + }, + { + provide: ActivatedRoute, + useClass: Substitute.for(), + }, + { + provide: LogService, + useClass: Substitute.for(), + }, + ], + schemas: [NO_ERRORS_SCHEMA], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(GeneratorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); + + describe("usernameTypesLearnMore()", () => { + it("should call platformUtilsService.launchUri() once", () => { + component.usernameTypesLearnMore(); + expect(platformUtilsServiceMock.launchUri).toHaveBeenCalledTimes(1); + }); + }); +}); diff --git a/apps/desktop/test.setup.ts b/apps/desktop/test.setup.ts new file mode 100644 index 00000000000..224262ec83e --- /dev/null +++ b/apps/desktop/test.setup.ts @@ -0,0 +1,23 @@ +import "jest-preset-angular/setup-jest"; + +Object.defineProperty(window, "CSS", { value: null }); +Object.defineProperty(window, "getComputedStyle", { + value: () => { + return { + display: "none", + appearance: ["-webkit-appearance"], + }; + }, +}); + +Object.defineProperty(document, "doctype", { + value: "", +}); +Object.defineProperty(document.body.style, "transform", { + value: () => { + return { + enumerable: true, + configurable: true, + }; + }, +}); diff --git a/apps/desktop/tsconfig.spec.json b/apps/desktop/tsconfig.spec.json new file mode 100644 index 00000000000..de184bd7608 --- /dev/null +++ b/apps/desktop/tsconfig.spec.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "files": ["./test.setup.ts"] +} diff --git a/jest.config.js b/jest.config.js index 7a747974f53..535c9e00a36 100644 --- a/jest.config.js +++ b/jest.config.js @@ -12,6 +12,7 @@ module.exports = { projects: [ "/apps/browser/jest.config.js", "/apps/cli/jest.config.js", + "/apps/desktop/jest.config.js", "/apps/web/jest.config.js", "/bitwarden_license/bit-web/jest.config.js", From 734f052faa0176fec714aad658d35be78a5a6e98 Mon Sep 17 00:00:00 2001 From: Gbubemi Smith Date: Thu, 15 Sep 2022 18:02:01 +0100 Subject: [PATCH 17/28] [SG-590] Missing error messages (#3514) * added removed locale keys on clients * resolved comments --- .../src/app/organizations/manage/reset-password.component.ts | 4 ++-- apps/web/src/app/settings/change-password.component.ts | 2 +- apps/web/src/app/settings/update-key.component.ts | 2 +- libs/angular/src/components/change-password.component.ts | 4 ++-- libs/angular/src/components/lock.component.ts | 2 +- libs/angular/src/components/login.component.ts | 2 +- libs/angular/src/components/update-password.component.ts | 2 +- .../src/services/userVerification/userVerification.service.ts | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/web/src/app/organizations/manage/reset-password.component.ts b/apps/web/src/app/organizations/manage/reset-password.component.ts index 93fb6ff75f1..d37148a25eb 100644 --- a/apps/web/src/app/organizations/manage/reset-password.component.ts +++ b/apps/web/src/app/organizations/manage/reset-password.component.ts @@ -81,7 +81,7 @@ export class ResetPasswordComponent implements OnInit { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), - this.i18nService.t("masterPassRequired") + this.i18nService.t("masterPasswordRequired") ); return false; } @@ -90,7 +90,7 @@ export class ResetPasswordComponent implements OnInit { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), - this.i18nService.t("masterPassLength") + this.i18nService.t("masterPasswordMinlength") ); return false; } diff --git a/apps/web/src/app/settings/change-password.component.ts b/apps/web/src/app/settings/change-password.component.ts index 7636c6970b5..8044c3cf3ad 100644 --- a/apps/web/src/app/settings/change-password.component.ts +++ b/apps/web/src/app/settings/change-password.component.ts @@ -139,7 +139,7 @@ export class ChangePasswordComponent extends BaseChangePasswordComponent { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), - this.i18nService.t("masterPassRequired") + this.i18nService.t("masterPasswordRequired") ); return false; } diff --git a/apps/web/src/app/settings/update-key.component.ts b/apps/web/src/app/settings/update-key.component.ts index bf0afc150d6..52a22d13e95 100644 --- a/apps/web/src/app/settings/update-key.component.ts +++ b/apps/web/src/app/settings/update-key.component.ts @@ -45,7 +45,7 @@ export class UpdateKeyComponent { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), - this.i18nService.t("masterPassRequired") + this.i18nService.t("masterPasswordRequired") ); return; } diff --git a/libs/angular/src/components/change-password.component.ts b/libs/angular/src/components/change-password.component.ts index b4e2febbf42..3730ac75f63 100644 --- a/libs/angular/src/components/change-password.component.ts +++ b/libs/angular/src/components/change-password.component.ts @@ -97,7 +97,7 @@ export class ChangePasswordComponent implements OnInit { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), - this.i18nService.t("masterPassRequired") + this.i18nService.t("masterPasswordRequired") ); return false; } @@ -105,7 +105,7 @@ export class ChangePasswordComponent implements OnInit { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), - this.i18nService.t("masterPassLength") + this.i18nService.t("masterPasswordMinlength") ); return false; } diff --git a/libs/angular/src/components/lock.component.ts b/libs/angular/src/components/lock.component.ts index d00127ae965..0932fab7128 100644 --- a/libs/angular/src/components/lock.component.ts +++ b/libs/angular/src/components/lock.component.ts @@ -180,7 +180,7 @@ export class LockComponent implements OnInit, OnDestroy { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), - this.i18nService.t("masterPassRequired") + this.i18nService.t("masterPasswordRequired") ); return; } diff --git a/libs/angular/src/components/login.component.ts b/libs/angular/src/components/login.component.ts index 259fce5a652..1c7a8c2332d 100644 --- a/libs/angular/src/components/login.component.ts +++ b/libs/angular/src/components/login.component.ts @@ -91,7 +91,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), - this.i18nService.t("masterPassRequired") + this.i18nService.t("masterPasswordRequired") ); return; } diff --git a/libs/angular/src/components/update-password.component.ts b/libs/angular/src/components/update-password.component.ts index c2f076e1079..3fe9a6a7660 100644 --- a/libs/angular/src/components/update-password.component.ts +++ b/libs/angular/src/components/update-password.component.ts @@ -69,7 +69,7 @@ export class UpdatePasswordComponent extends BaseChangePasswordComponent { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), - this.i18nService.t("masterPassRequired") + this.i18nService.t("masterPasswordRequired") ); return false; } diff --git a/libs/common/src/services/userVerification/userVerification.service.ts b/libs/common/src/services/userVerification/userVerification.service.ts index f58515d9a40..fe2d5f4716d 100644 --- a/libs/common/src/services/userVerification/userVerification.service.ts +++ b/libs/common/src/services/userVerification/userVerification.service.ts @@ -81,7 +81,7 @@ export class UserVerificationService implements UserVerificationServiceAbstracti if (verification.type === VerificationType.OTP) { throw new Error(this.i18nService.t("verificationCodeRequired")); } else { - throw new Error(this.i18nService.t("masterPassRequired")); + throw new Error(this.i18nService.t("masterPasswordRequired")); } } } From 1fcba789050495d6e3f6c99e2f5dc1391afda876 Mon Sep 17 00:00:00 2001 From: Addison Beck Date: Thu, 15 Sep 2022 16:46:58 -0400 Subject: [PATCH 18/28] [SG-656] Use a captcha bypass during registration (#3531) * Use a captcha bypass during registration The trial initiation flow has a registration step that automatically does a login in the background. This has Captcha problems, namely that it can spawn two captchas in a row - one during registration and one during login. This is not ideal UX, so we've added a bypass token that returns from the registration endpoint that can be used to skip the next captcha. * [review] Introduce ICaptcheProtectedResponse --- libs/angular/src/components/register.component.ts | 14 +++++++++----- libs/common/src/abstractions/api.service.ts | 3 ++- .../authentication/ICaptchaProtectedResponse.ts | 3 +++ .../response/authentication/registerResponse.ts | 12 ++++++++++++ libs/common/src/services/api.service.ts | 8 +++++--- 5 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 libs/common/src/models/response/authentication/ICaptchaProtectedResponse.ts create mode 100644 libs/common/src/models/response/authentication/registerResponse.ts diff --git a/libs/angular/src/components/register.component.ts b/libs/angular/src/components/register.component.ts index 5abf4d9fdb2..5d0e708d81c 100644 --- a/libs/angular/src/components/register.component.ts +++ b/libs/angular/src/components/register.component.ts @@ -21,6 +21,7 @@ import { PasswordLogInCredentials } from "@bitwarden/common/models/domain/logInC import { KeysRequest } from "@bitwarden/common/models/request/keysRequest"; import { ReferenceEventRequest } from "@bitwarden/common/models/request/referenceEventRequest"; import { RegisterRequest } from "@bitwarden/common/models/request/registerRequest"; +import { RegisterResponse } from "@bitwarden/common/models/response/authentication/registerResponse"; import { PasswordColorText } from "../shared/components/password-strength/password-strength.component"; @@ -32,7 +33,7 @@ export class RegisterComponent extends CaptchaProtectedComponent implements OnIn @Output() createdAccount = new EventEmitter(); showPassword = false; - formPromise: Promise; + formPromise: Promise; referenceData: ReferenceEventRequest; showTerms = true; showErrorSummary = false; @@ -70,6 +71,8 @@ export class RegisterComponent extends CaptchaProtectedComponent implements OnIn protected accountCreated = false; + protected captchaBypassToken: string = null; + constructor( protected formValidationErrorService: FormValidationErrorsService, protected formBuilder: UntypedFormBuilder, @@ -107,6 +110,7 @@ export class RegisterComponent extends CaptchaProtectedComponent implements OnIn if (!registerResponse.successful) { return; } + this.captchaBypassToken = registerResponse.captchaBypassToken; this.accountCreated = true; } if (this.isInTrialFlow) { @@ -117,7 +121,7 @@ export class RegisterComponent extends CaptchaProtectedComponent implements OnIn this.i18nService.t("trialAccountCreated") ); } - const loginResponse = await this.logIn(email, masterPassword, this.captchaToken); + const loginResponse = await this.logIn(email, masterPassword, this.captchaBypassToken); if (loginResponse.captchaRequired) { return; } @@ -258,14 +262,14 @@ export class RegisterComponent extends CaptchaProtectedComponent implements OnIn private async registerAccount( request: RegisterRequest, showToast: boolean - ): Promise<{ successful: boolean }> { + ): Promise<{ successful: boolean; captchaBypassToken?: string }> { if (!(await this.validateRegistration(showToast)).isValid) { return { successful: false }; } this.formPromise = this.apiService.postRegister(request); try { - await this.formPromise; - return { successful: true }; + const response = await this.formPromise; + return { successful: true, captchaBypassToken: response.captchaBypassToken }; } catch (e) { if (this.handleCaptchaRequired(e)) { return { successful: false }; diff --git a/libs/common/src/abstractions/api.service.ts b/libs/common/src/abstractions/api.service.ts index 3a661274cc8..f08e5c34af8 100644 --- a/libs/common/src/abstractions/api.service.ts +++ b/libs/common/src/abstractions/api.service.ts @@ -84,6 +84,7 @@ import { VerifyEmailRequest } from "../models/request/verifyEmailRequest"; import { ApiKeyResponse } from "../models/response/apiKeyResponse"; import { AttachmentResponse } from "../models/response/attachmentResponse"; import { AttachmentUploadDataResponse } from "../models/response/attachmentUploadDataResponse"; +import { RegisterResponse } from "../models/response/authentication/registerResponse"; import { BillingHistoryResponse } from "../models/response/billingHistoryResponse"; import { BillingPaymentResponse } from "../models/response/billingPaymentResponse"; import { BreachAccountResponse } from "../models/response/breachAccountResponse"; @@ -189,7 +190,7 @@ export abstract class ApiService { postSecurityStamp: (request: SecretVerificationRequest) => Promise; getAccountRevisionDate: () => Promise; postPasswordHint: (request: PasswordHintRequest) => Promise; - postRegister: (request: RegisterRequest) => Promise; + postRegister: (request: RegisterRequest) => Promise; postPremium: (data: FormData) => Promise; postIapCheck: (request: IapCheckRequest) => Promise; postReinstatePremium: () => Promise; diff --git a/libs/common/src/models/response/authentication/ICaptchaProtectedResponse.ts b/libs/common/src/models/response/authentication/ICaptchaProtectedResponse.ts new file mode 100644 index 00000000000..3f34b71479d --- /dev/null +++ b/libs/common/src/models/response/authentication/ICaptchaProtectedResponse.ts @@ -0,0 +1,3 @@ +export interface ICaptchaProtectedResponse { + captchaBypassToken: string; +} diff --git a/libs/common/src/models/response/authentication/registerResponse.ts b/libs/common/src/models/response/authentication/registerResponse.ts new file mode 100644 index 00000000000..b9f5f152be7 --- /dev/null +++ b/libs/common/src/models/response/authentication/registerResponse.ts @@ -0,0 +1,12 @@ +import { BaseResponse } from "../baseResponse"; + +import { ICaptchaProtectedResponse } from "./ICaptchaProtectedResponse"; + +export class RegisterResponse extends BaseResponse implements ICaptchaProtectedResponse { + captchaBypassToken: string; + + constructor(response: any) { + super(response); + this.captchaBypassToken = this.getResponseProperty("CaptchaBypassToken"); + } +} diff --git a/libs/common/src/services/api.service.ts b/libs/common/src/services/api.service.ts index b1254b1213c..dbc67f57272 100644 --- a/libs/common/src/services/api.service.ts +++ b/libs/common/src/services/api.service.ts @@ -92,6 +92,7 @@ import { VerifyEmailRequest } from "../models/request/verifyEmailRequest"; import { ApiKeyResponse } from "../models/response/apiKeyResponse"; import { AttachmentResponse } from "../models/response/attachmentResponse"; import { AttachmentUploadDataResponse } from "../models/response/attachmentUploadDataResponse"; +import { RegisterResponse } from "../models/response/authentication/registerResponse"; import { BillingHistoryResponse } from "../models/response/billingHistoryResponse"; import { BillingPaymentResponse } from "../models/response/billingPaymentResponse"; import { BreachAccountResponse } from "../models/response/breachAccountResponse"; @@ -337,17 +338,18 @@ export class ApiService implements ApiServiceAbstraction { return this.send("POST", "/accounts/password-hint", request, false, false); } - postRegister(request: RegisterRequest): Promise { - return this.send( + async postRegister(request: RegisterRequest): Promise { + const r = await this.send( "POST", "/accounts/register", request, false, - false, + true, this.platformUtilsService.isDev() ? this.environmentService.getIdentityUrl() : this.environmentService.getApiUrl() ); + return new RegisterResponse(r); } async postPremium(data: FormData): Promise { From cdafe26ec8c4d32a3d5e279fd38fe31fa9032b97 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Sep 2022 03:22:46 +0200 Subject: [PATCH 19/28] Autosync the updated translations (#3545) Co-authored-by: github-actions <> --- apps/browser/src/_locales/sl/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json index e781475dd90..4b4ccdcd1d1 100644 --- a/apps/browser/src/_locales/sl/messages.json +++ b/apps/browser/src/_locales/sl/messages.json @@ -53,7 +53,7 @@ "message": "Zavihek" }, "vault": { - "message": "Vault" + "message": "Sef" }, "myVault": { "message": "Moj trezor" From cf611141eb8fce295407e77b1f98599df25fffb0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Sep 2022 03:24:05 +0200 Subject: [PATCH 20/28] Autosync the updated translations (#3546) Co-authored-by: github-actions <> --- apps/desktop/src/locales/af/messages.json | 3 +++ apps/desktop/src/locales/ar/messages.json | 3 +++ apps/desktop/src/locales/az/messages.json | 3 +++ apps/desktop/src/locales/be/messages.json | 3 +++ apps/desktop/src/locales/bg/messages.json | 3 +++ apps/desktop/src/locales/bn/messages.json | 3 +++ apps/desktop/src/locales/bs/messages.json | 3 +++ apps/desktop/src/locales/ca/messages.json | 3 +++ apps/desktop/src/locales/cs/messages.json | 3 +++ apps/desktop/src/locales/da/messages.json | 3 +++ apps/desktop/src/locales/de/messages.json | 3 +++ apps/desktop/src/locales/el/messages.json | 3 +++ apps/desktop/src/locales/en_GB/messages.json | 3 +++ apps/desktop/src/locales/en_IN/messages.json | 3 +++ apps/desktop/src/locales/eo/messages.json | 3 +++ apps/desktop/src/locales/es/messages.json | 3 +++ apps/desktop/src/locales/et/messages.json | 3 +++ apps/desktop/src/locales/eu/messages.json | 3 +++ apps/desktop/src/locales/fa/messages.json | 3 +++ apps/desktop/src/locales/fi/messages.json | 3 +++ apps/desktop/src/locales/fil/messages.json | 3 +++ apps/desktop/src/locales/fr/messages.json | 3 +++ apps/desktop/src/locales/he/messages.json | 3 +++ apps/desktop/src/locales/hi/messages.json | 3 +++ apps/desktop/src/locales/hr/messages.json | 3 +++ apps/desktop/src/locales/hu/messages.json | 3 +++ apps/desktop/src/locales/id/messages.json | 3 +++ apps/desktop/src/locales/it/messages.json | 3 +++ apps/desktop/src/locales/ja/messages.json | 3 +++ apps/desktop/src/locales/ka/messages.json | 3 +++ apps/desktop/src/locales/km/messages.json | 3 +++ apps/desktop/src/locales/kn/messages.json | 3 +++ apps/desktop/src/locales/ko/messages.json | 3 +++ apps/desktop/src/locales/lv/messages.json | 3 +++ apps/desktop/src/locales/me/messages.json | 3 +++ apps/desktop/src/locales/ml/messages.json | 3 +++ apps/desktop/src/locales/nb/messages.json | 3 +++ apps/desktop/src/locales/nl/messages.json | 3 +++ apps/desktop/src/locales/nn/messages.json | 3 +++ apps/desktop/src/locales/pl/messages.json | 3 +++ apps/desktop/src/locales/pt_BR/messages.json | 3 +++ apps/desktop/src/locales/pt_PT/messages.json | 3 +++ apps/desktop/src/locales/ro/messages.json | 3 +++ apps/desktop/src/locales/ru/messages.json | 5 ++++- apps/desktop/src/locales/si/messages.json | 3 +++ apps/desktop/src/locales/sk/messages.json | 3 +++ apps/desktop/src/locales/sl/messages.json | 3 +++ apps/desktop/src/locales/sr/messages.json | 3 +++ apps/desktop/src/locales/sv/messages.json | 3 +++ apps/desktop/src/locales/th/messages.json | 3 +++ apps/desktop/src/locales/tr/messages.json | 3 +++ apps/desktop/src/locales/uk/messages.json | 3 +++ apps/desktop/src/locales/vi/messages.json | 3 +++ apps/desktop/src/locales/zh_CN/messages.json | 3 +++ apps/desktop/src/locales/zh_TW/messages.json | 3 +++ 55 files changed, 166 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src/locales/af/messages.json b/apps/desktop/src/locales/af/messages.json index 42fdf47753b..637ab553bd1 100644 --- a/apps/desktop/src/locales/af/messages.json +++ b/apps/desktop/src/locales/af/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/ar/messages.json b/apps/desktop/src/locales/ar/messages.json index 1f8eacd1d55..1531fad6b51 100644 --- a/apps/desktop/src/locales/ar/messages.json +++ b/apps/desktop/src/locales/ar/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/az/messages.json b/apps/desktop/src/locales/az/messages.json index 612937f5d18..164c41c3634 100644 --- a/apps/desktop/src/locales/az/messages.json +++ b/apps/desktop/src/locales/az/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/be/messages.json b/apps/desktop/src/locales/be/messages.json index 2f2e0ce134d..0679ceeca07 100644 --- a/apps/desktop/src/locales/be/messages.json +++ b/apps/desktop/src/locales/be/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Сховішча" } } diff --git a/apps/desktop/src/locales/bg/messages.json b/apps/desktop/src/locales/bg/messages.json index 00e18d0fcad..60512db2efa 100644 --- a/apps/desktop/src/locales/bg/messages.json +++ b/apps/desktop/src/locales/bg/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Мир" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/bn/messages.json b/apps/desktop/src/locales/bn/messages.json index 65d8092ff6f..664e38d155c 100644 --- a/apps/desktop/src/locales/bn/messages.json +++ b/apps/desktop/src/locales/bn/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/bs/messages.json b/apps/desktop/src/locales/bs/messages.json index a861d3a397a..f2c1faad6a5 100644 --- a/apps/desktop/src/locales/bs/messages.json +++ b/apps/desktop/src/locales/bs/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/ca/messages.json b/apps/desktop/src/locales/ca/messages.json index 33c436a4bb3..9a74e2f4089 100644 --- a/apps/desktop/src/locales/ca/messages.json +++ b/apps/desktop/src/locales/ca/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Caixa forta" } } diff --git a/apps/desktop/src/locales/cs/messages.json b/apps/desktop/src/locales/cs/messages.json index f91cca5fc47..2ed892b62ee 100644 --- a/apps/desktop/src/locales/cs/messages.json +++ b/apps/desktop/src/locales/cs/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/da/messages.json b/apps/desktop/src/locales/da/messages.json index 5083a5060ee..03f30ee3a58 100644 --- a/apps/desktop/src/locales/da/messages.json +++ b/apps/desktop/src/locales/da/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/de/messages.json b/apps/desktop/src/locales/de/messages.json index 11c3390bb6f..3e73f09d363 100644 --- a/apps/desktop/src/locales/de/messages.json +++ b/apps/desktop/src/locales/de/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Tresor" } } diff --git a/apps/desktop/src/locales/el/messages.json b/apps/desktop/src/locales/el/messages.json index d2a55d40718..592e6a4febd 100644 --- a/apps/desktop/src/locales/el/messages.json +++ b/apps/desktop/src/locales/el/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/en_GB/messages.json b/apps/desktop/src/locales/en_GB/messages.json index 16815abde0b..c2f2e7cd284 100644 --- a/apps/desktop/src/locales/en_GB/messages.json +++ b/apps/desktop/src/locales/en_GB/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/en_IN/messages.json b/apps/desktop/src/locales/en_IN/messages.json index cf5a59dc563..dbc20d4f1bd 100644 --- a/apps/desktop/src/locales/en_IN/messages.json +++ b/apps/desktop/src/locales/en_IN/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/eo/messages.json b/apps/desktop/src/locales/eo/messages.json index 8f7fadf676f..9fcdd0e4a1e 100644 --- a/apps/desktop/src/locales/eo/messages.json +++ b/apps/desktop/src/locales/eo/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/es/messages.json b/apps/desktop/src/locales/es/messages.json index e871c6e1c36..0d6336ff3a0 100644 --- a/apps/desktop/src/locales/es/messages.json +++ b/apps/desktop/src/locales/es/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Caja fuerte" } } diff --git a/apps/desktop/src/locales/et/messages.json b/apps/desktop/src/locales/et/messages.json index 06be1530ad1..c53115c9bf3 100644 --- a/apps/desktop/src/locales/et/messages.json +++ b/apps/desktop/src/locales/et/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Hoidla" } } diff --git a/apps/desktop/src/locales/eu/messages.json b/apps/desktop/src/locales/eu/messages.json index 6e66891de1f..f4fcbe5cb54 100644 --- a/apps/desktop/src/locales/eu/messages.json +++ b/apps/desktop/src/locales/eu/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json index 39fcbdaa7f8..8b1a17753fc 100644 --- a/apps/desktop/src/locales/fa/messages.json +++ b/apps/desktop/src/locales/fa/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "میر" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/fi/messages.json b/apps/desktop/src/locales/fi/messages.json index 61cab6fc23f..f81a814b1b2 100644 --- a/apps/desktop/src/locales/fi/messages.json +++ b/apps/desktop/src/locales/fi/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Holvi" } } diff --git a/apps/desktop/src/locales/fil/messages.json b/apps/desktop/src/locales/fil/messages.json index be525fbead3..64779d3557b 100644 --- a/apps/desktop/src/locales/fil/messages.json +++ b/apps/desktop/src/locales/fil/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/fr/messages.json b/apps/desktop/src/locales/fr/messages.json index 86f16ebeb96..7bcc9c6fe5c 100644 --- a/apps/desktop/src/locales/fr/messages.json +++ b/apps/desktop/src/locales/fr/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/he/messages.json b/apps/desktop/src/locales/he/messages.json index 3bd0aa60876..ece08175654 100644 --- a/apps/desktop/src/locales/he/messages.json +++ b/apps/desktop/src/locales/he/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/hi/messages.json b/apps/desktop/src/locales/hi/messages.json index 32baaaee779..161feab674c 100644 --- a/apps/desktop/src/locales/hi/messages.json +++ b/apps/desktop/src/locales/hi/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/hr/messages.json b/apps/desktop/src/locales/hr/messages.json index ffbef2f441e..c7c5fc06477 100644 --- a/apps/desktop/src/locales/hr/messages.json +++ b/apps/desktop/src/locales/hr/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/hu/messages.json b/apps/desktop/src/locales/hu/messages.json index abe0c4d4c87..750f2dede5a 100644 --- a/apps/desktop/src/locales/hu/messages.json +++ b/apps/desktop/src/locales/hu/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Széf" } } diff --git a/apps/desktop/src/locales/id/messages.json b/apps/desktop/src/locales/id/messages.json index 1c9bcdbfea6..3504bb3d315 100644 --- a/apps/desktop/src/locales/id/messages.json +++ b/apps/desktop/src/locales/id/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/it/messages.json b/apps/desktop/src/locales/it/messages.json index b648195b596..5e139658e11 100644 --- a/apps/desktop/src/locales/it/messages.json +++ b/apps/desktop/src/locales/it/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/ja/messages.json b/apps/desktop/src/locales/ja/messages.json index 554478bbef5..c2f70a3758d 100644 --- a/apps/desktop/src/locales/ja/messages.json +++ b/apps/desktop/src/locales/ja/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "保管庫" } } diff --git a/apps/desktop/src/locales/ka/messages.json b/apps/desktop/src/locales/ka/messages.json index be525fbead3..64779d3557b 100644 --- a/apps/desktop/src/locales/ka/messages.json +++ b/apps/desktop/src/locales/ka/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/km/messages.json b/apps/desktop/src/locales/km/messages.json index be525fbead3..64779d3557b 100644 --- a/apps/desktop/src/locales/km/messages.json +++ b/apps/desktop/src/locales/km/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/kn/messages.json b/apps/desktop/src/locales/kn/messages.json index 9abe34e39b8..4b0d2da7de7 100644 --- a/apps/desktop/src/locales/kn/messages.json +++ b/apps/desktop/src/locales/kn/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/ko/messages.json b/apps/desktop/src/locales/ko/messages.json index c0ed0040402..70da549a6e2 100644 --- a/apps/desktop/src/locales/ko/messages.json +++ b/apps/desktop/src/locales/ko/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/lv/messages.json b/apps/desktop/src/locales/lv/messages.json index 83efc18ed69..391c042f4a2 100644 --- a/apps/desktop/src/locales/lv/messages.json +++ b/apps/desktop/src/locales/lv/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Glabātava" } } diff --git a/apps/desktop/src/locales/me/messages.json b/apps/desktop/src/locales/me/messages.json index ea5435a7b1f..2566f7f62e3 100644 --- a/apps/desktop/src/locales/me/messages.json +++ b/apps/desktop/src/locales/me/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/ml/messages.json b/apps/desktop/src/locales/ml/messages.json index 4c27fb602b6..55dd0eb0a16 100644 --- a/apps/desktop/src/locales/ml/messages.json +++ b/apps/desktop/src/locales/ml/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/nb/messages.json b/apps/desktop/src/locales/nb/messages.json index 4716c5b7f09..3ec862b0624 100644 --- a/apps/desktop/src/locales/nb/messages.json +++ b/apps/desktop/src/locales/nb/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/nl/messages.json b/apps/desktop/src/locales/nl/messages.json index d4737d3430f..6873e013636 100644 --- a/apps/desktop/src/locales/nl/messages.json +++ b/apps/desktop/src/locales/nl/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Kluis" } } diff --git a/apps/desktop/src/locales/nn/messages.json b/apps/desktop/src/locales/nn/messages.json index a632f47d392..039d20261fc 100644 --- a/apps/desktop/src/locales/nn/messages.json +++ b/apps/desktop/src/locales/nn/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/pl/messages.json b/apps/desktop/src/locales/pl/messages.json index 5d12b9b62e2..2c982c95f3c 100644 --- a/apps/desktop/src/locales/pl/messages.json +++ b/apps/desktop/src/locales/pl/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Sejf" } } diff --git a/apps/desktop/src/locales/pt_BR/messages.json b/apps/desktop/src/locales/pt_BR/messages.json index d046a63d58a..e84ef3c9c92 100644 --- a/apps/desktop/src/locales/pt_BR/messages.json +++ b/apps/desktop/src/locales/pt_BR/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/pt_PT/messages.json b/apps/desktop/src/locales/pt_PT/messages.json index c070f9318ce..f21b0273f4a 100644 --- a/apps/desktop/src/locales/pt_PT/messages.json +++ b/apps/desktop/src/locales/pt_PT/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/ro/messages.json b/apps/desktop/src/locales/ro/messages.json index bb301018fbe..dd8ddc9430c 100644 --- a/apps/desktop/src/locales/ro/messages.json +++ b/apps/desktop/src/locales/ro/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/ru/messages.json b/apps/desktop/src/locales/ru/messages.json index 62085f40a8d..a01a86c8bfc 100644 --- a/apps/desktop/src/locales/ru/messages.json +++ b/apps/desktop/src/locales/ru/messages.json @@ -1577,7 +1577,7 @@ "message": "К сожалению, интеграция браузера пока поддерживается только в версии Mac App Store." }, "browserIntegrationWindowsStoreDesc": { - "message": "К сожалению, интеграция с браузером на текущий момент не поддерживается в версии из магазина Windows." + "message": "К сожалению, интеграция браузера в версии для Microsoft Store в настоящее время не поддерживается." }, "browserIntegrationLinuxDesc": { "message": "К сожалению, интеграция с браузером на текущий момент не поддерживается в версии для linux." @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Хранилище" } } diff --git a/apps/desktop/src/locales/si/messages.json b/apps/desktop/src/locales/si/messages.json index 15e1493fb06..2798e2836b2 100644 --- a/apps/desktop/src/locales/si/messages.json +++ b/apps/desktop/src/locales/si/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/sk/messages.json b/apps/desktop/src/locales/sk/messages.json index 8e00ce376ec..6df419388d9 100644 --- a/apps/desktop/src/locales/sk/messages.json +++ b/apps/desktop/src/locales/sk/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Trezor" } } diff --git a/apps/desktop/src/locales/sl/messages.json b/apps/desktop/src/locales/sl/messages.json index 62711d4bd9a..17e81de0a6e 100644 --- a/apps/desktop/src/locales/sl/messages.json +++ b/apps/desktop/src/locales/sl/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/sr/messages.json b/apps/desktop/src/locales/sr/messages.json index 5f15af3dc3d..a41737282d7 100644 --- a/apps/desktop/src/locales/sr/messages.json +++ b/apps/desktop/src/locales/sr/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/sv/messages.json b/apps/desktop/src/locales/sv/messages.json index 5acf3f1f65c..efdf0ae195a 100644 --- a/apps/desktop/src/locales/sv/messages.json +++ b/apps/desktop/src/locales/sv/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/th/messages.json b/apps/desktop/src/locales/th/messages.json index 697f99b069f..52205568877 100644 --- a/apps/desktop/src/locales/th/messages.json +++ b/apps/desktop/src/locales/th/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/tr/messages.json b/apps/desktop/src/locales/tr/messages.json index b4b55cc864c..9bd360c0af4 100644 --- a/apps/desktop/src/locales/tr/messages.json +++ b/apps/desktop/src/locales/tr/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Kasa" } } diff --git a/apps/desktop/src/locales/uk/messages.json b/apps/desktop/src/locales/uk/messages.json index d05867e1224..09bff4f23b8 100644 --- a/apps/desktop/src/locales/uk/messages.json +++ b/apps/desktop/src/locales/uk/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/vi/messages.json b/apps/desktop/src/locales/vi/messages.json index 6076ede6949..676975929c5 100644 --- a/apps/desktop/src/locales/vi/messages.json +++ b/apps/desktop/src/locales/vi/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "Vault" } } diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json index 851d168d7ff..512543acb9e 100644 --- a/apps/desktop/src/locales/zh_CN/messages.json +++ b/apps/desktop/src/locales/zh_CN/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "密码库" } } diff --git a/apps/desktop/src/locales/zh_TW/messages.json b/apps/desktop/src/locales/zh_TW/messages.json index cc982c35180..a07f09c8442 100644 --- a/apps/desktop/src/locales/zh_TW/messages.json +++ b/apps/desktop/src/locales/zh_TW/messages.json @@ -1993,5 +1993,8 @@ }, "cardBrandMir": { "message": "Mir" + }, + "vault": { + "message": "密碼庫" } } From 0783bb2f7d0fde2291220ee6dcf78720825b785f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Sep 2022 03:24:59 +0200 Subject: [PATCH 21/28] Autosync the updated translations (#3547) Co-authored-by: github-actions <> --- apps/web/src/locales/be/messages.json | 4 +- apps/web/src/locales/de/messages.json | 4 +- apps/web/src/locales/tr/messages.json | 264 +++++++++++++------------- 3 files changed, 136 insertions(+), 136 deletions(-) diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json index 6d2e7e409a3..b0ce295735f 100644 --- a/apps/web/src/locales/be/messages.json +++ b/apps/web/src/locales/be/messages.json @@ -3706,7 +3706,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { - "message": "Рэдагаваць адпраўленне", + "message": "Рэдагаваць Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { @@ -3817,7 +3817,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendProtectedPasswordDontKnow": { - "message": "Не ведаеце пароль? Спытайце ў адпраўніка пароль, які неабходны для доступу да гэтага Send.", + "message": "Не ведаеце пароль? Спытайце ў адпраўніка пароль, які неабходны для доступу да гэтага Send'а.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendHiddenByDefault": { diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index 1b111344357..d12b19e9a4e 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -912,10 +912,10 @@ "message": "Dateipasswort bestätigen" }, "accountBackupOptionDescription": { - "message": "Nutzt die Verschlüsselung deines Bitwarden-Kontos, nicht das Master-Passwort, zum Schutz des Exports. Dieser Export kann nur in das aktuelle Konto importiert werden. Hiermit kannst du ein Backup erstellen, das nicht anderweitig verwendet werden kann." + "message": "Nutze den Verschlüsselungscode deines Kontos, um den Export zu verschlüsseln und den Import allein auf das aktuelle Bitwarden-Konto zu beschränken." }, "passwordProtectedOptionDescription": { - "message": "Erstelle ein benutzergeneriertes Passwort, um den Export zu schützen. Verwende dies, um einen Export zu erstellen, der in anderen Konten verwendet werden kann." + "message": "Lege ein Passwort fest, um den Export zu verschlüsseln und ihn in ein beliebiges Bitwarden-Konto zu importieren, wobei das Passwort zum Entschlüsseln genutzt wird." }, "fileTypeHeading": { "message": "Dateityp" diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json index 5b7da9a8422..e186527ed53 100644 --- a/apps/web/src/locales/tr/messages.json +++ b/apps/web/src/locales/tr/messages.json @@ -597,7 +597,7 @@ "message": "Ana parola, kasanıza ulaşmak için kullanacağınız paroladır. Ana parolanızı unutmamanız çok önemlidir. Unutursanız parolalarınızı asla kurtaramazsınız." }, "masterPassImportant": { - "message": "Master passwords cannot be recovered if you forget it!" + "message": "Ana şifreler, unutursanız kurtarılamaz!" }, "masterPassHintDesc": { "message": "Ana parolanızı unutursanız bu ipucuna bakınca size ana parolanızı hatırlatacak bir şey yazabilirsiniz." @@ -679,7 +679,7 @@ "message": "Geçersiz ana parola" }, "invalidFilePassword": { - "message": "Invalid file password, please use the password you entered when you created the export file." + "message": "Geçersiz dosya şifresi, lütfen dışa aktarma dosyasını oluştururken girdiğiniz şifreyi kullanın." }, "lockNow": { "message": "Şimdi kilitle" @@ -894,46 +894,46 @@ "message": "Dosya biçimi" }, "fileEncryptedExportWarningDesc": { - "message": "This file export will be password protected and require the file password to decrypt." + "message": "Bu dosya dışa aktarma, şifre korumalı olacak ve şifrenin çözülmesi için dosya şifresi gerektirecek." }, "exportPasswordDescription": { - "message": "This password will be used to export and import this file" + "message": "Bu şifre, bu dosyayı dışa ve içe aktarmak için kullanılacaktır" }, "confirmMasterPassword": { - "message": "Confirm Master Password" + "message": "Ana Şifreyi Onayla" }, "confirmFormat": { - "message": "Confirm Format" + "message": "Biçimi Onayla" }, "filePassword": { - "message": "File Password" + "message": "Dosya Şifresi" }, "confirmFilePassword": { - "message": "Confirm File Password" + "message": "Dosya Şifresini Onayla" }, "accountBackupOptionDescription": { - "message": "Use your account encryption key to encrypt the export and restrict import to only the current Bitwarden account." + "message": "Dışa aktarmayı şifrelemek ve içe aktarmayı yalnızca geçerli Bitwarden hesabıyla kısıtlamak için hesap çözme anahtarınızı kullanın." }, "passwordProtectedOptionDescription": { - "message": "Set a password to encrypt the export and import it to any Bitwarden account using the password for decryption." + "message": "Dışa aktarmayı şifrelemek için bir şifre belirleyin ve şifre çözme parolasını kullanarak herhangi bir Bitwarden hesabına içe aktarın." }, "fileTypeHeading": { - "message": "File Type" + "message": "Dosya Tipi" }, "accountBackup": { - "message": "Account Backup" + "message": "Hesap Yedeği" }, "passwordProtected": { - "message": "Password Protected" + "message": "Şifre Korumalı" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“File password” and “Confirm File Password“ do not match." + "message": "\"Dosya şifresi\" ve \"Dosya Şifresini Onayla\" eşleşmiyor." }, "confirmVaultImport": { - "message": "Confirm Vault Import" + "message": "Kasayı İçe Aktarmayı Onaylayın" }, "confirmVaultImportDesc": { - "message": "This file is password-protected. Please enter the file password to import data." + "message": "Bu dosya şifre korumalıdır. Verileri içe aktarmak için lütfen dosya şifresini girin." }, "exportSuccess": { "message": "Kasadaki verileriniz dışa aktarıldı." @@ -1296,7 +1296,7 @@ "message": "Etkin" }, "restoreAccess": { - "message": "Restore Access" + "message": "Erişimi geri yükle" }, "premium": { "message": "Premium", @@ -1324,7 +1324,7 @@ "message": "Devre dışı bırak" }, "revokeAccess": { - "message": "Revoke Access" + "message": "Erişimi iptal et" }, "twoStepLoginProviderEnabled": { "message": "Bu iki aşamalı giriş sağlayıcısı hesabınızda etkin durumda." @@ -1871,7 +1871,7 @@ "message": "Fatura Bilgileri" }, "billingTrialSubLabel": { - "message": "Your payment method will not be charged during the 7 day free trial." + "message": "7 günlük ücretsiz deneme süresi boyunca ödeme yönteminizden ücret alınmayacaktır." }, "creditCard": { "message": "Kredi kartı" @@ -2230,7 +2230,7 @@ } }, "trialThankYou": { - "message": "Thanks for signing up for Bitwarden for $PLAN$!", + "message": "$PLAN$ karşılığında Bitwarden'a kaydolduğunuz için teşekkür ederiz!", "placeholders": { "plan": { "content": "$1", @@ -2239,7 +2239,7 @@ } }, "trialPaidInfoMessage": { - "message": "Your $PLAN$ 7 day free trial will be converted to a paid subscription after 7 days.", + "message": "$PLAN$ 7 günlük ücretsiz denemeniz, 7 gün sonra ücretli aboneliğe dönüştürülecektir.", "placeholders": { "plan": { "content": "$1", @@ -2248,7 +2248,7 @@ } }, "trialConfirmationEmail": { - "message": "We've sent a confirmation email to your team's billing email at " + "message": "Ekibinizin şu adresteki faturalandırma e-postasına bir onay e-postası gönderdik " }, "monthly": { "message": "Aylık" @@ -2326,10 +2326,10 @@ "message": "Bu kullanıcıyı silmek istediğinizden emin misiniz?" }, "removeOrgUserConfirmation": { - "message": "When a member is removed, they no longer have access to organization data and this action is irreversible. To add the member back to the organization, they must be invited and onboarded again." + "message": "Bir üye kaldırıldığında, artık kuruluş verilerine erişimi olmaz ve bu işlem geri alınamaz. Üyeyi kuruluşa geri eklemek için davet edilmeleri ve tekrar katılmaları gerekir." }, "revokeUserConfirmation": { - "message": "When a member is revoked, they no longer have access to organization data. To quickly restore member access, go to the Revoked tab." + "message": "Bir üye feshedildiğinde, artık kuruluş verilerine erişimi olmaz. Üye erişimini hızlı bir şekilde geri yüklemek için İptal Edildi sekmesine gidin." }, "removeUserConfirmationKeyConnector": { "message": "Uyarı! Bu kullanıcı, şifrelemelerini yönetmek için Key Connector'a ihtiyaç duyuyor. Bu kullanıcıyı kuruluşunuzdan çıkarırsanız hesabı kalıcı olarak devre dışı kalacaktır. Bu işlem geri alınamaz. Devam etmek istiyor musunuz?" @@ -2677,7 +2677,7 @@ } }, "removeUserIdAccess": { - "message": "Remove $ID$ access", + "message": "$ID$ Erişimini kaldır", "placeholders": { "id": { "content": "$1", @@ -2686,7 +2686,7 @@ } }, "revokedUserId": { - "message": "Revoked organization access for $ID$.", + "message": "$ID$ İçin kuruluş erişimi iptal edildi.", "placeholders": { "id": { "content": "$1", @@ -2695,7 +2695,7 @@ } }, "restoredUserId": { - "message": "Restored organization access for $ID$.", + "message": "$ID$ İçin kuruluş erişimi geri yüklendi.", "placeholders": { "id": { "content": "$1", @@ -2704,7 +2704,7 @@ } }, "revokeUserId": { - "message": "Revoke $ID$ access", + "message": "$ID$ Erişimini iptal et", "placeholders": { "id": { "content": "$1", @@ -2950,7 +2950,7 @@ "message": "Eğer hesabınıza iki aşamalı doğrulama ile erişimde bir sorun yaşıyorsanız, kurtarma kodunuz ile iki aşamalı doğrulama özelliğini kapatabilirsiniz." }, "recoverAccountTwoStep": { - "message": "Recover Account Two-Step Login" + "message": "İki-Adımlı Hesap Girişini Kurtar" }, "twoStepRecoverDisabled": { "message": "İki aşamalı doğrulama hesabınızda devre dışı bırakıldı." @@ -3289,7 +3289,7 @@ "message": "4 saat" }, "onRefresh": { - "message": "On browser refresh" + "message": "Tarayıcıda yenileme" }, "dateUpdated": { "message": "Güncelleme", @@ -3436,13 +3436,13 @@ "message": "Ana parola gücü için minimum gereksinimleri ayarlayın." }, "twoStepLoginPolicyTitle": { - "message": "Require two-step login" + "message": "İki adımlı giriş gereklidir" }, "twoStepLoginPolicyDesc": { "message": "Kullanıcıların hesaplarında iki aşamalı giriş kullanmalarını zorunlu tutun." }, "twoStepLoginPolicyWarning": { - "message": "Organization members who are not Owners or Administrators and do not have two-step login turned on for their account will be removed from the organization and will receive an email notifying them about the change." + "message": "Sahip veya Yönetici olmayan ve hesapları için iki adımlı oturum açma özelliğini açmamış kuruluş üyeleri kuruluştan çıkarılır ve kendilerine değişiklik hakkında bilgi veren bir e-posta gönderilir." }, "twoStepLoginPolicyUserWarning": { "message": "İki aşamalı girişin etkinleştirilmesi gereken bir kuruluşa üyesisiniz. İki aşamalı giriş sağlayıcılarının tümünü devre dışı bırakırsanız bu kuruluşlardan otomatik olarak kaldırılırsınız." @@ -3660,7 +3660,7 @@ "message": "SSO bağlantısını kes" }, "unlinkSsoConfirmation": { - "message": "Are you sure you want to unlink SSO for this organization?" + "message": "Bu kuruluş için TOA bağlantısını kaldırmak istediğinizden emin misiniz?" }, "linkSso": { "message": "SSO bağla" @@ -3769,7 +3769,7 @@ "message": "Devre dışı" }, "revoked": { - "message": "Revoked" + "message": "İptal Edildi" }, "sendLink": { "message": "Send bağlantısı", @@ -4118,7 +4118,7 @@ "message": "Bir kuruluş ilkesi sahiplik seçeneklerinizi etkiliyor." }, "personalOwnershipPolicyInEffectImports": { - "message": "An organization policy has disabled importing items into your personal vault." + "message": "Bir kuruluş politikası, öğeleri kişisel kasanıza içe aktarmayı devre dışı bıraktı." }, "personalOwnershipCheckboxDesc": { "message": "Kuruluş kullanıcıları için kişisel sahipliği kapatma" @@ -4277,7 +4277,7 @@ } }, "eventResetSsoLink": { - "message": "Reset Sso link for user $ID$", + "message": "$ID$ kullanıcısı için Toa bağlantısını sıfırla", "placeholders": { "id": { "content": "$1", @@ -4373,10 +4373,10 @@ "message": "Aşağıdaki kullanıcıları kaldırmak istediğinize emin misiniz? İşlemin tamamlanması birkaç saniye sürer ve durdurulamaz veya iptal edilemez." }, "removeOrgUsersConfirmation": { - "message": "When member(s) are removed, they no longer have access to organization data and this action is irreversible. To add the member back to the organization, they must be invited and onboarded again. The process may take a few seconds to complete and cannot be interrupted or canceled." + "message": "Üye(ler) kaldırıldığında, artık organizasyon verilerine erişimleri olmaz ve bu işlem geri alınamaz. Üyeyi kuruluşa geri eklemek için davet edilmeleri ve tekrar katılmaları gerekir. İşlemin tamamlanması birkaç saniye sürebilir ve kesintiye uğratılamaz veya iptal edilemez." }, "revokeUsersWarning": { - "message": "When member(s) are revoked, they no longer have access to organization data. To quickly restore member access, go to the Revoked tab. The process may take a few seconds to complete and cannot be interrupted or canceled." + "message": "Üye(ler) iptal edildiğinde, artık organizasyon verilerine erişimleri olmaz. Üye erişimini hızlı bir şekilde geri yüklemek için İptal Edildi sekmesine gidin. İşlemin tamamlanması birkaç saniye sürebilir ve kesintiye uğratılamaz veya iptal edilemez." }, "theme": { "message": "Tema" @@ -4409,10 +4409,10 @@ "message": "Başarıyla kaldırıldı" }, "bulkRevokedMessage": { - "message": "Revoked organization access successfully" + "message": "Kuruluş erişimi başarıyla iptal edildi" }, "bulkRestoredMessage": { - "message": "Restored organization access successfully" + "message": "Kuruluş erişimi başarıyla geri yüklendi" }, "bulkFilteredMessage": { "message": "İstisna. Bu eylem için geçerli değildir." @@ -4424,10 +4424,10 @@ "message": "Kullanıcıları kaldır" }, "revokeUsers": { - "message": "Revoke Users" + "message": "Kullanıcıları İptal Et" }, "restoreUsers": { - "message": "Restore Users" + "message": "Kullanıcıları geri yükle" }, "error": { "message": "Hata" @@ -4439,10 +4439,10 @@ "message": "Sağlayıcı kurulumu" }, "setupProviderLoginDesc": { - "message": "You've been invited to setup a new provider. To continue, you need to log in or create a new Bitwarden account." + "message": "Yeni bir sağlayıcı kurmaya davet edildiniz. Devam etmek için oturum açmanız veya yeni bir Bitwarden hesabı oluşturmanız gerekir." }, "setupProviderDesc": { - "message": "Please enter the details below to complete the provider setup. Contact Customer Support if you have any questions." + "message": "Sağlayıcı kurulumunu tamamlamak için lütfen aşağıdaki ayrıntıları girin. Herhangi bir sorunuz varsa Müşteri Desteği ile iletişime geçin." }, "providerName": { "message": "Sağlayıcı adı" @@ -4457,16 +4457,16 @@ "message": "Sağlayıcı yöneticisi" }, "providerAdminDesc": { - "message": "The highest access user that can manage all aspects of your provider as well as access and manage client organizations." + "message": "Sağlayıcınızın tüm yönlerini yönetebilen ve müşteri organizasyonlarına erişebilen ve yönetebilen en yüksek erişimli kullanıcı." }, "serviceUser": { "message": "Hizmet kullanıcısı" }, "serviceUserDesc": { - "message": "Service users can access and manage all client organizations." + "message": "Hizmet kullanıcıları, tüm istemci kuruluşlara erişebilir ve bunları yönetebilir." }, "providerInviteUserDesc": { - "message": "Invite a new user to your provider by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." + "message": "Aşağıya Bitwarden hesabının e-posta adresini girerek sağlayıcınıza yeni bir kullanıcı davet edin. Halihazırda bir Bitwarden hesabı yoksa yeni bir hesap oluşturması istenecektir." }, "joinProvider": { "message": "Sağlayıcıya katıl" @@ -4490,7 +4490,7 @@ "message": "Yeni müşteri kuruluşu" }, "newClientOrganizationDesc": { - "message": "Create a new client organization that will be associated with you as the provider. You will be able to access and manage this organization." + "message": "Sağlayıcı olarak sizinle ilişkilendirilecek yeni bir müşteri organizasyonu oluşturun. Bu kuruluşa erişebilecek ve yönetebileceksiniz." }, "addExistingOrganization": { "message": "Mevcut kuruluşu ekle" @@ -4499,7 +4499,7 @@ "message": "Sağlayıcım" }, "addOrganizationConfirmation": { - "message": "Are you sure you want to add $ORGANIZATION$ as a client to $PROVIDER$?", + "message": "$PROVIDER$'a müşteri olarak $ORGANIZATION$ eklemek istediğinizden emin misiniz?", "placeholders": { "organization": { "content": "$1", @@ -4548,7 +4548,7 @@ } }, "detachOrganizationConfirmation": { - "message": "Are you sure you want to detach this organization? The organization will continue to exist but will no longer be managed by the provider." + "message": "Bu organizasyonu ayırmak istediğinizden emin misiniz? Kuruluş var olmaya devam edecek, ancak artık sağlayıcı tarafından yönetilmeyecek." }, "add": { "message": "Ekle" @@ -4569,7 +4569,7 @@ "message": "Kasa zaman aşımı" }, "maximumVaultTimeoutDesc": { - "message": "Set a maximum vault timeout for members." + "message": "Üyeler için maksimum kasa zaman aşımı ayarlayın." }, "maximumVaultTimeoutLabel": { "message": "Maksimum kasa zaman aşımı" @@ -4603,10 +4603,10 @@ "message": "Kasa zaman aşımınız, kuruluşunuz tarafından belirlenen kısıtlamaları aşıyor." }, "vaultCustomTimeoutMinimum": { - "message": "Minimum custom timeout is 1 minute." + "message": "Minimum özel zaman aşımı 1 dakikadır." }, "vaultTimeoutRangeError": { - "message": "Vault Timeout is not within allowed range." + "message": "Kasa Zaman Aşımı izin verilen aralıkta değil." }, "disablePersonalVaultExport": { "message": "Kişisel kasayı dışa aktarmayı devre dışı bırak" @@ -4657,25 +4657,25 @@ "message": "OIDC yönlendirme davranışı" }, "getClaimsFromUserInfoEndpoint": { - "message": "Get claims from user info endpoint" + "message": "Kullanıcı bilgileri uç noktasından hak talepleri alın" }, "additionalScopes": { - "message": "Custom Scopes" + "message": "Özel Kapsamlar" }, "additionalUserIdClaimTypes": { - "message": "Custom User ID Claim Types" + "message": "Özel Kullanıcı Kimliği Talep Türleri" }, "additionalEmailClaimTypes": { - "message": "Email Claim Types" + "message": "E-posta Talep Türleri" }, "additionalNameClaimTypes": { - "message": "Custom Name Claim Types" + "message": "Özel Ad Talep Türleri" }, "acrValues": { - "message": "Requested Authentication Context Class Reference values" + "message": "İstenen Kimlik Doğrulama Bağlam Sınıfı Referans değerleri" }, "expectedReturnAcrValue": { - "message": "Expected \"acr\" Claim Value In Response" + "message": "Yanıt Olarak Beklenen \"acr\" Talep Değeri" }, "spEntityId": { "message": "SP varlık kimliği" @@ -4699,7 +4699,7 @@ "message": "Minimum gelen imza algoritması" }, "spWantAssertionsSigned": { - "message": "Expect signed assertions" + "message": "İmzalı assertions'lar bekleyin" }, "spValidateCertificates": { "message": "Sertifikaları doğrula" @@ -4717,28 +4717,28 @@ "message": "Tek çıkış (SLO) servis URL'si" }, "idpX509PublicCert": { - "message": "X509 Public Certificate" + "message": "X509 Genel Sertifika" }, "idpOutboundSigningAlgorithm": { - "message": "Outbound Signing Algorithm" + "message": "Çıkış imza algoritması" }, "idpAllowUnsolicitedAuthnResponse": { - "message": "Allow unsolicited authentication response" + "message": "İstenmeyen kimlik doğrulama yanıtına izin ver" }, "idpAllowOutboundLogoutRequests": { - "message": "Allow outbound logout requests" + "message": "Çıkış isteklerine izin ver" }, "idpSignAuthenticationRequests": { - "message": "Sign authentication requests" + "message": "İmza doğrulama istekleri" }, "ssoSettingsSaved": { - "message": "Single Sign-On configuration was saved." + "message": "Tek Oturum Açma yapılandırması kaydedildi." }, "sponsoredFamilies": { "message": "Ücretsiz Bitwarden Aile" }, "sponsoredFamiliesEligible": { - "message": "You and your family are eligible for Free Bitwarden Families. Redeem with your personal email to keep your data secure even when you are not at work." + "message": "Siz ve aileniz Ücretsiz Bitwarden Aileleri için uygunsunuz. Verilerinizi işte olmadığınızda bile güvende tutmak için kişisel e-postanızla kullanın." }, "sponsoredFamiliesEligibleCard": { "message": "Verilerinizi evde de güvenle depolamak için Ücretsiz Bitwarden Aile paketinizi hemen kullanmaya başlayın." @@ -4750,10 +4750,10 @@ "message": "6 kullanıcı için premium erişim" }, "sponsoredFamiliesSharedCollections": { - "message": "Shared collections for Family secrets" + "message": "Aile sırları için paylaşılan koleksiyonlar" }, "badToken": { - "message": "The link is no longer valid. Please have the sponsor resend the offer." + "message": "Bağlantı artık geçerli değil. Lütfen sponsorun teklifi yeniden göndermesini sağlayın." }, "reclaimedFreePlan": { "message": "Ücretsiz paket kullanıldı" @@ -4762,25 +4762,25 @@ "message": "Kullan" }, "sponsoredFamiliesSelectOffer": { - "message": "Select the organization you would like sponsored" + "message": "Sponsor olmasını istediğiniz kuruluşu seçin" }, "familiesSponsoringOrgSelect": { - "message": "Which Free Families offer would you like to redeem?" + "message": "Hangi Ücretsiz Aileler teklifinden yararlanmak istersiniz?" }, "sponsoredFamiliesEmail": { - "message": "Enter your personal email to redeem Bitwarden Families" + "message": "Bitwarden Families kullanmak için kişisel e-postanızı girin" }, "sponsoredFamiliesLeaveCopy": { "message": "Sponsor kuruluştan ayrılır veya çıkarılırsanız Aile paketiniz ödeme döneminin sonunda sonra erecektir." }, "acceptBitwardenFamiliesHelp": { - "message": "Accept offer for an existing organization or create a new Families organization." + "message": "Mevcut bir kuruluş için teklifi kabul edin veya yeni bir Aile kuruluşu oluşturun." }, "setupSponsoredFamiliesLoginDesc": { "message": "Ücretsiz Bitwarden Aile Paketi Kuruluşuna davet edildiniz. Devam etmek için bu teklifi alan hesaba giriş yapmanız gerekiyor." }, "sponsoredFamiliesAcceptFailed": { - "message": "Unable to accept offer. Please resend the offer email from your enterprise account and try again." + "message": "Teklif kabul edilemiyor. Lütfen kurumsal hesabınızdan teklif e-postasını yeniden gönderin ve tekrar deneyin." }, "sponsoredFamiliesAcceptFailedShort": { "message": "Teklif kabul edilemedi. $DESCRIPTION$", @@ -4795,13 +4795,13 @@ "message": "Ücretsiz Bitwarden Aile'yi kabul et" }, "sponsoredFamiliesOfferRedeemed": { - "message": "Free Bitwarden Families offer successfully redeemed" + "message": "Ücretsiz Bitwarden Families teklifi başarıyla kullanıldı" }, "redeemed": { "message": "Kullanıldı" }, "redeemedAccount": { - "message": "Redeemed Account" + "message": "Kullanılmış Hesap" }, "revokeAccount": { "message": "$NAME$ hesabını iptal et", @@ -4813,7 +4813,7 @@ } }, "resendEmailLabel": { - "message": "Resend Sponsorship email to $NAME$ sponsorship", + "message": "Sponsorluk e-postasını $NAME$ sponsorluğuna yeniden gönder", "placeholders": { "name": { "content": "$1", @@ -4834,7 +4834,7 @@ "message": "Sponsorluğu kaldır" }, "removeSponsorshipConfirmation": { - "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" + "message": "Bir sponsorluğu kaldırdıktan sonra, bu abonelikten ve ilgili faturalardan siz sorumlu olacaksınız. Devam etmek istediğine emin misin?" }, "sponsorshipCreated": { "message": "Sponsorluk oluştur" @@ -4843,13 +4843,13 @@ "message": "E-posta gönderildi" }, "revokeSponsorshipConfirmation": { - "message": "After removing this account, the Families plan sponsorship will expire at the end of the billing period. You will not be able to redeem a new sponsorship offer until the existing one expires. Are you sure you want to continue?" + "message": "Bu hesap kaldırıldıktan sonra, fatura döneminin sonunda Aile planı sponsorluğu sona erecektir. Mevcut olanın süresi dolana kadar yeni bir sponsorluk teklifinden yararlanamazsınız. Devam etmek istediğine emin misin?" }, "removeSponsorshipSuccess": { "message": "Sponsorluk kaldırdıldı" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Anahtar Bağlayıcı hatası: Anahtar Bağlayıcının mevcut olduğundan ve doğru çalıştığından emin olun." }, "keyConnectorUrl": { "message": "Key Connector adresi" @@ -4897,7 +4897,7 @@ "message": "SSO doğrulamasına izin ver" }, "allowSsoDesc": { - "message": "Once set up, your configuration will be saved and members will be able to authenticate using their Identity Provider credentials." + "message": "Ayarlandıktan sonra yapılandırmanız kaydedilecek ve üyeler, Kimlik Sağlayıcı kimlik bilgilerini kullanarak kimliklerini doğrulayabilecektir." }, "ssoPolicyHelpStart": { "message": "Tüm üyelerin SSO ile giriş yapmasını zorunlu tutmak için", @@ -4915,7 +4915,7 @@ "message": "Key Connector ile çözmeyi kurmak için \"SSO kimlik doğrulama\" ve \"tek kuruluş\" ilkeleri gereklidir." }, "memberDecryptionOption": { - "message": "Member Decryption Options" + "message": "Üye Şifre Çözme Seçenekleri" }, "memberDecryptionPassDesc": { "message": "Kimlik doğrulamanın ardından üyeler ana parolalarını kullanarak kasadaki verilere erişebilecekler." @@ -4924,10 +4924,10 @@ "message": "Key Connector" }, "memberDecryptionKeyConnectorDesc": { - "message": "Connect Login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their Master Passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + "message": "Oturum Açma ile TOA'yı kendi kendine barındırılan şifre çözme anahtarı sunucunuza bağlayın. Bu seçeneği kullanarak üyelerin kasa verilerinin şifresini çözmek için Ana şifrelerini kullanmaları gerekmez. Kurulum yardımı için Bitwarden Destek ile iletişime geçin." }, "keyConnectorPolicyRestriction": { - "message": "\"Login with SSO and Key Connector Decryption\" is enabled. This policy will only apply to Owners and Admins." + "message": "\"TOA ve Anahtar Bağlayıcı Şifre Çözme ile Oturum Açma\" etkinleştirildi. Bu politika yalnızca Sahipler ve Yöneticiler için geçerli olacaktır." }, "enabledSso": { "message": "SSO etkinleştirildi" @@ -4942,19 +4942,19 @@ "message": "Key Connector devre dışı bırakıldı" }, "keyConnectorWarning": { - "message": "Once members begin using Key Connector, your Organization cannot revert to Master Password decryption. Proceed only if you are comfortable deploying and managing a key server." + "message": "Üyeler Anahtar Bağlayıcı'yı kullanmaya başladığında, Kuruluşunuz Ana şifresi şifre çözmeye geri dönemez. Yalnızca bir anahtar sunucuyu dağıtma ve yönetme konusunda rahatsanız devam edin." }, "migratedKeyConnector": { "message": "Key Connector'a taşındı" }, "paymentSponsored": { - "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " + "message": "Lütfen kuruluşla ilişkilendirmek için bir ödeme yöntemi sağlayın. Merak etmeyin, ek özellikler seçmediğiniz veya sponsorluğunuz sona ermediği sürece sizden hiçbir ücret talep etmeyeceğiz. " }, "orgCreatedSponsorshipInvalid": { - "message": "The sponsorship offer has expired. You may delete the organization you created to avoid a charge at the end of your 7 day trial. Otherwise you may close this prompt to keep the organization and assume billing responsibility." + "message": "Sponsorluk teklifinin süresi doldu. 7 günlük deneme sürenizin sonunda ücret ödememek için oluşturduğunuz organizasyonu silebilirsiniz. Aksi takdirde, kuruluşu korumak ve faturalandırma sorumluluğunu üstlenmek için bu istemi kapatabilirsiniz." }, "newFamiliesOrganization": { - "message": "New Families Organization" + "message": "Yeni Aileler Kuruluşu" }, "acceptOffer": { "message": "Teklifi kabul et" @@ -4978,55 +4978,55 @@ "message": "Sponsorluk ile ÜCRETSİZ" }, "viewBillingSyncToken": { - "message": "View Billing Sync Token" + "message": "Faturalandırma Eşitleme Anahtarını Görüntüle" }, "generateBillingSyncToken": { - "message": "Generate Billing Sync Token" + "message": "Faturalandırma Eşitleme Anahtarı Oluştur" }, "copyPasteBillingSync": { - "message": "Copy and paste this token into the Billing Sync settings of your self-hosted organization." + "message": "Bu anahtarı kopyalayıp şirket içinde barındırılan kuruluşunuzun Faturalandırma Eşitleme ayarlarına yapıştırın." }, "billingSyncCanAccess": { - "message": "Your Billing Sync token can access and edit this organization's subscription settings." + "message": "Faturalandırma Eşitleme anahtarınız bu kuruluşun abonelik ayarlarına erişebilir ve bunları düzenleyebilir." }, "manageBillingSync": { - "message": "Manage Billing Sync" + "message": "Faturalandırma Eşitlemesini Yönet" }, "setUpBillingSync": { - "message": "Set Up Billing Sync" + "message": "Faturalandırma Eşitlemesini Ayarla" }, "generateToken": { - "message": "Generate Token" + "message": "Anahtar Üret" }, "rotateToken": { - "message": "Rotate Token" + "message": "Anahtar Yenile" }, "rotateBillingSyncTokenWarning": { - "message": "If you proceed, you will need to re-setup billing sync on your self-hosted server." + "message": "Devam ederseniz, kendi kendine barındırılan sunucunuzda faturalandırma eşitlemesini yeniden kurmanız gerekecek." }, "rotateBillingSyncTokenTitle": { - "message": "Rotating the Billing Sync Token will invalidate the previous token." + "message": "Faturalandırma Senkronizasyonu Anahtarını yenilemek, önceki anahtarı geçersiz kılar." }, "selfHostingTitle": { - "message": "Self-Hosting" + "message": "Kendi Kendine Barındırılan" }, "selfHostingEnterpriseOrganizationSectionCopy": { - "message": "To set-up your organization on your own server, you will need to upload your license file. To support Free Families plans and advanced billing capabilities for your self-hosted organization, you will need to set up billing sync." + "message": "Kuruluşunuzu kendi sunucunuzda kurmak için lisans dosyanızı yüklemeniz gerekir. Kendi kendine barındırılan kuruluşunuz için Ücretsiz Aile planlarını ve gelişmiş faturalandırma özelliklerini desteklemek için faturalandırma eşitlemesini ayarlamanız gerekir." }, "billingSyncApiKeyRotated": { - "message": "Token rotated." + "message": "Anahtar yenilendi." }, "billingSync": { - "message": "Billing Sync" + "message": "Faturalandırma Eşitlemesi" }, "billingSyncDesc": { - "message": "Billing Sync provides Free Families plans for members and advanced billing capabilities by linking your self-hosted Bitwarden to the Bitwarden cloud server." + "message": "Faturalandırma Eşitlemesi, şirket içinde barındırılan Bitwarden'ınızı Bitwarden bulut sunucusuna bağlayarak üyeler için Ücretsiz Aile planları ve gelişmiş faturalandırma özellikleri sağlar." }, "billingSyncKeyDesc": { - "message": "A Billing Sync Token from your cloud organization's subscription settings is required to complete this form." + "message": "Bu formu doldurmak için bulut kuruluşunuzun abonelik ayarlarından bir Faturalandırma Eşitleme Anahtarı gerekir." }, "billingSyncKey": { - "message": "Billing Sync Token" + "message": "Faturalandırma Eşitleme Anahtarı" }, "active": { "message": "Aktif" @@ -5071,13 +5071,13 @@ "message": "zorunlu" }, "idpSingleSignOnServiceUrlRequired": { - "message": "Required if Entity ID is not a URL." + "message": "Varlık Kimliği bir URL değilse gereklidir." }, "openIdOptionalCustomizations": { "message": "İsteğe Bağlı Özelleştirmeler" }, "openIdAuthorityRequired": { - "message": "Required if Authority is not valid." + "message": "Yetki geçerli değilse gereklidir." }, "separateMultipleWithComma": { "message": "Birden fazla değeri virgülle ayırabilirsiniz." @@ -5179,10 +5179,10 @@ "message": "Servis" }, "unknownCipher": { - "message": "Unknown Item, you may need to request permission to access this item." + "message": "Bilinmeyen Öğe, bu öğeye erişmek için izin istemeniz gerekebilir." }, "cannotSponsorSelf": { - "message": "You cannot redeem for the active account. Enter a different email." + "message": "Aktif hesap için kullanamazsınız. Farklı bir e-posta girin." }, "revokeWhenExpired": { "message": "Süre sonu: $DATE$", @@ -5194,7 +5194,7 @@ } }, "awaitingSyncSingular": { - "message": "Token rotated $DAYS$ day ago. Update the billing sync token in your self-hosted organization settings.", + "message": "Anahtar $DAYS$ gün önce yenilendi. Şirket içinde barındırılan kuruluş ayarlarınızda faturalandırma eşitleme anahtarını güncelleyin.", "placeholders": { "days": { "content": "$1", @@ -5203,7 +5203,7 @@ } }, "awaitingSyncPlural": { - "message": "Token rotated $DAYS$ days ago. Update the billing sync token in your self-hosted organization settings.", + "message": "Anahtar $DAYS$ gün önce yenilendi. Şirket içinde barındırılan kuruluş ayarlarınızda faturalandırma eşitleme anahtarını güncelleyin.", "placeholders": { "days": { "content": "$1", @@ -5216,7 +5216,7 @@ "Description": "Used as a prefix to indicate the last time a sync occured. Example \"Last sync 1968-11-16 00:00:00\"" }, "sponsorshipsSynced": { - "message": "Self-hosted sponsorships synced." + "message": "Kendi kendine barındırılan sponsorluklar eşitlendi." }, "billingManagedByProvider": { "message": "Yönetici: $PROVIDER$", @@ -5251,13 +5251,13 @@ "message": "Cihaz doğrulamasını etkinleştir" }, "deviceVerificationDesc": { - "message": "When enabled, verification codes are sent to your email address when logging in from an unrecognized device" + "message": "Etkinleştirildiğinde, tanınmayan bir cihazdan oturum açarken e-posta adresinize doğrulama kodları gönderilir" }, "updatedDeviceVerification": { "message": "Cihaz doğrulaması güncellendi" }, "areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX": { - "message": "Are you sure you want to enable Device Verification? The verification code emails will arrive at: $EMAIL$", + "message": "Cihaz Doğrulamayı etkinleştirmek istediğinizden emin misiniz? Doğrulama kodu e-postaları şu adrese gelecek: $EMAIL$", "placeholders": { "email": { "content": "$1", @@ -5269,67 +5269,67 @@ "message": "Premium abonelik gerekli" }, "scim": { - "message": "SCIM Provisioning", + "message": "SCIM Sağlama", "description": "The text, 'SCIM', is an acronymn and should not be translated." }, "scimDescription": { - "message": "Automatically provision users and groups with your preferred identity provider via SCIM provisioning", + "message": "SCIM sağlama yoluyla tercih ettiğiniz kimlik sağlayıcıyla kullanıcıları ve grupları otomatik olarak sağlayın", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDesc": { - "message": "Enable SCIM", + "message": "SCIM'i etkinleştir", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDescHelpText": { - "message": "Set up your preferred identity provider by configuring the URL and SCIM API Key", + "message": "URL'yi ve SCIM API Anahtarını yapılandırarak tercih ettiğiniz kimlik sağlayıcısını ayarlayın", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimApiKeyHelperText": { - "message": "This API key has access to manage users within your organization. It should be kept secret." + "message": "Bu API anahtarı, kuruluşunuzdaki kullanıcıları yönetme erişimine sahiptir. Gizli tutulmalıdır." }, "copyScimKey": { - "message": "Copy the SCIM API Key to your clipboard", + "message": "SCIM API Anahtarını panonuza kopyalayın", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKey": { - "message": "Rotate the SCIM API Key", + "message": "SCIM API Anahtarını yenileyin", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKeyWarning": { - "message": "Are you sure you want to rotate the SCIM API Key? The current key will no longer work for any existing integrations.", + "message": "SCIM API Anahtarını yenilemek istediğinizden emin misiniz? Geçerli anahtar, mevcut tüm entegrasyonlar için artık çalışmayacaktır.", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateKey": { - "message": "Rotate Key" + "message": "Anahtarı Yenile" }, "scimApiKey": { - "message": "SCIM API Key", + "message": "SCIM API Anahtarı", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "copyScimUrl": { - "message": "Copy the SCIM endpoint URL to your clipboard", + "message": "SCIM uç noktası URL'sini panonuza kopyalayın", "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimUrl": { - "message": "SCIM URL", + "message": "SCIM URL'si", "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimApiKeyRotated": { - "message": "The SCIM API Key has been successfully rotated", + "message": "SCIM API Anahtarı başarıyla yenilendi", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "SCIM settings have been saved successfully", + "message": "SCIM ayarları başarıyla kaydedildi", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { "message": "Girdi gerekli." }, "inputEmail": { - "message": "Input is not an email-address." + "message": "Girdi bir e-posta adresi değil." }, "inputMinLength": { - "message": "Input must be at least $COUNT$ characters long.", + "message": "Giriş, en az $COUNT$ karakter uzunluğunda olmalıdır.", "placeholders": { "count": { "content": "$1", @@ -5338,7 +5338,7 @@ } }, "fieldsNeedAttention": { - "message": "$COUNT$ field(s) above need your attention.", + "message": "Üstteki $COUNT$ alan(lar) la ilgilenmeniz gerekiyor.", "placeholders": { "count": { "content": "$1", From 868f12bfd8cc54bf60a6f4c1cc925ac30789bc0f Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Fri, 16 Sep 2022 11:30:41 +0200 Subject: [PATCH 22/28] [CL-54] Add support for button block without argument + submit button (#3498) --- libs/components/src/button/button.directive.ts | 11 +++++------ libs/components/src/button/button.stories.ts | 18 ++++++++++++++++++ .../submit-button/submit-button.component.html | 8 +++++++- .../submit-button/submit-button.component.ts | 8 +++++++- .../src/submit-button/submit-button.stories.ts | 3 ++- 5 files changed, 39 insertions(+), 9 deletions(-) diff --git a/libs/components/src/button/button.directive.ts b/libs/components/src/button/button.directive.ts index 59e7b4269f7..5c4b0039aef 100644 --- a/libs/components/src/button/button.directive.ts +++ b/libs/components/src/button/button.directive.ts @@ -59,13 +59,12 @@ export class ButtonDirective { "focus-visible:tw-ring-primary-700", "focus-visible:tw-z-10", ] - .concat(this.block ? ["tw-w-full", "tw-block"] : ["tw-inline-block"]) + .concat( + this.block == null || this.block === false ? ["tw-inline-block"] : ["tw-w-full", "tw-block"] + ) .concat(buttonStyles[this.buttonType ?? "secondary"]); } - @Input() - buttonType: ButtonTypes = null; - - @Input() - block = false; + @Input() buttonType: ButtonTypes = null; + @Input() block?: boolean; } diff --git a/libs/components/src/button/button.stories.ts b/libs/components/src/button/button.stories.ts index 35a7dbfe829..f09b8701b1b 100644 --- a/libs/components/src/button/button.stories.ts +++ b/libs/components/src/button/button.stories.ts @@ -52,3 +52,21 @@ export const Disabled = DisabledTemplate.bind({}); Disabled.args = { size: "small", }; + +const BlockTemplate: Story = (args: ButtonDirective) => ({ + props: args, + template: ` + + + [block]="true" Link + + + block Link + + `, +}); + +export const Block = BlockTemplate.bind({}); +Block.args = { + block: true, +}; diff --git a/libs/components/src/submit-button/submit-button.component.html b/libs/components/src/submit-button/submit-button.component.html index f3c097b2f34..9d9657ba7ee 100644 --- a/libs/components/src/submit-button/submit-button.component.html +++ b/libs/components/src/submit-button/submit-button.component.html @@ -1,4 +1,10 @@ - diff --git a/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.html b/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.html index 84f660823ff..595f9d767eb 100644 --- a/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.html +++ b/apps/web/src/app/organizations/manage/bulk/bulk-confirm.component.html @@ -2,9 +2,9 @@