From a303bf33f789ea1cee7c440e4d38879bf73c2a73 Mon Sep 17 00:00:00 2001 From: Robyn MacCallum Date: Wed, 14 Dec 2022 14:34:10 -0500 Subject: [PATCH 01/20] Set showPasswordless to true (#4234) --- apps/web/config/cloud.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/config/cloud.json b/apps/web/config/cloud.json index 7900740296d..7c561d5f998 100644 --- a/apps/web/config/cloud.json +++ b/apps/web/config/cloud.json @@ -16,6 +16,6 @@ "proxyEvents": "https://events.bitwarden.com" }, "flags": { - "showPasswordless": false + "showPasswordless": true } } From 7df799f536cbfbdfefb4d2420730f1733f2a61fe Mon Sep 17 00:00:00 2001 From: Colton Hurst Date: Wed, 14 Dec 2022 18:04:45 -0500 Subject: [PATCH 02/20] SM-261: Remove Import Secrets button (#4225) --- apps/web/src/locales/en/messages.json | 3 --- .../projects/projects-list/projects-list.component.html | 4 ---- .../projects/projects-list/projects-list.component.ts | 1 - .../app/secrets-manager/shared/secrets-list.component.html | 4 ---- .../src/app/secrets-manager/shared/secrets-list.component.ts | 1 - 5 files changed, 13 deletions(-) diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index 82c450cadd0..aa27478ea7d 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -5556,9 +5556,6 @@ "newServiceAccount":{ "message":"New Service Account" }, - "importSecrets":{ - "message":"Import Secrets" - }, "secretsNoItemsTitle":{ "message":"No secrets to show" }, diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.html b/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.html index ea18d386504..d31169882b6 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.html +++ b/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.html @@ -9,10 +9,6 @@ {{ "newProject" | i18n }} - diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.ts b/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.ts index 97bf650c2b9..5d9d34b175b 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.ts @@ -24,7 +24,6 @@ export class ProjectsListComponent implements OnDestroy { @Output() deleteProjectEvent = new EventEmitter(); @Output() onProjectCheckedEvent = new EventEmitter(); @Output() newProjectEvent = new EventEmitter(); - @Output() importSecretsEvent = new EventEmitter(); private destroy$: Subject = new Subject(); diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.html b/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.html index bd8adde3d28..156079627a9 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.html +++ b/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.html @@ -9,10 +9,6 @@ {{ "newSecret" | i18n }} - diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.ts b/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.ts index daae75fe9d4..7a0c7a3dc18 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.ts @@ -26,7 +26,6 @@ export class SecretsListComponent implements OnDestroy { @Output() onSecretCheckedEvent = new EventEmitter(); @Output() deleteSecretsEvent = new EventEmitter(); @Output() newSecretEvent = new EventEmitter(); - @Output() importSecretsEvent = new EventEmitter(); private destroy$: Subject = new Subject(); From b319713e0737dc506786968e25ae97d8d595a651 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Thu, 15 Dec 2022 12:02:56 +0100 Subject: [PATCH 03/20] [SM-388] Make CL boolean setters more strict (#4241) * Make CL boolean setters more restrictive * Set default value for setters --- libs/components/src/dialog/dialog/dialog.component.ts | 4 ++-- libs/components/src/form-control/form-control.component.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/components/src/dialog/dialog/dialog.component.ts b/libs/components/src/dialog/dialog/dialog.component.ts index f82be6cd6db..09e0d6a0b2b 100644 --- a/libs/components/src/dialog/dialog/dialog.component.ts +++ b/libs/components/src/dialog/dialog/dialog.component.ts @@ -8,8 +8,8 @@ import { Component, Input } from "@angular/core"; export class DialogComponent { @Input() dialogSize: "small" | "default" | "large" = "default"; - private _disablePadding: boolean; - @Input() set disablePadding(value: boolean | string) { + private _disablePadding = false; + @Input() set disablePadding(value: boolean | "") { this._disablePadding = coerceBooleanProperty(value); } get disablePadding() { diff --git a/libs/components/src/form-control/form-control.component.ts b/libs/components/src/form-control/form-control.component.ts index 3dc080f71b9..ac8971e61d6 100644 --- a/libs/components/src/form-control/form-control.component.ts +++ b/libs/components/src/form-control/form-control.component.ts @@ -12,11 +12,11 @@ import { BitFormControlAbstraction } from "./form-control.abstraction"; export class FormControlComponent { @Input() label: string; - private _inline: boolean; + private _inline = false; @Input() get inline() { return this._inline; } - set inline(value: boolean | string | null) { + set inline(value: boolean | "") { this._inline = coerceBooleanProperty(value); } From 002c3f6368a067cf3ab03f8297112f625c5b5bfa Mon Sep 17 00:00:00 2001 From: "Patrick H. Lauke" Date: Thu, 15 Dec 2022 14:13:09 +0000 Subject: [PATCH 04/20] [PS-1793] Desktop/Browser/Web: tweak disclosure widget design (#3951) * Move chevron/arrow to start of disclosure widget in addition, changes the only expand/collapse disclosure widget like this on the web client to use the same `

` structure as on browser extension and desktop app * Change collapsed/expanded icons Make them more understandable and consistent with other expand/collapse controls * Harmonise desktop +/- controls to use arrow/chevron icons as well also removes the incorrect `A11yTitle` in the generator that currently overrides the visible "Options" text (leading to a failure of WCAG 2.5.3 Label in Name) * Change the icons for the expand/collapse disclosure widget in SSO component * Expand icon explanation plus minor typo cleanup * Add patch for Send button focus outline --- apps/browser/src/popup/scss/box.scss | 2 +- .../popup/send/send-add-edit.component.html | 4 +-- .../src/popup/settings/options.component.html | 12 ++++---- .../app/accounts/environment.component.html | 7 +++-- .../src/app/accounts/settings.component.html | 18 ++++++------ .../src/app/send/add-edit.component.html | 4 +-- .../src/app/vault/generator.component.html | 28 ++++++++----------- apps/desktop/src/scss/box.scss | 2 +- apps/web/src/app/send/add-edit.component.html | 18 ++++++------ apps/web/src/scss/buttons.scss | 14 ++++++++++ .../organizations/manage/sso.component.html | 4 +-- libs/components/src/link/link.stories.ts | 4 +-- libs/components/src/stories/icons.stories.mdx | 14 +++++----- 13 files changed, 73 insertions(+), 58 deletions(-) diff --git a/apps/browser/src/popup/scss/box.scss b/apps/browser/src/popup/scss/box.scss index 29e54ed9f30..ffb15ba0261 100644 --- a/apps/browser/src/popup/scss/box.scss +++ b/apps/browser/src/popup/scss/box.scss @@ -43,7 +43,7 @@ .icon { display: flex; align-items: center; - margin-left: 5px; + margin-right: 5px; @include themify($themes) { color: themed("headingColor"); diff --git a/apps/browser/src/popup/send/send-add-edit.component.html b/apps/browser/src/popup/send/send-add-edit.component.html index 19e5c535127..44002dddaa6 100644 --- a/apps/browser/src/popup/send/send-add-edit.component.html +++ b/apps/browser/src/popup/send/send-add-edit.component.html @@ -154,9 +154,9 @@ (click)="showOptions = !showOptions" [attr.aria-expanded]="showOptions" > + + {{ "options" | i18n }} - - diff --git a/apps/browser/src/popup/settings/options.component.html b/apps/browser/src/popup/settings/options.component.html index 8f9874faa71..afa77407f5e 100644 --- a/apps/browser/src/popup/settings/options.component.html +++ b/apps/browser/src/popup/settings/options.component.html @@ -19,9 +19,9 @@ (click)="showGeneral = !showGeneral" [attr.aria-expanded]="showGeneral" > + + General - - @@ -127,9 +127,9 @@ (click)="showDisplay = !showDisplay" [attr.aria-expanded]="showDisplay" > + + Display - - @@ -210,9 +210,9 @@ (click)="showAutofill = !showAutofill" [attr.aria-expanded]="showAutofill" > + + Autofill - - diff --git a/apps/desktop/src/app/accounts/environment.component.html b/apps/desktop/src/app/accounts/environment.component.html index 859554b92b1..1788e52e31a 100644 --- a/apps/desktop/src/app/accounts/environment.component.html +++ b/apps/desktop/src/app/accounts/environment.component.html @@ -26,8 +26,11 @@

diff --git a/apps/desktop/src/app/accounts/settings.component.html b/apps/desktop/src/app/accounts/settings.component.html index 06cbb7fe8c6..2e409f6fcab 100644 --- a/apps/desktop/src/app/accounts/settings.component.html +++ b/apps/desktop/src/app/accounts/settings.component.html @@ -16,17 +16,17 @@ [attr.aria-expanded]="showSecurity" appAutofocus > - {{ "security" | i18n }} + {{ "security" | i18n }} @@ -120,17 +120,17 @@ (click)="showAccountPreferences = !showAccountPreferences" [attr.aria-expanded]="showAccountPreferences" > - {{ "accountPreferences" | i18n }} + {{ "accountPreferences" | i18n }} @@ -190,17 +190,17 @@ (click)="showAppPreferences = !showAppPreferences" [attr.aria-expanded]="showAppPreferences" > - {{ "appPreferences" | i18n }} + {{ "appPreferences" | i18n }} diff --git a/apps/desktop/src/app/send/add-edit.component.html b/apps/desktop/src/app/send/add-edit.component.html index 47c0d4ae00c..bae0e073dac 100644 --- a/apps/desktop/src/app/send/add-edit.component.html +++ b/apps/desktop/src/app/send/add-edit.component.html @@ -100,12 +100,12 @@ (click)="toggleOptions()" [attr.aria-expanded]="showOptions" > - {{ "options" | i18n }} + {{ "options" | i18n }}
diff --git a/apps/desktop/src/app/vault/generator.component.html b/apps/desktop/src/app/vault/generator.component.html index 6acf7a331bf..28d7b37afe7 100644 --- a/apps/desktop/src/app/vault/generator.component.html +++ b/apps/desktop/src/app/vault/generator.component.html @@ -99,14 +99,12 @@

-

@@ -299,14 +297,12 @@

-

diff --git a/apps/desktop/src/scss/box.scss b/apps/desktop/src/scss/box.scss index 64cbf370abf..54acf2e7d8d 100644 --- a/apps/desktop/src/scss/box.scss +++ b/apps/desktop/src/scss/box.scss @@ -58,7 +58,7 @@ .icon { display: flex; align-items: flex-end; - margin-left: 5px; + margin-right: 5px; @include themify($themes) { color: themed("headingColor"); diff --git a/apps/web/src/app/send/add-edit.component.html b/apps/web/src/app/send/add-edit.component.html index dd9f61c6c58..a112c7be156 100644 --- a/apps/web/src/app/send/add-edit.component.html +++ b/apps/web/src/app/send/add-edit.component.html @@ -141,14 +141,16 @@ class="section-header d-flex flex-row align-items-center mt-5" (click)="toggleOptions()" > -

{{ "options" | i18n }}

- - - +

+ +

@@ -65,8 +65,8 @@ const AnchorTemplate: Story = (args: AnchorLinkDirective) =
diff --git a/libs/components/src/stories/icons.stories.mdx b/libs/components/src/stories/icons.stories.mdx index 3b401695ee8..da8896a904c 100644 --- a/libs/components/src/stories/icons.stories.mdx +++ b/libs/components/src/stories/icons.stories.mdx @@ -61,7 +61,7 @@ Avoid using icons to convey information unless paired with meaningful, clear tex | | bwi-lock-f | - | | | bwi-minus-circle | remove action | | | bwi-minus-square | unselect all action | -| | bwi-paste | paste from clipbaord action | +| | bwi-paste | paste from clipboard action | | | bwi-pencil-square | edit action | | | bwi-play | start or play action | | | bwi-plus | new or add option in contained buttons/links | @@ -88,20 +88,20 @@ Avoid using icons to convey information unless paired with meaningful, clear tex | Icon | bwi-name | Usage | | ------------------------------------------ | ---------------------- | ------------------------------------------------------- | -| | bwi-angle-down | drop down or expandable options | +| | bwi-angle-down | closed dropdown or open expandable section | | | bwi-angle-left | - | -| | bwi-angle-right | collapsed section that can be expanded | +| | bwi-angle-right | closed expandable section | | | bwi-arrow-circle-down | table sort order | | | bwi-arrow-circle-left | - | | | bwi-arrow-circle-right | - | | | bwi-arrow-circle-up | table sort order | | | bwi-caret-down | - | | | bwi-caret-right | - | -| | bwi-chevron-up | - | +| | bwi-chevron-up | open dropdown | | | bwi-dbl-angle-left | - | | | bwi-dbl-angle-right | - | | | bwi-ellipsis-h | more options menu horizontal; used in mobile list items | -| | bwi-ellipsis-v | more optioins menu vertical; used primarily in tables | +| | bwi-ellipsis-v | more options menu vertical; used primarily in tables | | | bwi-filter | Product switcher | | | bwi-hamburger | navigation indicator | | | bwi-list | toggle list/grid view | @@ -159,11 +159,11 @@ Avoid using icons to convey information unless paired with meaningful, clear tex | | bwi-tag | labels | | | bwi-thumb-tack | - | | | bwi-thumbs-up | - | -| | bwi-universal-access | use for accessiblity related actions | +| | bwi-universal-access | use for accessibility related actions | | | bwi-user | relates to current user or organization member | | | bwi-user-circle | - | | | bwi-user-f | - | -| | bwi-wrench | tools or aditional configuration options | +| | bwi-wrench | tools or additional configuration options | ## Platforms and Logos From d8a121463ee85c55f8674905ca447a13d5be94bb Mon Sep 17 00:00:00 2001 From: Andreas Coroiu Date: Thu, 15 Dec 2022 15:42:15 +0100 Subject: [PATCH 05/20] [EC-838] fix: CSP issues with inline styles (#4219) --- .../src/checkbox/checkbox.component.ts | 18 +++++---------- libs/components/tailwind.config.base.js | 23 ++++++++++++++++++- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/libs/components/src/checkbox/checkbox.component.ts b/libs/components/src/checkbox/checkbox.component.ts index 07b2066e8a4..8e966fa2272 100644 --- a/libs/components/src/checkbox/checkbox.component.ts +++ b/libs/components/src/checkbox/checkbox.component.ts @@ -7,18 +7,6 @@ import { BitFormControlAbstraction } from "../form-control"; selector: "input[type=checkbox][bitCheckbox]", template: "", providers: [{ provide: BitFormControlAbstraction, useExisting: CheckboxComponent }], - styles: [ - ` - :host:checked:before { - -webkit-mask-image: url('data:image/svg+xml,%3Csvg class="svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="8" height="8" viewBox="0 0 10 10"%3E%3Cpath d="M0.5 6.2L2.9 8.6L9.5 1.4" fill="none" stroke="white" stroke-width="2"%3E%3C/path%3E%3C/svg%3E'); - mask-image: url('data:image/svg+xml,%3Csvg class="svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="8" height="8" viewBox="0 0 10 10"%3E%3Cpath d="M0.5 6.2L2.9 8.6L9.5 1.4" fill="none" stroke="white" stroke-width="2"%3E%3C/path%3E%3C/svg%3E'); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - } - `, - ], }) export class CheckboxComponent implements BitFormControlAbstraction { @HostBinding("class") @@ -63,6 +51,9 @@ export class CheckboxComponent implements BitFormControlAbstraction { "[&>label:hover]:checked:tw-border-primary-700", "checked:before:tw-bg-text-contrast", + "checked:before:tw-mask-image-[var(--mask-image)]", + "checked:before:tw-mask-position-[center]", + "checked:before:tw-mask-repeat-[no-repeat]", "checked:disabled:tw-border-secondary-100", "checked:disabled:tw-bg-secondary-100", @@ -72,6 +63,9 @@ export class CheckboxComponent implements BitFormControlAbstraction { constructor(@Optional() @Self() private ngControl?: NgControl) {} + @HostBinding("style.--mask-image") + protected maskImage = `url('data:image/svg+xml,%3Csvg class="svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="8" height="8" viewBox="0 0 10 10"%3E%3Cpath d="M0.5 6.2L2.9 8.6L9.5 1.4" fill="none" stroke="white" stroke-width="2"%3E%3C/path%3E%3C/svg%3E')`; + @HostBinding() @Input() get disabled() { diff --git a/libs/components/tailwind.config.base.js b/libs/components/tailwind.config.base.js index a700a3377dd..2420c3dc851 100644 --- a/libs/components/tailwind.config.base.js +++ b/libs/components/tailwind.config.base.js @@ -1,5 +1,6 @@ /* eslint-disable */ const colors = require("tailwindcss/colors"); +const plugin = require("tailwindcss/plugin"); function rgba(color) { return "rgb(var(" + color + ") / )"; @@ -94,5 +95,25 @@ module.exports = { }), }, }, - plugins: [], + plugins: [ + plugin(function ({ matchUtilities, theme, addUtilities, addComponents, e, config }) { + matchUtilities( + { + "mask-image": (value) => ({ + "-webkit-mask-image": value, + "mask-image": value, + }), + "mask-position": (value) => ({ + "-webkit-mask-position": value, + "mask-position": value, + }), + "mask-repeat": (value) => ({ + "-webkit-mask-repeat": value, + "mask-repeat": value, + }), + }, + {} + ); + }), + ], }; From 8a1230b959dd1eccb76ed346285433271b950756 Mon Sep 17 00:00:00 2001 From: CristianAUnisa <31346754+CristianAUnisa@users.noreply.github.com> Date: Fri, 16 Dec 2022 00:20:10 +0100 Subject: [PATCH 06/20] [PS-1874] Manage zoom factor when opening / closing the application (#4050) * fix: manage zoom factor when opening / closing the application * Fix zoom factor type and removed useless instruction * Specified WindowState as the type of windowStates --- apps/desktop/src/main/window.main.ts | 16 ++++++++++++++-- libs/common/src/models/domain/window-state.ts | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/apps/desktop/src/main/window.main.ts b/apps/desktop/src/main/window.main.ts index 5b58172ac1b..b1d88a821f4 100644 --- a/apps/desktop/src/main/window.main.ts +++ b/apps/desktop/src/main/window.main.ts @@ -5,6 +5,7 @@ import { app, BrowserWindow, screen } from "electron"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; +import { WindowState } from "@bitwarden/common/models/domain/window-state"; import { cleanUserAgent, isDev, isMacAppStore, isSnapStore } from "../utils"; @@ -13,9 +14,10 @@ const WindowEventHandlingDelay = 100; export class WindowMain { win: BrowserWindow; isQuitting = false; + isClosing = false; private windowStateChangeTimer: NodeJS.Timer; - private windowStates: { [key: string]: any } = {}; + private windowStates: { [key: string]: WindowState } = {}; private enableAlwaysOnTop = false; constructor( @@ -128,6 +130,10 @@ export class WindowMain { }, }); + this.win.webContents.on("dom-ready", () => { + this.win.webContents.zoomFactor = this.windowStates[mainWindowSizeKey].zoomFactor ?? 1.0; + }); + if (this.windowStates[mainWindowSizeKey].isMaximized) { this.win.maximize(); } @@ -154,6 +160,7 @@ export class WindowMain { // Emitted when the window is closed. this.win.on("closed", async () => { + this.isClosing = false; await this.updateWindowState(mainWindowSizeKey, this.win); // Dereference the window object, usually you would store window @@ -163,6 +170,7 @@ export class WindowMain { }); this.win.on("close", async () => { + this.isClosing = true; await this.updateWindowState(mainWindowSizeKey, this.win); }); @@ -217,7 +225,7 @@ export class WindowMain { if (this.windowStates[configKey] == null) { this.windowStates[configKey] = await this.stateService.getWindow(); if (this.windowStates[configKey] == null) { - this.windowStates[configKey] = {}; + this.windowStates[configKey] = {}; } } @@ -231,6 +239,10 @@ export class WindowMain { this.windowStates[configKey].height = bounds.height; } + if (this.isClosing) { + this.windowStates[configKey].zoomFactor = win.webContents.zoomFactor; + } + await this.stateService.setWindow(this.windowStates[configKey]); } catch (e) { this.logService.error(e); diff --git a/libs/common/src/models/domain/window-state.ts b/libs/common/src/models/domain/window-state.ts index cb260d8b083..99a1e536580 100644 --- a/libs/common/src/models/domain/window-state.ts +++ b/libs/common/src/models/domain/window-state.ts @@ -7,4 +7,5 @@ export class WindowState { displayBounds: any; x?: number; y?: number; + zoomFactor?: number; } From 161ff3de28a8d869fea8529d2ba2ff048be5e83b Mon Sep 17 00:00:00 2001 From: Matt Gibson Date: Thu, 15 Dec 2022 18:20:46 -0500 Subject: [PATCH 07/20] Ps/sync only when changed (#4245) * Only sync if synced value changes Co-authored-by: Daniel James Smith * Catch error if no one is listening This occurs if the background tries to update any visualizers, but none are open. Co-authored-by: Daniel James Smith Co-authored-by: Justin Baur * Allow provided deserializer to handle not found * Debounce synced items * Remove object-hash * Revert "Only sync if synced value changes" This reverts commit 024fe226d955937c720167d1acd37a5f0144625b. * Test debounce Co-authored-by: Daniel James Smith Co-authored-by: Justin Baur Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com> --- .../session-syncer.spec.ts | 22 +++++++++++--- .../session-sync-observable/session-syncer.ts | 30 ++++++++++++++----- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/apps/browser/src/decorators/session-sync-observable/session-syncer.spec.ts b/apps/browser/src/decorators/session-sync-observable/session-syncer.spec.ts index c37b640f3f9..2630d9f7bb3 100644 --- a/apps/browser/src/decorators/session-sync-observable/session-syncer.spec.ts +++ b/apps/browser/src/decorators/session-sync-observable/session-syncer.spec.ts @@ -32,6 +32,7 @@ describe("session syncer", () => { stateService = mock(); stateService.hasInSessionMemory.mockResolvedValue(false); sut = new SessionSyncer(behaviorSubject, stateService, metaData); + jest.spyOn(sut as any, "debounceMs", "get").mockReturnValue(0); }); afterEach(() => { @@ -88,7 +89,7 @@ describe("session syncer", () => { sut.init(); - expect(sut["ignoreNUpdates"]).toBe(3); + expect(sut["ignoreNUpdates"]).toBe(1); }); it("should ignore BehaviorSubject's initial value", () => { @@ -128,28 +129,41 @@ describe("session syncer", () => { describe("a value is emitted on the observable", () => { let sendMessageSpy: jest.SpyInstance; - beforeEach(() => { + beforeEach(async () => { sendMessageSpy = jest.spyOn(BrowserApi, "sendMessage"); sut.init(); + // allow initial value to be set + await awaitAsync(); behaviorSubject.next("test"); }); it("should update the session memory", async () => { // await finishing of fire-and-forget operation - await new Promise((resolve) => setTimeout(resolve, 100)); + await awaitAsync(); expect(stateService.setInSessionMemory).toHaveBeenCalledTimes(1); expect(stateService.setInSessionMemory).toHaveBeenCalledWith(sessionKey, "test"); }); it("should update sessionSyncers in other contexts", async () => { // await finishing of fire-and-forget operation - await new Promise((resolve) => setTimeout(resolve, 100)); + await awaitAsync(); expect(sendMessageSpy).toHaveBeenCalledTimes(1); expect(sendMessageSpy).toHaveBeenCalledWith(`${sessionKey}_update`, { id: sut.id }); }); + + it("should debounce subject updates", async () => { + behaviorSubject.next("test2"); + behaviorSubject.next("test3"); + + // await finishing of fire-and-forget operation + await awaitAsync(); + + expect(stateService.setInSessionMemory).toHaveBeenCalledTimes(1); + expect(stateService.setInSessionMemory).toHaveBeenCalledWith(sessionKey, "test3"); + }); }); describe("A message is received", () => { diff --git a/apps/browser/src/decorators/session-sync-observable/session-syncer.ts b/apps/browser/src/decorators/session-sync-observable/session-syncer.ts index 91b371ef817..74f18577065 100644 --- a/apps/browser/src/decorators/session-sync-observable/session-syncer.ts +++ b/apps/browser/src/decorators/session-sync-observable/session-syncer.ts @@ -1,4 +1,11 @@ -import { BehaviorSubject, concatMap, ReplaySubject, Subject, Subscription } from "rxjs"; +import { + BehaviorSubject, + concatMap, + ReplaySubject, + Subject, + Subscription, + debounceTime, +} from "rxjs"; import { Utils } from "@bitwarden/common/misc/utils"; @@ -13,6 +20,9 @@ export class SessionSyncer { // ignore initial values private ignoreNUpdates = 0; + private get debounceMs() { + return 500; + } constructor( private subject: Subject, @@ -30,10 +40,8 @@ export class SessionSyncer { init() { switch (this.subject.constructor) { - case ReplaySubject: - // ignore all updates currently in the buffer - this.ignoreNUpdates = (this.subject as any)._buffer.length; - break; + // ignore all updates currently in the buffer + case ReplaySubject: // N = 1 due to debounce case BehaviorSubject: this.ignoreNUpdates = 1; break; @@ -58,6 +66,7 @@ export class SessionSyncer { // contexts. If so, this is handled by destruction of the context. this.subscription = this.subject .pipe( + debounceTime(this.debounceMs), concatMap(async (next) => { if (this.ignoreNUpdates > 0) { this.ignoreNUpdates -= 1; @@ -92,8 +101,15 @@ export class SessionSyncer { } private async updateSession(value: any) { - await this.stateService.setInSessionMemory(this.metaData.sessionKey, value); - await BrowserApi.sendMessage(this.updateMessageCommand, { id: this.id }); + try { + await this.stateService.setInSessionMemory(this.metaData.sessionKey, value); + await BrowserApi.sendMessage(this.updateMessageCommand, { id: this.id }); + } catch (e) { + if (e.message === "Could not establish connection. Receiving end does not exist.") { + return; + } + throw e; + } } private get updateMessageCommand() { From c746ab4a458d8094cde8ff6fc7a5f4bd911d8744 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Dec 2022 01:14:08 +0100 Subject: [PATCH 08/20] Autosync the updated translations (#4252) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/desktop/src/locales/en_GB/messages.json | 176 +++++++++---------- apps/desktop/src/locales/fa/messages.json | 6 +- apps/desktop/src/locales/fr/messages.json | 6 +- apps/desktop/src/locales/pl/messages.json | 40 ++--- 4 files changed, 114 insertions(+), 114 deletions(-) diff --git a/apps/desktop/src/locales/en_GB/messages.json b/apps/desktop/src/locales/en_GB/messages.json index c57c32ec3ba..fefb00adf59 100644 --- a/apps/desktop/src/locales/en_GB/messages.json +++ b/apps/desktop/src/locales/en_GB/messages.json @@ -178,7 +178,7 @@ "message": "Premium required" }, "premiumRequiredDesc": { - "message": "A premium membership is required to use this feature." + "message": "A Premium membership is required to use this feature." }, "errorOccurred": { "message": "An error has occurred." @@ -269,7 +269,7 @@ "message": "Last name" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "address1": { "message": "Address 1" @@ -346,10 +346,10 @@ "message": "Name is required." }, "addedItem": { - "message": "Added item" + "message": "Item added" }, "editedItem": { - "message": "Edited item" + "message": "Item saved" }, "deleteItem": { "message": "Delete item" @@ -370,7 +370,7 @@ "message": "Are you sure you want to overwrite the current password?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -395,7 +395,7 @@ "message": "Copy URI" }, "copyVerificationCodeTotp": { - "message": "Copy Verification Code (TOTP)" + "message": "Copy verification code (TOTP)" }, "length": { "message": "Length" @@ -410,7 +410,7 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { "message": "Number of words" @@ -455,19 +455,19 @@ "message": "Add new attachment" }, "deletedAttachment": { - "message": "Deleted attachment" + "message": "Attachment deleted" }, "deleteAttachmentConfirmation": { "message": "Are you sure you want to delete this attachment?" }, "attachmentSaved": { - "message": "The attachment has been saved." + "message": "Attachment saved" }, "file": { "message": "File" }, "selectFile": { - "message": "Select a file." + "message": "Select a file" }, "maxFileSize": { "message": "Maximum file size is 500 MB." @@ -476,16 +476,16 @@ "message": "You cannot use this feature until you update your encryption key." }, "editedFolder": { - "message": "Edited folder" + "message": "Folder saved" }, "addedFolder": { - "message": "Added folder" + "message": "Folder added" }, "deleteFolderConfirmation": { "message": "Are you sure you want to delete this folder?" }, "deletedFolder": { - "message": "Deleted folder" + "message": "Folder deleted" }, "loginOrCreateNewAccount": { "message": "Log in or create a new account to access your secure vault." @@ -563,10 +563,10 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { "message": "Verification code" @@ -620,7 +620,7 @@ "message": "Insert your security key into your computer's USB port. If it has a button, touch it." }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers on your account." }, "recoveryCodeTitle": { "message": "Recovery code" @@ -650,7 +650,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "Email" @@ -662,7 +662,7 @@ "message": "Login unavailable" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled. However, none of the configured two-step providers are supported by this device." + "message": "This account has two-step login set up, however, none of the configured two-step providers are supported by this device." }, "noTwoStepProviders2": { "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." @@ -701,7 +701,7 @@ "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "ok": { "message": "OK" @@ -734,13 +734,13 @@ "message": "Log out" }, "addNewLogin": { - "message": "Add new login" + "message": "New login" }, "addNewItem": { - "message": "Add new item" + "message": "New item" }, "addNewFolder": { - "message": "Add new folder" + "message": "New folder" }, "view": { "message": "View" @@ -752,16 +752,16 @@ "message": "Loading..." }, "lockVault": { - "message": "Lock Vault" + "message": "Lock vault" }, "passwordGenerator": { "message": "Password generator" }, "contactUs": { - "message": "Contact Us" + "message": "Contact us" }, "getHelp": { - "message": "Get Help" + "message": "Get help" }, "fileBugReport": { "message": "File a bug report" @@ -790,7 +790,7 @@ "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." }, "goToWebVault": { - "message": "Go to Web Vault" + "message": "Go to web vault" }, "getMobileApp": { "message": "Get mobile app" @@ -827,7 +827,7 @@ "message": "Invalid master password" }, "twoStepLoginConfirmation": { - "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be set up on the bitwarden.com web vault. Do you want to visit the website now?" }, "twoStepLogin": { "message": "Two-step login" @@ -928,7 +928,7 @@ "message": "When closing the window, show an icon in the menu bar instead." }, "enableTray": { - "message": "Enable tray icon" + "message": "Show tray icon" }, "enableTrayDesc": { "message": "Always show an icon in the system tray." @@ -958,10 +958,10 @@ "message": "Show the Bitwarden icon in the Dock even when minimised to the menu bar." }, "confirmTrayTitle": { - "message": "Confirm disable tray" + "message": "Confirm hiding tray" }, "confirmTrayDesc": { - "message": "Disabling this setting will also disable all other tray related settings." + "message": "Turning off this setting will also turn off all other tray related settings." }, "language": { "message": "Language" @@ -988,7 +988,7 @@ "description": "Copy to clipboard" }, "checkForUpdates": { - "message": "Check for Updates…" + "message": "Check for updates…" }, "version": { "message": "Version $VERSION_NUM$", @@ -1000,7 +1000,7 @@ } }, "restartToUpdate": { - "message": "Restart to Update" + "message": "Restart to update" }, "restartToUpdateDesc": { "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", @@ -1056,10 +1056,10 @@ "message": "Refresh membership" }, "premiumNotCurrentMember": { - "message": "You are not currently a premium member." + "message": "You are not currently a Premium member." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "premiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." @@ -1213,7 +1213,7 @@ "description": "Domain name. Ex. website.com" }, "domainName": { - "message": "Domain Name", + "message": "Domain name", "description": "Domain name. Ex. website.com" }, "host": { @@ -1285,7 +1285,7 @@ "description": "hCaptcha is the name of a website, should not be translated" }, "loadAccessibilityCookie": { - "message": "Load Accessibility Cookie" + "message": "Load accessibility cookie" }, "registerAccessibilityUser": { "message": "Register as an accessibility user at", @@ -1319,7 +1319,7 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirm vault export" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over insecure channels (such as email). Delete it immediately after you are done using it." @@ -1428,7 +1428,7 @@ "message": "You must select at least one collection." }, "premiumUpdated": { - "message": "You've upgraded to premium." + "message": "You've upgraded to Premium." }, "restore": { "message": "Restore" @@ -1476,7 +1476,7 @@ "description": "Noun: a special folder to hold deleted items" }, "searchTrash": { - "message": "Search Bin" + "message": "Search bin" }, "permanentlyDeleteItem": { "message": "Permanently delete item" @@ -1485,7 +1485,7 @@ "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Permanently deleted item" + "message": "Item permanently deleted" }, "restoreItem": { "message": "Restore item" @@ -1494,7 +1494,7 @@ "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored item" + "message": "Item restored" }, "permanentlyDelete": { "message": "Permanently delete" @@ -1626,10 +1626,10 @@ "message": "Biometrics not enabled" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometrics to be set up in the settings first." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organisation and choose from available Collections." + "message": "Due to an enterprise policy, you are restricted from saving items to your individual vault. Change the ownership option to an organisation and choose from available collections." }, "hintEqualsPassword": { "message": "Your password hint cannot be the same as your password." @@ -1656,27 +1656,27 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "myVault": { - "message": "My Vault" + "message": "My vault" }, "text": { "message": "Text" }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "maxAccessCount": { - "message": "Maximum Access Count", + "message": "Maximum access count", "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "maxAccessCountDesc": { @@ -1684,10 +1684,10 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "disableSend": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendPasswordDesc": { @@ -1703,7 +1703,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinkLabel": { - "message": "Send Link", + "message": "Send link", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "textHiddenByDefault": { @@ -1711,26 +1711,26 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send added", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "whatTypeOfSend": { "message": "What type of Send is this?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createSend": { - "message": "Create Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTextDesc": { @@ -1766,7 +1766,7 @@ "message": "Copy the link to share this Send to my clipboard upon save." }, "sendDisabled": { - "message": "Send disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1807,7 +1807,7 @@ "message": "One or more organisation policies are affecting your Send options." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature." @@ -1822,13 +1822,13 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organisation. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organisation. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "hours": { "message": "Hours" @@ -1837,7 +1837,7 @@ "message": "Minutes" }, "vaultTimeoutPolicyInEffect": { - "message": "Your organisation policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "message": "Your organisation policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", "placeholders": { "hours": { "content": "$1", @@ -1853,25 +1853,25 @@ "message": "Your vault timeout exceeds the restrictions set by your organisation." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organisation has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organisation administrators to change your master password." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export removed" }, "personalVaultExportPolicyInEffect": { "message": "One or more organisation policies prevents you from exporting your personal vault." }, "addAccount": { - "message": "Add Account" + "message": "Add account" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "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 organisation.", @@ -1883,7 +1883,7 @@ } }, "leaveOrganization": { - "message": "Leave Organisation" + "message": "Leave organisation" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organisation?" @@ -1892,10 +1892,10 @@ "message": "You have left the organisation." }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "lockAllVaults": { - "message": "Lock All Vaults" + "message": "Lock all vaults" }, "accountLimitReached": { "message": "No more than 5 accounts may be logged in at the same time." @@ -1904,7 +1904,7 @@ "message": "Preferences" }, "appPreferences": { - "message": "App Settings (All Accounts)" + "message": "App settings (all accounts)" }, "accountSwitcherLimitReached": { "message": "Account limit reached. Log out of an account to add another." @@ -1919,7 +1919,7 @@ } }, "switchAccount": { - "message": "Switch Account" + "message": "Switch account" }, "options": { "message": "Options" @@ -1928,10 +1928,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organisation vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organisation vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1952,26 +1952,26 @@ "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "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." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1980,25 +1980,25 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "service": { "message": "Service" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "searchOrganization": { - "message": "Search Organisation" + "message": "Search organisation" }, "searchMyVault": { - "message": "Search My Vault" + "message": "Search my vault" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -2011,16 +2011,16 @@ "message": "API Access Token" }, "apiKey": { - "message": "API Key" + "message": "API key" }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organisation is disabled." + "message": "Organisation suspended" }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organisations cannot be accessed. Contact your Organisation owner for assistance." + "message": "Items in suspended organisations cannot be accessed. Contact your organisation owner for assistance." }, "neverLockWarning": { "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json index b7906064d66..62ed5a4c647 100644 --- a/apps/desktop/src/locales/fa/messages.json +++ b/apps/desktop/src/locales/fa/messages.json @@ -1780,13 +1780,13 @@ "message": "غیرفعال شد" }, "removePassword": { - "message": "Remove password" + "message": "حذف رمز عبور" }, "removedPassword": { - "message": "Password removed" + "message": "رمز عبور حذف شد" }, "removePasswordConfirmation": { - "message": "Are you sure you want to remove the password?" + "message": "مطمئنید که می‌خواهید رمز عبور حذف شود؟" }, "maxAccessCountReached": { "message": "به حداکثر تعداد دسترسی رسیده است" diff --git a/apps/desktop/src/locales/fr/messages.json b/apps/desktop/src/locales/fr/messages.json index 86b357480e4..dc88f596c16 100644 --- a/apps/desktop/src/locales/fr/messages.json +++ b/apps/desktop/src/locales/fr/messages.json @@ -1780,13 +1780,13 @@ "message": "Désactivé" }, "removePassword": { - "message": "Remove password" + "message": "Supprimer le mot de passe" }, "removedPassword": { - "message": "Password removed" + "message": "Mot de passe supprimé" }, "removePasswordConfirmation": { - "message": "Are you sure you want to remove the password?" + "message": "Êtes-vous sûr(e) de vouloir supprimer le mot de passe ?" }, "maxAccessCountReached": { "message": "Nombre maximum d'accès atteint" diff --git a/apps/desktop/src/locales/pl/messages.json b/apps/desktop/src/locales/pl/messages.json index bd37196ef7e..df3900cfad0 100644 --- a/apps/desktop/src/locales/pl/messages.json +++ b/apps/desktop/src/locales/pl/messages.json @@ -308,7 +308,7 @@ "message": "Edytuj" }, "authenticatorKeyTotp": { - "message": "Klucz Uwierzytelniający (TOTP)" + "message": "Klucz uwierzytelniający (TOTP)" }, "folder": { "message": "Folder" @@ -734,7 +734,7 @@ "message": "Wyloguj się" }, "addNewLogin": { - "message": "Dodaj dane logowania" + "message": "Nowe dane logowania" }, "addNewItem": { "message": "Nowy element" @@ -836,7 +836,7 @@ "message": "Blokowanie sejfu" }, "vaultTimeoutDesc": { - "message": "Wybierz kiedy sejf zostanie zablokowany i wykonaj następującą akcję." + "message": "Wybierz, kiedy sejf zostanie zablokowany i wykonaj następującą akcję." }, "immediately": { "message": "Natychmiast" @@ -928,7 +928,7 @@ "message": "Po zamknięciu okna, pokaż ikonę w pasku menu." }, "enableTray": { - "message": "Włącz ikonę w zasobniku systemowym" + "message": "Pokaż ikonę w zasobniku systemowym" }, "enableTrayDesc": { "message": "Zawsze pokazuj ikonę w zasobniku systemowym." @@ -958,7 +958,7 @@ "message": "Pokaż ikonę Bitwarden w Docku po zminimalizowaniu do paska menu." }, "confirmTrayTitle": { - "message": "Potwierdź wyłączenie zasobnika systemowego" + "message": "Potwierdź ukrycie zasobnika systemowego" }, "confirmTrayDesc": { "message": "Wyłączenie tej opcji spowoduje wyłącznie wszystkich innych powiązanych ustawień z zasobnikiem systemowym." @@ -1169,7 +1169,7 @@ "message": "Ukryj Bitwarden" }, "hideOthers": { - "message": "Ukryj pozostałe" + "message": "Ukryj inne" }, "showAll": { "message": "Pokaż wszystkie" @@ -1462,7 +1462,7 @@ "message": "Sposób blokowania sejfu" }, "vaultTimeoutActionLockDesc": { - "message": "Po zablokowaniu sejfu, musisz ponownie wpisać hasło główne, aby uzyskać do niego dostęp." + "message": "Aby uzyskać dostęp do sejfu, musisz wpisać hasło główne lub odblokować go inną metodą." }, "vaultTimeoutActionLogOutDesc": { "message": "Po wylogowaniu się z sejfu, musisz ponownie zalogować się, aby uzyskać do niego dostęp." @@ -1566,19 +1566,19 @@ "message": "Zaznaczając tę opcję, akceptujesz:" }, "acceptPoliciesRequired": { - "message": "Warunki użytkowania i polityka prywatności nie zostały zaakceptowane." + "message": "Regulamin i polityka prywatności nie zostały zaakceptowane." }, "enableBrowserIntegration": { "message": "Włącz połączenie z przeglądarką" }, "enableBrowserIntegrationDesc": { - "message": "Połączenie z przeglądarką jest używane do odblokowania danymi biometrycznymi." + "message": "Używane do odblokowania danymi biometrycznymi." }, "enableDuckDuckGoBrowserIntegration": { "message": "Włącz połączenie z przeglądarką DuckDuckGo" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Korzystaj z sejfu Bitwarden podczas przeglądania za pomocą DuckDuckGo." + "message": "Korzystaj z sejfu Bitwarden podczas przeglądania za pomocą przeglądarki DuckDuckGo." }, "browserIntegrationUnsupportedTitle": { "message": "Połączenie z przeglądarką nie jest obsługiwane" @@ -1608,7 +1608,7 @@ "message": "Upewnij się, że wyświetlony identyfikator jest identyczny z pokazanym w rozszerzeniu przeglądarki." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ chce połączyć się z Bitwarden", + "message": "Aplikacja $APPID$ chce połączyć się z Bitwarden", "placeholders": { "appid": { "content": "$1", @@ -1629,7 +1629,7 @@ "message": "Aby włączyć dane biometryczne w przeglądarce, musisz włączyć tę samą funkcję w ustawianiach aplikacji." }, "personalOwnershipSubmitError": { - "message": "Ze względu na zasadę przedsiębiorstwa, nie możesz zapisywać elementów w osobistym sejfie. Zmień właściciela elementu na organizację i wybierz jedną z dostępnych kolekcji,." + "message": "Ze względu na zasadę przedsiębiorstwa, nie możesz zapisywać elementów w osobistym sejfie. Zmień właściciela elementu na organizację i wybierz jedną z dostępnych kolekcji." }, "hintEqualsPassword": { "message": "Podpowiedź do hasła nie może być taka sama jak hasło." @@ -1807,7 +1807,7 @@ "message": "Co najmniej jedna zasada organizacji wpływa na ustawienia wysyłek." }, "emailVerificationRequired": { - "message": "Wymagana weryfikacja adresu e-mail" + "message": "Weryfikacja adresu e-mail jest wymagana" }, "emailVerificationRequiredDesc": { "message": "Musisz zweryfikować adres e-mail, aby używać tej funkcji." @@ -1983,7 +1983,7 @@ "message": "Losowe słowo" }, "websiteName": { - "message": "Nazwa witryny" + "message": "Nazwa strony" }, "service": { "message": "Usługa" @@ -1998,7 +1998,7 @@ "message": "Szukaj w sejfie" }, "forwardedEmail": { - "message": "Alias przekazywanego e-maila" + "message": "Alias przekazywanego adresu" }, "forwardedEmailDesc": { "message": "Wygeneruj alias adresu e-mail z zewnętrznej usługi przekazywania." @@ -2011,19 +2011,19 @@ "message": "Token dostępu API" }, "apiKey": { - "message": "Klucz interfejsu API" + "message": "Klucz API" }, "premiumSubcriptionRequired": { "message": "Wymagana jest subskrypcja Premium" }, "organizationIsDisabled": { - "message": "Organizacja jest wyłączona." + "message": "Organizacja została zawieszona" }, "disabledOrganizationFilterError": { - "message": "Nie można uzyskać dostępu do elementów w wyłączonych organizacjach. Skontaktuj się z właścicielem organizacji, aby uzyskać pomoc." + "message": "Nie można uzyskać dostępu do elementów w zawieszonych organizacjach. Skontaktuj się z właścicielem organizacji, aby uzyskać pomoc." }, "neverLockWarning": { - "message": "Czy na pewno chcesz użyć opcji „Nigdy”? Ustawienie opcji blokady na „Nigdy” powoduje zapisanie klucza szyfrowania sejfu na urządzeniu. Jeśli korzystasz z tej opcji, upewnij się, że urządzenie jest odpowiednio chronione." + "message": "Czy na pewno chcesz użyć opcji „Nigdy”? Ustawienie opcji blokady na „Nigdy” spowoduje zapisanie klucza szyfrowania sejfu na urządzeniu. Jeśli korzystasz z tej opcji, upewnij się, że urządzenie jest odpowiednio chronione." }, "cardBrandMir": { "message": "Mir" @@ -2044,7 +2044,7 @@ "message": "To nie Ty?" }, "newAroundHere": { - "message": "Jesteś tu nowy(a)?" + "message": "Nowy użytkownik?" }, "loggingInTo": { "message": "Logowanie do $DOMAIN$", From 923cb216548e1ff8919b7f4b5d95784831eb0021 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Dec 2022 01:15:16 +0100 Subject: [PATCH 09/20] Autosync the updated translations (#4251) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/browser/src/_locales/cs/messages.json | 2 +- apps/browser/src/_locales/da/messages.json | 10 +++---- apps/browser/src/_locales/pl/messages.json | 34 +++++++++++----------- apps/browser/src/_locales/sv/messages.json | 22 +++++++------- apps/browser/store/locales/cs/copy.resx | 30 +++++++++---------- 5 files changed, 49 insertions(+), 49 deletions(-) diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json index 655d9e3d58e..796db71c2b0 100644 --- a/apps/browser/src/_locales/cs/messages.json +++ b/apps/browser/src/_locales/cs/messages.json @@ -1933,7 +1933,7 @@ "message": "E-mail pro doménový koš" }, "catchallEmailDesc": { - "message": "Use your domain's configured catch-all inbox." + "message": "Použijte nakonfigurovanou univerzální schránku své domény." }, "random": { "message": "Náhodný" diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index e48ff9db786..642fcec5c7e 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -2030,18 +2030,18 @@ } }, "loginWithMasterPassword": { - "message": "Log in with master password" + "message": "Log ind med hovedadgangskode" }, "loggingInAs": { - "message": "Logging in as" + "message": "Logger ind som" }, "notYou": { - "message": "Not you?" + "message": "Ikke dig?" }, "newAroundHere": { - "message": "New around here?" + "message": "Ny her?" }, "rememberEmail": { - "message": "Remember email" + "message": "Husk e-mail" } } diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index 8b263c097c5..370caaa68b1 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -98,7 +98,7 @@ "message": "Kopiuj nazwę pola niestandardowego" }, "noMatchingLogins": { - "message": "Brak pasujących danych logowania." + "message": "Brak pasujących danych logowania" }, "unlockVaultMenu": { "message": "Odblokuj sejf" @@ -936,7 +936,7 @@ "message": "Adres URL serwera" }, "apiUrl": { - "message": "Adres URL serwera interfejsu API" + "message": "Adres URL serwera API" }, "webVaultUrl": { "message": "Adres URL serwera sejfu internetowego" @@ -1040,7 +1040,7 @@ "message": "Pokaż ikony witryn" }, "faviconDesc": { - "message": "Pokaż rozpoznawalny obraz obok każdych danych logowania." + "message": "Pokaż rozpoznawalny obraz obok danych logowania." }, "enableBadgeCounter": { "message": "Pokaż licznik na ikonie" @@ -1316,7 +1316,7 @@ "description": "ex. Date this item was created" }, "datePasswordUpdated": { - "message": "Aktualizacja hasła", + "message": "Hasło zostało zaktualizowane", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1488,7 +1488,7 @@ "message": "Zaznaczając tę opcję, akceptujesz:" }, "acceptPoliciesRequired": { - "message": "Warunki użytkowania i polityka prywatności nie zostały zaakceptowane." + "message": "Regulamin i polityka prywatności nie zostały zaakceptowane." }, "termsOfService": { "message": "Regulamin" @@ -1820,7 +1820,7 @@ "message": "Zaktualizuj hasło główne" }, "updateMasterPasswordWarning": { - "message": "Twoje hasło główne zostało ostatnio zmienione przez administratora Twojej organizacji. Musisz je teraz zaktualizować, aby uzyskać dostęp do sejfu. W przypadku kontynuacji nastąpi wylogowanie z bieżącej sesji, przez co konieczne będzie ponowne zalogowanie się. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie jedną godzinę." + "message": "Hasło główne zostało zmienione przez administratora Twojej organizacji. Musisz je zaktualizować, aby uzyskać dostęp do sejfu. Ta czynność spowoduje wylogowanie z bieżącej sesji, przez co konieczne będzie ponowne zalogowanie się. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie godzinę." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatyczne rejestrowanie użytkowników" @@ -1857,10 +1857,10 @@ "message": "Czas blokowania sejfu przekracza limit określony przez organizację." }, "vaultExportDisabled": { - "message": "Eksport sejfu wyłączony" + "message": "Eksportowanie sejfu jest niedostępne" }, "personalVaultExportPolicyInEffect": { - "message": "Co najmniej jedna zasada organizacji uniemożliwia wyeksportowanie Twojego sejfu." + "message": "Co najmniej jedna zasada organizacji uniemożliwia wyeksportowanie osobistego sejfu." }, "copyCustomFieldNameInvalidElement": { "message": "Nie można zidentyfikować poprawnego elementu formularza. Spróbuj sprawdzić kod HTML." @@ -1942,7 +1942,7 @@ "message": "Losowe słowo" }, "websiteName": { - "message": "Nazwa witryny" + "message": "Nazwa strony" }, "whatWouldYouLikeToGenerate": { "message": "Co chcesz wygenerować?" @@ -1954,7 +1954,7 @@ "message": "Usługa" }, "forwardedEmail": { - "message": "Alias przekazywanego e-maila" + "message": "Alias przekazywanego adresu" }, "forwardedEmailDesc": { "message": "Wygeneruj alias adresu e-mail z zewnętrznej usługi przekazywania." @@ -1967,7 +1967,7 @@ "message": "Token dostępu API" }, "apiKey": { - "message": "Klucz interfejsu API" + "message": "Klucz API" }, "ssoKeyConnectorError": { "message": "Błąd serwera Key Connector: upewnij się, że serwer Key Connector jest dostępny i działa poprawnie." @@ -1976,10 +1976,10 @@ "message": "Wymagana jest subskrypcja Premium" }, "organizationIsDisabled": { - "message": "Organizacja jest wyłączona." + "message": "Organizacja została zawieszona." }, "disabledOrganizationFilterError": { - "message": "Nie można uzyskać dostępu do elementów w wyłączonych organizacjach. Skontaktuj się z właścicielem organizacji, aby uzyskać pomoc." + "message": "Nie można uzyskać dostępu do elementów w zawieszonych organizacjach. Skontaktuj się z właścicielem organizacji, aby uzyskać pomoc." }, "cardBrandMir": { "message": "Mir" @@ -1994,7 +1994,7 @@ } }, "settingsEdited": { - "message": "Ustawienia zostały edytowane" + "message": "Ustawienia zostały zmienione" }, "environmentEditedClick": { "message": "Kliknij tutaj" @@ -2009,7 +2009,7 @@ "message": "Samodzielnie hostowany" }, "thirdParty": { - "message": "Innego dostawcy" + "message": "Inny dostawca" }, "thirdPartyServerMessage": { "message": "Połączono z implementacją serwera innego dostawcy, $SERVERNAME$. Zweryfikuj błędy za pomocą oficjalnego serwera lub zgłoś je serwerowi innego dostawcy.", @@ -2021,7 +2021,7 @@ } }, "lastSeenOn": { - "message": "ostatnio widziano $DATE$", + "message": "ostatnio widziany $DATE$", "placeholders": { "date": { "content": "$1", @@ -2039,7 +2039,7 @@ "message": "To nie Ty?" }, "newAroundHere": { - "message": "Jesteś tu nowy(a)?" + "message": "Nowy użytkownik?" }, "rememberEmail": { "message": "Zapamiętaj adres e-mail" diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json index a4c107152af..af7f3cc090c 100644 --- a/apps/browser/src/_locales/sv/messages.json +++ b/apps/browser/src/_locales/sv/messages.json @@ -131,7 +131,7 @@ "message": "Skicka en verifieringskod till din e-postadress" }, "sendCode": { - "message": "Send-kod" + "message": "Skicka kod" }, "codeSent": { "message": "Kod har skickats" @@ -318,7 +318,7 @@ "message": "Öppna" }, "website": { - "message": "Webbsida" + "message": "Webbplats" }, "toggleVisibility": { "message": "Växla synlighet" @@ -436,7 +436,7 @@ "message": "Bekräftelsen för huvudlösenordet stämde ej." }, "newAccountCreated": { - "message": "Ditt nya konto har blivit skapat! Du kan nu logga in." + "message": "Ditt nya konto har skapats! Du kan logga in nu." }, "masterPassSent": { "message": "Vi har skickat ett e-postmeddelande till dig med din huvudlösenordsledtråd." @@ -448,7 +448,7 @@ "message": "Ogiltig verifieringskod" }, "valueCopied": { - "message": "$VALUE$ kopierat", + "message": "$VALUE$ har kopierats", "description": "Value has been copied to the clipboard.", "placeholders": { "value": { @@ -461,10 +461,10 @@ "message": "Kunde inte automatiskt fylla i det valda objektet på den här webbsidan. Klipp/klistra informationen istället." }, "loggedOut": { - "message": "Loggade ut" + "message": "Utloggad" }, "loginExpired": { - "message": "Din inloggningssession har utgått." + "message": "Din inloggningssession har upphört." }, "logOutConfirmation": { "message": "Är du säker på att du vill logga ut?" @@ -497,7 +497,7 @@ "message": "Mapp sparad" }, "deleteFolderConfirmation": { - "message": "Är du säker på att du vill ta bort den här mappen?" + "message": "Är du säker på att du vill radera denna mapp?" }, "deletedFolder": { "message": "Mapp raderad" @@ -717,10 +717,10 @@ "message": "Bifogade filer" }, "deleteAttachment": { - "message": "Ta bort bilaga" + "message": "Radera bilaga" }, "deleteAttachmentConfirmation": { - "message": "Är du säker på att du vill ta bort bilagan?" + "message": "Är du säker på att du vill radera denna bilaga?" }, "deletedAttachment": { "message": "Raderade bilaga" @@ -1400,7 +1400,7 @@ "description": "Verb form: to make secure or inaccesible by" }, "trash": { - "message": "Papperskorgen", + "message": "Papperskorg", "description": "Noun: a special folder to hold deleted items" }, "searchTrash": { @@ -1731,7 +1731,7 @@ "message": "Nuvarande antal åtkomster" }, "createSend": { - "message": "Skapa ny Send", + "message": "Ny Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { diff --git a/apps/browser/store/locales/cs/copy.resx b/apps/browser/store/locales/cs/copy.resx index 76bd3a97397..5bf97484a52 100644 --- a/apps/browser/store/locales/cs/copy.resx +++ b/apps/browser/store/locales/cs/copy.resx @@ -124,31 +124,31 @@ Bezpečný a bezplatný správce hesel pro všechna vaše zařízení - Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + Bitwarden, Inc. je mateřskou společností 8bit Solutions LLC. -NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. +THE VERGE, U.S. NEWS & WORLD REPORT, CNET A DALŠÍ JI OZNAČILY ZA NEJLEPŠÍHO SPRÁVCE HESEL. -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. +Spravujte, ukládejte, zabezpečujte a sdílejte neomezený počet hesel na neomezeném počtu zařízení odkudkoliv. Bitwarden poskytuje open source řešení pro správu hesel všem, ať už doma, v práci nebo na cestách. -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +Generujte silná, jedinečná a náhodná hesla na základě bezpečnostních požadavků pro každou webovou stránku, kterou navštěvujete. -Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. +Bitwarden Send rychle přenáší šifrované informace --- soubory a prostý text -- přímo komukoliv. -Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. +Bitwarden nabízí plány Teams a Enterprise pro firmy, takže můžete bezpečně sdílet hesla s kolegy. -Why Choose Bitwarden: +Proč si vybrat 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. +Šifrování na světové úrovni +Hesla jsou chráněna pokročilým koncovým šifrováním (AES-256 bit, salted hashování a PBKDF2 SHA-256), takže vaše data zůstanou bezpečná a soukromá. -Built-in Password Generator -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +Vestavěný generátor hesel +Generujte silná, jedinečná a náhodná hesla na základě bezpečnostních požadavků pro každou webovou stránku, kterou navštěvujete. -Global Translations -Bitwarden translations exist in 40 languages and are growing, thanks to our global community. +Globální překlady +Překlady Bitwarden existují ve 40 jazycích a díky naší globální komunitě se stále rozšiřují. -Cross-Platform Applications -Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. +Aplikace pro více platforem +Zabezpečte a sdílejte citlivá data v rámci svého trezoru Bitwarden z jakéhokoliv prohlížeče, mobilního zařízení nebo desktopového operačního systému a dalších. From f3ee9b016a0f858498da7da46cb70a1392d4540e Mon Sep 17 00:00:00 2001 From: Will Martin Date: Fri, 16 Dec 2022 08:46:06 -0500 Subject: [PATCH 10/20] fix: update bit-menu withPush (#4240) --- libs/components/src/menu/menu-trigger-for.directive.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/components/src/menu/menu-trigger-for.directive.ts b/libs/components/src/menu/menu-trigger-for.directive.ts index 059e6f812e6..37ea9de650b 100644 --- a/libs/components/src/menu/menu-trigger-for.directive.ts +++ b/libs/components/src/menu/menu-trigger-for.directive.ts @@ -49,7 +49,7 @@ export class MenuTriggerForDirective implements OnDestroy { ]) .withLockedPosition(true) .withFlexibleDimensions(false) - .withPush(false), + .withPush(true), }; private closedEventsSub: Subscription; private keyDownEventsSub: Subscription; From 94b1a7743d0ae008e4f62a6653d8425ed9d0c0ab Mon Sep 17 00:00:00 2001 From: Will Martin Date: Fri, 16 Dec 2022 08:46:33 -0500 Subject: [PATCH 11/20] emit openChange when toggling (#4237) --- .../src/app/secrets-manager/layout/org-switcher.component.ts | 1 + libs/components/src/navigation/nav-group.component.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/layout/org-switcher.component.ts b/bitwarden_license/bit-web/src/app/secrets-manager/layout/org-switcher.component.ts index 97cb46ee3c3..87a392901cd 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/layout/org-switcher.component.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/layout/org-switcher.component.ts @@ -29,5 +29,6 @@ export class OrgSwitcherComponent { protected toggle(event?: MouseEvent) { event?.stopPropagation(); this.open = !this.open; + this.openChange.emit(this.open); } } diff --git a/libs/components/src/navigation/nav-group.component.ts b/libs/components/src/navigation/nav-group.component.ts index 5829701c9fe..9cd83fa6ac3 100644 --- a/libs/components/src/navigation/nav-group.component.ts +++ b/libs/components/src/navigation/nav-group.component.ts @@ -42,6 +42,7 @@ export class NavGroupComponent extends NavBaseComponent implements AfterContentI protected toggle(event?: MouseEvent) { event?.stopPropagation(); this.open = !this.open; + this.openChange.emit(this.open); } /** From 1e53ae4fb22717841446186ef1d8fe209b64f07f Mon Sep 17 00:00:00 2001 From: Will Martin Date: Fri, 16 Dec 2022 08:47:34 -0500 Subject: [PATCH 12/20] [SM-387] fix org-switcher sorting (#4236) --- .../src/app/secrets-manager/layout/org-switcher.component.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/layout/org-switcher.component.ts b/bitwarden_license/bit-web/src/app/secrets-manager/layout/org-switcher.component.ts index 87a392901cd..0da0ac81c7d 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/layout/org-switcher.component.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/layout/org-switcher.component.ts @@ -10,7 +10,10 @@ import type { Organization } from "@bitwarden/common/models/domain/organization" templateUrl: "org-switcher.component.html", }) export class OrgSwitcherComponent { - protected organizations$: Observable = this.organizationService.organizations$; + protected organizations$: Observable = + this.organizationService.organizations$.pipe( + map((orgs) => orgs.sort((a, b) => a.name.localeCompare(b.name))) + ); protected activeOrganization$: Observable = combineLatest([ this.route.paramMap, this.organizationService.organizations$, From 8bfe48ea7353cfbddf8900df3442d648b6a42340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Gon=C3=A7alves?= Date: Fri, 16 Dec 2022 14:32:18 +0000 Subject: [PATCH 13/20] SG-632 Fix default value of email providers list (#4213) --- libs/angular/src/components/generator.component.ts | 5 ++++- libs/common/src/services/usernameGeneration.service.ts | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libs/angular/src/components/generator.component.ts b/libs/angular/src/components/generator.component.ts index 29262919aac..6a104b45dad 100644 --- a/libs/angular/src/components/generator.component.ts +++ b/libs/angular/src/components/generator.component.ts @@ -244,7 +244,10 @@ export class GeneratorComponent implements OnInit { ]; this.usernameOptions = await this.usernameGenerationService.getOptions(); - if (this.usernameOptions.forwardedService == null) { + if ( + this.usernameOptions.forwardedService == null || + this.usernameOptions.forwardedService === "" + ) { this.forwardOptions.push({ name: "", value: null }); } diff --git a/libs/common/src/services/usernameGeneration.service.ts b/libs/common/src/services/usernameGeneration.service.ts index ce5857f37cc..7c9eb34e898 100644 --- a/libs/common/src/services/usernameGeneration.service.ts +++ b/libs/common/src/services/usernameGeneration.service.ts @@ -17,7 +17,7 @@ const DefaultOptions = { wordIncludeNumber: true, subaddressType: "random", catchallType: "random", - forwardedService: "simplelogin", + forwardedService: "", forwardedAnonAddyDomain: "anonaddy.me", }; From c06c0f9f2c2cd29e1afd7e9866ca5c9d22e8c312 Mon Sep 17 00:00:00 2001 From: Robyn MacCallum Date: Fri, 16 Dec 2022 10:08:44 -0500 Subject: [PATCH 14/20] [SG-742] (#4190) * Remove default landing on masterpassword page * Remove rememberEmail state service value that isn't needed * Remove last occurence of setRememberEmail * Remove alwaysRememberEmail functionality * Remove always remember email from browser and add option to * Add extra spacing around remember email check * [SG-884] Fix Remember Email functionality for Login with SSO (#4238) * Add saveEmailSettings method to LoginService * Add StateService as a dependency to LoginService * Update login components to utilize new login service method for saving rememberedEmail --- .../src/popup/accounts/home.component.html | 19 ++++++++--- .../src/popup/accounts/home.component.ts | 33 +++++++++++++++---- .../src/popup/accounts/login.component.ts | 3 +- apps/browser/src/popup/scss/pages.scss | 6 ++++ .../src/popup/services/services.module.ts | 1 + .../src/app/services/services.module.ts | 1 + .../login/login-with-device.component.ts | 10 +----- .../app/accounts/login/login.component.html | 2 +- .../src/app/accounts/login/login.component.ts | 1 - apps/web/src/app/core/core.module.ts | 1 + apps/web/src/app/core/state/state.service.ts | 17 ---------- .../angular/src/components/login.component.ts | 30 +++++++---------- .../src/services/jslib-services.module.ts | 1 + libs/common/src/abstractions/login.service.ts | 1 + libs/common/src/services/login.service.ts | 8 +++++ 15 files changed, 75 insertions(+), 59 deletions(-) diff --git a/apps/browser/src/popup/accounts/home.component.html b/apps/browser/src/popup/accounts/home.component.html index 7fc8163a7f0..24feb9c83e5 100644 --- a/apps/browser/src/popup/accounts/home.component.html +++ b/apps/browser/src/popup/accounts/home.component.html @@ -9,9 +9,18 @@
-
-
@@ -22,10 +31,10 @@
- diff --git a/apps/browser/src/popup/accounts/home.component.ts b/apps/browser/src/popup/accounts/home.component.ts index 28d42dc482a..e6a31bea9a6 100644 --- a/apps/browser/src/popup/accounts/home.component.ts +++ b/apps/browser/src/popup/accounts/home.component.ts @@ -4,6 +4,7 @@ import { ActivatedRoute, Router } from "@angular/router"; import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; @@ -16,6 +17,7 @@ export class HomeComponent implements OnInit { formGroup = this.formBuilder.group({ email: ["", [Validators.required, Validators.email]], + rememberEmail: [false], }); constructor( @@ -25,12 +27,26 @@ export class HomeComponent implements OnInit { private router: Router, private i18nService: I18nService, private environmentService: EnvironmentService, - private route: ActivatedRoute + private route: ActivatedRoute, + private loginService: LoginService ) {} async ngOnInit(): Promise { - const rememberedEmail = await this.stateService.getRememberedEmail(); - if (rememberedEmail != null) { - this.formGroup.patchValue({ email: await this.stateService.getRememberedEmail() }); + let savedEmail = this.loginService.getEmail(); + const rememberEmail = this.loginService.getRememberEmail(); + + if (savedEmail != null) { + this.formGroup.patchValue({ + email: savedEmail, + rememberEmail: rememberEmail, + }); + } else { + savedEmail = await this.stateService.getRememberedEmail(); + if (savedEmail != null) { + this.formGroup.patchValue({ + email: savedEmail, + rememberEmail: true, + }); + } } } @@ -45,12 +61,17 @@ export class HomeComponent implements OnInit { return; } - this.stateService.setRememberedEmail(this.formGroup.value.email); - + this.loginService.setEmail(this.formGroup.value.email); + this.loginService.setRememberEmail(this.formGroup.value.rememberEmail); this.router.navigate(["login"], { queryParams: { email: this.formGroup.value.email } }); } get selfHostedDomain() { return this.environmentService.hasBaseUrl() ? this.environmentService.getWebVaultUrl() : null; } + + setFormValues() { + this.loginService.setEmail(this.formGroup.value.email); + this.loginService.setRememberEmail(this.formGroup.value.rememberEmail); + } } diff --git a/apps/browser/src/popup/accounts/login.component.ts b/apps/browser/src/popup/accounts/login.component.ts index d44847b35e0..7630f31ac3d 100644 --- a/apps/browser/src/popup/accounts/login.component.ts +++ b/apps/browser/src/popup/accounts/login.component.ts @@ -23,8 +23,6 @@ import { Utils } from "@bitwarden/common/misc/utils"; templateUrl: "login.component.html", }) export class LoginComponent extends BaseLoginComponent { - protected skipRememberEmail = true; - constructor( apiService: ApiService, appIdService: AppIdService, @@ -73,6 +71,7 @@ export class LoginComponent extends BaseLoginComponent { } async launchSsoBrowser() { + await this.loginService.saveEmailSettings(); // Generate necessary sso params const passwordOptions: any = { type: "password", diff --git a/apps/browser/src/popup/scss/pages.scss b/apps/browser/src/popup/scss/pages.scss index 9ba21f63ca7..66bd190a5fc 100644 --- a/apps/browser/src/popup/scss/pages.scss +++ b/apps/browser/src/popup/scss/pages.scss @@ -143,6 +143,12 @@ body.body-full { padding: 30px 10px 0 10px; } +.remember-email-check { + padding-top: 8px; + padding-left: 10px; + padding-bottom: 18px; +} + .login-buttons > button { margin: 15px 0 15px 0; } diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts index b2039ba5996..05cd4ede8f5 100644 --- a/apps/browser/src/popup/services/services.module.ts +++ b/apps/browser/src/popup/services/services.module.ts @@ -367,6 +367,7 @@ function getBgService(service: keyof MainBackground) { { provide: LoginServiceAbstraction, useClass: LoginService, + deps: [StateServiceAbstraction], }, { provide: AbstractThemingService, diff --git a/apps/desktop/src/app/services/services.module.ts b/apps/desktop/src/app/services/services.module.ts index 8696bd0b395..28d27a9ce22 100644 --- a/apps/desktop/src/app/services/services.module.ts +++ b/apps/desktop/src/app/services/services.module.ts @@ -180,6 +180,7 @@ const RELOAD_CALLBACK = new InjectionToken<() => any>("RELOAD_CALLBACK"); { provide: LoginServiceAbstraction, useClass: LoginService, + deps: [StateServiceAbstraction], }, ], }) diff --git a/apps/web/src/app/accounts/login/login-with-device.component.ts b/apps/web/src/app/accounts/login/login-with-device.component.ts index fabc2552208..82852000832 100644 --- a/apps/web/src/app/accounts/login/login-with-device.component.ts +++ b/apps/web/src/app/accounts/login/login-with-device.component.ts @@ -142,7 +142,7 @@ export class LoginWithDeviceComponent this.router.navigate([this.forcePasswordResetRoute]); } } else { - await this.setRememberEmailValues(); + await this.loginService.saveEmailSettings(); if (this.onSuccessfulLogin != null) { this.onSuccessfulLogin(); } @@ -202,12 +202,4 @@ export class LoginWithDeviceComponent localHashedPassword ); } - - private async setRememberEmailValues() { - const rememberEmail = this.loginService.getRememberEmail(); - const rememberedEmail = this.loginService.getEmail(); - await this.stateService.setRememberEmail(rememberEmail); - await this.stateService.setRememberedEmail(rememberEmail ? rememberedEmail : null); - this.loginService.clearValues(); - } } diff --git a/apps/web/src/app/accounts/login/login.component.html b/apps/web/src/app/accounts/login/login.component.html index 8202af0dfd8..b9529295671 100644 --- a/apps/web/src/app/accounts/login/login.component.html +++ b/apps/web/src/app/accounts/login/login.component.html @@ -120,7 +120,7 @@
{ await super.addAccount(account); } - async getRememberEmail(options?: StorageOptions) { - return ( - await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())) - )?.rememberEmail; - } - - async setRememberEmail(value: boolean, options?: StorageOptions): Promise { - const globals = await this.getGlobals( - this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()) - ); - globals.rememberEmail = value; - await this.saveGlobals( - globals, - this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()) - ); - } - async getEncryptedCiphers(options?: StorageOptions): Promise<{ [id: string]: CipherData }> { options = this.reconcileOptions(options, await this.defaultInMemoryOptions()); return await super.getEncryptedCiphers(options); diff --git a/libs/angular/src/components/login.component.ts b/libs/angular/src/components/login.component.ts index 0b35b827afc..0f9f15a0568 100644 --- a/libs/angular/src/components/login.component.ts +++ b/libs/angular/src/components/login.component.ts @@ -46,8 +46,6 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit protected twoFactorRoute = "2fa"; protected successRoute = "vault"; protected forcePasswordResetRoute = "update-temp-password"; - protected alwaysRememberEmail = false; - protected skipRememberEmail = false; get loggedEmail() { return this.formGroup.value.email; @@ -85,6 +83,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit const queryParamsEmail = params["email"]; if (queryParamsEmail != null && queryParamsEmail.indexOf("@") > -1) { this.formGroup.get("email").setValue(queryParamsEmail); + this.loginService.setEmail(queryParamsEmail); this.paramEmailSet = true; } } @@ -98,17 +97,11 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit if (!this.paramEmailSet) { this.formGroup.get("email")?.setValue(email ?? ""); } - if (!this.alwaysRememberEmail) { - let rememberEmail = this.loginService.getRememberEmail(); - if (rememberEmail == null) { - rememberEmail = (await this.stateService.getRememberedEmail()) != null; - } - this.formGroup.get("rememberEmail")?.setValue(rememberEmail); - } - - if (email) { - this.validateEmail(); + let rememberEmail = this.loginService.getRememberEmail(); + if (rememberEmail == null) { + rememberEmail = (await this.stateService.getRememberedEmail()) != null; } + this.formGroup.get("rememberEmail")?.setValue(rememberEmail); } async submit(showToast = true) { @@ -140,11 +133,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit this.formPromise = this.authService.logIn(credentials); const response = await this.formPromise; this.setFormValues(); - if (data.rememberEmail || this.alwaysRememberEmail) { - await this.stateService.setRememberedEmail(data.email); - } else { - await this.stateService.setRememberedEmail(null); - } + await this.loginService.saveEmailSettings(); if (this.handleCaptchaRequired(response)) { return; } else if (response.requiresTwoFactor) { @@ -162,7 +151,6 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit } else { const disableFavicon = await this.stateService.getDisableFavicon(); await this.stateService.setDisableFavicon(!!disableFavicon); - this.loginService.clearValues(); if (this.onSuccessfulLogin != null) { this.onSuccessfulLogin(); } @@ -189,6 +177,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit } async launchSsoBrowser(clientId: string, ssoRedirectUri: string) { + await this.saveEmailSettings(); // Generate necessary sso params const passwordOptions: any = { type: "password", @@ -243,6 +232,11 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit this.loginService.setRememberEmail(this.formGroup.value.rememberEmail); } + async saveEmailSettings() { + this.setFormValues(); + await this.loginService.saveEmailSettings(); + } + private getErrorToastMessage() { const error: AllValidationErrors = this.formValidationErrorService .getFormValidationErrors(this.formGroup.controls) diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index 736190e8193..6c01fc9b337 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -598,6 +598,7 @@ import { AbstractThemingService } from "./theming/theming.service.abstraction"; { provide: LoginServiceAbstraction, useClass: LoginService, + deps: [StateServiceAbstraction], }, ], }) diff --git a/libs/common/src/abstractions/login.service.ts b/libs/common/src/abstractions/login.service.ts index 0823611546c..9a884fd5d1c 100644 --- a/libs/common/src/abstractions/login.service.ts +++ b/libs/common/src/abstractions/login.service.ts @@ -4,4 +4,5 @@ export abstract class LoginService { setEmail: (value: string) => void; setRememberEmail: (value: boolean) => void; clearValues: () => void; + saveEmailSettings: () => Promise; } diff --git a/libs/common/src/services/login.service.ts b/libs/common/src/services/login.service.ts index 8a06f6b7a0d..e40121aa558 100644 --- a/libs/common/src/services/login.service.ts +++ b/libs/common/src/services/login.service.ts @@ -1,9 +1,12 @@ import { LoginService as LoginServiceAbstraction } from "../abstractions/login.service"; +import { StateService } from "../abstractions/state.service"; export class LoginService implements LoginServiceAbstraction { private _email: string; private _rememberEmail: boolean; + constructor(private stateService: StateService) {} + getEmail() { return this._email; } @@ -24,4 +27,9 @@ export class LoginService implements LoginServiceAbstraction { this._email = null; this._rememberEmail = null; } + + async saveEmailSettings() { + await this.stateService.setRememberedEmail(this._rememberEmail ? this._email : null); + this.clearValues(); + } } From 91ff4fc00daeb7180bb566302802c662d6b8ff2a Mon Sep 17 00:00:00 2001 From: Hunter Bertoson Date: Fri, 16 Dec 2022 10:02:13 -0600 Subject: [PATCH 15/20] [PS-1830] Updated the autofill.js file to no longer add the 'data.com' attribute to tags (#4001) * Updated the autofill.js file to no longer add the 'data.com' attribute to tags * Added Comments and removed empty lines --- apps/browser/src/content/autofill.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/apps/browser/src/content/autofill.js b/apps/browser/src/content/autofill.js index ee4dfab1b0d..f56a1f843e2 100644 --- a/apps/browser/src/content/autofill.js +++ b/apps/browser/src/content/autofill.js @@ -42,6 +42,7 @@ 9. Add new handler, for new command that responds with page details in response callback 10. Handle sandbox iframe and sandbox rule in CSP 11. Work on array of saved urls instead of just one to determine if we should autofill non-https sites + 12. Remove setting of attribute com.browser.browser.userEdited on user-inputs */ function collect(document, undefined) { @@ -50,11 +51,6 @@ // END MODIFICATION document.elementsByOPID = {}; - document.addEventListener('input', function (inputevent) { - inputevent.a !== false && - inputevent.target.tagName.toLowerCase() === 'input' && - (inputevent.target.dataset['com.bitwarden.browser.userEdited'] = 'yes'); - }, true); function getPageDetails(theDoc, oneShotId) { // start helpers @@ -279,8 +275,6 @@ addProp(field, 'title', getElementAttrValue(el, 'title')); // START MODIFICATION - addProp(field, 'userEdited', !!el.dataset['com.browser.browser.userEdited']); - var elTagName = el.tagName.toLowerCase(); addProp(field, 'tagName', elTagName); From 9bbe13fa71882f8a209cc227aa39848ed88d7b69 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Dec 2022 18:27:28 +0100 Subject: [PATCH 16/20] Autosync the updated translations (#4250) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/web/src/locales/af/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/ar/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/az/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/be/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/bg/messages.json | 253 +++++++++++++++++- apps/web/src/locales/bn/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/bs/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/ca/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/cs/messages.json | 299 +++++++++++++++++++-- apps/web/src/locales/da/messages.json | 271 ++++++++++++++++++- apps/web/src/locales/de/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/el/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/en_GB/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/en_IN/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/eo/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/es/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/et/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/eu/messages.json | 257 +++++++++++++++++- apps/web/src/locales/fi/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/fil/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/fr/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/he/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/hi/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/hr/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/hu/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/id/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/it/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/ja/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/ka/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/km/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/kn/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/ko/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/lv/messages.json | 271 ++++++++++++++++++- apps/web/src/locales/ml/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/nb/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/nl/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/nn/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/pl/messages.json | 311 +++++++++++++++++++--- apps/web/src/locales/pt_BR/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/pt_PT/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/ro/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/ru/messages.json | 255 +++++++++++++++++- apps/web/src/locales/si/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/sk/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/sl/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/sr/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/sr_CS/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/sv/messages.json | 279 ++++++++++++++++++-- apps/web/src/locales/th/messages.json | 317 ++++++++++++++++++++--- apps/web/src/locales/tr/messages.json | 257 +++++++++++++++++- apps/web/src/locales/uk/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/vi/messages.json | 249 ++++++++++++++++++ apps/web/src/locales/zh_CN/messages.json | 255 +++++++++++++++++- apps/web/src/locales/zh_TW/messages.json | 249 ++++++++++++++++++ 54 files changed, 13589 insertions(+), 143 deletions(-) diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json index a5397c7133b..84c2b9c5858 100644 --- a/apps/web/src/locales/af/messages.json +++ b/apps/web/src/locales/af/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/ar/messages.json b/apps/web/src/locales/ar/messages.json index 116505c8573..e9e1e32273e 100644 --- a/apps/web/src/locales/ar/messages.json +++ b/apps/web/src/locales/ar/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json index 016f0053154..ede42b4486c 100644 --- a/apps/web/src/locales/az/messages.json +++ b/apps/web/src/locales/az/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Hamısını təmizlə" }, + "projects": { + "message": "Layihələr" + }, + "lastEdited": { + "message": "Son düzəliş" + }, + "editSecret": { + "message": "\"Sirr\"ə düzəliş et" + }, + "addSecret": { + "message": "Sirr əlavə et" + }, + "copySecretName": { + "message": "Sirr adını kopyala" + }, + "copySecretValue": { + "message": "Sirr dəyərini kopyala" + }, + "deleteSecret": { + "message": "Sirri sil" + }, + "deleteSecrets": { + "message": "\"Sirr\"ləri sil" + }, + "project": { + "message": "Layihə" + }, + "editProject": { + "message": "Layihəyə düzəliş et" + }, + "viewProject": { + "message": "Layihəyə bax" + }, + "deleteProject": { + "message": "Layihəni sil" + }, + "deleteProjects": { + "message": "Layihələri sil" + }, + "secret": { + "message": "Sirr" + }, + "serviceAccount": { + "message": "Servis hesabı" + }, + "serviceAccounts": { + "message": "Servis hesabları" + }, + "new": { + "message": "Yeni" + }, + "secrets": { + "message": "\"Sirr\"lər" + }, + "nameValuePair": { + "message": "Ad/Dəyər cütü" + }, + "secretEdited": { + "message": "\"Sirr\"ə düzəliş edildi" + }, + "secretCreated": { + "message": "Sirr yaradıldı" + }, + "newSecret": { + "message": "Yeni Sirr" + }, + "newServiceAccount": { + "message": "Yeni Servis hesabı" + }, + "secretsNoItemsTitle": { + "message": "Göstəriləcək sirr yoxdur" + }, + "secretsNoItemsMessage": { + "message": "Başlamaq üçün yeni bir sirr əlavə edin və ya daxilə köçürün." + }, + "serviceAccountsNoItemsTitle": { + "message": "Göstəriləcək heç nə yoxdur" + }, + "serviceAccountsNoItemsMessage": { + "message": "\"Sirr\" müraciətini avtomatlaşdırmağa başlamaq üçün yeni bir Servis hesabı yaradın." + }, + "searchSecrets": { + "message": "\"Sirr\"ləri axtar" + }, + "deleteServiceAccounts": { + "message": "Servis hesablarını sil" + }, + "deleteServiceAccount": { + "message": "Servis hesabını sil" + }, + "viewServiceAccount": { + "message": "Servis hesabına bax" + }, + "searchServiceAccounts": { + "message": "Servis hesablarına bax" + }, + "addProject": { + "message": "Layihə əlavə et" + }, + "projectEdited": { + "message": "Layihəyə düzəliş edildi" + }, + "projectSaved": { + "message": "Layihə saxlanıldı" + }, + "projectCreated": { + "message": "Layihə yaradıldı" + }, + "projectName": { + "message": "Layihə adı" + }, + "newProject": { + "message": "Yeni layihə" + }, + "softDeleteSecretWarning": { + "message": "\"Sirr\"ləri silmək, mövcud inteqrasiyalara təsir edə bilər." + }, + "softDeletesSuccessToast": { + "message": "\"Sirr\"lər tullantı qutusuna göndərildi" + }, + "serviceAccountCreated": { + "message": "Servis hesabı yaradıldı" + }, + "smAccess": { + "message": "Müraciət" + }, + "projectCommaSecret": { + "message": "Layihə, Sirr" + }, + "serviceAccountName": { + "message": "Servis hesab adı" + }, + "newSaSelectAccess": { + "message": "Layihələri və ya \"Sirr\"ləri yazın və ya seçin" + }, + "newSaTypeToFilter": { + "message": "Filtrləmək üçün yazın" + }, + "deleteProjectsToast": { + "message": "Layihələr silindi" + }, + "deleteProjectToast": { + "message": "Layihə və əlaqələndirilmiş bütün \"sirr\"ləri silindi" + }, + "deleteProjectDialogMessage": { + "message": "$PROJECT$ layihəsinin silinməsi daimi və geri qaytarıla bilməyən prosesdir.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Davam etmək üçün \"$CONFIRM$\" yazın", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "$PROJECT$ sil", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "$COUNT$ layihəni sil", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Layihələrin silinməsi daimi və geri qaytarıla bilməyən prosesdir." + }, + "projectsNoItemsTitle": { + "message": "Görüntülənəcək heç bir layihə yoxdur" + }, + "projectsNoItemsMessage": { + "message": "\"Sirr\"ləri təşkil etməyə başlamaq üçün yeni bir layihə əlavə edin." + }, + "smConfirmationRequired": { + "message": "Təsdiq tələb olunur" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Aşağıdakı layihələr silinə bilmədi:" + }, + "softDeleteSuccessToast": { + "message": "Sirr tullantı qutusuna göndərildi" + }, + "searchProjects": { + "message": "Layihə axtar" + }, + "accessTokens": { + "message": "Müraciət tokenləri" + }, + "createAccessToken": { + "message": "Müraciət tokeni yarat" + }, + "expires": { + "message": "Müddəti bitir" + }, + "canRead": { + "message": "Oxuna bilər" + }, + "accessTokensNoItemsTitle": { + "message": "Göstəriləcək heç bir müraciət tokeni yoxdur" + }, + "accessTokensNoItemsDesc": { + "message": "Başlamaq üçün bir müraciət tokeni yarat" + }, + "downloadAccessToken": { + "message": "Bağlamazdan əvvəl endir və ya kopyala." + }, + "expiresOnAccessToken": { + "message": "Bitmə vaxtı:" + }, + "accessTokenCallOutTitle": { + "message": "Müraciət tokenləri saxlanılmadı və alına bilmir" + }, + "copyToken": { + "message": "Tokeni kopyala" + }, + "accessToken": { + "message": "Müraciət tokeni" + }, + "accessTokenExpirationRequired": { + "message": "Bitmə vaxtı tələb olunur" + }, + "accessTokenCreatedAndCopied": { + "message": "Müraciət tokeni yaradıldı və lövhəyə kopyalandı" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Beta üçün icazələrin idarə edilməsi əlçatmazdır." + }, + "revokeAccessToken": { + "message": "Müraciət tokenini ləğv et" + }, + "submenu": { + "message": "Alt menyu" + }, "from": { "message": "Kimdən" }, diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json index 8071c8840f4..cf5700b3fce 100644 --- a/apps/web/src/locales/be/messages.json +++ b/apps/web/src/locales/be/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Ачысціць усё" }, + "projects": { + "message": "Праекты" + }, + "lastEdited": { + "message": "Апошні рэдагаваны" + }, + "editSecret": { + "message": "Рэдагаваць сакрэт" + }, + "addSecret": { + "message": "Дадаць сакрэт" + }, + "copySecretName": { + "message": "Капіяваць назву сакрэта" + }, + "copySecretValue": { + "message": "Капіяваць значэнне сакрэту" + }, + "deleteSecret": { + "message": "Выдаліць сакрэт" + }, + "deleteSecrets": { + "message": "Выдаліць сакрэты" + }, + "project": { + "message": "Праект" + }, + "editProject": { + "message": "Рэдагаваць праект" + }, + "viewProject": { + "message": "Прагледзець праект" + }, + "deleteProject": { + "message": "Выдаліць праект" + }, + "deleteProjects": { + "message": "Выдаліць праекты" + }, + "secret": { + "message": "Сакрэт" + }, + "serviceAccount": { + "message": "Сэрвісны ўліковы запіс" + }, + "serviceAccounts": { + "message": "Сэрвісныя ўліковыя запісы" + }, + "new": { + "message": "Новы" + }, + "secrets": { + "message": "Сакрэты" + }, + "nameValuePair": { + "message": "Парная назва/значэнне" + }, + "secretEdited": { + "message": "Сакрэт адрэдагаваны" + }, + "secretCreated": { + "message": "Сакрэт створаны" + }, + "newSecret": { + "message": "Новы сакрэт" + }, + "newServiceAccount": { + "message": "Новы сэрвісны ўліковы запіс" + }, + "secretsNoItemsTitle": { + "message": "Няма сакрэтаў для паказу" + }, + "secretsNoItemsMessage": { + "message": "Каб пачаць, дадайце новы сакрэт або імпартуйце сакрэты." + }, + "serviceAccountsNoItemsTitle": { + "message": "Адсутнічаюць элементы для паказу" + }, + "serviceAccountsNoItemsMessage": { + "message": "Стварыць новы сэрвісны ўліковы запіс, каб пачаць аўтаматызацыю доступу да сакрэту." + }, + "searchSecrets": { + "message": "Пошук сакрэтаў" + }, + "deleteServiceAccounts": { + "message": "Выдаліць сэрвісныя ўліковыя запісы" + }, + "deleteServiceAccount": { + "message": "Выдаліць сэрвісны ўліковы запіс" + }, + "viewServiceAccount": { + "message": "Паглядзець сэрвісны ўліковы запіс" + }, + "searchServiceAccounts": { + "message": "Пошук сэрвісных уліковых запісаў" + }, + "addProject": { + "message": "Дадаць праект" + }, + "projectEdited": { + "message": "Праект адрэдагаваны" + }, + "projectSaved": { + "message": "Праект захаваны" + }, + "projectCreated": { + "message": "Праект створаны" + }, + "projectName": { + "message": "Назва праекта" + }, + "newProject": { + "message": "Новы праект" + }, + "softDeleteSecretWarning": { + "message": "Выдаленне сакрэтаў можа паўплываць на існуючыя інтэграцыі." + }, + "softDeletesSuccessToast": { + "message": "Сакрэты адпраўлены ў сметніцу" + }, + "serviceAccountCreated": { + "message": "Сэрвісныя ўліковыя запісы створаны" + }, + "smAccess": { + "message": "Доступ" + }, + "projectCommaSecret": { + "message": "Праект, сакрэт" + }, + "serviceAccountName": { + "message": "Назва сэрвіснага ўліковага запісу" + }, + "newSaSelectAccess": { + "message": "Увядзіце або выберыце праекты (сакрэты)" + }, + "newSaTypeToFilter": { + "message": "Увядзіце, каб адфільтраваць" + }, + "deleteProjectsToast": { + "message": "Праекты выдалены" + }, + "deleteProjectToast": { + "message": "Праект і ўсе звязаныя сакрэты былі выдалены" + }, + "deleteProjectDialogMessage": { + "message": "Выдаленне праекта $PROJECT$ з'яўляецца незваротным дзеяннем і яго нельга будзе адрабіць.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Увядзіце \"$CONFIRM$\", каб працягнуць", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Выдаліць $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Выдаліць $COUNT$ праекты(-аў)", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Выдаленне праектаў з'яўляецца незваротным дзеяннем і яго нельга будзе адрабіць." + }, + "projectsNoItemsTitle": { + "message": "Няма праектаў для адлюстравання" + }, + "projectsNoItemsMessage": { + "message": "Дадаць новы праект, каб пачаць арганізоўваць сакрэты." + }, + "smConfirmationRequired": { + "message": "Патрабуецца пацверджанне" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Немагчыма выдаліць наступныя праекты:" + }, + "softDeleteSuccessToast": { + "message": "Сакрэт адпраўлены ў сметніцу" + }, + "searchProjects": { + "message": "Шукаць праекты" + }, + "accessTokens": { + "message": "Токены доступу" + }, + "createAccessToken": { + "message": "Стварыць токены доступу" + }, + "expires": { + "message": "Заканчваецца" + }, + "canRead": { + "message": "Можна прачытаць" + }, + "accessTokensNoItemsTitle": { + "message": "Няма токенаў доступу для паказу" + }, + "accessTokensNoItemsDesc": { + "message": "Каб пачаць, стварыце токен доступу" + }, + "downloadAccessToken": { + "message": "Спампуйце або скапіюйце перад закрыццём." + }, + "expiresOnAccessToken": { + "message": "Заканчваецца:" + }, + "accessTokenCallOutTitle": { + "message": "Токены доступу не захоўваюцца і не могуць быць атрыманы" + }, + "copyToken": { + "message": "Капіяваць токен" + }, + "accessToken": { + "message": "Доступ да токена" + }, + "accessTokenExpirationRequired": { + "message": "Патрабуецца дата заканчэння" + }, + "accessTokenCreatedAndCopied": { + "message": "Доступ да токена створаны і скапіяваны ў буфер абмену" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Кіраванне дазволамі недаступна для бэта-версіі." + }, + "revokeAccessToken": { + "message": "Адклікаць токен доступу" + }, + "submenu": { + "message": "Падменю" + }, "from": { "message": "Ад" }, diff --git a/apps/web/src/locales/bg/messages.json b/apps/web/src/locales/bg/messages.json index 91e378d7e0a..6ef755a6a07 100644 --- a/apps/web/src/locales/bg/messages.json +++ b/apps/web/src/locales/bg/messages.json @@ -5487,11 +5487,260 @@ "multiSelectClearAll": { "message": "Изчистване на всичко" }, + "projects": { + "message": "Проекти" + }, + "lastEdited": { + "message": "Последна редакция" + }, + "editSecret": { + "message": "Редактиране на тайната" + }, + "addSecret": { + "message": "Добавяне на тайна" + }, + "copySecretName": { + "message": "Копиране на името на тайната" + }, + "copySecretValue": { + "message": "Копиране на стойността на тайната" + }, + "deleteSecret": { + "message": "Изтриване на тайната" + }, + "deleteSecrets": { + "message": "Изтриване на тайните" + }, + "project": { + "message": "Проект" + }, + "editProject": { + "message": "Редактиране на проекта" + }, + "viewProject": { + "message": "Преглед на проекта" + }, + "deleteProject": { + "message": "Изтриване на проекта" + }, + "deleteProjects": { + "message": "Изтриване на проектите" + }, + "secret": { + "message": "Тайна" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "Ново" + }, + "secrets": { + "message": "Тайни" + }, + "nameValuePair": { + "message": "Двойка име/стойност" + }, + "secretEdited": { + "message": "Тайната е редактирана" + }, + "secretCreated": { + "message": "Тайната е създадена" + }, + "newSecret": { + "message": "Нова тайна" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "Няма тайни за показване" + }, + "secretsNoItemsMessage": { + "message": "За да започнете, добавете нова тайна или внесете тайни." + }, + "serviceAccountsNoItemsTitle": { + "message": "Все още няма нищо за показване" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Търсене в тайните" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Добавяне на проект" + }, + "projectEdited": { + "message": "Проектът е редактиран" + }, + "projectSaved": { + "message": "Проектът е запазен" + }, + "projectCreated": { + "message": "Проектът е създаден" + }, + "projectName": { + "message": "Име на проекта" + }, + "newProject": { + "message": "Нов проект" + }, + "softDeleteSecretWarning": { + "message": "Изтриването на тайни може да засегне съществуващите интеграции." + }, + "softDeletesSuccessToast": { + "message": "Тайните са преместени в кошчето" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Достъп" + }, + "projectCommaSecret": { + "message": "Проект, тайна" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Пишете тук или изберете проекти или тайни" + }, + "newSaTypeToFilter": { + "message": "Пишете тук за филтриране" + }, + "deleteProjectsToast": { + "message": "Проектите са изтрити" + }, + "deleteProjectToast": { + "message": "Проектът и всички свързани с него тайни са изтрити" + }, + "deleteProjectDialogMessage": { + "message": "Изтриването на проекта $PROJECT$ е окончателно и необратимо.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Напишете „$CONFIRM$“, за да продължите", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Изтриване на $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Изтриване на $COUNT$ проекта", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Изтриването на проекти е окончателно и необратимо." + }, + "projectsNoItemsTitle": { + "message": "Няма проекти за показване" + }, + "projectsNoItemsMessage": { + "message": "Добавете нов проект, за да започнете да организирате тайните си." + }, + "smConfirmationRequired": { + "message": "Изисква се потвърждение" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Следните проекти не могат да бъдат изтрити:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Създаване на идентификатор за достъп" + }, + "expires": { + "message": "Изтича" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "Няма идентификатори за достъп за показване" + }, + "accessTokensNoItemsDesc": { + "message": "За да започнете, създайте идентификатор за достъп" + }, + "downloadAccessToken": { + "message": "Свалете или копирайте преди затваряне." + }, + "expiresOnAccessToken": { + "message": "Изтича на:" + }, + "accessTokenCallOutTitle": { + "message": "Идентификаторите за достъп не се съхраняват никъде и не могат да бъдат видени повторно" + }, + "copyToken": { + "message": "Копиране на идентификатора" + }, + "accessToken": { + "message": "Идентификатор за достъп" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Идентификаторът за достъп е създаден и копиран в буфера" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Управлението на разрешенията не е възможно в бета-версията." + }, + "revokeAccessToken": { + "message": "Анулиране на идентификатора за достъп" + }, + "submenu": { + "message": "Подменю" + }, "from": { - "message": "From" + "message": "От" }, "to": { - "message": "To" + "message": "До" }, "member": { "message": "Член" diff --git a/apps/web/src/locales/bn/messages.json b/apps/web/src/locales/bn/messages.json index a2fbddd5164..513d1773ee3 100644 --- a/apps/web/src/locales/bn/messages.json +++ b/apps/web/src/locales/bn/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/bs/messages.json b/apps/web/src/locales/bs/messages.json index 1aa90576c34..f0f4d514dec 100644 --- a/apps/web/src/locales/bs/messages.json +++ b/apps/web/src/locales/bs/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/ca/messages.json b/apps/web/src/locales/ca/messages.json index d83bfd07c3f..19747832892 100644 --- a/apps/web/src/locales/ca/messages.json +++ b/apps/web/src/locales/ca/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Esborra-ho tot" }, + "projects": { + "message": "Projectes" + }, + "lastEdited": { + "message": "Última edició" + }, + "editSecret": { + "message": "Edita secret" + }, + "addSecret": { + "message": "Afig secret" + }, + "copySecretName": { + "message": "Copia el nom secret" + }, + "copySecretValue": { + "message": "Copia el valor secret" + }, + "deleteSecret": { + "message": "Suprimeix secret" + }, + "deleteSecrets": { + "message": "Suprimeix secrets" + }, + "project": { + "message": "Projecte" + }, + "editProject": { + "message": "Edita el projecte" + }, + "viewProject": { + "message": "Veure el projecte" + }, + "deleteProject": { + "message": "Suprimeix el projecte" + }, + "deleteProjects": { + "message": "Suprimeix els projectes" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Compte del servei" + }, + "serviceAccounts": { + "message": "Comptes del servei" + }, + "new": { + "message": "Nou" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Nom/Parell de valors" + }, + "secretEdited": { + "message": "S'ha editat el secret" + }, + "secretCreated": { + "message": "S'ha creat el secret" + }, + "newSecret": { + "message": "Secret nou" + }, + "newServiceAccount": { + "message": "Compte nou del servei" + }, + "secretsNoItemsTitle": { + "message": "Cap secret per mostrar" + }, + "secretsNoItemsMessage": { + "message": "Per començar, afig un secret nou o importa secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Encara no hi ha res a mostrar" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "De" }, diff --git a/apps/web/src/locales/cs/messages.json b/apps/web/src/locales/cs/messages.json index 73aed1345ff..c612d600e11 100644 --- a/apps/web/src/locales/cs/messages.json +++ b/apps/web/src/locales/cs/messages.json @@ -570,19 +570,19 @@ "message": "Pro přístup do vašeho bezpečného trezoru se přihlaste nebo si vytvořte nový účet." }, "loginWithDevice": { - "message": "Log in with device" + "message": "Přihlásit se pomocí zařízení" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" + "message": "Přihlášení pomocí zařízení musí být nastaveno v nastavení mobilní aplikace Bitwarden. Potřebujete jinou volbu?" }, "loginWithMasterPassword": { - "message": "Log in with master password" + "message": "Přihlásit se pomocí hlavního hesla" }, "createAccount": { "message": "Vytvořit účet" }, "newAroundHere": { - "message": "New around here?" + "message": "Jste tu noví?" }, "startTrial": { "message": "Zahájit zkušební verzi" @@ -591,7 +591,7 @@ "message": "Přihlásit se" }, "logInInitiated": { - "message": "Log in initiated" + "message": "Přihlášení zahájeno" }, "submit": { "message": "Potvrdit" @@ -651,7 +651,7 @@ "message": "Druhé zadání hlavního hesla je povinné." }, "masterPasswordMinlength": { - "message": "Master password must be at least 8 characters long." + "message": "Hlavní heslo musí obsahovat alespoň 8 znaků." }, "masterPassDoesntMatch": { "message": "Potvrzení hlavního hesla se neshoduje." @@ -660,7 +660,7 @@ "message": "Váš účet byl vytvořen! Můžete se přihlásit." }, "trialAccountCreated": { - "message": "Account created successfully." + "message": "Účet byl úspěšně vytvořen." }, "masterPassSent": { "message": "Poslali jsme vám e-mail s nápovědou k hlavnímu heslu." @@ -694,7 +694,7 @@ "message": "Chybné hlavní heslo" }, "invalidFilePassword": { - "message": "Invalid file password, please use the password you entered when you created the export file." + "message": "Neplatné heslo souboru, použijte heslo zadané při vytvoření souboru exportu." }, "lockNow": { "message": "Zamknout nyní" @@ -721,7 +721,7 @@ "message": "Nepatříte do žádné organizace. Organizace umožňují bezpečné sdílení položek s ostatními uživateli." }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "Na vaše zařízení bylo odesláno oznámení." }, "versionNumber": { "message": "Verze $VERSION_NUMBER$", @@ -912,28 +912,28 @@ "message": "Formát souboru" }, "fileEncryptedExportWarningDesc": { - "message": "This file export will be password protected and require the file password to decrypt." + "message": "Tento soubor exportu bude chráněn heslem a k dešifrování bude vyžadovat heslo souboru." }, "exportPasswordDescription": { - "message": "This password will be used to export and import this file" + "message": "Toto heslo bude použito pro export a import tohoto souboru" }, "confirmMasterPassword": { - "message": "Confirm master password" + "message": "Potvrzení hlavního hesla" }, "confirmFormat": { - "message": "Confirm format" + "message": "Potvrdit formát" }, "filePassword": { - "message": "File password" + "message": "Heslo souboru" }, "confirmFilePassword": { - "message": "Confirm file password" + "message": "Potvrzení hesla souboru" }, "accountBackupOptionDescription": { - "message": "Use your account encryption key to encrypt the export and restrict import to only the current Bitwarden account." + "message": "Použijte šifrovací klíč vašeho účtu pro šifrování exportu a omezte import pouze na aktuální účet Bitwarden." }, "passwordProtectedOptionDescription": { - "message": "Set a password to encrypt the export and import it to any Bitwarden account using the password for decryption." + "message": "Nastavte heslo pro šifrování exportu a importujte ho do libovolného účtu Bitwarden pomocí hesla pro dešifrování." }, "fileTypeHeading": { "message": "Typ souboru" @@ -942,16 +942,16 @@ "message": "Zálohování účtu" }, "passwordProtected": { - "message": "Password protected" + "message": "Chráněno heslem" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“File password” and “Confirm file password“ do not match." + "message": "„Heslo souboru“ a „Potvrzení hesla souboru“ se neshodují." }, "confirmVaultImport": { - "message": "Confirm vault import" + "message": "Potvrdit import trezoru" }, "confirmVaultImportDesc": { - "message": "This file is password-protected. Please enter the file password to import data." + "message": "Tento soubor je chráněn heslem. Zadejte prosím heslo souboru k importu dat." }, "exportSuccess": { "message": "Data trezoru byla exportována" @@ -1196,7 +1196,7 @@ "message": "Vyberte soubor pro import" }, "chooseFile": { - "message": "Choose File" + "message": "Zvolit soubor" }, "noFileChosen": { "message": "Není vybrán žádný soubor" @@ -1221,10 +1221,10 @@ "message": "Nastavení" }, "preferencesDesc": { - "message": "Customize your web vault experience." + "message": "Přizpůsobte si svůj webový trezor." }, "preferencesUpdated": { - "message": "Preferences saved" + "message": "Předvolby byly uloženy" }, "language": { "message": "Jazyk" @@ -1291,7 +1291,7 @@ "message": "Dvoufázové přihlášení" }, "twoStepLoginEnforcement": { - "message": "Two-step Login Enforcement" + "message": "Vynucení dvoufázového přihlášení" }, "twoStepLoginDesc": { "message": "Zabezpečte svůj účet vyžadováním dodatečného kroku při přihlašování." @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json index cc1fa59ddbd..ca674d89581 100644 --- a/apps/web/src/locales/da/messages.json +++ b/apps/web/src/locales/da/messages.json @@ -2915,7 +2915,7 @@ "message": "Bekræft bruger" }, "hasBeenConfirmed": { - "message": "$USER$ er blevet bekræftet.", + "message": "$USER$ bekræftet.", "placeholders": { "user": { "content": "$1", @@ -2936,7 +2936,7 @@ "message": "Slutdato" }, "verifyEmail": { - "message": "Bekræft email" + "message": "Bekræft e-mail" }, "verifyEmailDesc": { "message": "Bekræft din e-mailadresse for at låse op for adgangen til alle funktioner." @@ -2948,7 +2948,7 @@ "message": "Tjek din e-mail indbakke for et bekræftelseslink." }, "emailVerified": { - "message": "Din email er blevet bekræftet." + "message": "Kontoe-mail bekræftet" }, "emailVerifiedFailed": { "message": "Kan ikke bekræfte din e-mail. Prøv at sende en ny verifikations-email." @@ -3137,7 +3137,7 @@ "message": "Indtast dit installations-id" }, "limitSubscriptionDesc": { - "message": "Indstil en pladsgrænse for dit abonnement. Når denne grænse er nået, vil du ikke kunne invitere nye brugere." + "message": "Opsæt pladskvote for abonnementet. Når kvoten er opbrugt, vil du ikke kunne invitere nye brugere." }, "maxSeatLimit": { "message": "Pladskvote (valgfrit)", @@ -3182,10 +3182,10 @@ "message": "For yderligere hjælp til håndtering af dit abonnement, kontakt venligst kundesupport." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Justeringer af dit abonnement vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Hvis nyligt inviterede brugere overstiger dine abonnementspladser, vil du straks modtage en forholdsmæssig opkrævning for de ekstra brugere." + "message": "Abonnementsjusteringer vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Overstiger antal nyligt inviterede brugere abonnementskvoten, modtager du straks en forholdsmæssig opkrævning for de ekstra brugere." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Justeringer af dit abonnement vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Hvis nyligt inviterede brugere overskrider dine abonnementspladser, vil du straks modtage en forholdsmæssig opkrævning for de ekstra brugere, indtil din pladsgrænse på $MAX$ er nået.", + "message": "Abonnementsjusteringer vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Overstiger antal nyligt inviterede brugere abonnementskvoten, modtager du straks en forholdsmæssig opkrævning for de ekstra brugere, indtil pladskvoten på $MAX$ er nået.", "placeholders": { "max": { "content": "$1", @@ -3194,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "Du kan ikke invitere mere end $COUNT$ brugere uden at opgradere dit abonnement.", + "message": "Der kan ikke inviteres flere end $COUNT$ brugere uden en abonnementsopgradering.", "placeholders": { "count": { "content": "$1", @@ -3203,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "Du kan ikke invitere mere end $COUNT$ brugere uden at opgradere dit abonnement. Kontakt venligst kundesupport for at opgradere.", + "message": "Der kan ikke inviteres flere end $COUNT$ brugere uden en abonnementsopgradering. Kontakt Kundesupport vedr. opgradering.", "placeholders": { "count": { "content": "$1", @@ -3212,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Dit abonnement muliggør i alt $COUNT$ brugere. Abonnement er sponsoreret og faktureres til en ekstern organisation.", + "message": "Dit abonnement muliggør i alt $COUNT$ brugere. Abonnement er sponseret og faktureres til en ekstern organisation.", "placeholders": { "count": { "content": "$1", @@ -3221,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Justeringer af dit abonnement vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Du kan ikke invitere flere end $COUNT$ brugere uden at øge dine abonnementspladser.", + "message": "Abonnementsjusteringer vil resultere i forholdsmæssige ændringer af dine faktureringstotaler. Der kan ikke inviteres flere end $COUNT$ brugere uden at øge antallet af abonnementspladser.", "placeholders": { "count": { "content": "$1", @@ -4117,7 +4117,7 @@ "message": "Tilpasset" }, "customDesc": { - "message": "Tillader mere granulær kontrol af brugertilladelser for avancerede opsætninger." + "message": "Tildel tilpassede tilladelser til medlemmer" }, "customDescNonEnterpriseStart": { "message": "Tilpassede roller er en ", @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Ryd alt" }, + "projects": { + "message": "Projekter" + }, + "lastEdited": { + "message": "Senest redigeret" + }, + "editSecret": { + "message": "Redigér hemmelighed" + }, + "addSecret": { + "message": "Tilføj hemmelighed" + }, + "copySecretName": { + "message": "Kopiér hemmeligheds navn" + }, + "copySecretValue": { + "message": "Kopér hemmeligheds værdi" + }, + "deleteSecret": { + "message": "Slet hemmelighed" + }, + "deleteSecrets": { + "message": "Slet hemmeligheder" + }, + "project": { + "message": "Projekt" + }, + "editProject": { + "message": "Redigér projekt" + }, + "viewProject": { + "message": "Vis projekt" + }, + "deleteProject": { + "message": "Slet projekt" + }, + "deleteProjects": { + "message": "Slet projekter" + }, + "secret": { + "message": "Hemmelighed" + }, + "serviceAccount": { + "message": "Tjenestekonto" + }, + "serviceAccounts": { + "message": "Tjenestekonti" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Hemmelighed" + }, + "nameValuePair": { + "message": "Navn/værdipar" + }, + "secretEdited": { + "message": "Hemmelighed redigeret" + }, + "secretCreated": { + "message": "Hemmelighed oprettet" + }, + "newSecret": { + "message": "Ny hemmelighed" + }, + "newServiceAccount": { + "message": "Ny tjenestekonto" + }, + "secretsNoItemsTitle": { + "message": "Ingen hemmeligheder at vise" + }, + "secretsNoItemsMessage": { + "message": "Tilføj en ny hemmelighed eller importér hemmeligheder for at komme i gang." + }, + "serviceAccountsNoItemsTitle": { + "message": "Intet at vise endnu" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Søg i hemmeligheder" + }, + "deleteServiceAccounts": { + "message": "Slet tjenestekonti" + }, + "deleteServiceAccount": { + "message": "Slet tjenestekonto" + }, + "viewServiceAccount": { + "message": "Vis tjenestekonto" + }, + "searchServiceAccounts": { + "message": "Søg efter tjenestekonti" + }, + "addProject": { + "message": "Tilføj projekt" + }, + "projectEdited": { + "message": "Projekt redigeret" + }, + "projectSaved": { + "message": "Projekt gemt" + }, + "projectCreated": { + "message": "Projekt oprettet" + }, + "projectName": { + "message": "Projektnavn" + }, + "newProject": { + "message": "Nyt projekt" + }, + "softDeleteSecretWarning": { + "message": "Sletning af hemmeligheder kan påvirke eksisterende integrationer." + }, + "softDeletesSuccessToast": { + "message": "Hemmelighed sendt til papirkurv" + }, + "serviceAccountCreated": { + "message": "Tjenestekonto oprettet" + }, + "smAccess": { + "message": "Tilgå" + }, + "projectCommaSecret": { + "message": "Projekt, Hemmelighed" + }, + "serviceAccountName": { + "message": "Tjenestekontonavn" + }, + "newSaSelectAccess": { + "message": "Angiv/vælg projekter eller hemmeligheder" + }, + "newSaTypeToFilter": { + "message": "Angiv for at filtrere" + }, + "deleteProjectsToast": { + "message": "Projekter slettet" + }, + "deleteProjectToast": { + "message": "Projektet og alle tilknyttede hemmeligheder er slettet" + }, + "deleteProjectDialogMessage": { + "message": "Sletning af projektet $PROJECT$ er permanent og irreversibelt.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Angiv \"$CONFIRM$\" for at fortsætte", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Slet $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Slet $COUNT$ projekter", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Sletning af projekter er permanent og irreversibelt." + }, + "projectsNoItemsTitle": { + "message": "Ingen projekter at vise" + }, + "projectsNoItemsMessage": { + "message": "Tilføj et nyt projekt for at komme i gang med at organisere hemmeligheder." + }, + "smConfirmationRequired": { + "message": "Bekræftelse kræves" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Flg. projekter kunne ikke slettes:" + }, + "softDeleteSuccessToast": { + "message": "Hemmelighed sendt til papirkurv" + }, + "searchProjects": { + "message": "Søg i projekter" + }, + "accessTokens": { + "message": "Adgangstokener" + }, + "createAccessToken": { + "message": "Opret adgangstoken" + }, + "expires": { + "message": "Udløber" + }, + "canRead": { + "message": "Kan læse" + }, + "accessTokensNoItemsTitle": { + "message": "Ingen adgangstokener at vise" + }, + "accessTokensNoItemsDesc": { + "message": "Opret et adgangstoken for at komme i gang" + }, + "downloadAccessToken": { + "message": "Download eller kopiér før lukning." + }, + "expiresOnAccessToken": { + "message": "Udløber:" + }, + "accessTokenCallOutTitle": { + "message": "Adgangstokener er ikke gemt og kan ikke hentes" + }, + "copyToken": { + "message": "Kopiér token" + }, + "accessToken": { + "message": "Adgangstoken" + }, + "accessTokenExpirationRequired": { + "message": "Udløbsdato er obligatorisk" + }, + "accessTokenCreatedAndCopied": { + "message": "Adgangstoken oprettet og kopieret til udklipsholder" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Tilladelseshåndtering er utilgængelig i beta." + }, + "revokeAccessToken": { + "message": "Ophæv adgangstoken" + }, + "submenu": { + "message": "Undermenu" + }, "from": { "message": "Fra" }, diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index 49103c101e2..32732329fe1 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Alles löschen" }, + "projects": { + "message": "Projekte" + }, + "lastEdited": { + "message": "Zuletzt bearbeitet" + }, + "editSecret": { + "message": "Geheimnis bearbeiten" + }, + "addSecret": { + "message": "Geheimnis hinzufügen" + }, + "copySecretName": { + "message": "Geheimnamen kopieren" + }, + "copySecretValue": { + "message": "Geheimen Wert kopieren" + }, + "deleteSecret": { + "message": "Geheimnis löschen" + }, + "deleteSecrets": { + "message": "Geheimnisse löschen" + }, + "project": { + "message": "Projekt" + }, + "editProject": { + "message": "Projekt bearbeiten" + }, + "viewProject": { + "message": "Projekt anzeigen" + }, + "deleteProject": { + "message": "Projekt löschen" + }, + "deleteProjects": { + "message": "Projekte löschen" + }, + "secret": { + "message": "Geheimnis" + }, + "serviceAccount": { + "message": "Dienstkonto" + }, + "serviceAccounts": { + "message": "Dienstkonten" + }, + "new": { + "message": "Neu" + }, + "secrets": { + "message": "Geheimnisse" + }, + "nameValuePair": { + "message": "Name/Wert-Paar" + }, + "secretEdited": { + "message": "Geheimnis bearbeitet" + }, + "secretCreated": { + "message": "Geheimnis erstellt" + }, + "newSecret": { + "message": "Neues Geheimnis" + }, + "newServiceAccount": { + "message": "Neues Dienstkonto" + }, + "secretsNoItemsTitle": { + "message": "Keine Geheimnisse zum Anzeigen" + }, + "secretsNoItemsMessage": { + "message": "Um loszulegen, füge ein neues Geheimnis hinzu oder importiere Geheimnisse." + }, + "serviceAccountsNoItemsTitle": { + "message": "Hier gibt es noch nichts" + }, + "serviceAccountsNoItemsMessage": { + "message": "Erstelle ein neues Dienstkonto, um mit der Automation für Zugriffe auf Geheimnisse zu beginnen." + }, + "searchSecrets": { + "message": "Geheimnisse durchsuchen" + }, + "deleteServiceAccounts": { + "message": "Dienstkonten löschen" + }, + "deleteServiceAccount": { + "message": "Dienstkonto löschen" + }, + "viewServiceAccount": { + "message": "Dienstkonto anzeigen" + }, + "searchServiceAccounts": { + "message": "Dienstkonten durchsuchen" + }, + "addProject": { + "message": "Projekt hinzufügen" + }, + "projectEdited": { + "message": "Projekt bearbeitet" + }, + "projectSaved": { + "message": "Projekt gespeichert" + }, + "projectCreated": { + "message": "Projekt erstellt" + }, + "projectName": { + "message": "Projektname" + }, + "newProject": { + "message": "Neues Projekt" + }, + "softDeleteSecretWarning": { + "message": "Das Löschen von Geheimnissen kann bestehende Integrationen beeinflussen." + }, + "softDeletesSuccessToast": { + "message": "Geheimnisse in Papierkorb verschoben" + }, + "serviceAccountCreated": { + "message": "Dienstkonto erstellt" + }, + "smAccess": { + "message": "Zugriff" + }, + "projectCommaSecret": { + "message": "Projekt, Geheimnis" + }, + "serviceAccountName": { + "message": "Name des Dienstkontos" + }, + "newSaSelectAccess": { + "message": "Projekte oder Geheimnisse eingeben oder auswählen" + }, + "newSaTypeToFilter": { + "message": "Schreiben, um zu filtern" + }, + "deleteProjectsToast": { + "message": "Projekte gelöscht" + }, + "deleteProjectToast": { + "message": "Das Projekt und alle zugehörigen Geheimnisse wurden gelöscht" + }, + "deleteProjectDialogMessage": { + "message": "Das Löschen des Projekts $PROJECT$ ist dauerhaft und unwiderruflich.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Gebe \"$CONFIRM$\" ein, um fortzufahren", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "$PROJECT$ löschen", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "$COUNT$ Projekte löschen", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Das Löschen von Projekten ist dauerhaft und unwiderruflich." + }, + "projectsNoItemsTitle": { + "message": "Keine Projekte zum Anzeigen" + }, + "projectsNoItemsMessage": { + "message": "Füge ein neues Projekt hinzu, um mit der Organisation von Geheimnissen zu beginnen." + }, + "smConfirmationRequired": { + "message": "Bestätigung erforderlich" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Die folgenden Projekte konnten nicht gelöscht werden:" + }, + "softDeleteSuccessToast": { + "message": "Geheimnis in Papierkorb verschoben" + }, + "searchProjects": { + "message": "Projekte durchsuchen" + }, + "accessTokens": { + "message": "Zugriffstokens" + }, + "createAccessToken": { + "message": "Zugriffstoken erstellen" + }, + "expires": { + "message": "Läuft ab" + }, + "canRead": { + "message": "Kann lesen" + }, + "accessTokensNoItemsTitle": { + "message": "Keine Zugriffstoken zum Anzeigen" + }, + "accessTokensNoItemsDesc": { + "message": "Um loszulegen, erstelle ein Zugriffstoken" + }, + "downloadAccessToken": { + "message": "Vor dem Schließen herunterladen oder kopieren." + }, + "expiresOnAccessToken": { + "message": "Läuft ab am:" + }, + "accessTokenCallOutTitle": { + "message": "Zugriffstoken sind nicht gespeichert und können nicht abgerufen werden" + }, + "copyToken": { + "message": "Token kopieren" + }, + "accessToken": { + "message": "Zugriffstoken" + }, + "accessTokenExpirationRequired": { + "message": "Ablaufdatum erforderlich" + }, + "accessTokenCreatedAndCopied": { + "message": "Zugriffstoken erstellt und in Zwischenablage kopiert" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Die Berechtigungsverwaltung ist in der Beta nicht verfügbar." + }, + "revokeAccessToken": { + "message": "Zugriffstoken widerrufen" + }, + "submenu": { + "message": "Untermenü" + }, "from": { "message": "Von" }, diff --git a/apps/web/src/locales/el/messages.json b/apps/web/src/locales/el/messages.json index 2db57d3ba0c..3ce1d19ff7c 100644 --- a/apps/web/src/locales/el/messages.json +++ b/apps/web/src/locales/el/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json index bf6d6cca472..ccf34ee0080 100644 --- a/apps/web/src/locales/en_GB/messages.json +++ b/apps/web/src/locales/en_GB/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/en_IN/messages.json b/apps/web/src/locales/en_IN/messages.json index 2206cacff20..e3083eddcee 100644 --- a/apps/web/src/locales/en_IN/messages.json +++ b/apps/web/src/locales/en_IN/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/eo/messages.json b/apps/web/src/locales/eo/messages.json index a0868d14932..ac4164112dc 100644 --- a/apps/web/src/locales/eo/messages.json +++ b/apps/web/src/locales/eo/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json index 8a09ecdb64e..5d9c382b1a8 100644 --- a/apps/web/src/locales/es/messages.json +++ b/apps/web/src/locales/es/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Borrar todo" }, + "projects": { + "message": "Proyectos" + }, + "lastEdited": { + "message": "Última modificación" + }, + "editSecret": { + "message": "Editar secreto" + }, + "addSecret": { + "message": "Añadir secreto" + }, + "copySecretName": { + "message": "Copiar nombre del secreto" + }, + "copySecretValue": { + "message": "Copiar valor del secreto" + }, + "deleteSecret": { + "message": "Eliminar secreto" + }, + "deleteSecrets": { + "message": "Eliminar secretos" + }, + "project": { + "message": "Proyecto" + }, + "editProject": { + "message": "Editar proyecto" + }, + "viewProject": { + "message": "Ver Project" + }, + "deleteProject": { + "message": "Eliminar proyecto" + }, + "deleteProjects": { + "message": "Eliminar proyectos" + }, + "secret": { + "message": "Secreto" + }, + "serviceAccount": { + "message": "Cuenta de servicio" + }, + "serviceAccounts": { + "message": "Cuentas de servicio" + }, + "new": { + "message": "Nuevo" + }, + "secrets": { + "message": "Secretos" + }, + "nameValuePair": { + "message": "Nombre/Valor par" + }, + "secretEdited": { + "message": "Secreto editado" + }, + "secretCreated": { + "message": "Secreto creado" + }, + "newSecret": { + "message": "Nuevo secreto" + }, + "newServiceAccount": { + "message": "Nueva cuenta de servicio" + }, + "secretsNoItemsTitle": { + "message": "No hay secretos que mostrar" + }, + "secretsNoItemsMessage": { + "message": "Para empezar, añade un nuevo secreto o importa secretos." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nada que mostrar aún" + }, + "serviceAccountsNoItemsMessage": { + "message": "Crear una nueva cuenta de servicio para comenzar a automatizar el acceso secreto." + }, + "searchSecrets": { + "message": "Buscar secretos" + }, + "deleteServiceAccounts": { + "message": "Eliminar cuentas de servicio" + }, + "deleteServiceAccount": { + "message": "Eliminar cuenta de servicio" + }, + "viewServiceAccount": { + "message": "Ver cuenta de servicio" + }, + "searchServiceAccounts": { + "message": "Buscar cuentas de servicio" + }, + "addProject": { + "message": "Añadir proyecto" + }, + "projectEdited": { + "message": "Proyecto editado" + }, + "projectSaved": { + "message": "Proyecto guardado" + }, + "projectCreated": { + "message": "Proyecto creado" + }, + "projectName": { + "message": "Nombre del proyecto" + }, + "newProject": { + "message": "Nuevo proyecto" + }, + "softDeleteSecretWarning": { + "message": "Eliminar secretos puede afectar a las integraciones existentes." + }, + "softDeletesSuccessToast": { + "message": "Secretos enviados a la papelera" + }, + "serviceAccountCreated": { + "message": "Cuenta de servicio creada" + }, + "smAccess": { + "message": "Acceso" + }, + "projectCommaSecret": { + "message": "Proyecto, secreto" + }, + "serviceAccountName": { + "message": "Nombre de la cuenta de servicio" + }, + "newSaSelectAccess": { + "message": "Escriba o seleccione proyectos o secretos" + }, + "newSaTypeToFilter": { + "message": "Escriba para filtrar" + }, + "deleteProjectsToast": { + "message": "Proyectos eliminados" + }, + "deleteProjectToast": { + "message": "El proyecto y todos los secretos asociados han sido eliminados" + }, + "deleteProjectDialogMessage": { + "message": "La eliminación del proyecto $PROJECT$ es permanente e irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Escribe \"$CONFIRM$\" para continuar", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Eliminar $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Eliminar $COUNT$ proyectos", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "La eliminación de proyectos es permanente e irreversible." + }, + "projectsNoItemsTitle": { + "message": "No hay proyectos para mostrar" + }, + "projectsNoItemsMessage": { + "message": "Añade un nuevo proyecto para empezar a organizar secretos." + }, + "smConfirmationRequired": { + "message": "Confirmación necesaria" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "No se han podido eliminar los siguientes proyectos:" + }, + "softDeleteSuccessToast": { + "message": "Secreto enviado a la papelera" + }, + "searchProjects": { + "message": "Buscar proyectos" + }, + "accessTokens": { + "message": "Tokens de acceso" + }, + "createAccessToken": { + "message": "Crear un token de acceso" + }, + "expires": { + "message": "Caduca" + }, + "canRead": { + "message": "Puede leer" + }, + "accessTokensNoItemsTitle": { + "message": "No hay tokens de acceso para mostrar" + }, + "accessTokensNoItemsDesc": { + "message": "Para empezar, crea un token de acceso" + }, + "downloadAccessToken": { + "message": "Descargar o copiar antes de cerrar." + }, + "expiresOnAccessToken": { + "message": "Caduca el:" + }, + "accessTokenCallOutTitle": { + "message": "Los tokens de acceso no están almacenados y no pueden ser recuperados" + }, + "copyToken": { + "message": "Copiar token" + }, + "accessToken": { + "message": "Token de acceso" + }, + "accessTokenExpirationRequired": { + "message": "Fecha de vencimiento requerida" + }, + "accessTokenCreatedAndCopied": { + "message": "Token de acceso creado y copiado al portapapeles" + }, + "accessTokenPermissionsBetaNotification": { + "message": "La administración de permisos no está disponible para la versión beta." + }, + "revokeAccessToken": { + "message": "Revocar token de acceso" + }, + "submenu": { + "message": "Submenú" + }, "from": { "message": "De" }, diff --git a/apps/web/src/locales/et/messages.json b/apps/web/src/locales/et/messages.json index b4d47ba8505..ac2cbfe313a 100644 --- a/apps/web/src/locales/et/messages.json +++ b/apps/web/src/locales/et/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json index dd54e1f371e..d14a91249ee 100644 --- a/apps/web/src/locales/eu/messages.json +++ b/apps/web/src/locales/eu/messages.json @@ -4120,19 +4120,19 @@ "message": "Ezarpen aurreratuetarako erabiltzaile baimenen kontrol aurreratuagoa ahalbidetzen du." }, "customDescNonEnterpriseStart": { - "message": "Custom roles is an ", + "message": "Rol pertsonalizatuak dira ", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Custom roles is an enterprise feature. Contact our support team to upgrade your subscription'" }, "customDescNonEnterpriseLink": { - "message": "enterprise feature", + "message": "enpresaren ezaugarriak", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Custom roles is an enterprise feature. Contact our support team to upgrade your subscription'" }, "customDescNonEnterpriseEnd": { - "message": ". Contact our support team to upgrade your subscription", + "message": ". Jarri harremanetan gure laguntza-taldearekin zure harpidetza eguneratzeko", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Custom roles is an enterprise feature. Contact our support team to upgrade your subscription'" }, "customNonEnterpriseError": { - "message": "To enable custom permissions the organization must be on an Enterprise 2020 plan." + "message": "Baimen pertsonalizatuak gaitzeko, erakundeak Enterprise 2020 plan batean egon behar du." }, "permissions": { "message": "Baimenak" @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Ezabatu dena" }, + "projects": { + "message": "Proiektuak" + }, + "lastEdited": { + "message": "Azken edizioa" + }, + "editSecret": { + "message": "Editatu sekretua" + }, + "addSecret": { + "message": "Gehitu sekretua" + }, + "copySecretName": { + "message": "Kopiatu sekretuaren izena" + }, + "copySecretValue": { + "message": "Kopiatu sekretuaren balioa" + }, + "deleteSecret": { + "message": "Ezabatu sekretua" + }, + "deleteSecrets": { + "message": "Ezabatu sekretuak" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Sekretua" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Sekretuak" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Sekretua editatua" + }, + "secretCreated": { + "message": "Sekretua sortua" + }, + "newSecret": { + "message": "Sekretu berria" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "Ez dago erakusteko sekreturik" + }, + "secretsNoItemsMessage": { + "message": "Hasteko, sortu edo inportatu sekretu berri bat." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Zerbitzu-kontu berri bat sortu, sarbide sekretua automatizatzen hasteko." + }, + "searchSecrets": { + "message": "Bilatu sekretuak" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Sekretuak ezabatzeak uneko integrazioei eragin ahal die." + }, + "softDeletesSuccessToast": { + "message": "Sekretua zakarrontzira bidalita" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Proiektua, sekretua" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Idatzi edo aukeratu proiektu edo sekretuak" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "Proiektua eta honi lotutako sekretu guztiak ezabatu dira" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Gehitu proiektu berria sekretuak antolatzen hasteko." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Sekretua zakarrontzira bidalia" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "Igorlea" }, diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json index fe6a6ef0e19..0c669b519bb 100644 --- a/apps/web/src/locales/fi/messages.json +++ b/apps/web/src/locales/fi/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Tyhjennä kaikki" }, + "projects": { + "message": "Projektit" + }, + "lastEdited": { + "message": "Viimeksi muokattu" + }, + "editSecret": { + "message": "Muokkaa salaisuutta" + }, + "addSecret": { + "message": "Lisää salaisuus" + }, + "copySecretName": { + "message": "Kopioi salaisuuden nimi" + }, + "copySecretValue": { + "message": "Kopioi salaisuuden arvo" + }, + "deleteSecret": { + "message": "Poista salaisuus" + }, + "deleteSecrets": { + "message": "Poista salaisuudet" + }, + "project": { + "message": "Projekti" + }, + "editProject": { + "message": "Muokkaa projektia" + }, + "viewProject": { + "message": "Näytä projekti" + }, + "deleteProject": { + "message": "Poista projekti" + }, + "deleteProjects": { + "message": "Poista projektit" + }, + "secret": { + "message": "Salaisuus" + }, + "serviceAccount": { + "message": "Palvelutili" + }, + "serviceAccounts": { + "message": "Palvelutilit" + }, + "new": { + "message": "Uusi" + }, + "secrets": { + "message": "Salaisuus" + }, + "nameValuePair": { + "message": "Nimi-/arvopari" + }, + "secretEdited": { + "message": "Salaisuutta muokattiin" + }, + "secretCreated": { + "message": "Salaisuus luotiin" + }, + "newSecret": { + "message": "Uusi salaisuus" + }, + "newServiceAccount": { + "message": "Uusi palvelutili" + }, + "secretsNoItemsTitle": { + "message": "Näytettäviä salaisuuksia ei ole" + }, + "secretsNoItemsMessage": { + "message": "Aloita lisäämällä uusi salaisuus tai tuomalla salaisuudet." + }, + "serviceAccountsNoItemsTitle": { + "message": "Mitään näytettävää ei vielä ole" + }, + "serviceAccountsNoItemsMessage": { + "message": "Aloita salaisen käytön automatisointi luomalla uusi palvelutili." + }, + "searchSecrets": { + "message": "Hae salaisuuksista" + }, + "deleteServiceAccounts": { + "message": "Poista palvelutilit" + }, + "deleteServiceAccount": { + "message": "Poista palvelutili" + }, + "viewServiceAccount": { + "message": "Näytä palvelutili" + }, + "searchServiceAccounts": { + "message": "Hae palvelutileistä" + }, + "addProject": { + "message": "Lisää projekti" + }, + "projectEdited": { + "message": "Projektia muokattiin" + }, + "projectSaved": { + "message": "Projekti tallennettiin" + }, + "projectCreated": { + "message": "Projekti luotiin" + }, + "projectName": { + "message": "Projektin nimi" + }, + "newProject": { + "message": "Uusi projekti" + }, + "softDeleteSecretWarning": { + "message": "Salaisuuksien poisto voi vaikuttaa olemassa oleviin integroteihin." + }, + "softDeletesSuccessToast": { + "message": "Salaisuudet siirrettiin roskakoriin" + }, + "serviceAccountCreated": { + "message": "Palvelutili luotiin" + }, + "smAccess": { + "message": "Oikeudet" + }, + "projectCommaSecret": { + "message": "Projekti, salaisuus" + }, + "serviceAccountName": { + "message": "Palvelutilin nimi" + }, + "newSaSelectAccess": { + "message": "Kirjoita tai valitse projektit tai salaisuudet" + }, + "newSaTypeToFilter": { + "message": "Suodata kirjoittamalla" + }, + "deleteProjectsToast": { + "message": "Projektit poistettiin" + }, + "deleteProjectToast": { + "message": "Projekti ja kaikki siihen liittyvät salaisuudet poistettiin" + }, + "deleteProjectDialogMessage": { + "message": "Projektin $PROJECT$ poisto on pysyvää, eikä sitä ole mahdollista perua.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Jatka kirjoittamalla \"$CONFIRM$\"", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Poista $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Poista $COUNT$ projektia", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Projektien poisto on pysyvää, eikä sitä ole mahdollista perua." + }, + "projectsNoItemsTitle": { + "message": "Näytettäviä projekteja ei ole" + }, + "projectsNoItemsMessage": { + "message": "Aloita salaisuuksien järjestely luomalla uusi projekti." + }, + "smConfirmationRequired": { + "message": "Vahvistus vaaditaan" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Seuraavia projekteja ei voitu poistaa:" + }, + "softDeleteSuccessToast": { + "message": "Salaisuus siirrettiin roskakoriin" + }, + "searchProjects": { + "message": "Hae projekteista" + }, + "accessTokens": { + "message": "Hae käyttötunnisteista" + }, + "createAccessToken": { + "message": "Luo käyttötunniste" + }, + "expires": { + "message": "Erääntyy" + }, + "canRead": { + "message": "Voi lukea" + }, + "accessTokensNoItemsTitle": { + "message": "Näytettäviä käyttötunnisteita ei ole" + }, + "accessTokensNoItemsDesc": { + "message": "Aloita luomalla käyttötunniste" + }, + "downloadAccessToken": { + "message": "Lataa tai kopioi ennen sulkua." + }, + "expiresOnAccessToken": { + "message": "Erääntyy:" + }, + "accessTokenCallOutTitle": { + "message": "Käyttötunnisteita ei säilytetä, eikä niiden palautus ole mahdollista" + }, + "copyToken": { + "message": "Kopioi tunniste" + }, + "accessToken": { + "message": "Käyttötunniste" + }, + "accessTokenExpirationRequired": { + "message": "Erääntymispäivä vaaditaan" + }, + "accessTokenCreatedAndCopied": { + "message": "Käyttötunniste luotiin ja kopioitiin leikepöydälle" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Käyttöoikeuksien hallinta ei ole beta-vaiheessa käytettävissä." + }, + "revokeAccessToken": { + "message": "Peru käyttötunniste" + }, + "submenu": { + "message": "Alavalikko" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/fil/messages.json b/apps/web/src/locales/fil/messages.json index 97372e340d5..fd1313f6e61 100644 --- a/apps/web/src/locales/fil/messages.json +++ b/apps/web/src/locales/fil/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/fr/messages.json b/apps/web/src/locales/fr/messages.json index 086de71b48a..f2bc7b9808f 100644 --- a/apps/web/src/locales/fr/messages.json +++ b/apps/web/src/locales/fr/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Effacer tout" }, + "projects": { + "message": "Projets" + }, + "lastEdited": { + "message": "Dernière Modification" + }, + "editSecret": { + "message": "Modifier le Secret" + }, + "addSecret": { + "message": "Ajouter un Secret" + }, + "copySecretName": { + "message": "Copier le Nom du Secret" + }, + "copySecretValue": { + "message": "Copier la Valeur Secrète" + }, + "deleteSecret": { + "message": "Supprimer le Secret" + }, + "deleteSecrets": { + "message": "Supprimer les Secrets" + }, + "project": { + "message": "Projet" + }, + "editProject": { + "message": "Modifier le Projet" + }, + "viewProject": { + "message": "Afficher le Projet" + }, + "deleteProject": { + "message": "Supprimer le Projet" + }, + "deleteProjects": { + "message": "Supprimer les Projets" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Compte de Service" + }, + "serviceAccounts": { + "message": "Comptes de Service" + }, + "new": { + "message": "Nouveau" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Nom/Paire de Valeur" + }, + "secretEdited": { + "message": "Secret Modifié" + }, + "secretCreated": { + "message": "Secret Créé" + }, + "newSecret": { + "message": "Nouveau Secret" + }, + "newServiceAccount": { + "message": "Nouveau Compte de Service" + }, + "secretsNoItemsTitle": { + "message": "Aucun Secret à Afficher" + }, + "secretsNoItemsMessage": { + "message": "Pour commencer, ajoutez un nouveau secret ou importez des secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Rien à afficher pour l'instant" + }, + "serviceAccountsNoItemsMessage": { + "message": "Créez un nouveau Compte de Service pour commencer à automatiser l'accès secret." + }, + "searchSecrets": { + "message": "Rechercher des Secrets" + }, + "deleteServiceAccounts": { + "message": "Supprimer des Comptes de Service" + }, + "deleteServiceAccount": { + "message": "Supprimer le Compte de Service" + }, + "viewServiceAccount": { + "message": "Afficher le Compte de Service" + }, + "searchServiceAccounts": { + "message": "Rechercher des Comptes de Service" + }, + "addProject": { + "message": "Ajouter un Projet" + }, + "projectEdited": { + "message": "Projet modifié" + }, + "projectSaved": { + "message": "Projet sauvegardé" + }, + "projectCreated": { + "message": "Projet créé" + }, + "projectName": { + "message": "Nom du Projet" + }, + "newProject": { + "message": "Nouveau Projet" + }, + "softDeleteSecretWarning": { + "message": "La suppression de secrets peut affecter les intégrations existantes." + }, + "softDeletesSuccessToast": { + "message": "Secrets envoyés à la corbeille" + }, + "serviceAccountCreated": { + "message": "Compte de Service créé" + }, + "smAccess": { + "message": "Accès" + }, + "projectCommaSecret": { + "message": "Projet, Secret" + }, + "serviceAccountName": { + "message": "Nom du Compte de Service" + }, + "newSaSelectAccess": { + "message": "Tapez ou Sélectionnez des Projets ou des Secrets" + }, + "newSaTypeToFilter": { + "message": "Tapez pour Filtrer" + }, + "deleteProjectsToast": { + "message": "Projets supprimés" + }, + "deleteProjectToast": { + "message": "Le projet et tous les secrets associés ont été supprimés" + }, + "deleteProjectDialogMessage": { + "message": "La suppression du projet $PROJECT$ est permanente et irréversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Tapez \"$CONFIRM$\" pour continuer", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Supprimer $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Supprimer $COUNT$ projets", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "La suppression de projets est permanente et irréversible." + }, + "projectsNoItemsTitle": { + "message": "Aucun projet à afficher" + }, + "projectsNoItemsMessage": { + "message": "Ajouter un nouveau projet pour commencer à organiser des secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation requise" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Les projets suivants n'ont pu être supprimés :" + }, + "softDeleteSuccessToast": { + "message": "Secret envoyé à la corbeille" + }, + "searchProjects": { + "message": "Rechercher des Projets" + }, + "accessTokens": { + "message": "Jetons d'accès" + }, + "createAccessToken": { + "message": "Créer un jeton d'accès" + }, + "expires": { + "message": "Expire" + }, + "canRead": { + "message": "Peut Lire" + }, + "accessTokensNoItemsTitle": { + "message": "Aucun jeton d'accès à afficher" + }, + "accessTokensNoItemsDesc": { + "message": "Pour commencer, créez un jeton d'accès" + }, + "downloadAccessToken": { + "message": "Télécharger ou copier avant de fermer." + }, + "expiresOnAccessToken": { + "message": "Expire le:" + }, + "accessTokenCallOutTitle": { + "message": "Les jetons d'accès ne sont pas stockés et ne peuvent pas être récupérés" + }, + "copyToken": { + "message": "Copier le jeton" + }, + "accessToken": { + "message": "Jeton d'accès" + }, + "accessTokenExpirationRequired": { + "message": "Date d'expiration requise" + }, + "accessTokenCreatedAndCopied": { + "message": "Jeton d'accès créé et copié dans le presse-papiers" + }, + "accessTokenPermissionsBetaNotification": { + "message": "La gestion des permissions n'est pas disponible pour la version bêta." + }, + "revokeAccessToken": { + "message": "Révoquer le jeton d'accès" + }, + "submenu": { + "message": "Sous-menu" + }, "from": { "message": "De" }, diff --git a/apps/web/src/locales/he/messages.json b/apps/web/src/locales/he/messages.json index 4681c824c58..1a1432d9944 100644 --- a/apps/web/src/locales/he/messages.json +++ b/apps/web/src/locales/he/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/hi/messages.json b/apps/web/src/locales/hi/messages.json index 0b5b30a5c9f..4136fef1855 100644 --- a/apps/web/src/locales/hi/messages.json +++ b/apps/web/src/locales/hi/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/hr/messages.json b/apps/web/src/locales/hr/messages.json index 938e1eacc01..f78875e56a0 100644 --- a/apps/web/src/locales/hr/messages.json +++ b/apps/web/src/locales/hr/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Očisti sve" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "Od" }, diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json index 54422532e24..55a9ab56eb9 100644 --- a/apps/web/src/locales/hu/messages.json +++ b/apps/web/src/locales/hu/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Összes törlése" }, + "projects": { + "message": "Projektek" + }, + "lastEdited": { + "message": "Utolsó szerkesztés" + }, + "editSecret": { + "message": "Titkos kód szerkesztés" + }, + "addSecret": { + "message": "Titkos kód hozzáadás" + }, + "copySecretName": { + "message": "Titkos kódnév másolás" + }, + "copySecretValue": { + "message": "Titkos kódérték másolás" + }, + "deleteSecret": { + "message": "Titkos kód törlés" + }, + "deleteSecrets": { + "message": "Titkos kódok törlése" + }, + "project": { + "message": "Projekt" + }, + "editProject": { + "message": "Projekt szerkesztése" + }, + "viewProject": { + "message": "Projekt megtekintése" + }, + "deleteProject": { + "message": "Projekt törlése" + }, + "deleteProjects": { + "message": "Projektek törlése" + }, + "secret": { + "message": "Titkos kód" + }, + "serviceAccount": { + "message": "Szolgáltatás fiók" + }, + "serviceAccounts": { + "message": "Szolgáltatás fiókok" + }, + "new": { + "message": "Új" + }, + "secrets": { + "message": "Titkos kódok" + }, + "nameValuePair": { + "message": "Név/érték pár" + }, + "secretEdited": { + "message": "A titkos kód szerkesztésre került." + }, + "secretCreated": { + "message": "A titkos kód létrejött." + }, + "newSecret": { + "message": "Új titkos kód" + }, + "newServiceAccount": { + "message": "Új szolgáltatás fiók" + }, + "secretsNoItemsTitle": { + "message": "Nincs megjeleníthető titkos kód." + }, + "secretsNoItemsMessage": { + "message": "Az induláshoz adjunk hozzá egy új titkos kódot vagy importáljunk ilyeneket." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nincs megjeleníthető tartalom." + }, + "serviceAccountsNoItemsMessage": { + "message": "Új szolgáltatás fiók létrehozása a titkos kód automatikus hozzáféréséhez." + }, + "searchSecrets": { + "message": "Titkos kódok keresése" + }, + "deleteServiceAccounts": { + "message": "Szolgáltatás fiókok törlése" + }, + "deleteServiceAccount": { + "message": "Szolgáltatás fiók törlése" + }, + "viewServiceAccount": { + "message": "Szolgáltatás fiók megtekintése" + }, + "searchServiceAccounts": { + "message": "Szolgáltatás fiókok keresése" + }, + "addProject": { + "message": "Projekt hozzáadása" + }, + "projectEdited": { + "message": "A projekt szerkesztésre került." + }, + "projectSaved": { + "message": "A projekt mentésre került." + }, + "projectCreated": { + "message": "A projekt létrejött." + }, + "projectName": { + "message": "Projektnév" + }, + "newProject": { + "message": "Új projekt" + }, + "softDeleteSecretWarning": { + "message": "A titkos kódok törlése érintheti a létező integrációkat." + }, + "softDeletesSuccessToast": { + "message": "A titkos kód a lomtárba került." + }, + "serviceAccountCreated": { + "message": "A szolgáltatás fiók létrejött." + }, + "smAccess": { + "message": "Hozzáférés" + }, + "projectCommaSecret": { + "message": "Projekt titkos kód" + }, + "serviceAccountName": { + "message": "Szolgáltatás fiók név" + }, + "newSaSelectAccess": { + "message": "Gépeljük be vagy válasszunk projekteket vagy titkos kódokat" + }, + "newSaTypeToFilter": { + "message": "Gépelés a szűréshez" + }, + "deleteProjectsToast": { + "message": "A projekt törésre került." + }, + "deleteProjectToast": { + "message": "A projekt és az összes társított titkos kód törlésre került." + }, + "deleteProjectDialogMessage": { + "message": "$PROJECT$ projekt törlése végleges és visszafordíthatatlan.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "\"$CONFIRM$\" begépelése a folytatáshoz", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "$PROJECT$ törlése", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "$COUNT$ projekt törlése", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "A projektek törlése végleges és visszavonhatatlan." + }, + "projectsNoItemsTitle": { + "message": "Nincs megjelenítendő projekt." + }, + "projectsNoItemsMessage": { + "message": "Új projekt hozzáadása a titkos kódok szervezésének elkezdéséhez." + }, + "smConfirmationRequired": { + "message": "Megerősítés szükséges" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "A következő projekteket nem lehet törölni:" + }, + "softDeleteSuccessToast": { + "message": "A titkos kód a lomtárba került." + }, + "searchProjects": { + "message": "Projektek keresése" + }, + "accessTokens": { + "message": "Vezérjelek elérése" + }, + "createAccessToken": { + "message": "Elérési vezérjel létrehozása" + }, + "expires": { + "message": "Lejárat" + }, + "canRead": { + "message": "Olvashat" + }, + "accessTokensNoItemsTitle": { + "message": "Nincs megjelenítendő elérési vezérjel." + }, + "accessTokensNoItemsDesc": { + "message": "Az induláshoz hozzunk létre egy elérési vezérjelet." + }, + "downloadAccessToken": { + "message": "Letöltés vagy másolás a bezárás eőtt." + }, + "expiresOnAccessToken": { + "message": "Lejárat:" + }, + "accessTokenCallOutTitle": { + "message": "Az elérési vezérjelek nincsnek tárolva és nem olvashatók vissza." + }, + "copyToken": { + "message": "Vezérjel másolása" + }, + "accessToken": { + "message": "Elérési vezérjel" + }, + "accessTokenExpirationRequired": { + "message": "A lejárati dátum megadása kötelező." + }, + "accessTokenCreatedAndCopied": { + "message": "Az elérési vezérjel létrejött és a vágólapra került." + }, + "accessTokenPermissionsBetaNotification": { + "message": "A jofgosultság kezelő bétaként érhető el." + }, + "revokeAccessToken": { + "message": "Elérési vezérjel visszavonása" + }, + "submenu": { + "message": "Almenü" + }, "from": { "message": "Feladó" }, diff --git a/apps/web/src/locales/id/messages.json b/apps/web/src/locales/id/messages.json index 22d111c1b6f..756eea2b04a 100644 --- a/apps/web/src/locales/id/messages.json +++ b/apps/web/src/locales/id/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json index 610c81a1b00..cdcdaceb2c7 100644 --- a/apps/web/src/locales/it/messages.json +++ b/apps/web/src/locales/it/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Cancella tutto" }, + "projects": { + "message": "Progetti" + }, + "lastEdited": { + "message": "Ultima modifica" + }, + "editSecret": { + "message": "Modifica Segreto" + }, + "addSecret": { + "message": "Aggiungi Segreto" + }, + "copySecretName": { + "message": "Copia Nome Segreto" + }, + "copySecretValue": { + "message": "Copia Valore Segreto" + }, + "deleteSecret": { + "message": "Elimina Segreto" + }, + "deleteSecrets": { + "message": "Elimina Segreti" + }, + "project": { + "message": "Progetto" + }, + "editProject": { + "message": "Modifica Progetto" + }, + "viewProject": { + "message": "Visualizza Progetto" + }, + "deleteProject": { + "message": "Elimina Progetto" + }, + "deleteProjects": { + "message": "Elimina Progetti" + }, + "secret": { + "message": "Segreto" + }, + "serviceAccount": { + "message": "Account di servizio" + }, + "serviceAccounts": { + "message": "Account di servizio" + }, + "new": { + "message": "Nuovo" + }, + "secrets": { + "message": "Segreti" + }, + "nameValuePair": { + "message": "Coppia Nome/Valore" + }, + "secretEdited": { + "message": "Segreto modificato" + }, + "secretCreated": { + "message": "Segreto creato" + }, + "newSecret": { + "message": "Nuovo Segreto" + }, + "newServiceAccount": { + "message": "Nuovo Account di Servizio" + }, + "secretsNoItemsTitle": { + "message": "Nessun segreto da mostrare" + }, + "secretsNoItemsMessage": { + "message": "Per iniziare, aggiungi un nuovo segreto o importa segreti." + }, + "serviceAccountsNoItemsTitle": { + "message": "Niente da mostrare" + }, + "serviceAccountsNoItemsMessage": { + "message": "Crea un nuovo account di servizio per iniziare a automatizzare l'accesso segreto." + }, + "searchSecrets": { + "message": "Cerca Segreti" + }, + "deleteServiceAccounts": { + "message": "Elimina Account Di Servizio" + }, + "deleteServiceAccount": { + "message": "Elimina Account Di Servizio" + }, + "viewServiceAccount": { + "message": "Visualizza Account Di Servizio" + }, + "searchServiceAccounts": { + "message": "Cerca Account di Servizio" + }, + "addProject": { + "message": "Aggiungi Progetto" + }, + "projectEdited": { + "message": "Progetto modificato" + }, + "projectSaved": { + "message": "Progetto salvato" + }, + "projectCreated": { + "message": "Progetto creato" + }, + "projectName": { + "message": "Nome del Progetto" + }, + "newProject": { + "message": "Nuovo Progetto" + }, + "softDeleteSecretWarning": { + "message": "L'eliminazione dei segreti può influenzare le integrazioni esistenti." + }, + "softDeletesSuccessToast": { + "message": "Segreti inviati al cestino" + }, + "serviceAccountCreated": { + "message": "Account Di Servizio Creato" + }, + "smAccess": { + "message": "Accesso" + }, + "projectCommaSecret": { + "message": "Progetto, Segreto" + }, + "serviceAccountName": { + "message": "Nome account di servizio" + }, + "newSaSelectAccess": { + "message": "Digita o seleziona progetti o segreti" + }, + "newSaTypeToFilter": { + "message": "Digita per filtrare" + }, + "deleteProjectsToast": { + "message": "Progetti eliminati" + }, + "deleteProjectToast": { + "message": "Il progetto e tutti i segreti associati sono stati eliminati" + }, + "deleteProjectDialogMessage": { + "message": "L'eliminazione del progetto $PROJECT$ è permanente e irreversibile.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Digita \"$CONFIRM$\" per continuare", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Elimina $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Elimina $COUNT$ progetti", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "L'eliminazione dei progetti è permanente e irreversibile." + }, + "projectsNoItemsTitle": { + "message": "Nessun progetto da mostrare" + }, + "projectsNoItemsMessage": { + "message": "Aggiungi un nuovo progetto per iniziare ad organizzare i segreti." + }, + "smConfirmationRequired": { + "message": "Conferma richiesta" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Non è stato possibile eliminare i seguenti progetti:" + }, + "softDeleteSuccessToast": { + "message": "Segreti inviati al cestino" + }, + "searchProjects": { + "message": "Cerca Progetti" + }, + "accessTokens": { + "message": "Token di accesso" + }, + "createAccessToken": { + "message": "Genera token di accesso" + }, + "expires": { + "message": "Scade" + }, + "canRead": { + "message": "Può Leggere" + }, + "accessTokensNoItemsTitle": { + "message": "Nessun token di accesso da mostrare" + }, + "accessTokensNoItemsDesc": { + "message": "Per iniziare, crea un token di accesso" + }, + "downloadAccessToken": { + "message": "Scarica o copia prima della chiusura." + }, + "expiresOnAccessToken": { + "message": "Scade il:" + }, + "accessTokenCallOutTitle": { + "message": "I token di accesso non sono memorizzati e non possono essere recuperati" + }, + "copyToken": { + "message": "Copia il token" + }, + "accessToken": { + "message": "Token di accesso" + }, + "accessTokenExpirationRequired": { + "message": "La data di scadenza è necessaria" + }, + "accessTokenCreatedAndCopied": { + "message": "Token di accesso creato e copiato negli appunti" + }, + "accessTokenPermissionsBetaNotification": { + "message": "La gestione delle autorizzazioni non è disponibile per beta." + }, + "revokeAccessToken": { + "message": "Revoca Token Di Accesso" + }, + "submenu": { + "message": "Sottomenu" + }, "from": { "message": "Da" }, diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json index c5b048dfe1b..21a1b545bd2 100644 --- a/apps/web/src/locales/ja/messages.json +++ b/apps/web/src/locales/ja/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "すべてクリア" }, + "projects": { + "message": "プロジェクト" + }, + "lastEdited": { + "message": "最終編集日" + }, + "editSecret": { + "message": "シークレットを編集" + }, + "addSecret": { + "message": "シークレットを追加" + }, + "copySecretName": { + "message": "シークレット名をコピー" + }, + "copySecretValue": { + "message": "シークレット値をコピー" + }, + "deleteSecret": { + "message": "シークレットを削除" + }, + "deleteSecrets": { + "message": "シークレットを削除" + }, + "project": { + "message": "プロジェクト" + }, + "editProject": { + "message": "プロジェクトを編集" + }, + "viewProject": { + "message": "プロジェクトを表示" + }, + "deleteProject": { + "message": "プロジェクトを削除" + }, + "deleteProjects": { + "message": "プロジェクトを削除" + }, + "secret": { + "message": "シークレット" + }, + "serviceAccount": { + "message": "サービスアカウント" + }, + "serviceAccounts": { + "message": "サービスアカウント" + }, + "new": { + "message": "新規作成" + }, + "secrets": { + "message": "シークレット" + }, + "nameValuePair": { + "message": "名前と値のペア" + }, + "secretEdited": { + "message": "シークレットを編集しました" + }, + "secretCreated": { + "message": "シークレットを作成しました" + }, + "newSecret": { + "message": "新しいシークレット" + }, + "newServiceAccount": { + "message": "新しいサービスアカウント" + }, + "secretsNoItemsTitle": { + "message": "表示するシークレットはありません" + }, + "secretsNoItemsMessage": { + "message": "まずは新しいシークレットの追加またはインポートをしてください。" + }, + "serviceAccountsNoItemsTitle": { + "message": "まだ表示するものはありません" + }, + "serviceAccountsNoItemsMessage": { + "message": "シークレットアクセスを自動化するためには、新しいサービスアカウントを作成してください。" + }, + "searchSecrets": { + "message": "シークレットを検索" + }, + "deleteServiceAccounts": { + "message": "サービスアカウントを削除" + }, + "deleteServiceAccount": { + "message": "サービスアカウントを削除" + }, + "viewServiceAccount": { + "message": "サービスアカウントを表示" + }, + "searchServiceAccounts": { + "message": "サービスアカウントを検索" + }, + "addProject": { + "message": "プロジェクトを追加" + }, + "projectEdited": { + "message": "プロジェクトを編集しました" + }, + "projectSaved": { + "message": "プロジェクトを保存しました" + }, + "projectCreated": { + "message": "プロジェクトを作成しました" + }, + "projectName": { + "message": "プロジェクト名" + }, + "newProject": { + "message": "新しいプロジェクト" + }, + "softDeleteSecretWarning": { + "message": "シークレットを削除すると、既存の連携に影響する可能性があります。" + }, + "softDeletesSuccessToast": { + "message": "シークレットをゴミ箱に送る" + }, + "serviceAccountCreated": { + "message": "サービスアカウントを作成しました" + }, + "smAccess": { + "message": "アクセス" + }, + "projectCommaSecret": { + "message": "プロジェクト、シークレット" + }, + "serviceAccountName": { + "message": "サービスアカウント名" + }, + "newSaSelectAccess": { + "message": "プロジェクトまたはシークレットを入力・選択" + }, + "newSaTypeToFilter": { + "message": "入力して絞り込む" + }, + "deleteProjectsToast": { + "message": "プロジェクトを削除しました" + }, + "deleteProjectToast": { + "message": "プロジェクトと関連するすべてのシークレットを削除しました" + }, + "deleteProjectDialogMessage": { + "message": "プロジェクト $PROJECT$ を削除すると元に戻せません。", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/ka/messages.json b/apps/web/src/locales/ka/messages.json index 94cb80076d1..dda5b1fe5f7 100644 --- a/apps/web/src/locales/ka/messages.json +++ b/apps/web/src/locales/ka/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/km/messages.json b/apps/web/src/locales/km/messages.json index 94cb80076d1..dda5b1fe5f7 100644 --- a/apps/web/src/locales/km/messages.json +++ b/apps/web/src/locales/km/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/kn/messages.json b/apps/web/src/locales/kn/messages.json index a0a508798f5..5b6633e43b4 100644 --- a/apps/web/src/locales/kn/messages.json +++ b/apps/web/src/locales/kn/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/ko/messages.json b/apps/web/src/locales/ko/messages.json index 6bb89f3fade..24f7c1c4aff 100644 --- a/apps/web/src/locales/ko/messages.json +++ b/apps/web/src/locales/ko/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json index 4e7c99b0836..a7bbe327b9c 100644 --- a/apps/web/src/locales/lv/messages.json +++ b/apps/web/src/locales/lv/messages.json @@ -1591,7 +1591,7 @@ "message": "Atrastie pierakstīšanās vienumi bez 2FA" }, "inactive2faFoundDesc": { - "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-step login (according to 2fa.directory). To further protect these accounts, you should set up two-step login.", + "message": "Glabātavā tika atrasta(s) $COUNT$ tīmekļa vietne(s), kurās nav uzstādīta divpakāpju pierakstīšanās (vadoties pēc 2fa.directory). Lai labāk aizsargātu šos kontus, ir ieteicams uzstādīt divpakāpju pierakstīšanos.", "placeholders": { "count": { "content": "$1", @@ -2360,10 +2360,10 @@ "message": "Vai tiešām noņemt šo lietotāju?" }, "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": "Kad dalībnieks ir noņemts, tam vairs nav piekļuves apvienības datiem, un šī darbība ir neatgriezeniska. Lai atkal pievienotu dalībnieku apvienībai, tas ir vēlreiz jāuzaicina un jāiekļauj." }, "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": "Kad dalībnieks ir atsaukts, tam vairs nav piekļuves apvienības datiem. Lai ātri atjaunotu dalībnieka piekļuvi, jādodas uz cilni \"Atsauktie\"." }, "removeUserConfirmationKeyConnector": { "message": "Uzmanību! Šim lietotājam ir nepieciešams Key Connector, lai pārvaldītu šifrēšanu. Lietotāja noņemšana no apvienības neatgriezeniski atspējos viņa kontu. Šī darbība nevar tikt atdarīta. Vai turpināt?" @@ -2732,7 +2732,7 @@ } }, "revokedUserId": { - "message": "Revoked organization access for $ID$.", + "message": "Ir atsaukta piekļuve apvienībai dalībniekam $ID$.", "placeholders": { "id": { "content": "$1", @@ -2741,7 +2741,7 @@ } }, "restoredUserId": { - "message": "Restored organization access for $ID$.", + "message": "Ir atjaunota piekļuve apvienībai dalībniekam $ID$.", "placeholders": { "id": { "content": "$1", @@ -2750,7 +2750,7 @@ } }, "revokeUserId": { - "message": "Revoke $ID$ access", + "message": "Atsaukt piekļuvi $ID$", "placeholders": { "id": { "content": "$1", @@ -3834,7 +3834,7 @@ "message": "Atspējots" }, "revoked": { - "message": "Atsaukts" + "message": "Atsauktie" }, "sendLink": { "message": "\"Send\" saite", @@ -4465,10 +4465,10 @@ "message": "Vai tiešām noņemt šos lietotājus? Tas var aizņemt dažas sekundes un nevar tikt pārtraukts vai atcelts." }, "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": "Kad dalībnieks tiek noņemts, tam vairs nav piekļuves apvienības datiem, un šī darbība ir neatgriezeniska. Lai atkal pievienotu dalībnieku apvienībai, tas ir vēlreiz jāuzaicina un jāiekļauj. Noņemšana var aizņemt dažas sekundes un nevar tikt pārtraukta vai atcelta." }, "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": "Kad dalībnieks ir atsaukts, tam vairs nav piekļuves apvienības datiem. Lai ātri atjaunotu piekļuvi, jādodas uz cilni \"Atsauktie\". Atsaukšana var aizņemt dažas sekundes un nevar tikt pārtraukta vai atcelta." }, "theme": { "message": "Izskats" @@ -4501,10 +4501,10 @@ "message": "Veiksmīgi noņemts" }, "bulkRevokedMessage": { - "message": "Revoked organization access successfully" + "message": "Ir veiksmīgi atsaukta piekļuve apvienībai" }, "bulkRestoredMessage": { - "message": "Restored organization access successfully" + "message": "Ir veiksmīgi atjaunota piekļuve apvienībai" }, "bulkFilteredMessage": { "message": "Nav iekļauts, tādēļ nav piemērojams šai darbībai." @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Notīrīt visu" }, + "projects": { + "message": "Projekti" + }, + "lastEdited": { + "message": "Pēdējo reizi labots" + }, + "editSecret": { + "message": "Labot noslēpumu" + }, + "addSecret": { + "message": "Pievienot noslēpumu" + }, + "copySecretName": { + "message": "Ievietot noslēpuma nosaukumu starpliktuvē" + }, + "copySecretValue": { + "message": "Ievietot noslēpuma vērtību starpliktuvē" + }, + "deleteSecret": { + "message": "Izdzēst noslēpumu" + }, + "deleteSecrets": { + "message": "Izdzēst noslēpumus" + }, + "project": { + "message": "Projekts" + }, + "editProject": { + "message": "Labot projektu" + }, + "viewProject": { + "message": "Skatīt projektu" + }, + "deleteProject": { + "message": "Izdzēst projektu" + }, + "deleteProjects": { + "message": "Izdzēst projektus" + }, + "secret": { + "message": "Noslēpums" + }, + "serviceAccount": { + "message": "Pakalpojumu konts" + }, + "serviceAccounts": { + "message": "Pakalpojumu konti" + }, + "new": { + "message": "Jauns" + }, + "secrets": { + "message": "Noslēpumi" + }, + "nameValuePair": { + "message": "Nosaukuma/vērtības pāris" + }, + "secretEdited": { + "message": "Noslēpums ir labots" + }, + "secretCreated": { + "message": "Noslēpums ir izveidots" + }, + "newSecret": { + "message": "Jauns noslēpums" + }, + "newServiceAccount": { + "message": "Jauns pakalpojumu konts" + }, + "secretsNoItemsTitle": { + "message": "Nav noslēpumu, ko parādīt" + }, + "secretsNoItemsMessage": { + "message": "Lai sākut, ir jāpievieno jauns noslēpums vai jāievieto esoši." + }, + "serviceAccountsNoItemsTitle": { + "message": "Vēl nav nekā, ko parādīt" + }, + "serviceAccountsNoItemsMessage": { + "message": "Jāizveido jauns pakalpojumu konts, lai sāktu automatizēt piekļuvi noslēpumiem." + }, + "searchSecrets": { + "message": "Meklēt noslēpumus" + }, + "deleteServiceAccounts": { + "message": "Izdzēst pakalpojumu kontus" + }, + "deleteServiceAccount": { + "message": "Izdzēst pakalpojumu kontu" + }, + "viewServiceAccount": { + "message": "Skatīt pakalpojumu kontu" + }, + "searchServiceAccounts": { + "message": "Meklēt pakalpojumu kontus" + }, + "addProject": { + "message": "Pievienot projektu" + }, + "projectEdited": { + "message": "Projekts labots" + }, + "projectSaved": { + "message": "Projekts ir saglabāts" + }, + "projectCreated": { + "message": "Projekts ir izveidots" + }, + "projectName": { + "message": "Projekta nosaukums" + }, + "newProject": { + "message": "Jauns projekts" + }, + "softDeleteSecretWarning": { + "message": "Noslēpumu dzēšana var ietekmēt esošās sasaistes." + }, + "softDeletesSuccessToast": { + "message": "Noslēpumi ir pārvietoti uz atkritni" + }, + "serviceAccountCreated": { + "message": "Pakalpojumu konts ir izveidots" + }, + "smAccess": { + "message": "Piekļuve" + }, + "projectCommaSecret": { + "message": "Projekts, noslēpums" + }, + "serviceAccountName": { + "message": "Pakalpojumu konta nosaukums" + }, + "newSaSelectAccess": { + "message": "Rakstīt vai atlasīt projektus vai noslēpumus" + }, + "newSaTypeToFilter": { + "message": "Rakstīt, lai atlasītu" + }, + "deleteProjectsToast": { + "message": "Projekti ir izdzēsti" + }, + "deleteProjectToast": { + "message": "Projekts un visi saistītie noslēpumi tika izdzēsti" + }, + "deleteProjectDialogMessage": { + "message": "Projekta $PROJECT$ izdzēšana ir paliekoša un neatgriezeniska.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Jāieraksta \"$CONFIRM$\", lai turpinātu", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Izdzēst $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Izdzēst $COUNT$ projektus", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Projektu izdzēšana ir paliekoša un neatgriezeniska." + }, + "projectsNoItemsTitle": { + "message": "Nav projektu, ko attēlot" + }, + "projectsNoItemsMessage": { + "message": "Jāpievieno jauns projkets, lai sāktu kārtot noslēpumus." + }, + "smConfirmationRequired": { + "message": "Nepieciešams apstiprinājums" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Šos projektus nebija iespējams izdzēst:" + }, + "softDeleteSuccessToast": { + "message": "Noslēpums ir pārvietots uz atkritni" + }, + "searchProjects": { + "message": "Meklēt projektus" + }, + "accessTokens": { + "message": "Piekļuves pilnvaras" + }, + "createAccessToken": { + "message": "Izveidot piekļuves pilnvaru" + }, + "expires": { + "message": "Izbeidzas" + }, + "canRead": { + "message": "Var lasīt" + }, + "accessTokensNoItemsTitle": { + "message": "Nav piekļuves pilnvaru, ko parādīt" + }, + "accessTokensNoItemsDesc": { + "message": "Lai sāktu, jāizveido piekļuves pilnvara" + }, + "downloadAccessToken": { + "message": "Jālejupielādē vai jāievieto starpliktuvē pirms aizvēršanas." + }, + "expiresOnAccessToken": { + "message": "Beidzas:" + }, + "accessTokenCallOutTitle": { + "message": "Piekļuves pilnvaras netiek glabātas un tās nevar atgūt" + }, + "copyToken": { + "message": "Ievietot pilnvaru starpliktuvē" + }, + "accessToken": { + "message": "Piekļuves pilnvara" + }, + "accessTokenExpirationRequired": { + "message": "Nepieciešams norādīt beigu datumu" + }, + "accessTokenCreatedAndCopied": { + "message": "Piekļuves pilnvara ir izveidota un ievietota starpliktuvē" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Atļauju pārvaldība nav pieejama bēta laidienā." + }, + "revokeAccessToken": { + "message": "Atsaukt piekļuves pilnvaru" + }, + "submenu": { + "message": "Apakšizvēlne" + }, "from": { "message": "No" }, diff --git a/apps/web/src/locales/ml/messages.json b/apps/web/src/locales/ml/messages.json index 09c3b4265fe..92cc528922a 100644 --- a/apps/web/src/locales/ml/messages.json +++ b/apps/web/src/locales/ml/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/nb/messages.json b/apps/web/src/locales/nb/messages.json index a7e44c49c60..e683bb8a350 100644 --- a/apps/web/src/locales/nb/messages.json +++ b/apps/web/src/locales/nb/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Tøm alle" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "Fra" }, diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json index 42372af8a20..179efc393e1 100644 --- a/apps/web/src/locales/nl/messages.json +++ b/apps/web/src/locales/nl/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Alles wissen" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "Van" }, diff --git a/apps/web/src/locales/nn/messages.json b/apps/web/src/locales/nn/messages.json index fc5cfe963e3..badd862c433 100644 --- a/apps/web/src/locales/nn/messages.json +++ b/apps/web/src/locales/nn/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/pl/messages.json b/apps/web/src/locales/pl/messages.json index 3b2d637d1de..63ac75bea03 100644 --- a/apps/web/src/locales/pl/messages.json +++ b/apps/web/src/locales/pl/messages.json @@ -582,7 +582,7 @@ "message": "Utwórz konto" }, "newAroundHere": { - "message": "Jesteś tu nowy(a)?" + "message": "Nowy użytkownik?" }, "startTrial": { "message": "Rozpocznij okres próbny" @@ -1151,7 +1151,7 @@ "message": "Konto zostało usunięte" }, "accountDeletedDesc": { - "message": "Twoje konto zostało zamknięte i wszystkie powiązane z nim dane zostały skasowane." + "message": "Konto zostało zamknięte i wszystkie powiązane z nim dane zostały usunięte." }, "myAccount": { "message": "Moje konto" @@ -1477,7 +1477,7 @@ "message": "Tajny klucz" }, "twoFactorDuoApiHostname": { - "message": "Nazwa domeny interfejsu API" + "message": "Nazwa domeny API" }, "twoFactorEmailDesc": { "message": "Wykonaj poniższe kroki, aby aktywować logowanie dwustopniowe przez adres e-mail:" @@ -2507,10 +2507,10 @@ "message": "Hasło do konta zostało zmienione." }, "enabledUpdated2fa": { - "message": "Logowanie dwustopniowe zostało zaktualizowane." + "message": "Logowanie dwustopniowe zostało zapisane" }, "disabled2fa": { - "message": "Logowanie dwustopniowe zostało wyłączone." + "message": "Logowanie dwustopniowe zostało wyłączone" }, "recovered2fa": { "message": "Logowanie dwustopniowe zostało wyłączone." @@ -2525,10 +2525,10 @@ "message": "Sejf został wyeksportowany" }, "exportedOrganizationVault": { - "message": "Sejf organizacji został wyeksportowany" + "message": "Sejf organizacji został wyeksportowany." }, "editedOrgSettings": { - "message": "Ustawienia organizacji zostały zapisane" + "message": "Ustawienia organizacji zostały zmienione." }, "createdItemId": { "message": "Element $ID$ został utworzony.", @@ -3017,7 +3017,7 @@ "message": "Moja organizacja" }, "organizationInfo": { - "message": "Organizacja" + "message": "Informacje organizacji" }, "deleteOrganization": { "message": "Usuń organizację" @@ -3096,10 +3096,10 @@ "message": "Płatność z pomocą konta bankowego jest dostępna wyłącznie dla klientów w Stanach Zjednoczonych. Konieczne będzie zweryfikowanie konta bankowego. Wykonamy dwa mikro przelewy w ciągu następnych 1-2 dni roboczych. Wpisz te kwoty na stronie rozliczeń organizacji, aby zweryfikować konto bankowe." }, "verifyBankAccountFailureWarning": { - "message": "Brak weryfikacji konta bankowego spowoduje brak dokonania płatności i Twoja subskrypcja zostanie wyłączona." + "message": "Brak weryfikacji konta bankowego spowoduje brak dokonania płatności i Twoja subskrypcja zostanie zawieszona." }, "verifiedBankAccount": { - "message": "Konto bankowe zostało zweryfikowane." + "message": "Konto bankowe zostało zweryfikowane" }, "bankAccount": { "message": "Konto bankowe" @@ -3302,7 +3302,7 @@ "message": "Zaznaczając tę opcję, akceptujesz:" }, "acceptPoliciesRequired": { - "message": "Warunki użytkowania i polityka prywatności nie zostały zaakceptowane." + "message": "Regulamin i polityka prywatności nie zostały zaakceptowane." }, "termsOfService": { "message": "Regulamin" @@ -3353,10 +3353,10 @@ "description": "ex. Date this password was updated" }, "organizationIsDisabled": { - "message": "Organizacja jest wyłączona." + "message": "Organizacja została zawieszona" }, "disabledOrganizationFilterError": { - "message": "Nie można uzyskać dostępu do elementów w wyłączonych organizacjach. Skontaktuj się z właścicielem organizacji, aby uzyskać pomoc." + "message": "Nie można uzyskać dostępu do elementów w zawieszonych organizacjach. Skontaktuj się z właścicielem organizacji, aby uzyskać pomoc." }, "licenseIsExpired": { "message": "Licencja wygasła." @@ -3440,7 +3440,7 @@ "description": "Free, as in 'Free beer'" }, "apiKey": { - "message": "Klucz interfejsu API" + "message": "Klucz API" }, "apiKeyDesc": { "message": "Twój klucz interfejsu API może zostać użyty do uwierzytelniania dostępu do publicznego interfejsu API Bitwarden." @@ -3462,10 +3462,10 @@ "description": "'OAuth 2.0' is a programming protocol. It should probably not be translated." }, "viewApiKey": { - "message": "Wyświetl klucz interfejsu API" + "message": "Wyświetl klucz API" }, "rotateApiKey": { - "message": "Zmień klucz interfejsu API" + "message": "Zmień klucz API" }, "selectOneCollection": { "message": "Musisz wybrać co najmniej jedną kolekcję." @@ -3567,7 +3567,7 @@ "message": "Sposób blokowania sejfu" }, "vaultTimeoutActionLockDesc": { - "message": "Po zablokowaniu sejfu, musisz ponownie wpisać hasło główne, aby uzyskać do niego dostęp." + "message": "Aby uzyskać dostęp do sejfu, musisz wpisać hasło główne lub odblokować go inną metodą." }, "vaultTimeoutActionLogOutDesc": { "message": "Po wylogowaniu się z sejfu, musisz ponownie zalogować się, aby uzyskać do niego dostęp." @@ -4495,7 +4495,7 @@ "message": "Potwierdzono" }, "bulkReinviteMessage": { - "message": "Zaproszony ponownie." + "message": "Zaproszony ponownie" }, "bulkRemovedMessage": { "message": "Usunięto" @@ -4620,7 +4620,7 @@ } }, "providerIsDisabled": { - "message": "Dostawca jest wyłączony." + "message": "Dostawca został zawieszony" }, "providerUpdated": { "message": "Dostawca został zapisany" @@ -4714,7 +4714,7 @@ "message": "Eksportowanie sejfu zostało wyłączone" }, "personalVaultExportPolicyInEffect": { - "message": "Co najmniej jedna zasada organizacji uniemożliwia wyeksportowanie Twojego sejfu." + "message": "Co najmniej jedna zasada organizacji uniemożliwia wyeksportowanie osobistego sejfu." }, "selectType": { "message": "Wybierz rodzaj logowania jednokrotnego SSO" @@ -4756,10 +4756,10 @@ "message": "Uzyskaj elementy Claim od punktu końcowego informacji o użytkowniku" }, "additionalScopes": { - "message": "Dodatkowe / niestandardowe zakresy (oddzielone przecinkami)" + "message": "Niestandardowe zakresy" }, "additionalUserIdClaimTypes": { - "message": "Dodatkowe / niestandardowe elementy Claim identyfikatora użytkownika" + "message": "Niestandardowe elementy Claim identyfikatora użytkownika" }, "additionalEmailClaimTypes": { "message": "Elementy Claim adresu e-mail" @@ -4828,7 +4828,7 @@ "message": "Podpisz żądania uwierzytelniania" }, "ssoSettingsSaved": { - "message": "Konfiguracja logowania jednokrotnego została zapisana." + "message": "Konfiguracja logowania jednokrotnego została zapisana" }, "sponsoredFamilies": { "message": "Darmowy plan rodzinny" @@ -5104,7 +5104,7 @@ "message": "Wymiana tokenu synchronizacji płatności spowoduje unieważnienie poprzedniego tokenu." }, "selfHostingTitle": { - "message": "Własny hosting" + "message": "Samodzielnie hostowany" }, "selfHostingEnterpriseOrganizationSectionCopy": { "message": "Aby skonfigurować swoją organizację na własnym serwerze, musisz przesłać plik licencyjny. Aby wesprzeć darmowe plany rodzinne i zaawansowane możliwości rozliczeniowe dla własnej organizacji, musisz skonfigurować synchronizację płatności." @@ -5328,7 +5328,7 @@ "description": "This text is displayed if an organization's billing is managed by a Provider. It tells the user to contact the Provider for assistance." }, "forwardedEmail": { - "message": "Alias przekazywanego e-maila" + "message": "Alias przekazywanego adresu" }, "forwardedEmailDesc": { "message": "Wygeneruj alias adresu e-mail z zewnętrznej usługi przekazywania." @@ -5384,7 +5384,7 @@ "message": "Ten klucz API ma dostęp do zarządzania użytkownikami w Twojej organizacji. Powinien być zachowany w tajemnicy." }, "copyScimKey": { - "message": "Skopiuj klucz API SCIM do schowka", + "message": "Kopiuj klucz API SCIM do schowka", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKey": { @@ -5392,7 +5392,7 @@ "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKeyWarning": { - "message": "Czy na pewno chcesz zmienić klucz API SCIM? Bieżący klucz nie będzie już działał dla żadnych istniejących integracji.", + "message": "Czy na pewno chcesz zmienić klucz interfejsu API SCIM? Obecny klucz nie będzie już działał dla żadnych istniejących integracji.", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateKey": { @@ -5411,11 +5411,11 @@ "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimApiKeyRotated": { - "message": "Klucz API SCIM został pomyślnie zmieniony", + "message": "Klucz API SCIM został zmieniony", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "Ustawienia SCIM zostały pomyślnie zapisane", + "message": "Ustawienia SCIM zostały zapisane", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Wyczyść wszystko" }, + "projects": { + "message": "Projekty" + }, + "lastEdited": { + "message": "Ostatnio edytowane" + }, + "editSecret": { + "message": "Edytuj sekret" + }, + "addSecret": { + "message": "Dodaj sekret" + }, + "copySecretName": { + "message": "Kopiuj nazwę sekretu" + }, + "copySecretValue": { + "message": "Kopiuj wartość sekretu" + }, + "deleteSecret": { + "message": "Usuń sekret" + }, + "deleteSecrets": { + "message": "Usuń sekrety" + }, + "project": { + "message": "Projekt" + }, + "editProject": { + "message": "Edytuj projekt" + }, + "viewProject": { + "message": "Wyświetl projekt" + }, + "deleteProject": { + "message": "Usuń projekt" + }, + "deleteProjects": { + "message": "Usuń projekty" + }, + "secret": { + "message": "Sekret" + }, + "serviceAccount": { + "message": "Konto usługi" + }, + "serviceAccounts": { + "message": "Konta usług" + }, + "new": { + "message": "Nowy" + }, + "secrets": { + "message": "Sekrety" + }, + "nameValuePair": { + "message": "Para nazwa/wartość" + }, + "secretEdited": { + "message": "Sekret został edytowany" + }, + "secretCreated": { + "message": "Sekret został utworzony" + }, + "newSecret": { + "message": "Nowy sekret" + }, + "newServiceAccount": { + "message": "Nowe konto usługi" + }, + "secretsNoItemsTitle": { + "message": "Brak sekretów do wyświetlenia" + }, + "secretsNoItemsMessage": { + "message": "Aby rozpocząć, dodaj nowy sekret lub zaimportuj sekrety." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nie ma nic do pokazania" + }, + "serviceAccountsNoItemsMessage": { + "message": "Utwórz nowe konto usługi, aby rozpocząć automatyzację dostępu do sekretu." + }, + "searchSecrets": { + "message": "Szukaj w sekretach" + }, + "deleteServiceAccounts": { + "message": "Usuń konta usług" + }, + "deleteServiceAccount": { + "message": "Usuń konto usługi" + }, + "viewServiceAccount": { + "message": "Wyświetl konto usługi" + }, + "searchServiceAccounts": { + "message": "Szukaj w kontach usług" + }, + "addProject": { + "message": "Dodaj projekt" + }, + "projectEdited": { + "message": "Projekt został edytowany" + }, + "projectSaved": { + "message": "Projekt został zapisany" + }, + "projectCreated": { + "message": "Projekt został utworzony" + }, + "projectName": { + "message": "Nazwa projektu" + }, + "newProject": { + "message": "Nowy projekt" + }, + "softDeleteSecretWarning": { + "message": "Usuwanie sekretów może mieć wpływ na istniejące integracje." + }, + "softDeletesSuccessToast": { + "message": "Sekrety zostały przeniesione do kosza" + }, + "serviceAccountCreated": { + "message": "Konto usługi zostało utworzone" + }, + "smAccess": { + "message": "Dostęp" + }, + "projectCommaSecret": { + "message": "Projekt, sekret" + }, + "serviceAccountName": { + "message": "Nazwa konta usługi" + }, + "newSaSelectAccess": { + "message": "Wpisz lub wybierz projekty lub sekrety" + }, + "newSaTypeToFilter": { + "message": "Wpisz, aby filtrować" + }, + "deleteProjectsToast": { + "message": "Projekty zostały usunięte" + }, + "deleteProjectToast": { + "message": "Projekt i wszystkie powiązane sekrety zostały usunięte" + }, + "deleteProjectDialogMessage": { + "message": "Usuwanie projektu $PROJECT$ jest trwałe i nieodwracalne.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Wpisz \"$CONFIRM$\", aby kontynuować", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Usuń $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Usuń $COUNT$ projektów", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Usuwanie projektów jest trwałe i nieodwracalne." + }, + "projectsNoItemsTitle": { + "message": "Brak projektów do wyświetlenia" + }, + "projectsNoItemsMessage": { + "message": "Dodaj nowy projekt, aby rozpocząć organizowanie sekretów." + }, + "smConfirmationRequired": { + "message": "Wymagane potwierdzenie" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Następujące projekty nie mogą być usunięte:" + }, + "softDeleteSuccessToast": { + "message": "Sekret został przeniesiony do kosza" + }, + "searchProjects": { + "message": "Wyszukaj w projektach" + }, + "accessTokens": { + "message": "Tokeny dostępu" + }, + "createAccessToken": { + "message": "Utwórz token dostępu" + }, + "expires": { + "message": "Wygasa" + }, + "canRead": { + "message": "Można przeczytać" + }, + "accessTokensNoItemsTitle": { + "message": "Brak tokenów dostępu" + }, + "accessTokensNoItemsDesc": { + "message": "Aby rozpocząć, utwórz token dostępu" + }, + "downloadAccessToken": { + "message": "Pobierz lub skopiuj przed zamknięciem." + }, + "expiresOnAccessToken": { + "message": "Wygasa dnia:" + }, + "accessTokenCallOutTitle": { + "message": "Tokeny dostępu nie są przechowywane i nie można ich pobrać" + }, + "copyToken": { + "message": "Kopiuj token" + }, + "accessToken": { + "message": "Token dostępu" + }, + "accessTokenExpirationRequired": { + "message": "Wymagana data ważności" + }, + "accessTokenCreatedAndCopied": { + "message": "Token dostępu został utworzony i skopiowany do schowka" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Zarządzanie uprawnieniami jest niedostępne w wersji beta." + }, + "revokeAccessToken": { + "message": "Unieważnij token dostępu" + }, + "submenu": { + "message": "Podmenu" + }, "from": { "message": "Od" }, @@ -5518,9 +5767,9 @@ "message": "Grupa" }, "groupAccessAll": { - "message": "Ta grupa może otwierać i modyfikować wszystkie elementy." + "message": "Ta grupa może wyświetlać i modyfikować wszystkie elementy." }, "memberAccessAll": { - "message": "Ten użytkownik może otwierać i modyfikować wszystkie elementy." + "message": "Ten użytkownik może wyświetlać i modyfikować wszystkie elementy." } } diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json index 6b33d1cf22f..816842e3b0b 100644 --- a/apps/web/src/locales/pt_BR/messages.json +++ b/apps/web/src/locales/pt_BR/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Limpar todos" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json index 06a485a7be6..f5d64835113 100644 --- a/apps/web/src/locales/pt_PT/messages.json +++ b/apps/web/src/locales/pt_PT/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Limpar tudo" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "De" }, diff --git a/apps/web/src/locales/ro/messages.json b/apps/web/src/locales/ro/messages.json index e16c0deaa30..addb7bb43e1 100644 --- a/apps/web/src/locales/ro/messages.json +++ b/apps/web/src/locales/ro/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Ștergeți tot" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/ru/messages.json b/apps/web/src/locales/ru/messages.json index 0614b2b07bd..2a264c44ab3 100644 --- a/apps/web/src/locales/ru/messages.json +++ b/apps/web/src/locales/ru/messages.json @@ -522,10 +522,10 @@ "message": "Вы действительно хотите отправить в корзину?" }, "deletedItem": { - "message": "Элемент удален" + "message": "Элемент отправлен в корзину" }, "deletedItems": { - "message": "Элементы удалены" + "message": "Элементы отправлены в корзину" }, "movedItems": { "message": "Элементы перемещены" @@ -2549,7 +2549,7 @@ } }, "deletedItemId": { - "message": "Удален элемент $ID$.", + "message": "Элемент $ID$ отправлен в корзину.", "placeholders": { "id": { "content": "$1", @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Очистить все" }, + "projects": { + "message": "Проекты" + }, + "lastEdited": { + "message": "Последнее изменение" + }, + "editSecret": { + "message": "Изменить секрет" + }, + "addSecret": { + "message": "Добавить секрет" + }, + "copySecretName": { + "message": "Скопировать имя секрета" + }, + "copySecretValue": { + "message": "Скопировать значение секрета" + }, + "deleteSecret": { + "message": "Удалить секрет" + }, + "deleteSecrets": { + "message": "Удалить секреты" + }, + "project": { + "message": "Проект" + }, + "editProject": { + "message": "Изменить проект" + }, + "viewProject": { + "message": "Посмотреть проект" + }, + "deleteProject": { + "message": "Удалить проект" + }, + "deleteProjects": { + "message": "Удалить проекты" + }, + "secret": { + "message": "Секрет" + }, + "serviceAccount": { + "message": "Сервисный аккаунт" + }, + "serviceAccounts": { + "message": "Сервисные аккаунты" + }, + "new": { + "message": "Новый" + }, + "secrets": { + "message": "Секреты" + }, + "nameValuePair": { + "message": "Пара имя/значение" + }, + "secretEdited": { + "message": "Секрет изменен" + }, + "secretCreated": { + "message": "Секрет создан" + }, + "newSecret": { + "message": "Новый секрет" + }, + "newServiceAccount": { + "message": "Новый сервисный аккаунт" + }, + "secretsNoItemsTitle": { + "message": "Нет секретов для отображения" + }, + "secretsNoItemsMessage": { + "message": "Чтобы начать, добавьте новый секрет или импортируйте их." + }, + "serviceAccountsNoItemsTitle": { + "message": "Пока нечего показать" + }, + "serviceAccountsNoItemsMessage": { + "message": "Чтобы приступить к автоматизации секретного доступа, создайте новый сервисный аккаунт." + }, + "searchSecrets": { + "message": "Поиск секретов" + }, + "deleteServiceAccounts": { + "message": "Удалить сервисные аккаунты" + }, + "deleteServiceAccount": { + "message": "Удалить сервисный аккаунт" + }, + "viewServiceAccount": { + "message": "Просмотреть сервисный аккаунт" + }, + "searchServiceAccounts": { + "message": "Искать сервисные аккаунты" + }, + "addProject": { + "message": "Добавить проект" + }, + "projectEdited": { + "message": "Проект изменен" + }, + "projectSaved": { + "message": "Проект сохранен" + }, + "projectCreated": { + "message": "Проект создан" + }, + "projectName": { + "message": "Название проекта" + }, + "newProject": { + "message": "Новый проект" + }, + "softDeleteSecretWarning": { + "message": "Удаление секретов может повлиять на существующие интеграции." + }, + "softDeletesSuccessToast": { + "message": "Секреты отправлены в корзину" + }, + "serviceAccountCreated": { + "message": "Сервисный аккаунт создан" + }, + "smAccess": { + "message": "Доступ" + }, + "projectCommaSecret": { + "message": "Проект, секрет" + }, + "serviceAccountName": { + "message": "Название сервисного аккаунта" + }, + "newSaSelectAccess": { + "message": "Введите или выберите проекты или секреты" + }, + "newSaTypeToFilter": { + "message": "Введите для фильтрации" + }, + "deleteProjectsToast": { + "message": "Проект удален" + }, + "deleteProjectToast": { + "message": "Проект и все связанные с ним секреты были удалены" + }, + "deleteProjectDialogMessage": { + "message": "Удаление проекта $PROJECT$ окончательно и необратимо.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Наберите \"$CONFIRM$\", чтобы продолжить", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Удалить $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Удалить проектов: $COUNT$", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Удаление проектов окончательно и необратимо." + }, + "projectsNoItemsTitle": { + "message": "Нет проектов для отображения" + }, + "projectsNoItemsMessage": { + "message": "Добавить новый проект, чтобы приступить к организации секретов." + }, + "smConfirmationRequired": { + "message": "Требуется подтверждение" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Следующие проекты не могут быть удалены:" + }, + "softDeleteSuccessToast": { + "message": "Секрет отправлен в корзину" + }, + "searchProjects": { + "message": "Поиск проектов" + }, + "accessTokens": { + "message": "Токены доступа" + }, + "createAccessToken": { + "message": "Создать токен доступа" + }, + "expires": { + "message": "Истекает" + }, + "canRead": { + "message": "Может читать" + }, + "accessTokensNoItemsTitle": { + "message": "Нет токенов доступа для отображения" + }, + "accessTokensNoItemsDesc": { + "message": "Чтобы начать работу, создайте токен доступа" + }, + "downloadAccessToken": { + "message": "Скачайте или скопируйте перед закрытием." + }, + "expiresOnAccessToken": { + "message": "Истекает:" + }, + "accessTokenCallOutTitle": { + "message": "Токены доступа не сохраняются и не могут быть получены" + }, + "copyToken": { + "message": "Скопировать токен" + }, + "accessToken": { + "message": "Токен доступа" + }, + "accessTokenExpirationRequired": { + "message": "Срок действия обязателен" + }, + "accessTokenCreatedAndCopied": { + "message": "Токен доступа создан и скопирован в буфер обмена" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Управление разрешениями недоступно в бета-версии." + }, + "revokeAccessToken": { + "message": "Отозвать токен доступа" + }, + "submenu": { + "message": "Подменю" + }, "from": { "message": "От" }, diff --git a/apps/web/src/locales/si/messages.json b/apps/web/src/locales/si/messages.json index 22fa9b6bf2e..f3b3e40047b 100644 --- a/apps/web/src/locales/si/messages.json +++ b/apps/web/src/locales/si/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json index dcdcab8ff02..6f7d63f4b8f 100644 --- a/apps/web/src/locales/sk/messages.json +++ b/apps/web/src/locales/sk/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Vyčistiť všetko" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "Od" }, diff --git a/apps/web/src/locales/sl/messages.json b/apps/web/src/locales/sl/messages.json index 4ebaf293e39..9f31efe15e3 100644 --- a/apps/web/src/locales/sl/messages.json +++ b/apps/web/src/locales/sl/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/sr/messages.json b/apps/web/src/locales/sr/messages.json index 9fe32ee7760..081f11c4bd1 100644 --- a/apps/web/src/locales/sr/messages.json +++ b/apps/web/src/locales/sr/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Обриши све" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "Од" }, diff --git a/apps/web/src/locales/sr_CS/messages.json b/apps/web/src/locales/sr_CS/messages.json index 4afc702036b..4cd9795eee6 100644 --- a/apps/web/src/locales/sr_CS/messages.json +++ b/apps/web/src/locales/sr_CS/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json index 4d3f950816a..6e45f55c957 100644 --- a/apps/web/src/locales/sv/messages.json +++ b/apps/web/src/locales/sv/messages.json @@ -597,7 +597,7 @@ "message": "Skicka" }, "emailAddressDesc": { - "message": "Din e-postadress används för att logga in." + "message": "Du använder din e-postadress för att logga in." }, "yourName": { "message": "Ditt namn" @@ -621,7 +621,7 @@ "message": "Ange huvudlösenordet igen" }, "masterPassHint": { - "message": "Huvudlösenordsledtråd (valfri)" + "message": "Huvudlösenordsledtråd (valfritt)" }, "masterPassHintLabel": { "message": "Huvudlösenordsledtråd" @@ -3299,7 +3299,7 @@ "message": "Du har inte markerat något." }, "acceptPolicies": { - "message": "Genom att markera denna ruta godkänner du följande:" + "message": "Genom att kryssa i denna ruta godkänner du följande:" }, "acceptPoliciesRequired": { "message": "Terms of Service and Privacy Policy have not been acknowledged." @@ -3767,7 +3767,7 @@ "message": "Text" }, "createSend": { - "message": "Skapa ny Send", + "message": "Ny Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -3775,15 +3775,15 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Skapade Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Redigerad Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { - "message": "Raderad Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSend": { @@ -3837,11 +3837,11 @@ "message": "Revoked" }, "sendLink": { - "message": "Länk till Send", + "message": "Send link", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "copySendLink": { - "message": "Kopiera länk till Send", + "message": "Copy Send link", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "removePassword": { @@ -4059,7 +4059,7 @@ "message": "På grund av en av företagets policyer är du begränsad från att spara objekt till ditt personliga valv. Ändra ägarskap till en organisation och välj från tillgängliga samlingar." }, "disableSend": { - "message": "Inaktivera Send" + "message": "Remove Send" }, "disableSendPolicyDesc": { "message": "Do not allow members to create or edit Sends.", @@ -4217,7 +4217,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNameDesc": { - "message": "Ett eget namn för att beskriva denna Send.", + "message": "A friendly name to describe this Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTextDesc": { @@ -5164,7 +5164,7 @@ } }, "required": { - "message": "required" + "message": "obligatoriskt" }, "idpSingleSignOnServiceUrlRequired": { "message": "Required if Entity ID is not a URL." @@ -5212,7 +5212,7 @@ "message": "Master password" }, "security": { - "message": "Security" + "message": "Säkerhet" }, "keys": { "message": "Keys" @@ -5231,7 +5231,7 @@ "description": "This is used by screen readers to indicate the organization that is currently being shown to the user." }, "accountSettings": { - "message": "Account settings" + "message": "Kontoinställningar" }, "generator": { "message": "Generator" @@ -5470,7 +5470,7 @@ "message": "Antal användare" }, "loggingInAs": { - "message": "Logging in as" + "message": "Logga in som" }, "notYou": { "message": "Not you?" @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projekt" + }, + "lastEdited": { + "message": "Senast redigerad" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Projekt" + }, + "editProject": { + "message": "Redigera projekt" + }, + "viewProject": { + "message": "Visa projekt" + }, + "deleteProject": { + "message": "Radera projekt" + }, + "deleteProjects": { + "message": "Radera projekt" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Lägg till projekt" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Projektnamn" + }, + "newProject": { + "message": "Nytt projekt" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Ange \"$CONFIRM$\" för att fortsätta", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Radera $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Radera $COUNT$ projekt", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Följande projekt kunde inte raderas:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Upphör" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Kopiera token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "Från" }, diff --git a/apps/web/src/locales/th/messages.json b/apps/web/src/locales/th/messages.json index aad7df91670..b2191511e57 100644 --- a/apps/web/src/locales/th/messages.json +++ b/apps/web/src/locales/th/messages.json @@ -220,7 +220,7 @@ "message": "ไม่เคย" }, "toggleVisibility": { - "message": "Toggle visibility" + "message": "สลับการมองเห็น" }, "toggleCollapse": { "message": "Toggle collapse", @@ -375,7 +375,7 @@ "message": "ดูรายการ" }, "ex": { - "message": "ex.", + "message": "เช่น", "description": "Short abbreviation for 'example'." }, "other": { @@ -467,7 +467,7 @@ "message": "คุณแน่ใจใช่ไหมว่าต้องการลบไฟล์แนบนี้" }, "attachmentSaved": { - "message": "Attachment saved" + "message": "บันทึกสิ่งที่แนบมาแล้ว" }, "file": { "message": "ไฟล์" @@ -488,7 +488,7 @@ "message": "Item saved" }, "movedItemToOrg": { - "message": "$ITEMNAME$ moved to $ORGNAME$", + "message": "ย้าย $ITEMNAME$ ไปยัง $ORGNAME$ แล้ว", "placeholders": { "itemname": { "content": "$1", @@ -513,13 +513,13 @@ "message": "Delete item" }, "deleteFolder": { - "message": "Delete folder" + "message": "ลบโฟลเดอร์" }, "deleteAttachment": { - "message": "Delete attachment" + "message": "ลบไฟล์แนบ" }, "deleteItemConfirmation": { - "message": "Do you really want to send to the trash?" + "message": "คุณต้องการส่งไปยังถังขยะใช่หรือไม่?" }, "deletedItem": { "message": "Item sent to trash" @@ -528,10 +528,10 @@ "message": "Items sent to trash" }, "movedItems": { - "message": "Items moved" + "message": "ย้ายรายการแล้ว" }, "overwritePasswordConfirmation": { - "message": "Are you sure you want to overwrite the current password?" + "message": "คุณต้องการเขียนทับรหัสผ่านปัจจุบันใช่หรือไม่?" }, "editedFolder": { "message": "Folder saved" @@ -540,73 +540,73 @@ "message": "Folder added" }, "deleteFolderConfirmation": { - "message": "Are you sure you want to delete this folder?" + "message": "คุณแน่ใจหรือว่าคุณต้องการลบโฟลเดอร์นี้?" }, "deletedFolder": { - "message": "Folder deleted" + "message": "ลบโฟลเดอร์แล้ว." }, "loggedOut": { - "message": "Logged out" + "message": "ออกจากระบบ" }, "loginExpired": { - "message": "Your login session has expired." + "message": "เซสชันของคุณหมดอายุแล้ว" }, "logOutConfirmation": { - "message": "Are you sure you want to log out?" + "message": "คุณต้องการล็อกเอาต์ใช่หรือไม่?" }, "logOut": { - "message": "Log out" + "message": "ออกจากระบบ" }, "ok": { - "message": "Ok" + "message": "ตกลง" }, "yes": { - "message": "Yes" + "message": "ใช่" }, "no": { - "message": "No" + "message": "ไม่ใช่" }, "loginOrCreateNewAccount": { - "message": "Log in or create a new account to access your secure vault." + "message": "ล็อกอิน หรือ สร้างบัญชีใหม่ เพื่อใช้งานตู้นิรภัยของคุณ" }, "loginWithDevice": { - "message": "Log in with device" + "message": "ล็อกอินด้วยอุปกรณ์" }, "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, "loginWithMasterPassword": { - "message": "Log in with master password" + "message": "เข้าสู่ระบบด้วยรหัสผ่านหลัก" }, "createAccount": { - "message": "Create account" + "message": "สร้างบัญชีผู้ใช้" }, "newAroundHere": { "message": "New around here?" }, "startTrial": { - "message": "Start trial" + "message": "เริ่มทดลองใช้งาน" }, "logIn": { - "message": "Log in" + "message": "เข้าสู่ระบบ" }, "logInInitiated": { "message": "Log in initiated" }, "submit": { - "message": "Submit" + "message": "ส่ง" }, "emailAddressDesc": { "message": "You'll use your email address to log in." }, "yourName": { - "message": "Your name" + "message": "ชื่อของคุณ" }, "yourNameDesc": { - "message": "What should we call you?" + "message": "เราให้เราเรียกคุณว่า?" }, "masterPass": { - "message": "Master password" + "message": "รหัสผ่านหลัก:" }, "masterPassDesc": { "message": "รหัสผ่านหลัก คือ รหัสผ่านที่ใช้เข้าถึงตู้นิรภัยของคุณ สิ่งสำคัญมาก คือ คุณจะต้องไม่ลืมรหัสผ่านหลักโดยเด็ดขาด เพราะหากคุณลืมแล้วล่ะก็ จะไม่มีวิธีที่สามารถกู้รหัสผ่านของคุณได้เลย" @@ -888,28 +888,28 @@ "message": "Copy verification code" }, "warning": { - "message": "Warning" + "message": "คำเตือน" }, "confirmVaultExport": { - "message": "Confirm vault export" + "message": "ยืนยันการส่งออกตู้นิรภัย" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." }, "encExportKeyWarningDesc": { - "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + "message": "การส่งออกนี้เข้ารหัสข้อมูลของคุณโดยใช้คีย์เข้ารหัสของบัญชีของคุณ หากคุณเคยหมุนเวียนคีย์เข้ารหัสของบัญชี คุณควรส่งออกอีกครั้ง เนื่องจากคุณจะไม่สามารถถอดรหัสไฟล์ส่งออกนี้ได้" }, "encExportAccountWarningDesc": { - "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + "message": "คีย์การเข้ารหัสบัญชีจะไม่ซ้ำกันสำหรับบัญชีผู้ใช้ Bitwarden แต่ละบัญชี ดังนั้นคุณจึงไม่สามารถนำเข้าการส่งออกที่เข้ารหัสไปยังบัญชีอื่นได้" }, "export": { - "message": "Export" + "message": "ส่งออก" }, "exportVault": { "message": "Export vault" }, "fileFormat": { - "message": "File format" + "message": "รูปแบบไฟล์" }, "fileEncryptedExportWarningDesc": { "message": "This file export will be password protected and require the file password to decrypt." @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json index 5ca4db18053..f70e8332050 100644 --- a/apps/web/src/locales/tr/messages.json +++ b/apps/web/src/locales/tr/messages.json @@ -4120,19 +4120,19 @@ "message": "Gelişmiş yapılandırma için kullanıcı izinleri üzerinde daha detaylı kontrol sağlar." }, "customDescNonEnterpriseStart": { - "message": "Custom roles is an ", + "message": "Özel roller kurumsal planın bir özelliğidir.", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Custom roles is an enterprise feature. Contact our support team to upgrade your subscription'" }, "customDescNonEnterpriseLink": { - "message": "enterprise feature", + "message": "Kurumsal Özellik", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Custom roles is an enterprise feature. Contact our support team to upgrade your subscription'" }, "customDescNonEnterpriseEnd": { - "message": ". Contact our support team to upgrade your subscription", + "message": "Aboneliğinizi yükseltmek için destek ekibimizle iletişime geçin", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Custom roles is an enterprise feature. Contact our support team to upgrade your subscription'" }, "customNonEnterpriseError": { - "message": "To enable custom permissions the organization must be on an Enterprise 2020 plan." + "message": "Özel izinleri etkinleştirmek için kuruluşun Enterprise 2020 planında olması gerekir." }, "permissions": { "message": "İzinler" @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Tümünü temizle" }, + "projects": { + "message": "Projeler" + }, + "lastEdited": { + "message": "Son Düzenlenen" + }, + "editSecret": { + "message": "Gizli Düzenle" + }, + "addSecret": { + "message": "Sır Ekle" + }, + "copySecretName": { + "message": "Gizli Adı Kopyala" + }, + "copySecretValue": { + "message": "Gizli Değeri Kopyala" + }, + "deleteSecret": { + "message": "Sırrı Sil" + }, + "deleteSecrets": { + "message": "Sırları Sil" + }, + "project": { + "message": "Proje" + }, + "editProject": { + "message": "Proje Düzenleme" + }, + "viewProject": { + "message": "Proje Görüntüle" + }, + "deleteProject": { + "message": "Proje Silme" + }, + "deleteProjects": { + "message": "Projeleri Sil" + }, + "secret": { + "message": "Gizli" + }, + "serviceAccount": { + "message": "Hizmet Hesabı" + }, + "serviceAccounts": { + "message": "Hizmet Hesapları" + }, + "new": { + "message": "Yeni" + }, + "secrets": { + "message": "Sırlar" + }, + "nameValuePair": { + "message": "İsim/Değer Çifti" + }, + "secretEdited": { + "message": "Sır düzenlendi" + }, + "secretCreated": { + "message": "Sır yaratıldı" + }, + "newSecret": { + "message": "Yeni Sır" + }, + "newServiceAccount": { + "message": "Yeni Hizmet Hesabı" + }, + "secretsNoItemsTitle": { + "message": "Gösterecek sır yok" + }, + "secretsNoItemsMessage": { + "message": "Başlamak için yeni bir gizli dizin ekleyin veya gizli dizinleri içe aktarın." + }, + "serviceAccountsNoItemsTitle": { + "message": "Henüz gösterecek bir şey yok" + }, + "serviceAccountsNoItemsMessage": { + "message": "Gizli erişimi otomatikleştirmeye başlamak için yeni bir Hizmet Hesabı oluşturun." + }, + "searchSecrets": { + "message": "Arama Sırları" + }, + "deleteServiceAccounts": { + "message": "Hizmet Hesaplarını Sil" + }, + "deleteServiceAccount": { + "message": "Hizmet Hesabını Sil" + }, + "viewServiceAccount": { + "message": "Hizmet Hesabını Görüntüle" + }, + "searchServiceAccounts": { + "message": "Hizmet Hesaplarını Ara" + }, + "addProject": { + "message": "Proje Ekle" + }, + "projectEdited": { + "message": "Proje düzenlendi" + }, + "projectSaved": { + "message": "Proje kaydedildi" + }, + "projectCreated": { + "message": "Proje oluşturuldu" + }, + "projectName": { + "message": "Proje Adı" + }, + "newProject": { + "message": "Yeni Proje" + }, + "softDeleteSecretWarning": { + "message": "Sırların silinmesi mevcut entegrasyonları etkileyebilir." + }, + "softDeletesSuccessToast": { + "message": "Çöpe atılan sırlar" + }, + "serviceAccountCreated": { + "message": "Hizmet Hesabı Oluşturuldu" + }, + "smAccess": { + "message": "Erişim" + }, + "projectCommaSecret": { + "message": "Proje, Gizli" + }, + "serviceAccountName": { + "message": "Hizmet hesabı adı" + }, + "newSaSelectAccess": { + "message": "Projeleri veya Sırları Yazın veya Seçin" + }, + "newSaTypeToFilter": { + "message": "Filtrelemek için yaz" + }, + "deleteProjectsToast": { + "message": "Silinen projeler" + }, + "deleteProjectToast": { + "message": "Proje ve ilişkili tüm sırlar silindi" + }, + "deleteProjectDialogMessage": { + "message": "$PROJECT$ projesinin silinmesi kalıcıdır ve geri döndürülemez.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Devam etmek için \"$CONFIRM$\" yazın", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Projeyi sil", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "$COUNT$ Projelerini Sil", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Projelerin silinmesi kalıcıdır ve geri döndürülemez." + }, + "projectsNoItemsTitle": { + "message": "Sergilenecek proje yok" + }, + "projectsNoItemsMessage": { + "message": "Sırları düzenlemeye başlamak için yeni bir proje ekleyin." + }, + "smConfirmationRequired": { + "message": "Onaylama gerekli" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Aşağıdaki projeler silinememiştir:" + }, + "softDeleteSuccessToast": { + "message": "Çöpe atılan sır" + }, + "searchProjects": { + "message": "Projeleri ara" + }, + "accessTokens": { + "message": "Erişim anahtarları" + }, + "createAccessToken": { + "message": "Erişim anahtarı oluşturma" + }, + "expires": { + "message": "Bitiş tarihi" + }, + "canRead": { + "message": "Okuyabilir" + }, + "accessTokensNoItemsTitle": { + "message": "Gösterilecek erişim anahtarları yok" + }, + "accessTokensNoItemsDesc": { + "message": "Başlamak için bir erişim anahtarı oluşturun" + }, + "downloadAccessToken": { + "message": "Kapatmadan önce indirin veya kopyalayın." + }, + "expiresOnAccessToken": { + "message": "Bitiş tarihi:" + }, + "accessTokenCallOutTitle": { + "message": "Erişim anahtarları saklanmaz ve geri alınamaz" + }, + "copyToken": { + "message": "Erişim anahtarını kopyala" + }, + "accessToken": { + "message": "Erişim anahtarı" + }, + "accessTokenExpirationRequired": { + "message": "Son kullanma tarihi gerekli" + }, + "accessTokenCreatedAndCopied": { + "message": "Erişim anahtarı oluşturuldu ve panoya kopyalandı" + }, + "accessTokenPermissionsBetaNotification": { + "message": "İzin yönetimi beta sürümünde kullanılamıyor." + }, + "revokeAccessToken": { + "message": "Erişim anahtarını İptal Et" + }, + "submenu": { + "message": "Alt menü" + }, "from": { "message": "Kimden" }, diff --git a/apps/web/src/locales/uk/messages.json b/apps/web/src/locales/uk/messages.json index e4c4ba24b64..2046d4b9616 100644 --- a/apps/web/src/locales/uk/messages.json +++ b/apps/web/src/locales/uk/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Очистити все" }, + "projects": { + "message": "Проєкти" + }, + "lastEdited": { + "message": "Востаннє редаговано" + }, + "editSecret": { + "message": "Редагувати секрет" + }, + "addSecret": { + "message": "Додати секрет" + }, + "copySecretName": { + "message": "Копіювати назву секрету" + }, + "copySecretValue": { + "message": "Копіювати значення секрету" + }, + "deleteSecret": { + "message": "Видалити секрет" + }, + "deleteSecrets": { + "message": "Видалити секрети" + }, + "project": { + "message": "Проєкт" + }, + "editProject": { + "message": "Редагувати проєкт" + }, + "viewProject": { + "message": "Переглянути проєкт" + }, + "deleteProject": { + "message": "Видалити проєкт" + }, + "deleteProjects": { + "message": "Видалити проєкти" + }, + "secret": { + "message": "Секрет" + }, + "serviceAccount": { + "message": "Службовий обліковий запис" + }, + "serviceAccounts": { + "message": "Службові облікові записи" + }, + "new": { + "message": "Новий" + }, + "secrets": { + "message": "Секрети" + }, + "nameValuePair": { + "message": "Пара – Назва/Значення" + }, + "secretEdited": { + "message": "Секрет відредаговано" + }, + "secretCreated": { + "message": "Секрет створено" + }, + "newSecret": { + "message": "Новий секрет" + }, + "newServiceAccount": { + "message": "Новий службовий обліковий запис" + }, + "secretsNoItemsTitle": { + "message": "Немає секретів для показу" + }, + "secretsNoItemsMessage": { + "message": "Для початку додайте або імпортуйте секрети." + }, + "serviceAccountsNoItemsTitle": { + "message": "Наразі немає даних для показу" + }, + "serviceAccountsNoItemsMessage": { + "message": "Створіть новий службовий обліковий запис, щоб почати автоматизацію доступу до секретів." + }, + "searchSecrets": { + "message": "Шукати секрети" + }, + "deleteServiceAccounts": { + "message": "Видалити службові облікові записи" + }, + "deleteServiceAccount": { + "message": "Видалити службовий обліковий запис" + }, + "viewServiceAccount": { + "message": "Переглянути службовий обліковий запис" + }, + "searchServiceAccounts": { + "message": "Пошук службових облікових записів" + }, + "addProject": { + "message": "Додати проєкт" + }, + "projectEdited": { + "message": "Проєкт відредаговано" + }, + "projectSaved": { + "message": "Проєкт збережено" + }, + "projectCreated": { + "message": "Проєкт створено" + }, + "projectName": { + "message": "Назва проєкту" + }, + "newProject": { + "message": "Новий проєкт" + }, + "softDeleteSecretWarning": { + "message": "Видалення секретів може вплинути на наявні інтеграції." + }, + "softDeletesSuccessToast": { + "message": "Секрети переміщено до смітника" + }, + "serviceAccountCreated": { + "message": "Службовий обліковий запис створено" + }, + "smAccess": { + "message": "Доступ" + }, + "projectCommaSecret": { + "message": "Проєкт, секрет" + }, + "serviceAccountName": { + "message": "Назва сервісного облікового запису" + }, + "newSaSelectAccess": { + "message": "Введіть або виберіть проєкти чи секрети" + }, + "newSaTypeToFilter": { + "message": "Введіть, щоб фільтрувати" + }, + "deleteProjectsToast": { + "message": "Проєкти видалено" + }, + "deleteProjectToast": { + "message": "Проєкт і всі пов'язані секрети було видалено" + }, + "deleteProjectDialogMessage": { + "message": "Видалення проєкту $PROJECT$ – незворотна дія.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Введіть \"$CONFIRM$\" для продовження", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Видалити $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Видалити $COUNT$ проєктів", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Видалення проєктів – це незворотна дія." + }, + "projectsNoItemsTitle": { + "message": "Немає проєктів для показу" + }, + "projectsNoItemsMessage": { + "message": "Додайте новий проєкт, щоб почати організовувати секрети." + }, + "smConfirmationRequired": { + "message": "Потрібне підтвердження" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "Зазначені проєкти неможливо видалити:" + }, + "softDeleteSuccessToast": { + "message": "Секрет переміщено до смітника" + }, + "searchProjects": { + "message": "Шукати проєкти" + }, + "accessTokens": { + "message": "Токени доступу" + }, + "createAccessToken": { + "message": "Створити токен доступу" + }, + "expires": { + "message": "Завершується" + }, + "canRead": { + "message": "Може читати" + }, + "accessTokensNoItemsTitle": { + "message": "Немає токенів доступу" + }, + "accessTokensNoItemsDesc": { + "message": "Щоб розпочати, створіть токен доступу" + }, + "downloadAccessToken": { + "message": "Завантажте чи скопіюйте перед закриттям." + }, + "expiresOnAccessToken": { + "message": "Завершується:" + }, + "accessTokenCallOutTitle": { + "message": "Токени доступу не зберігаються і не можуть бути завантажені" + }, + "copyToken": { + "message": "Копіювати токен" + }, + "accessToken": { + "message": "Токен доступу" + }, + "accessTokenExpirationRequired": { + "message": "Дата завершення обов'язкова" + }, + "accessTokenCreatedAndCopied": { + "message": "Токен доступу створено і скопійовано до буфера обміну" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Керування дозволами недоступне у бета-версії." + }, + "revokeAccessToken": { + "message": "Відкликати токен доступу" + }, + "submenu": { + "message": "Підменю" + }, "from": { "message": "Від" }, diff --git a/apps/web/src/locales/vi/messages.json b/apps/web/src/locales/vi/messages.json index 74370c028cd..b99fa4103de 100644 --- a/apps/web/src/locales/vi/messages.json +++ b/apps/web/src/locales/vi/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "Clear all" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "From" }, diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index 8dd6dfe2521..6919c854738 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -2459,7 +2459,7 @@ "message": "用户" }, "userDesc": { - "message": "访问并将项目添加到已分配的集合" + "message": "访问项目和将项目添加到已分配的集合" }, "manager": { "message": "经理" @@ -4744,7 +4744,7 @@ "message": "客户 ID" }, "clientSecret": { - "message": "客户密钥" + "message": "客户机密" }, "metadataAddress": { "message": "元数据地址" @@ -4846,7 +4846,7 @@ "message": "最多 6 个用户的高级访问权限" }, "sponsoredFamiliesSharedCollections": { - "message": "用于家庭账号密码共享的集合" + "message": "用于家庭机密的共享集合" }, "badToken": { "message": "链接已失效。请让赞助方重新发送邀请。" @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "清除全部" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "上次编辑时间" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "服务账户" + }, + "serviceAccounts": { + "message": "服务帐户" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "名称/值对" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "还没有要显示的内容" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "删除服务账户" + }, + "deleteServiceAccount": { + "message": "删除服务帐户" + }, + "viewServiceAccount": { + "message": "查看服务账户" + }, + "searchServiceAccounts": { + "message": "搜索服务账户" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "服务帐户已创建" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "服务账户名称" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "键入以筛选" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "输入「$CONFIRM$」以继续", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "删除 $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "需要确认" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "访问令牌" + }, + "createAccessToken": { + "message": "创建访问令牌" + }, + "expires": { + "message": "到期" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "没有可显示的访问令牌" + }, + "accessTokensNoItemsDesc": { + "message": "要开始,请创建一个访问令牌" + }, + "downloadAccessToken": { + "message": "关闭前下载或复制。" + }, + "expiresOnAccessToken": { + "message": "有效期至:" + }, + "accessTokenCallOutTitle": { + "message": "访问令牌未存储,无法获取" + }, + "copyToken": { + "message": "复制令牌" + }, + "accessToken": { + "message": "访问令牌" + }, + "accessTokenExpirationRequired": { + "message": "到期日期是必需的。" + }, + "accessTokenCreatedAndCopied": { + "message": "访问令牌已创建且已复制到剪贴板" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Beta 版中的权限管理不可用。" + }, + "revokeAccessToken": { + "message": "撤销访问令牌" + }, + "submenu": { + "message": "子菜单" + }, "from": { "message": "从" }, diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json index aac3c6302c2..e98f1720f1a 100644 --- a/apps/web/src/locales/zh_TW/messages.json +++ b/apps/web/src/locales/zh_TW/messages.json @@ -5487,6 +5487,255 @@ "multiSelectClearAll": { "message": "全部清除" }, + "projects": { + "message": "Projects" + }, + "lastEdited": { + "message": "Last Edited" + }, + "editSecret": { + "message": "Edit Secret" + }, + "addSecret": { + "message": "Add Secret" + }, + "copySecretName": { + "message": "Copy Secret Name" + }, + "copySecretValue": { + "message": "Copy Secret Value" + }, + "deleteSecret": { + "message": "Delete Secret" + }, + "deleteSecrets": { + "message": "Delete Secrets" + }, + "project": { + "message": "Project" + }, + "editProject": { + "message": "Edit Project" + }, + "viewProject": { + "message": "View Project" + }, + "deleteProject": { + "message": "Delete Project" + }, + "deleteProjects": { + "message": "Delete Projects" + }, + "secret": { + "message": "Secret" + }, + "serviceAccount": { + "message": "Service Account" + }, + "serviceAccounts": { + "message": "Service Accounts" + }, + "new": { + "message": "New" + }, + "secrets": { + "message": "Secrets" + }, + "nameValuePair": { + "message": "Name/Value Pair" + }, + "secretEdited": { + "message": "Secret edited" + }, + "secretCreated": { + "message": "Secret created" + }, + "newSecret": { + "message": "New Secret" + }, + "newServiceAccount": { + "message": "New Service Account" + }, + "secretsNoItemsTitle": { + "message": "No secrets to show" + }, + "secretsNoItemsMessage": { + "message": "To get started, add a new secret or import secrets." + }, + "serviceAccountsNoItemsTitle": { + "message": "Nothing to show yet" + }, + "serviceAccountsNoItemsMessage": { + "message": "Create a new Service Account to get started automating secret access." + }, + "searchSecrets": { + "message": "Search Secrets" + }, + "deleteServiceAccounts": { + "message": "Delete Service Accounts" + }, + "deleteServiceAccount": { + "message": "Delete Service Account" + }, + "viewServiceAccount": { + "message": "View Service Account" + }, + "searchServiceAccounts": { + "message": "Search Service Accounts" + }, + "addProject": { + "message": "Add Project" + }, + "projectEdited": { + "message": "Project edited" + }, + "projectSaved": { + "message": "Project saved" + }, + "projectCreated": { + "message": "Project created" + }, + "projectName": { + "message": "Project Name" + }, + "newProject": { + "message": "New Project" + }, + "softDeleteSecretWarning": { + "message": "Deleting secrets can affect existing integrations." + }, + "softDeletesSuccessToast": { + "message": "Secrets sent to trash" + }, + "serviceAccountCreated": { + "message": "Service Account Created" + }, + "smAccess": { + "message": "Access" + }, + "projectCommaSecret": { + "message": "Project, Secret" + }, + "serviceAccountName": { + "message": "Service account name" + }, + "newSaSelectAccess": { + "message": "Type or Select Projects or Secrets" + }, + "newSaTypeToFilter": { + "message": "Type to Filter" + }, + "deleteProjectsToast": { + "message": "Projects deleted" + }, + "deleteProjectToast": { + "message": "The project and all associated secrets have been deleted" + }, + "deleteProjectDialogMessage": { + "message": "Deleting project $PROJECT$ is permanent and irreversible.", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectInputLabel": { + "message": "Type \"$CONFIRM$\" to continue", + "placeholders": { + "confirm": { + "content": "$1", + "example": "Delete 3 Projects" + } + } + }, + "deleteProjectConfirmMessage": { + "message": "Delete $PROJECT$", + "placeholders": { + "project": { + "content": "$1", + "example": "project name" + } + } + }, + "deleteProjectsConfirmMessage": { + "message": "Delete $COUNT$ Projects", + "placeholders": { + "count": { + "content": "$1", + "example": "2" + } + } + }, + "deleteProjectsDialogMessage": { + "message": "Deleting projects is permanent and irreversible." + }, + "projectsNoItemsTitle": { + "message": "No projects to display" + }, + "projectsNoItemsMessage": { + "message": "Add a new project to get started organizing secrets." + }, + "smConfirmationRequired": { + "message": "Confirmation required" + }, + "bulkDeleteProjectsErrorMessage": { + "message": "The following projects could not be deleted:" + }, + "softDeleteSuccessToast": { + "message": "Secret sent to trash" + }, + "searchProjects": { + "message": "Search Projects" + }, + "accessTokens": { + "message": "Access tokens" + }, + "createAccessToken": { + "message": "Create access token" + }, + "expires": { + "message": "Expires" + }, + "canRead": { + "message": "Can Read" + }, + "accessTokensNoItemsTitle": { + "message": "No access tokens to show" + }, + "accessTokensNoItemsDesc": { + "message": "To get started, create an access token" + }, + "downloadAccessToken": { + "message": "Download or copy before closing." + }, + "expiresOnAccessToken": { + "message": "Expires on:" + }, + "accessTokenCallOutTitle": { + "message": "Access tokens are not stored and cannot be retrieved" + }, + "copyToken": { + "message": "Copy token" + }, + "accessToken": { + "message": "Access token" + }, + "accessTokenExpirationRequired": { + "message": "Expiration date required" + }, + "accessTokenCreatedAndCopied": { + "message": "Access token created and copied to clipboard" + }, + "accessTokenPermissionsBetaNotification": { + "message": "Permissions management is unavailable for beta." + }, + "revokeAccessToken": { + "message": "Revoke Access Token" + }, + "submenu": { + "message": "Submenu" + }, "from": { "message": "從" }, From 3d008da2879beff89ddd2f274557b5422a4349c5 Mon Sep 17 00:00:00 2001 From: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com> Date: Fri, 16 Dec 2022 15:11:37 -0500 Subject: [PATCH 17/20] Web - SG-668 update flows for free 2 person orgs (#4093) * People-component - Minor refactoring - Make org a comp prop instead of creating multiple component props for props on the org object * Added IconDirective to Dialog.module so that bit-dialog-icon directive can work within components * SG-668 - #2 - If a free org has members (any status) at max seat limit, then prompt for upgrade with dialog which takes you to upgrade flow on billing/subscription management page * SG-668 - (1) Refactored upgrade dialog to accept translated body text for better re-usability (2) Completed task #3 - If user has max collections for free org and tries to add a 3rd, they are prompted via upgrade dialog. * SG-668 - Update equality checks to use strict equality * SG-668 - Upgrade dialog now shows contextual body text based on if the user can manage billing or not --- .../organization-subscription.component.ts | 4 + .../manage/collections.component.ts | 32 ++++- .../org-upgrade-dialog.component.html | 33 ++++++ .../org-upgrade-dialog.component.ts | 19 +++ .../manage/people.component.html | 4 +- .../organizations/manage/people.component.ts | 111 +++++++++++------- .../app/organizations/organization.module.ts | 2 + apps/web/src/locales/en/messages.json | 36 ++++++ libs/components/src/dialog/dialog.module.ts | 11 +- 9 files changed, 205 insertions(+), 47 deletions(-) create mode 100644 apps/web/src/app/organizations/manage/org-upgrade-dialog/org-upgrade-dialog.component.html create mode 100644 apps/web/src/app/organizations/manage/org-upgrade-dialog/org-upgrade-dialog.component.ts diff --git a/apps/web/src/app/organizations/billing/organization-subscription.component.ts b/apps/web/src/app/organizations/billing/organization-subscription.component.ts index 803be05097c..1cfbd7ef868 100644 --- a/apps/web/src/app/organizations/billing/organization-subscription.component.ts +++ b/apps/web/src/app/organizations/billing/organization-subscription.component.ts @@ -75,6 +75,10 @@ export class OrganizationSubscriptionComponent implements OnInit, OnDestroy { } async ngOnInit() { + if (this.route.snapshot.queryParamMap.get("upgrade")) { + this.changePlan(); + } + this.route.params .pipe( concatMap(async (params) => { diff --git a/apps/web/src/app/organizations/manage/collections.component.ts b/apps/web/src/app/organizations/manage/collections.component.ts index 111b0cd139d..1c733281c65 100644 --- a/apps/web/src/app/organizations/manage/collections.component.ts +++ b/apps/web/src/app/organizations/manage/collections.component.ts @@ -10,6 +10,7 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; +import { ProductType } from "@bitwarden/common/enums/productType"; import { CollectionData } from "@bitwarden/common/models/data/collection.data"; import { Collection } from "@bitwarden/common/models/domain/collection"; import { Organization } from "@bitwarden/common/models/domain/organization"; @@ -19,9 +20,11 @@ import { } from "@bitwarden/common/models/response/collection.response"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { DialogService } from "@bitwarden/components"; import { CollectionAddEditComponent } from "./collection-add-edit.component"; import { EntityUsersComponent } from "./entity-users.component"; +import { OrgUpgradeDialogComponent } from "./org-upgrade-dialog/org-upgrade-dialog.component"; @Component({ selector: "app-org-manage-collections", @@ -56,7 +59,8 @@ export class CollectionsComponent implements OnInit { private platformUtilsService: PlatformUtilsService, private searchService: SearchService, private logService: LogService, - private organizationService: OrganizationService + private organizationService: OrganizationService, + private dialogService: DialogService ) {} async ngOnInit() { @@ -126,6 +130,32 @@ export class CollectionsComponent implements OnInit { return; } + if ( + !collection && + this.organization.planProductType === ProductType.Free && + this.collections.length === this.organization.maxCollections + ) { + // Show org upgrade modal + const dialogBodyText = this.organization.canManageBilling + ? this.i18nService.t( + "freeOrgMaxCollectionReachedManageBilling", + this.organization.maxCollections.toString() + ) + : this.i18nService.t( + "freeOrgMaxCollectionReachedNoManageBilling", + this.organization.maxCollections.toString() + ); + + this.dialogService.open(OrgUpgradeDialogComponent, { + data: { + orgId: this.organization.id, + dialogBodyText: dialogBodyText, + orgCanManageBilling: this.organization.canManageBilling, + }, + }); + return; + } + const [modal] = await this.modalService.openViewRef( CollectionAddEditComponent, this.addEditModalRef, diff --git a/apps/web/src/app/organizations/manage/org-upgrade-dialog/org-upgrade-dialog.component.html b/apps/web/src/app/organizations/manage/org-upgrade-dialog/org-upgrade-dialog.component.html new file mode 100644 index 00000000000..16e99d76ff6 --- /dev/null +++ b/apps/web/src/app/organizations/manage/org-upgrade-dialog/org-upgrade-dialog.component.html @@ -0,0 +1,33 @@ + + + {{ "upgradeOrganization" | i18n }} + + {{ data.dialogBodyText }} + +
+ + + + + + + + +
+
diff --git a/apps/web/src/app/organizations/manage/org-upgrade-dialog/org-upgrade-dialog.component.ts b/apps/web/src/app/organizations/manage/org-upgrade-dialog/org-upgrade-dialog.component.ts new file mode 100644 index 00000000000..9ebdef9be1a --- /dev/null +++ b/apps/web/src/app/organizations/manage/org-upgrade-dialog/org-upgrade-dialog.component.ts @@ -0,0 +1,19 @@ +import { DialogRef, DIALOG_DATA } from "@angular/cdk/dialog"; +import { Component, Inject } from "@angular/core"; + +export interface OrgUpgradeDialogData { + orgId: string; + orgCanManageBilling: boolean; + dialogBodyText: string; +} + +@Component({ + selector: "app-org-upgrade-dialog", + templateUrl: "org-upgrade-dialog.component.html", +}) +export class OrgUpgradeDialogComponent { + constructor( + public dialogRef: DialogRef, + @Inject(DIALOG_DATA) public data: OrgUpgradeDialogData + ) {} +} diff --git a/apps/web/src/app/organizations/manage/people.component.html b/apps/web/src/app/organizations/manage/people.component.html index a032aa41586..81374668a4d 100644 --- a/apps/web/src/app/organizations/manage/people.component.html +++ b/apps/web/src/app/organizations/manage/people.component.html @@ -221,7 +221,7 @@ href="#" appStopClick (click)="groups(u)" - *ngIf="accessGroups" + *ngIf="organization.useGroups" > {{ "groups" | i18n }} @@ -231,7 +231,7 @@ href="#" appStopClick (click)="events(u)" - *ngIf="accessEvents && u.status === userStatusType.Confirmed" + *ngIf="organization.useEvents && u.status === userStatusType.Confirmed" > {{ "eventLogs" | i18n }} diff --git a/apps/web/src/app/organizations/manage/people.component.ts b/apps/web/src/app/organizations/manage/people.component.ts index 8fb4e789a5f..0055b597176 100644 --- a/apps/web/src/app/organizations/manage/people.component.ts +++ b/apps/web/src/app/organizations/manage/people.component.ts @@ -20,12 +20,15 @@ import { ValidationService } from "@bitwarden/common/abstractions/validation.ser import { OrganizationUserStatusType } from "@bitwarden/common/enums/organizationUserStatusType"; import { OrganizationUserType } from "@bitwarden/common/enums/organizationUserType"; import { PolicyType } from "@bitwarden/common/enums/policyType"; +import { ProductType } from "@bitwarden/common/enums/productType"; +import { Organization } from "@bitwarden/common/models/domain/organization"; import { OrganizationKeysRequest } from "@bitwarden/common/models/request/organization-keys.request"; import { OrganizationUserBulkRequest } from "@bitwarden/common/models/request/organization-user-bulk.request"; import { OrganizationUserConfirmRequest } from "@bitwarden/common/models/request/organization-user-confirm.request"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; import { OrganizationUserBulkResponse } from "@bitwarden/common/models/response/organization-user-bulk.response"; import { OrganizationUserUserDetailsResponse } from "@bitwarden/common/models/response/organization-user.response"; +import { DialogService } from "@bitwarden/components"; import { BasePeopleComponent } from "../../common/base.people.component"; @@ -34,6 +37,7 @@ import { BulkRemoveComponent } from "./bulk/bulk-remove.component"; import { BulkRestoreRevokeComponent } from "./bulk/bulk-restore-revoke.component"; import { BulkStatusComponent } from "./bulk/bulk-status.component"; import { EntityEventsComponent } from "./entity-events.component"; +import { OrgUpgradeDialogComponent } from "./org-upgrade-dialog/org-upgrade-dialog.component"; import { ResetPasswordComponent } from "./reset-password.component"; import { UserAddEditComponent } from "./user-add-edit.component"; import { UserGroupsComponent } from "./user-groups.component"; @@ -65,15 +69,9 @@ export class PeopleComponent userType = OrganizationUserType; userStatusType = OrganizationUserStatusType; - organizationId: string; + organization: Organization; status: OrganizationUserStatusType = null; - accessEvents = false; - accessGroups = false; - canResetPassword = false; // User permission (admin/custom) - orgUseResetPassword = false; // Org plan ability - orgHasKeys = false; // Org public/private keys orgResetPasswordPolicyEnabled = false; - callingUserType: OrganizationUserType = null; private destroy$ = new Subject(); @@ -93,7 +91,8 @@ export class PeopleComponent private syncService: SyncService, stateService: StateService, private organizationService: OrganizationService, - private organizationApiService: OrganizationApiServiceAbstraction + private organizationApiService: OrganizationApiServiceAbstraction, + private dialogService: DialogService ) { super( apiService, @@ -114,26 +113,23 @@ export class PeopleComponent combineLatest([this.route.params, this.route.queryParams, this.policyService.policies$]) .pipe( concatMap(async ([params, qParams, policies]) => { - this.organizationId = params.organizationId; - const organization = await this.organizationService.get(this.organizationId); - this.accessEvents = organization.useEvents; - this.accessGroups = organization.useGroups; - this.canResetPassword = organization.canManageUsersPassword; - this.orgUseResetPassword = organization.useResetPassword; - this.callingUserType = organization.type; - this.orgHasKeys = organization.hasPublicAndPrivateKeys; + this.organization = await this.organizationService.get(params.organizationId); // Backfill pub/priv key if necessary - if (this.canResetPassword && !this.orgHasKeys) { - const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId); + if ( + this.organization.canManageUsersPassword && + !this.organization.hasPublicAndPrivateKeys + ) { + const orgShareKey = await this.cryptoService.getOrgKey(this.organization.id); const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey); const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString); const response = await this.organizationApiService.updateKeys( - this.organizationId, + this.organization.id, request ); if (response != null) { - this.orgHasKeys = response.publicKey != null && response.privateKey != null; + this.organization.hasPublicAndPrivateKeys = + response.publicKey != null && response.privateKey != null; await this.syncService.fullSync(true); // Replace oganizations with new data } else { throw new Error(this.i18nService.t("resetPasswordOrgKeysError")); @@ -142,7 +138,7 @@ export class PeopleComponent const resetPasswordPolicy = policies .filter((policy) => policy.type === PolicyType.ResetPassword) - .find((p) => p.organizationId === this.organizationId); + .find((p) => p.organizationId === this.organization.id); this.orgResetPasswordPolicyEnabled = resetPasswordPolicy?.enabled; await this.load(); @@ -171,41 +167,41 @@ export class PeopleComponent } getUsers(): Promise> { - return this.apiService.getOrganizationUsers(this.organizationId); + return this.apiService.getOrganizationUsers(this.organization.id); } deleteUser(id: string): Promise { - return this.apiService.deleteOrganizationUser(this.organizationId, id); + return this.apiService.deleteOrganizationUser(this.organization.id, id); } revokeUser(id: string): Promise { - return this.apiService.revokeOrganizationUser(this.organizationId, id); + return this.apiService.revokeOrganizationUser(this.organization.id, id); } restoreUser(id: string): Promise { - return this.apiService.restoreOrganizationUser(this.organizationId, id); + return this.apiService.restoreOrganizationUser(this.organization.id, id); } reinviteUser(id: string): Promise { - return this.apiService.postOrganizationUserReinvite(this.organizationId, id); + return this.apiService.postOrganizationUserReinvite(this.organization.id, id); } async confirmUser( user: OrganizationUserUserDetailsResponse, publicKey: Uint8Array ): Promise { - const orgKey = await this.cryptoService.getOrgKey(this.organizationId); + const orgKey = await this.cryptoService.getOrgKey(this.organization.id); const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer); const request = new OrganizationUserConfirmRequest(); request.key = key.encryptedString; - await this.apiService.postOrganizationUserConfirm(this.organizationId, user.id, request); + await this.apiService.postOrganizationUserConfirm(this.organization.id, user.id, request); } allowResetPassword(orgUser: OrganizationUserUserDetailsResponse): boolean { // Hierarchy check let callingUserHasPermission = false; - switch (this.callingUserType) { + switch (this.organization.type) { case OrganizationUserType.Owner: callingUserHasPermission = true; break; @@ -221,10 +217,10 @@ export class PeopleComponent // Final return ( - this.canResetPassword && + this.organization.canManageUsersPassword && callingUserHasPermission && - this.orgUseResetPassword && - this.orgHasKeys && + this.organization.useResetPassword && + this.organization.hasPublicAndPrivateKeys && orgUser.resetPasswordEnrolled && this.orgResetPasswordPolicyEnabled && orgUser.status === OrganizationUserStatusType.Confirmed @@ -233,20 +229,51 @@ export class PeopleComponent showEnrolledStatus(orgUser: OrganizationUserUserDetailsResponse): boolean { return ( - this.orgUseResetPassword && + this.organization.useResetPassword && orgUser.resetPasswordEnrolled && this.orgResetPasswordPolicyEnabled ); } async edit(user: OrganizationUserUserDetailsResponse) { + // Invite User: Add Flow + // Click on user email: Edit Flow + + // User attempting to invite new users in a free org with max users + if ( + !user && + this.organization.planProductType === ProductType.Free && + this.users.length === this.organization.seats + ) { + // Show org upgrade modal + + const dialogBodyText = this.organization.canManageBilling + ? this.i18nService.t( + "freeOrgInvLimitReachedManageBilling", + this.organization.seats.toString() + ) + : this.i18nService.t( + "freeOrgInvLimitReachedNoManageBilling", + this.organization.seats.toString() + ); + + this.dialogService.open(OrgUpgradeDialogComponent, { + data: { + orgId: this.organization.id, + orgCanManageBilling: this.organization.canManageBilling, + dialogBodyText: dialogBodyText, + }, + }); + return; + } + const [modal] = await this.modalService.openViewRef( UserAddEditComponent, this.addEditModalRef, (comp) => { comp.name = this.userNamePipe.transform(user); - comp.organizationId = this.organizationId; - comp.organizationUserId = user != null ? user.id : null; + comp.organizationId = this.organization.id; + comp.organizationUserId = user?.id || null; comp.usesKeyConnector = user?.usesKeyConnector; // eslint-disable-next-line rxjs-angular/prefer-takeuntil comp.onSavedUser.subscribe(() => { @@ -278,7 +305,7 @@ export class PeopleComponent this.groupsModalRef, (comp) => { comp.name = this.userNamePipe.transform(user); - comp.organizationId = this.organizationId; + comp.organizationId = this.organization.id; comp.organizationUserId = user != null ? user.id : null; // eslint-disable-next-line rxjs-angular/prefer-takeuntil comp.onSavedUser.subscribe(() => { @@ -297,7 +324,7 @@ export class PeopleComponent BulkRemoveComponent, this.bulkRemoveModalRef, (comp) => { - comp.organizationId = this.organizationId; + comp.organizationId = this.organization.id; comp.users = this.getCheckedUsers(); } ); @@ -322,7 +349,7 @@ export class PeopleComponent const ref = this.modalService.open(BulkRestoreRevokeComponent, { allowMultipleModals: true, data: { - organizationId: this.organizationId, + organizationId: this.organization.id, users: this.getCheckedUsers(), isRevoking: isRevoking, }, @@ -352,7 +379,7 @@ export class PeopleComponent try { const request = new OrganizationUserBulkRequest(filteredUsers.map((user) => user.id)); const response = this.apiService.postManyOrganizationUserReinvite( - this.organizationId, + this.organization.id, request ); this.showBulkStatus( @@ -376,7 +403,7 @@ export class PeopleComponent BulkConfirmComponent, this.bulkConfirmModalRef, (comp) => { - comp.organizationId = this.organizationId; + comp.organizationId = this.organization.id; comp.users = this.getCheckedUsers(); } ); @@ -388,7 +415,7 @@ export class PeopleComponent async events(user: OrganizationUserUserDetailsResponse) { await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => { comp.name = this.userNamePipe.transform(user); - comp.organizationId = this.organizationId; + comp.organizationId = this.organization.id; comp.entityId = user.id; comp.showUser = false; comp.entity = "user"; @@ -402,7 +429,7 @@ export class PeopleComponent (comp) => { comp.name = this.userNamePipe.transform(user); comp.email = user != null ? user.email : null; - comp.organizationId = this.organizationId; + comp.organizationId = this.organization.id; comp.id = user != null ? user.id : null; // eslint-disable-next-line rxjs-angular/prefer-takeuntil diff --git a/apps/web/src/app/organizations/organization.module.ts b/apps/web/src/app/organizations/organization.module.ts index d894f53e098..db2e13320a6 100644 --- a/apps/web/src/app/organizations/organization.module.ts +++ b/apps/web/src/app/organizations/organization.module.ts @@ -1,10 +1,12 @@ import { NgModule } from "@angular/core"; import { AccessSelectorModule } from "./components/access-selector"; +import { OrgUpgradeDialogComponent } from "./manage/org-upgrade-dialog/org-upgrade-dialog.component"; import { OrganizationsRoutingModule } from "./organization-routing.module"; import { SharedOrganizationModule } from "./shared"; @NgModule({ imports: [SharedOrganizationModule, AccessSelectorModule, OrganizationsRoutingModule], + declarations: [OrgUpgradeDialogComponent], }) export class OrganizationModule {} diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index aa27478ea7d..726d8da64ec 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -5771,5 +5771,41 @@ }, "memberAccessAll": { "message": "This member can access and modify all items." + }, + "freeOrgInvLimitReachedManageBilling": { + "message": "Free organizations may have up to $SEATCOUNT$ members. Upgrade to a paid plan to invite more members.", + "placeholders": { + "seatcount": { + "content": "$1", + "example": "2" + } + } + }, + "freeOrgInvLimitReachedNoManageBilling": { + "message": "Free organizations may have up to $SEATCOUNT$ members. Contact your organization owner to upgrade.", + "placeholders": { + "seatcount": { + "content": "$1", + "example": "2" + } + } + }, + "freeOrgMaxCollectionReachedManageBilling": { + "message": "Free organizations may have up to $COLLECTIONCOUNT$ collections. Upgrade to a paid plan to add more collections.", + "placeholders": { + "COLLECTIONCOUNT": { + "content": "$1", + "example": "2" + } + } + }, + "freeOrgMaxCollectionReachedNoManageBilling": { + "message": "Free organizations may have up to $COLLECTIONCOUNT$ collections. Contact your organization owner to upgrade.", + "placeholders": { + "COLLECTIONCOUNT": { + "content": "$1", + "example": "2" + } + } } } diff --git a/libs/components/src/dialog/dialog.module.ts b/libs/components/src/dialog/dialog.module.ts index 421ebded717..3932c0c85e5 100644 --- a/libs/components/src/dialog/dialog.module.ts +++ b/libs/components/src/dialog/dialog.module.ts @@ -8,7 +8,7 @@ import { DialogService } from "./dialog.service"; import { DialogComponent } from "./dialog/dialog.component"; import { DialogCloseDirective } from "./directives/dialog-close.directive"; import { DialogTitleContainerDirective } from "./directives/dialog-title-container.directive"; -import { SimpleDialogComponent } from "./simple-dialog/simple-dialog.component"; +import { IconDirective, SimpleDialogComponent } from "./simple-dialog/simple-dialog.component"; @NgModule({ imports: [SharedModule, IconButtonModule, CdkDialogModule], @@ -17,8 +17,15 @@ import { SimpleDialogComponent } from "./simple-dialog/simple-dialog.component"; DialogTitleContainerDirective, DialogComponent, SimpleDialogComponent, + IconDirective, + ], + exports: [ + CdkDialogModule, + DialogComponent, + SimpleDialogComponent, + DialogCloseDirective, + IconDirective, ], - exports: [CdkDialogModule, DialogComponent, SimpleDialogComponent, DialogCloseDirective], providers: [DialogService], }) export class DialogModule {} From 1f92dcbf208364c95bfcf6ee602453951f2ece12 Mon Sep 17 00:00:00 2001 From: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com> Date: Fri, 16 Dec 2022 15:22:27 -0500 Subject: [PATCH 18/20] Defect/SG-825 - users in org w/ no personal vault still see personal vault (disabled org policies now still apply) (#4094) * SG-825 - policy.service - Apply policies of disabled orgs * SG-825 - OrgFilter - Show org suspended icon when org is disabled and remove personal vault policy enabled * SG-825 - Org Filter refactor - Enterprise users can now access org options to leave orgs without selecting them (previously, you had to select an org to get the options to show up which was not possible for disabled orgs). Users can now leave disabled orgs. * SG-825 - fix aria label compile issue * SG-825 - Browser - Vault filter CSS refactor - (1) Better ellipsis truncation implemented (2) Selected vault and dropdown widths now scale dynamically based on selection and container width * SG-825 - Desktop - (1) Org suspended warning icon now displayed on disabled orgs even when personal vault removed policy applied (2) Org suspended icon now has same accessibility (title / label) as web & browser. --- apps/browser/src/popup/scss/base.scss | 41 ++++++++++-- .../popup/vault/vault-select.component.html | 67 +++++++++++-------- .../organization-filter.component.html | 10 ++- .../organization-filter.component.html | 13 +++- .../src/services/policy/policy.service.ts | 1 - 5 files changed, 94 insertions(+), 38 deletions(-) diff --git a/apps/browser/src/popup/scss/base.scss b/apps/browser/src/popup/scss/base.scss index 8803c73aa66..92c38773dad 100644 --- a/apps/browser/src/popup/scss/base.scss +++ b/apps/browser/src/popup/scss/base.scss @@ -536,10 +536,23 @@ main { } border-radius: $border-radius; padding: 6px 10px; - width: 160px; + width: auto; + max-width: 100%; display: flex; align-items: center; justify-content: space-between; + .org-filter-text-container { + // src: https://css-tricks.com/snippets/css/truncate-string-with-ellipsis/ + display: flex; + flex: 1; + min-width: 0; + + .org-filter-text-name { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } } } .vault-select { @@ -550,9 +563,8 @@ main { @include themify($themes) { background-color: themed("boxBackgroundColor"); } - margin-right: 5px; + margin-right: 18px; margin-top: 1px; - width: 160px; @include themify($themes) { border: 1px solid themed("borderColor"); } @@ -560,7 +572,9 @@ main { button { border: none; background: transparent; - width: 100%; + width: auto; + max-width: 100%; + padding: 5px 10px; text-align: start; @include themify($themes) { @@ -578,6 +592,25 @@ main { background-color: themed("boxBackgroundHoverColor"); } } + + i.vault-select-prefix-icon { + margin-right: 5px; + } + i.vault-select-suffix-icon { + margin-left: 5px; + } + + .vault-select-org-text-container { + display: flex; + flex: 1; + min-width: 0; + align-items: center; + .vault-select-org-name { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } } .border { @include themify($themes) { diff --git a/apps/browser/src/popup/vault/vault-select.component.html b/apps/browser/src/popup/vault/vault-select.component.html index 8ef8c2dc04c..a25f49ebf2d 100644 --- a/apps/browser/src/popup/vault/vault-select.component.html +++ b/apps/browser/src/popup/vault/vault-select.component.html @@ -10,12 +10,16 @@ [attr.aria-expanded]="isOpen" [attr.aria-label]="vaultFilterDisplay" > - {{ vaultFilterDisplay | ellipsis: 45 }}  - + + {{ vaultFilterDisplay }}  + @@ -28,37 +32,42 @@ aria-modal="true" >
diff --git a/apps/desktop/src/app/vault/vault-filter/filters/organization-filter.component.html b/apps/desktop/src/app/vault/vault-filter/filters/organization-filter.component.html index cfec1cf89d0..68aebbf41dd 100644 --- a/apps/desktop/src/app/vault/vault-filter/filters/organization-filter.component.html +++ b/apps/desktop/src/app/vault/vault-filter/filters/organization-filter.component.html @@ -46,6 +46,13 @@  {{ organization.name }} + + + @@ -113,7 +120,8 @@ diff --git a/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html b/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html index 81924ba6433..5f7be8d145b 100644 --- a/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html +++ b/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html @@ -60,6 +60,7 @@ - - - +
  • diff --git a/libs/common/src/services/policy/policy.service.ts b/libs/common/src/services/policy/policy.service.ts index c20682184bc..8b1868f0131 100644 --- a/libs/common/src/services/policy/policy.service.ts +++ b/libs/common/src/services/policy/policy.service.ts @@ -268,7 +268,6 @@ export class PolicyService implements InternalPolicyServiceAbstraction { return organizations.some( (o) => - o.enabled && o.status >= OrganizationUserStatusType.Accepted && o.usePolicies && policySet.has(o.id) && From 2df2f953c2528ed02c3bcc310ae4b9cc2d964719 Mon Sep 17 00:00:00 2001 From: Robyn MacCallum Date: Mon, 19 Dec 2022 08:51:09 -0500 Subject: [PATCH 19/20] [SG-890] Fix routing to org members in trial confirmation (#4255) * Fix routing to org members in trial confirmation * Adjust trial tests with new route --- .../trial-initiation/trial-initiation.component.spec.ts | 4 ++-- .../accounts/trial-initiation/trial-initiation.component.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts index 3dfabfe9f2e..c89a2ff3a15 100644 --- a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts +++ b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts @@ -51,7 +51,7 @@ describe("TrialInitiationComponent", () => { component: BlankComponent, }, { - path: `organizations/${testOrgId}/manage/people`, + path: `organizations/${testOrgId}/manage/members`, component: BlankComponent, }, ]), @@ -301,7 +301,7 @@ describe("TrialInitiationComponent", () => { describe("navigateToOrgVault", () => { it("should call verticalStepper.previous()", fakeAsync(() => { component.navigateToOrgInvite(); - expect(routerSpy).toHaveBeenCalledWith(["organizations", testOrgId, "manage", "people"]); + expect(routerSpy).toHaveBeenCalledWith(["organizations", testOrgId, "manage", "members"]); })); }); }); diff --git a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts index 2f3f75a4a1c..2ed89b8bb56 100644 --- a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts +++ b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts @@ -227,7 +227,7 @@ export class TrialInitiationComponent implements OnInit, OnDestroy { } navigateToOrgInvite() { - this.router.navigate(["organizations", this.orgId, "manage", "people"]); + this.router.navigate(["organizations", this.orgId, "manage", "members"]); } previousStep() { From 7447fa7809801c9ba08fc38b262e1a46246527d8 Mon Sep 17 00:00:00 2001 From: Will Martin Date: Mon, 19 Dec 2022 10:05:13 -0500 Subject: [PATCH 20/20] [SM-308] fix: add word break to table cells in SM (#4239) --- .../projects/projects-list/projects-list.component.html | 2 +- .../service-accounts/service-accounts-list.component.html | 2 +- .../src/app/secrets-manager/shared/secrets-list.component.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.html b/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.html index d31169882b6..b874614316b 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.html +++ b/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-list/projects-list.component.html @@ -50,7 +50,7 @@ - + {{ project.name }} {{ project.revisionDate | date: "medium" }} diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/service-accounts/service-accounts-list.component.html b/bitwarden_license/bit-web/src/app/secrets-manager/service-accounts/service-accounts-list.component.html index 6badffdfc5a..7a12d8bc517 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/service-accounts/service-accounts-list.component.html +++ b/bitwarden_license/bit-web/src/app/secrets-manager/service-accounts/service-accounts-list.component.html @@ -52,7 +52,7 @@ - + {{ serviceAccount.name }} diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.html b/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.html index 156079627a9..33f6298ec7e 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.html +++ b/bitwarden_license/bit-web/src/app/secrets-manager/shared/secrets-list.component.html @@ -51,7 +51,7 @@ - {{ secret.name }} + {{ secret.name }}