diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 103401d1c97..5ba5885d725 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -106,7 +106,7 @@ apps/desktop/desktop_native @bitwarden/team-platform-dev ## Key management team files ## apps/desktop/src/key-management @bitwarden/team-key-management-dev -apps/web/src/key-management @bitwarden/team-key-management-dev +apps/web/src/app/key-management @bitwarden/team-key-management-dev apps/browser/src/key-management @bitwarden/team-key-management-dev apps/cli/src/key-management @bitwarden/team-key-management-dev libs/key-management @bitwarden/team-key-management-dev diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json index 83ea8f797e9..415ade9820b 100644 --- a/apps/browser/src/_locales/ar/messages.json +++ b/apps/browser/src/_locales/ar/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "سجل كلمة المرور" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "رجوع" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "إزالة" diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json index 930624e723d..c041c6c1923 100644 --- a/apps/browser/src/_locales/az/messages.json +++ b/apps/browser/src/_locales/az/messages.json @@ -20,16 +20,16 @@ "message": "Hesab yarat" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Bitwarden-də yenisiniz?" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Keçid açarı ilə giriş et" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Tək daxil olma üsulunu istifadə et" }, "welcomeBack": { - "message": "Welcome back" + "message": "Yenidən xoş gəlmisiniz" }, "setAStrongPassword": { "message": "Güclü bir parol təyin et" @@ -120,7 +120,7 @@ "message": "Parolu kopyala" }, "copyPassphrase": { - "message": "Copy passphrase" + "message": "Keçid ifadəsini kopyala" }, "copyNote": { "message": "Notu kopyala" @@ -168,7 +168,7 @@ "message": "Notları kopyala" }, "fill": { - "message": "Fill", + "message": "Doldur", "description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible." }, "autoFill": { @@ -427,7 +427,7 @@ "message": "Parol yarat" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Keçid ifadələri yarat" }, "regeneratePassword": { "message": "Parolu yenidən yarat" @@ -591,7 +591,7 @@ "message": "Veb saytı başlat" }, "launchWebsiteName": { - "message": "Launch website $ITEMNAME$", + "message": "$ITEMNAME$ veb saytını başlat", "placeholders": { "itemname": { "content": "$1", @@ -846,7 +846,7 @@ "message": "Giriş et" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Bitwarden-ə giriş edin" }, "restartRegistration": { "message": "Qeydiyyatı yenidən başlat" @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Parol tarixçəsi" }, + "generatorHistory": { + "message": "Yaradıcı tarixçəsi" + }, + "clearGeneratorHistoryTitle": { + "message": "Yaradıcı tarixçəsini təmizlə" + }, + "cleargGeneratorHistoryDescription": { + "message": "Davam etsəniz, yaradıcı tarixçəsindəki bütün girişlər həmişəlik silinəcək. Davam etmək istədiyinizə əminsiniz?" + }, "back": { "message": "Geri" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Tarixçəni təmizlə" }, - "noPasswordsToShow": { - "message": "Göstəriləcək parol yoxdur." + "nothingToShow": { + "message": "Göstəriləcək heç nə yoxdur" }, - "noRecentlyGeneratedPassword": { - "message": "Təzəlikcə parol yaratmamısınız." + "nothingGeneratedRecently": { + "message": "Təzəlikcə heç nə yaratmamısınız" }, "remove": { "message": "Çıxart" @@ -4616,19 +4625,19 @@ "message": "Kimlik doğrulama" }, "fillGeneratedPassword": { - "message": "Fill generated password", + "message": "Yaradılmış parolu doldur", "description": "Heading for the password generator within the inline menu" }, "passwordRegenerated": { - "message": "Password regenerated", + "message": "Parol yenidən yaradıldı", "description": "Notification message for when a password has been regenerated" }, "saveLoginToBitwarden": { - "message": "Save login to Bitwarden?", + "message": "Giriş Bitwarden-də saxlanılsın?", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "Boşluq", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { @@ -4636,27 +4645,27 @@ "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { - "message": "Backtick", + "message": "Tərs dırnaq", "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { - "message": "Exclamation mark", + "message": "Nida işarəsi", "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "At işarəsi", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "Diyez işarəsi", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "Dollar işarəsi", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "Faiz işarəsi", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { @@ -4664,108 +4673,108 @@ "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { - "message": "Ampersand", + "message": "Və işarəsi", "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { - "message": "Asterisk", + "message": "Ulduz", "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Left parenthesis", + "message": "Sol mötərizə", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Right parenthesis", + "message": "Sağ mötərizə", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "Altdan xətt", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { - "message": "Hyphen", + "message": "Tire", "description": "Represents the - key in screen reader content as a readable word" }, "plusCharacterDescriptor": { - "message": "Plus", + "message": "Üstəgəl", "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Equals", + "message": "Bərabərdir", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Sol bəzəkli mötərizə", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Sağ bəzəkli mötərizə", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Sol kvadrat mötərizə", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Sağ kvadrat mötərizə", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { - "message": "Pipe", + "message": "Şaquli xətt", "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { - "message": "Back slash", + "message": "Tərs sləş", "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { - "message": "Colon", + "message": "Cüt nöqtə", "description": "Represents the : key in screen reader content as a readable word" }, "semicolonCharacterDescriptor": { - "message": "Semicolon", + "message": "Nöqtəli vergül", "description": "Represents the ; key in screen reader content as a readable word" }, "doubleQuoteCharacterDescriptor": { - "message": "Double quote", + "message": "Cüt dırnaq", "description": "Represents the double quote key in screen reader content as a readable word" }, "singleQuoteCharacterDescriptor": { - "message": "Single quote", + "message": "Tək dırnaq", "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Less than", + "message": "Kiçikdir", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Greater than", + "message": "Böyükdür", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { - "message": "Comma", + "message": "Vergül", "description": "Represents the , key in screen reader content as a readable word" }, "periodCharacterDescriptor": { - "message": "Period", + "message": "Nöqtə", "description": "Represents the . key in screen reader content as a readable word" }, "questionCharacterDescriptor": { - "message": "Question mark", + "message": "Sual işarəsi", "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { - "message": "Forward slash", + "message": "Düz sləş", "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { - "message": "Lowercase" + "message": "Kiçik hərf" }, "uppercaseAriaLabel": { - "message": "Uppercase" + "message": "Böyük hərf" }, "generatedPassword": { - "message": "Generated password" + "message": "Parol yarat" } } diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json index 690278de85c..e6488e5ff83 100644 --- a/apps/browser/src/_locales/be/messages.json +++ b/apps/browser/src/_locales/be/messages.json @@ -7,7 +7,7 @@ "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { - "message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information", + "message": "Дома, на працы ці ў дарозе Bitwarden лёгка абараняе ўсе вашы паролі, ключы доступу і канфідэнцыяльную інфармацыю", "description": "Extension description, MUST be less than 112 characters (Safari restriction)" }, "loginOrCreateNewAccount": { @@ -20,7 +20,7 @@ "message": "Стварыць уліковы запіс" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Упершыню ў Bitwarden?" }, "logInWithPasskey": { "message": "Log in with passkey" @@ -29,10 +29,10 @@ "message": "Use single sign-on" }, "welcomeBack": { - "message": "Welcome back" + "message": "З вяртаннем" }, "setAStrongPassword": { - "message": "Set a strong password" + "message": "Прызначыць надзейны пароль" }, "finishCreatingYourAccountBySettingAPassword": { "message": "Finish creating your account by setting a password" @@ -81,10 +81,10 @@ "message": "Падказка да асноўнага пароля (неабавязкова)" }, "joinOrganization": { - "message": "Join organization" + "message": "Далучыцца да арганізацыі" }, "joinOrganizationName": { - "message": "Join $ORGANIZATIONNAME$", + "message": "Далучыцца да $ORGANIZATIONNAME$", "placeholders": { "organizationName": { "content": "$1", @@ -120,7 +120,7 @@ "message": "Скапіяваць пароль" }, "copyPassphrase": { - "message": "Copy passphrase" + "message": "Скапіяваць парольную фразу" }, "copyNote": { "message": "Скапіяваць нататку" @@ -141,19 +141,19 @@ "message": "Скапіяваць імя" }, "copyCompany": { - "message": "Copy company" + "message": "Скапіяваць кампанію" }, "copySSN": { - "message": "Copy Social Security number" + "message": "Скапіяваць нумар сацыяльнага страхавання" }, "copyPassportNumber": { - "message": "Copy passport number" + "message": "Скапіяваць нумар пашпарта" }, "copyLicenseNumber": { - "message": "Copy license number" + "message": "Скапіяваць нумар ліцэнзіі" }, "copyCustomField": { - "message": "Copy $FIELD$", + "message": "Скапіяваць $FIELD$", "placeholders": { "field": { "content": "$1", @@ -162,13 +162,13 @@ } }, "copyWebsite": { - "message": "Copy website" + "message": "Скапіяваць сайт" }, "copyNotes": { "message": "Скапіяваць нататкі" }, "fill": { - "message": "Fill", + "message": "Запоўніць", "description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible." }, "autoFill": { @@ -205,7 +205,7 @@ "message": "Дадаць картку" }, "addIdentityMenu": { - "message": "Add identity" + "message": "Дадаць пасведчанне" }, "unlockVaultMenu": { "message": "Разблакіраваць сховішча" @@ -223,13 +223,13 @@ "message": "Дадаць элемент" }, "accountEmail": { - "message": "Account email" + "message": "Email уліковага запісу" }, "requestHint": { - "message": "Request hint" + "message": "Запытаць падказкі" }, "requestPasswordHint": { - "message": "Request password hint" + "message": "Запытаць падказку да асноўнага пароля" }, "enterYourAccountEmailAddressAndYourPasswordHintWillBeSentToYou": { "message": "Enter your account email address and your password hint will be sent to you" @@ -265,16 +265,16 @@ "message": "Змяніць асноўны пароль" }, "continueToWebApp": { - "message": "Continue to web app?" + "message": "Працягнуць у вэб-праграме?" }, "continueToWebAppDesc": { "message": "Explore more features of your Bitwarden account on the web app." }, "continueToHelpCenter": { - "message": "Continue to Help Center?" + "message": "Працягнуць працу ў Даведачным цэнтры?" }, "continueToHelpCenterDesc": { - "message": "Learn more about how to use Bitwarden on the Help Center." + "message": "Даведайцеся больш аб тым, як выкарыстоўваць Bitwarden, у Даведачным цэнтры." }, "continueToBrowserExtensionStore": { "message": "Continue to browser extension store?" @@ -309,19 +309,19 @@ "message": "Больш ад Bitwarden" }, "continueToBitwardenDotCom": { - "message": "Continue to bitwarden.com?" + "message": "Працягнуць на bitwarden.com?" }, "bitwardenForBusiness": { - "message": "Bitwarden for Business" + "message": "Bitwarden для бізнесу" }, "bitwardenAuthenticator": { - "message": "Bitwarden Authenticator" + "message": "Аўтэнтыфікатар Bitwarden" }, "continueToAuthenticatorPageDesc": { "message": "Bitwarden Authenticator allows you to store authenticator keys and generate TOTP codes for 2-step verification flows. Learn more on the bitwarden.com website" }, "bitwardenSecretsManager": { - "message": "Bitwarden Secrets Manager" + "message": "Менеджар сакрэтаў Bitwarden" }, "continueToSecretsManagerPageDesc": { "message": "Securely store, manage, and share developer secrets with Bitwarden Secrets Manager. Learn more on the bitwarden.com website." @@ -333,7 +333,7 @@ "message": "Create smooth and secure login experiences free from traditional passwords with Passwordless.dev. Learn more on the bitwarden.com website." }, "freeBitwardenFamilies": { - "message": "Free Bitwarden Families" + "message": "Бясплатны тарыфны план Bitwarden Families" }, "freeBitwardenFamiliesPageDesc": { "message": "You are eligible for Free Bitwarden Families. Redeem this offer today in the web app." @@ -366,13 +366,13 @@ "message": "Nest a folder by adding the parent folder's name followed by a “/”. Example: Social/Forums" }, "noFoldersAdded": { - "message": "No folders added" + "message": "Няма дададзеных папак" }, "createFoldersToOrganize": { "message": "Create folders to organize your vault items" }, "deleteFolderPermanently": { - "message": "Are you sure you want to permanently delete this folder?" + "message": "Вы ўпэўненыя, што жадаеце назаўсёды выдаліць гэту папку?" }, "deleteFolder": { "message": "Выдаліць папку" @@ -427,7 +427,7 @@ "message": "Генерыраваць пароль" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Згенерыраваць парольную фразу" }, "regeneratePassword": { "message": "Паўторна генерыраваць пароль" @@ -458,11 +458,11 @@ "description": "deprecated. Use specialCharactersLabel instead." }, "include": { - "message": "Include", + "message": "Уключыць", "description": "Card header for password generator include block" }, "uppercaseDescription": { - "message": "Include uppercase characters", + "message": "Уключыце вялікія літары", "description": "Tooltip for the password generator uppercase character checkbox" }, "uppercaseLabel": { @@ -470,7 +470,7 @@ "description": "Label for the password generator uppercase character checkbox" }, "lowercaseDescription": { - "message": "Include lowercase characters", + "message": "Уключайце малыя літары", "description": "Full description for the password generator lowercase character checkbox" }, "lowercaseLabel": { @@ -478,7 +478,7 @@ "description": "Label for the password generator lowercase character checkbox" }, "numbersDescription": { - "message": "Include numbers", + "message": "Уключаць лічбы", "description": "Full description for the password generator numbers checkbox" }, "numbersLabel": { @@ -486,7 +486,7 @@ "description": "Label for the password generator numbers checkbox" }, "specialCharactersDescription": { - "message": "Include special characters", + "message": "Уключыце спецыяльныя сімвалы", "description": "Full description for the password generator special characters checkbox" }, "specialCharactersLabel": { @@ -517,7 +517,7 @@ "description": "deprecated. Use avoidAmbiguous instead." }, "avoidAmbiguous": { - "message": "Avoid ambiguous characters", + "message": "Пазбягаць неадназначных сімвалаў", "description": "Label for the avoid ambiguous characters checkbox." }, "generatorPolicyInEffect": { @@ -546,7 +546,7 @@ "message": "Пароль" }, "totp": { - "message": "Authenticator secret" + "message": "Сакрэт аўтэнтыфікацыі" }, "passphrase": { "message": "Парольная фраза" @@ -555,7 +555,7 @@ "message": "Абраны" }, "unfavorite": { - "message": "Unfavorite" + "message": "Выдаліць з абранага" }, "itemAddedToFavorites": { "message": "Item added to favorites" @@ -567,7 +567,7 @@ "message": "Нататкі" }, "privateNote": { - "message": "Private note" + "message": "Прыватная нататка" }, "note": { "message": "Нататка" @@ -588,10 +588,10 @@ "message": "Запусціць" }, "launchWebsite": { - "message": "Launch website" + "message": "Адкрыць сайт" }, "launchWebsiteName": { - "message": "Launch website $ITEMNAME$", + "message": "Адкрыць сайт $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -621,13 +621,13 @@ "message": "Set up an unlock method in Settings" }, "sessionTimeoutHeader": { - "message": "Session timeout" + "message": "Час чакання сеанса" }, "vaultTimeoutHeader": { - "message": "Vault timeout" + "message": "Час чакання сховішча" }, "otherOptions": { - "message": "Other options" + "message": "Іншыя налады" }, "rateExtension": { "message": "Ацаніць пашырэнне" @@ -645,10 +645,10 @@ "message": "Ваша сховішча заблакіравана. Каб працягнуць, пацвердзіце сваю асобу." }, "yourVaultIsLockedV2": { - "message": "Your vault is locked" + "message": "Ваша сховішча заблакіравана" }, "yourAccountIsLocked": { - "message": "Your account is locked" + "message": "Ваш уліковы запіс заблакіраваны" }, "or": { "message": "або" @@ -676,7 +676,7 @@ "message": "Час чакання сховішча" }, "vaultTimeout1": { - "message": "Timeout" + "message": "Час чакання" }, "lockNow": { "message": "Заблакіраваць зараз" @@ -730,16 +730,16 @@ "message": "Бяспека" }, "confirmMasterPassword": { - "message": "Confirm master password" + "message": "Пацвердзіць асноўны пароль" }, "masterPassword": { - "message": "Master password" + "message": "Асноўны пароль" }, "masterPassImportant": { - "message": "Your master password cannot be recovered if you forget it!" + "message": "Ваш асноўны пароль немагчыма будзе аднавіць, калі вы яго забудзеце!" }, "masterPassHintLabel": { - "message": "Master password hint" + "message": "Падказка да асноўнага пароля" }, "errorOccurred": { "message": "Адбылася памылка" @@ -776,7 +776,7 @@ "message": "Your new account has been created!" }, "youHaveBeenLoggedIn": { - "message": "You have been logged in!" + "message": "Вы ўвайшлі ва ўліковы запіс!" }, "youSuccessfullyLoggedIn": { "message": "Вы паспяхова аўтарызаваны" @@ -813,7 +813,7 @@ "message": "Unable to scan QR code from the current webpage" }, "totpCaptureSuccess": { - "message": "Authenticator key added" + "message": "Ключ аўтэнтыфікацыі дададзены" }, "totpCapture": { "message": "Scan authenticator QR code from current webpage" @@ -831,7 +831,7 @@ "message": "Learn more about authenticators" }, "copyTOTP": { - "message": "Copy Authenticator key (TOTP)" + "message": "Скапіяваць ключ аўтэнтыфікацыі (TOTP)" }, "loggedOut": { "message": "Вы выйшлі" @@ -843,16 +843,16 @@ "message": "Тэрмін дзеяння вашага сеансу завяршыўся." }, "logIn": { - "message": "Log in" + "message": "Увайсці" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Увайсці ў Bitwarden" }, "restartRegistration": { "message": "Restart registration" }, "expiredLink": { - "message": "Expired link" + "message": "Пратэрмінаваная спасылка" }, "pleaseRestartRegistrationOrTryLoggingIn": { "message": "Please restart registration or try logging in." @@ -885,7 +885,7 @@ "message": "Make your account more secure by setting up two-step login in the Bitwarden web app." }, "twoStepLoginConfirmationTitle": { - "message": "Continue to web app?" + "message": "Працягнуць у вэб-праграме?" }, "editedFolder": { "message": "Папка адрэдагавана" @@ -1040,7 +1040,7 @@ "message": "Разблакіраваць" }, "additionalOptions": { - "message": "Additional options" + "message": "Дадатковы параметры" }, "enableContextMenuItem": { "message": "Паказваць параметры кантэкстнага меню" @@ -1049,7 +1049,7 @@ "message": "Выкарыстоўваць падвоены націск для доступу да генератара пароляў і супастаўлення лагінаў для вэб-сайтаў. " }, "contextMenuItemDescAlt": { - "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + "message": "Выкарыстоўваць падвоены націск для доступу да генератара пароляў і супастаўлення лагінаў для вэб-сайтаў. Прымяняецца да ўсіх уліковых запісаў, якія ўвайшлі ў сістэму." }, "defaultUriMatchDetection": { "message": "Прадвызначанае выяўленне супадзення URI", @@ -1080,7 +1080,7 @@ "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." }, "exportFrom": { - "message": "Export from" + "message": "Экспартаванне з" }, "exportVault": { "message": "Экспартаваць сховішча" @@ -1089,28 +1089,28 @@ "message": "Фармат файла" }, "fileEncryptedExportWarningDesc": { - "message": "This file export will be password protected and require the file password to decrypt." + "message": "Гэты экспартаваны файл будзе абаронены паролем, які неабходна будзе ўвесці для яго расшыфроўкі." }, "filePassword": { - "message": "File password" + "message": "Пароль файла" }, "exportPasswordDescription": { - "message": "This password will be used to export and import this file" + "message": "Гэты пароль будзе выкарыстоўвацца для экспартавання і імпартавання гэтага файла" }, "accountRestrictedOptionDescription": { - "message": "Use your account encryption key, derived from your account's username and Master Password, to encrypt the export and restrict import to only the current Bitwarden account." + "message": "Выкарыстоўвайце свой ключ шыфравання, які атрыманы з імя карыстальніка і асноўнага пароля, каб зашыфраваць экспартаванне і абмежаваць імпартаванне толькі бягучага ўліковага запісу Bitwarden." }, "passwordProtectedOptionDescription": { "message": "Set a file password to encrypt the export and import it to any Bitwarden account using the password for decryption." }, "exportTypeHeading": { - "message": "Export type" + "message": "Тып экспартавання" }, "accountRestricted": { - "message": "Account restricted" + "message": "Абмежавана ўліковым запісам" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“File password” and “Confirm file password“ do not match." + "message": "“Пароль файла” і “Пацвярджэнне пароля файла“ не супадаюць." }, "warning": { "message": "ПАПЯРЭДЖАННЕ", @@ -1232,10 +1232,10 @@ "message": "1 ГБ зашыфраванага сховішча для далучаных файлаў." }, "premiumSignUpEmergency": { - "message": "Emergency access." + "message": "Экстранны доступ." }, "premiumSignUpTwoStepOptions": { - "message": "Proprietary two-step login options such as YubiKey and Duo." + "message": "Прапрыетарныя варыянты двухэтапнага ўваходу, такія як YubiKey і Duo." }, "ppremiumSignUpReports": { "message": "Гігіена пароляў, здароўе ўліковага запісу і справаздачы аб уцечках даных для забеспячэння бяспекі вашага сховішча." @@ -1277,7 +1277,7 @@ } }, "premiumPriceV2": { - "message": "All for just $PRICE$ per year!", + "message": "Усяго за $PRICE$ у год!", "placeholders": { "price": { "content": "$1", @@ -1374,7 +1374,7 @@ "description": "'Bitwarden Authenticator' is a product name and should not be translated." }, "yubiKeyTitleV2": { - "message": "Yubico OTP Security Key" + "message": "Ключ бяспекі Yubico OTP" }, "yubiKeyDesc": { "message": "Выкарыстоўвайце YubiKey для доступу да вашага ўліковага запісу. Працуе з ключамі бяспекі YubiKey 4, 4 Nano, 4C і NEO." @@ -1474,7 +1474,7 @@ "message": "Edit browser settings." }, "autofillOverlayVisibilityOff": { - "message": "Off", + "message": "Выключана", "description": "Overlay setting select option for disabling autofill overlay" }, "autofillOverlayVisibilityOnFieldFocus": { @@ -1486,7 +1486,7 @@ "description": "Overlay appearance select option for showing the field on click of the overlay icon" }, "enableAutoFillOnPageLoadSectionTitle": { - "message": "Autofill on page load" + "message": "Аўтазапаўненне пры загрузцы старонкі" }, "enableAutoFillOnPageLoad": { "message": "Аўтазапаўненне пры загрузцы старонкі" @@ -1511,7 +1511,7 @@ "message": "Скампраметаваныя або ненадзейныя вэб-сайты могуць задзейнічаць функцыю аўтазапаўнення падчас загрузкі старонкі." }, "learnMoreAboutAutofillOnPageLoadLinkText": { - "message": "Learn more about risks" + "message": "Даведацца больш пра рызыкі" }, "learnMoreAboutAutofill": { "message": "Даведацца больш пра аўтазапаўненне" @@ -1541,13 +1541,13 @@ "message": "Адкрыць сховішча ў бакавой панэлі" }, "commandAutofillLoginDesc": { - "message": "Autofill the last used login for the current website" + "message": "Аўтазапаўненне апошняга скарыстанага лагіна для бягучага вэб-сайта" }, "commandAutofillCardDesc": { - "message": "Autofill the last used card for the current website" + "message": "Аўтазапаўненне апошняй скарыстанай карткі для бягучага вэб-сайта" }, "commandAutofillIdentityDesc": { - "message": "Autofill the last used identity for the current website" + "message": "Аўтазапаўненне апошняга скарыстанага пасведчання для бягучага вэб-сайта" }, "commandGeneratePasswordDesc": { "message": "Генерыраваць і скапіяваць новы выпадковы пароль у буфер абмену" @@ -1580,7 +1580,7 @@ "message": "Булева" }, "cfTypeCheckbox": { - "message": "Checkbox" + "message": "Птушка" }, "cfTypeLinked": { "message": "Звязана", @@ -1765,7 +1765,7 @@ "message": "Пасведчанне" }, "newItemHeader": { - "message": "New $TYPE$", + "message": "Новы $TYPE$", "placeholders": { "type": { "content": "$1", @@ -1774,7 +1774,7 @@ } }, "editItemHeader": { - "message": "Edit $TYPE$", + "message": "Рэдагаваць $TYPE$", "placeholders": { "type": { "content": "$1", @@ -1783,7 +1783,7 @@ } }, "viewItemHeader": { - "message": "View $TYPE$", + "message": "Прагляд $TYPE$", "placeholders": { "type": { "content": "$1", @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Гісторыя пароляў" }, + "generatorHistory": { + "message": "Гісторыя генератара" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Назад" }, @@ -1908,13 +1917,13 @@ "message": "У спісе адсутнічаюць паролі." }, "clearHistory": { - "message": "Clear history" + "message": "Ачысціць гісторыю" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Адсутнічаюць элементы для паказу" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Выдаліць" @@ -1975,10 +1984,10 @@ "message": "Разблакіраваць PIN-кодам" }, "setYourPinTitle": { - "message": "Set PIN" + "message": "Задаць PIN" }, "setYourPinButton": { - "message": "Set PIN" + "message": "Задаць PIN" }, "setYourPinCode": { "message": "Прызначце PIN-код для разблакіроўкі Bitwarden. Налады PIN-кода будуць скінуты, калі вы калі-небудзь цалкам выйдзеце з праграмы." @@ -1999,7 +2008,7 @@ "message": "Разблакіраваць з дапамогай біяметрыі" }, "unlockWithMasterPassword": { - "message": "Unlock with master password" + "message": "Разблакіраваць з дапамогай асноўнага пароля" }, "awaitDesktop": { "message": "Чаканне пацвярджэння з камп'ютара" @@ -2011,7 +2020,7 @@ "message": "Заблакіраваць асноўным паролем пры перазапуску браўзера" }, "lockWithMasterPassOnRestart1": { - "message": "Require master password on browser restart" + "message": "Патрабаваць асноўны пароль пры перазапуску браўзера" }, "selectOneCollection": { "message": "Вы павінны выбраць прынамсі адну калекцыю." @@ -2026,26 +2035,26 @@ "message": "Адна або больш палітык арганізацыі ўплывае на налады генератара." }, "passwordGenerator": { - "message": "Password generator" + "message": "Генератар пароляў" }, "usernameGenerator": { - "message": "Username generator" + "message": "Генератар імені карыстальніка" }, "useThisPassword": { - "message": "Use this password" + "message": "Выкарыстоўваць гэты пароль" }, "useThisUsername": { - "message": "Use this username" + "message": "Выкарыстоўваць гэта імя карыстальніка" }, "securePasswordGenerated": { "message": "Secure password generated! Don't forget to also update your password on the website." }, "useGeneratorHelpTextPartOne": { - "message": "Use the generator", + "message": "Выкарыстоўваць генератар", "description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'" }, "useGeneratorHelpTextPartTwo": { - "message": "to create a strong unique password", + "message": "каб стварыць надзейны ўнікальны пароль", "description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'" }, "vaultTimeoutAction": { @@ -2081,7 +2090,7 @@ "message": "Элемент адноўлены" }, "alreadyHaveAccount": { - "message": "Already have an account?" + "message": "Ужо маеце ўліковы запіс?" }, "vaultTimeoutLogOutConfirmation": { "message": "Выхад з сістэмы скасуе ўсе магчымасці доступу да сховішча і запатрабуе аўтэнтыфікацыю праз інтэрнэт пасля завяршэння часу чакання. Вы сапраўды хочаце выкарыстоўваць гэты параметр?" @@ -2093,7 +2102,7 @@ "message": "Аўтазапоўніць і захаваць" }, "fillAndSave": { - "message": "Fill and save" + "message": "Запоўніць і захаваць" }, "autoFillSuccessAndSavedUri": { "message": "Аўтазапоўнены элемент і захаваны URI" @@ -2177,16 +2186,16 @@ "message": "Get advice, announcements, and research opportunities from Bitwarden in your inbox." }, "unsubscribe": { - "message": "Unsubscribe" + "message": "Адпісацца" }, "atAnyTime": { - "message": "at any time." + "message": "ў любы час." }, "byContinuingYouAgreeToThe": { - "message": "By continuing, you agree to the" + "message": "Працягваючы, вы згаджаецеся з" }, "and": { - "message": "and" + "message": "і" }, "acceptPolicies": { "message": "Ставячы гэты сцяжок, вы пагаджаецеся з наступным:" @@ -2306,7 +2315,7 @@ "message": "An organization policy has blocked importing items into your individual vault." }, "domainsTitle": { - "message": "Domains", + "message": "Дамены", "description": "A category title describing the concept of web domains" }, "excludedDomains": { @@ -2319,7 +2328,7 @@ "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." }, "websiteItemLabel": { - "message": "Website $number$ (URI)", + "message": "Вэб-сайт $number$ (URI)", "placeholders": { "number": { "content": "$1", @@ -2347,7 +2356,7 @@ "description": "Displayed under the limit views field on Send" }, "limitSendViewsCount": { - "message": "$ACCESSCOUNT$ views left", + "message": "Засталося праглядаў: $ACCESSCOUNT$", "description": "Displayed under the limit views field on Send", "placeholders": { "accessCount": { @@ -2361,7 +2370,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDetails": { - "message": "Send details", + "message": "Падрабязнасці Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "searchSends": { @@ -2402,7 +2411,7 @@ "message": "Абаронена паролем" }, "copyLink": { - "message": "Copy link" + "message": "Скапіяваць спасылку" }, "copySendLink": { "message": "Скапіяваць спасылку на Send", @@ -2440,7 +2449,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendPermanentConfirmation": { - "message": "Are you sure you want to permanently delete this Send?", + "message": "Вы ўпэўненыя, што хочаце назаўсёды выдаліць гэты Send?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -2548,7 +2557,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSendSuccessfully": { - "message": "Send created successfully!", + "message": "Send паспяхова створаны!", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHoursSingle": { @@ -2659,7 +2668,7 @@ "message": "Патрабуецца праверка электроннай пошты" }, "emailVerifiedV2": { - "message": "Email verified" + "message": "Email пацверджаны" }, "emailVerificationRequiredDesc": { "message": "Вы павінны праверыць свой адрас электроннай пошты, каб выкарыстоўваць гэту функцыю. Зрабіць гэта можна ў вэб-сховішчы." @@ -2701,7 +2710,7 @@ "description": "Used as a card title description on the set password page to explain why the user is there" }, "cardMetrics": { - "message": "out of $TOTAL$", + "message": "з $TOTAL$", "placeholders": { "total": { "content": "$1", @@ -2710,7 +2719,7 @@ } }, "verificationRequired": { - "message": "Verification required", + "message": "Патрабуецца праверка", "description": "Default title for the user verification dialog." }, "hours": { @@ -2836,7 +2845,7 @@ "message": "Экспартаванне асабістага сховішча" }, "exportingIndividualVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", + "message": "Будуць экспартаваны толькі індывідуальныя элементы сховішча, якія звязаны з $EMAIL$. Элементы сховішча арганізацыі не будуць уключаны. Толькі звесткі элемента сховішча будуць экспартаваны і яны не будуць уключаць звязаныя далучэнні.", "placeholders": { "email": { "content": "$1", @@ -2845,10 +2854,10 @@ } }, "exportingOrganizationVaultTitle": { - "message": "Exporting organization vault" + "message": "Экспартаванне сховішча арганізацыі" }, "exportingOrganizationVaultDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Items in individual vaults or other organizations will not be included.", + "message": "Толькі сховішча арганізацыі, якія звязаны з $ORGANIZATION$ будуць экспартаваны. Элементы асабістага сховішча і элементы з іншых арганізацый не будуць уключаны.", "placeholders": { "organization": { "content": "$1", @@ -2909,7 +2918,7 @@ "message": "Генерыраваць псеўданім электроннай пошты са знешнім сэрвісам перасылкі." }, "forwarderDomainName": { - "message": "Email domain", + "message": "Дамен электроннай пошты", "description": "Labels the domain name email forwarder service option" }, "forwarderDomainNameHint": { @@ -2917,7 +2926,7 @@ "description": "Guidance provided for email forwarding services that support multiple email domains." }, "forwarderError": { - "message": "$SERVICENAME$ error: $ERRORMESSAGE$", + "message": "Памылка $SERVICENAME$: $ERRORMESSAGE$", "description": "Reports an error returned by a forwarding service to the user.", "placeholders": { "servicename": { @@ -2931,7 +2940,7 @@ } }, "forwarderGeneratedBy": { - "message": "Generated by Bitwarden.", + "message": "Сгенеравана Bitwarden.", "description": "Displayed with the address on the forwarding service's configuration screen." }, "forwarderGeneratedByWithWebsite": { @@ -3276,13 +3285,13 @@ "message": "Уліковы запіс паспяхова створаны!" }, "adminApprovalRequested": { - "message": "Admin approval requested" + "message": "Патрабуецца ўхваленне адміністратара" }, "adminApprovalRequestSentToAdmins": { - "message": "Your request has been sent to your admin." + "message": "Ваш запыт адпраўлены адміністратару." }, "youWillBeNotifiedOnceApproved": { - "message": "You will be notified once approved." + "message": "Вы атрымаеце апавяшчэння пасля яго ўхвалення." }, "troubleLoggingIn": { "message": "Праблемы з уваходам?" @@ -3291,30 +3300,30 @@ "message": "Уваход ухвалены" }, "userEmailMissing": { - "message": "User email missing" + "message": "Адсутнічае электронная пошта карыстальніка" }, "deviceTrusted": { - "message": "Device trusted" + "message": "Давераная прылада" }, "sendsNoItemsTitle": { - "message": "No active Sends", + "message": "Няма актыўных Send'аў", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendsNoItemsMessage": { - "message": "Use Send to securely share encrypted information with anyone.", + "message": "Выкарыстоўвайце Send'ы, каб бяспечна абагуляць зашыфраваную інфармацыю з іншымі.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "inputRequired": { - "message": "Input is required." + "message": "Неабходны ўвод даных." }, "required": { - "message": "required" + "message": "патрабуецца" }, "search": { - "message": "Search" + "message": "Пошук" }, "inputMinLength": { - "message": "Input must be at least $COUNT$ characters long.", + "message": "Даўжыня ўведзеных даных павінна складаць прынамсі $COUNT$ сімв.", "placeholders": { "count": { "content": "$1", @@ -3323,7 +3332,7 @@ } }, "inputMaxLength": { - "message": "Input must not exceed $COUNT$ characters in length.", + "message": "Даўжыня ўведзеных даных не можа перавышаць наступную колькасць сімвалаў: $COUNT$.", "placeholders": { "count": { "content": "$1", @@ -3332,7 +3341,7 @@ } }, "inputForbiddenCharacters": { - "message": "The following characters are not allowed: $CHARACTERS$", + "message": "Наступныя сімвалы забаронены: $CHARACTERS$", "placeholders": { "characters": { "content": "$1", @@ -3341,7 +3350,7 @@ } }, "inputMinValue": { - "message": "Input value must be at least $MIN$.", + "message": "Мінімальная даўжыня сімвалаў значэння, якое будзе ўводзіцца: $MIN$.", "placeholders": { "min": { "content": "$1", @@ -3350,7 +3359,7 @@ } }, "inputMaxValue": { - "message": "Input value must not exceed $MAX$.", + "message": "Максімальная даўжыня сімвалаў значэння, якое будзе ўводзіцца: $MAX$.", "placeholders": { "max": { "content": "$1", @@ -3369,7 +3378,7 @@ "message": "Уведзеныя даныя не з'яўляюцца адрасам электроннай пошты." }, "fieldsNeedAttention": { - "message": "$COUNT$ field(s) above need your attention.", + "message": "Колькасць палёў, якія патрабуюць вашай увагі: $COUNT$.", "placeholders": { "count": { "content": "$1", @@ -3378,10 +3387,10 @@ } }, "singleFieldNeedsAttention": { - "message": "1 field needs your attention." + "message": "1 поле патрабуе вашай увагі." }, "multipleFieldsNeedAttention": { - "message": "$COUNT$ fields need your attention.", + "message": "Колькасць палёў, якія патрабуюць вашай увагі: $COUNT$.", "placeholders": { "count": { "content": "$1", @@ -3405,7 +3414,7 @@ "message": "Ачысціць усё" }, "plusNMore": { - "message": "+ $QUANTITY$ more", + "message": "+ яшчэ $QUANTITY$", "placeholders": { "quantity": { "content": "$1", @@ -3417,7 +3426,7 @@ "message": "Падменю" }, "toggleCollapse": { - "message": "Toggle collapse", + "message": "Згарнуць/Разгарнуць", "description": "Toggling an expand/collapse state." }, "filelessImport": { @@ -3437,11 +3446,11 @@ "description": "Notification button text for starting a fileless import." }, "importing": { - "message": "Importing...", + "message": "Імпартаванне...", "description": "Notification message for when an import is in progress." }, "dataSuccessfullyImported": { - "message": "Data successfully imported!", + "message": "Даныя паспяхова імпартаваны!", "description": "Notification message for when an import has completed successfully." }, "dataImportFailed": { @@ -3471,7 +3480,7 @@ "message": "Toggle side navigation" }, "skipToContent": { - "message": "Skip to content" + "message": "Перайсці да змесціва" }, "bitwardenOverlayButton": { "message": "Bitwarden autofill menu button", @@ -3482,7 +3491,7 @@ "description": "Screen reader and tool tip label for the overlay button" }, "bitwardenVault": { - "message": "Bitwarden autofill menu", + "message": "Меню аўтазапаўнення Bitwarden", "description": "Page title in overlay" }, "unlockYourAccountToViewMatchingLogins": { @@ -3510,11 +3519,11 @@ "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" }, "noItemsToShow": { - "message": "No items to show", + "message": "Няма элементаў для паказу", "description": "Text to show in overlay if there are no matching items" }, "newItem": { - "message": "New item", + "message": "Новы элемент", "description": "Button text to display in overlay when there are no matching items" }, "addNewVaultItem": { @@ -3522,7 +3531,7 @@ "description": "Screen reader text (aria-label) for new item button in overlay" }, "newLogin": { - "message": "New login", + "message": "Новы лагін", "description": "Button text to display within inline menu when there are no matching items on a login field" }, "addNewLoginItemAria": { @@ -3550,17 +3559,17 @@ "description": "Screen reader text for announcing when the overlay opens on the page" }, "turnOn": { - "message": "Turn on" + "message": "Уключыць" }, "ignore": { - "message": "Ignore" + "message": "Iгнараваць" }, "importData": { - "message": "Import data", + "message": "Імпартаванне даных", "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" }, "importError": { - "message": "Import error" + "message": "Памылка імпартавання" }, "importErrorDesc": { "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." @@ -3584,13 +3593,13 @@ } }, "tryAgain": { - "message": "Try again" + "message": "Паспрабуйце зноў" }, "verificationRequiredForActionSetPinToContinue": { "message": "Verification required for this action. Set a PIN to continue." }, "setPin": { - "message": "Set PIN" + "message": "Задаць PIN" }, "verifyWithBiometrics": { "message": "Verify with biometrics" @@ -3608,22 +3617,22 @@ "message": "Use master password" }, "usePin": { - "message": "Use PIN" + "message": "Увесці PIN-код" }, "useBiometrics": { - "message": "Use biometrics" + "message": "Выкарыстоўваць біяметрыю" }, "enterVerificationCodeSentToEmail": { - "message": "Enter the verification code that was sent to your email." + "message": "Увядзіце праверачны код, які быў адпраўлены на вашу электронную пошту." }, "resendCode": { - "message": "Resend code" + "message": "Адправіць код яшчэ раз" }, "total": { "message": "Усяго" }, "importWarning": { - "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "message": "Вы імпартуеце даныя ў $ORGANIZATION$. Вашы даныя могуць быць абагулены з удзельнікамі арганізацыі. Вы сапраўды хочаце працягнуць?", "placeholders": { "organization": { "content": "$1", @@ -3650,31 +3659,31 @@ "message": "Launch Duo" }, "importFormatError": { - "message": "Data is not formatted correctly. Please check your import file and try again." + "message": "Даныя няправільна адфарматаваныя. Калі ласка, праверце файл імпарту і паспрабуйце яшчэ раз." }, "importNothingError": { - "message": "Nothing was imported." + "message": "Нічога не было імпартавана." }, "importEncKeyError": { - "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + "message": "Памылка дэшыфроўкі экспартаванага файла. Ваш ключ шыфравання не супадае з ключом шыфравання, які выкарыстоўваецца для экспартавання даных." }, "invalidFilePassword": { - "message": "Invalid file password, please use the password you entered when you created the export file." + "message": "Памылковы пароль файла. Скарыстайцеся паролем, які вы ўводзілі пры стварэнні файла экспартавання." }, "destination": { - "message": "Destination" + "message": "Прызначэнне" }, "learnAboutImportOptions": { "message": "Даведацца пра параметры імпартавання" }, "selectImportFolder": { - "message": "Select a folder" + "message": "Выбраць папку" }, "selectImportCollection": { - "message": "Select a collection" + "message": "Выбраць калекцыю" }, "importTargetHint": { - "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "message": "Выберыце гэты параметр, калі вы хочаце, каб змесціва імпартаванага файла было перамешчанага ў $DESTINATION$", "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", "placeholders": { "destination": { @@ -3684,13 +3693,13 @@ } }, "importUnassignedItemsError": { - "message": "File contains unassigned items." + "message": "Файл змяшчае непадпісаныя элементы." }, "selectFormat": { - "message": "Select the format of the import file" + "message": "Выберыце фармат файла імпартавання" }, "selectImportFile": { - "message": "Select the import file" + "message": "Выберыце файл імпартавання" }, "chooseFile": { "message": "Выбраць файл" @@ -3699,10 +3708,10 @@ "message": "Файл не выбраны" }, "orCopyPasteFileContents": { - "message": "or copy/paste the import file contents" + "message": "або скапіюйце/устаўце змесціва файла, які імпартуецца" }, "instructionsFor": { - "message": "$NAME$ Instructions", + "message": "Інструкцыі для $NAME$", "description": "The title for the import tool instructions.", "placeholders": { "name": { @@ -3712,10 +3721,10 @@ } }, "confirmVaultImport": { - "message": "Confirm vault import" + "message": "Пацвердзіць імпартаванне сховішча" }, "confirmVaultImportDesc": { - "message": "This file is password-protected. Please enter the file password to import data." + "message": "Гэты файл абаронены паролем. Калі ласка, увядзіце пароль для імпартавання даных." }, "confirmFilePassword": { "message": "Пацвердзіць пароль файла" @@ -3724,7 +3733,7 @@ "message": "Vault data exported" }, "typePasskey": { - "message": "Passkey" + "message": "Ключ доступу" }, "accessing": { "message": "Accessing" @@ -3760,7 +3769,7 @@ "message": "Пацвердзіць" }, "savePasskey": { - "message": "Save passkey" + "message": "Захаваць ключ доступу" }, "savePasskeyNewLogin": { "message": "Save passkey as new login" @@ -3775,7 +3784,7 @@ "message": "Passkey Item" }, "overwritePasskey": { - "message": "Overwrite passkey?" + "message": "Перазапісаць ключ доступу?" }, "overwritePasskeyAlert": { "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" @@ -3796,13 +3805,13 @@ "message": "Incorrect username or password" }, "incorrectPassword": { - "message": "Incorrect password" + "message": "Няправільны пароль" }, "incorrectCode": { - "message": "Incorrect code" + "message": "Няправільны код" }, "incorrectPin": { - "message": "Incorrect PIN" + "message": "Няправільны PIN-код" }, "multifactorAuthenticationFailed": { "message": "Multifactor authentication failed" @@ -3826,7 +3835,7 @@ "message": "Approve the login request in your authentication app or enter a one-time passcode." }, "passcode": { - "message": "Passcode" + "message": "Код доступу" }, "lastPassMasterPassword": { "message": "LastPass master password" @@ -3848,19 +3857,19 @@ "message": "Import directly from LastPass" }, "importFromCSV": { - "message": "Import from CSV" + "message": "Імпартаваць з CSV" }, "lastPassTryAgainCheckEmail": { "message": "Try again or look for an email from LastPass to verify it's you." }, "collection": { - "message": "Collection" + "message": "Калекцыя" }, "lastPassYubikeyDesc": { "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." }, "switchAccount": { - "message": "Switch account" + "message": "Змяніць уліковы запіс" }, "switchAccounts": { "message": "Switch accounts" @@ -3875,19 +3884,19 @@ "message": "Available accounts" }, "accountLimitReached": { - "message": "Account limit reached. Log out of an account to add another." + "message": "Дасягнута абмежаванне ўліковага запісу. Выйдзіце, каб дадаць іншы ўліковы запіс." }, "active": { - "message": "active" + "message": "актыўны" }, "locked": { - "message": "locked" + "message": "заблакіравана" }, "unlocked": { - "message": "unlocked" + "message": "разблакавана" }, "server": { - "message": "server" + "message": "сервер" }, "hostedAt": { "message": "hosted at" @@ -3959,7 +3968,7 @@ "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" }, "makeDefault": { - "message": "Make default", + "message": "Зрабіць прадвызначаным", "description": "Button text for the setting that allows overriding the default browser autofill settings" }, "saveCipherAttemptSuccess": { @@ -3967,7 +3976,7 @@ "description": "Notification message for when saving credentials has succeeded." }, "passwordSaved": { - "message": "Password saved!", + "message": "Пароль захаваны!", "description": "Notification message for when saving credentials has succeeded." }, "updateCipherAttemptSuccess": { @@ -3975,7 +3984,7 @@ "description": "Notification message for when updating credentials has succeeded." }, "passwordUpdated": { - "message": "Password updated!", + "message": "Пароль абноўлены!", "description": "Notification message for when updating credentials has succeeded." }, "saveCipherAttemptFailed": { @@ -3983,7 +3992,7 @@ "description": "Notification message for when saving credentials has failed." }, "success": { - "message": "Success" + "message": "Поспех" }, "removePasskey": { "message": "Remove passkey" @@ -3998,10 +4007,10 @@ "message": "Save a login item for this site to autofill" }, "yourVaultIsEmpty": { - "message": "Your vault is empty" + "message": "Ваша сховішча нічога не змяшчае" }, "noItemsMatchSearch": { - "message": "No items match your search" + "message": "Пошук не даў вынікаў" }, "clearFiltersOrTryAnother": { "message": "Clear filters or try another search term" @@ -4073,16 +4082,16 @@ "message": "Assign to collections" }, "copyEmail": { - "message": "Copy email" + "message": "Скапіяваць электронную пошту" }, "copyPhone": { - "message": "Copy phone" + "message": "Скапіяваць тэлефон" }, "copyAddress": { - "message": "Copy address" + "message": "Скапіяваць адрас" }, "adminConsole": { - "message": "Admin Console" + "message": "Кансоль адміністратара" }, "accountSecurity": { "message": "Бяспеке акаўнта" @@ -4120,10 +4129,10 @@ } }, "new": { - "message": "New" + "message": "Новы" }, "removeItem": { - "message": "Remove $NAME$", + "message": "Выдаліць $NAME$", "description": "Remove a selected option, such as a folder or collection", "placeholders": { "name": { @@ -4133,13 +4142,13 @@ } }, "itemsWithNoFolder": { - "message": "Items with no folder" + "message": "Элементы без папкі" }, "itemDetails": { - "message": "Item details" + "message": "Падрабязнасці элемента" }, "itemName": { - "message": "Item name" + "message": "Назва элемента" }, "cannotRemoveViewOnlyCollections": { "message": "You cannot remove collections with View only permissions: $COLLECTIONS$", @@ -4154,38 +4163,38 @@ "message": "Organization is deactivated" }, "owner": { - "message": "Owner" + "message": "Уладальнік" }, "selfOwnershipLabel": { - "message": "You", + "message": "Вы", "description": "Used as a label to indicate that the user is the owner of an item." }, "contactYourOrgAdmin": { "message": "Items in deactivated organizations cannot be accessed. Contact your organization owner for assistance." }, "additionalInformation": { - "message": "Additional information" + "message": "Дадатковая інфармацыя" }, "itemHistory": { - "message": "Item history" + "message": "Гісторыя элемента" }, "lastEdited": { "message": "Last edited" }, "ownerYou": { - "message": "Owner: You" + "message": "Уладальнік: Вы" }, "linked": { - "message": "Linked" + "message": "Звязана" }, "copySuccessful": { "message": "Copy Successful" }, "upload": { - "message": "Upload" + "message": "Запампаваць" }, "addAttachment": { - "message": "Add attachment" + "message": "Дадаць укладанне" }, "maxFileSizeSansPunctuation": { "message": "Maximum file size is 500 MB" @@ -4311,10 +4320,10 @@ "message": "If you've renewed it, update the card's information" }, "cardDetails": { - "message": "Card details" + "message": "Падрабязнасці карткі" }, "cardBrandDetails": { - "message": "$BRAND$ details", + "message": "Падрабязнасці $BRAND$", "placeholders": { "brand": { "content": "$1", @@ -4326,23 +4335,23 @@ "message": "Уключыць анімацыі" }, "showAnimations": { - "message": "Show animations" + "message": "Паказаць анімацыі" }, "addAccount": { - "message": "Add account" + "message": "Дадаць уліковы запіс" }, "loading": { - "message": "Loading" + "message": "Загрузка" }, "data": { - "message": "Data" + "message": "Даныя" }, "passkeys": { - "message": "Passkeys", + "message": "Ключы доступу", "description": "A section header for a list of passkeys." }, "passwords": { - "message": "Passwords", + "message": "Паролі", "description": "A section header for a list of passwords." }, "logInWithPasskeyAriaLabel": { @@ -4350,7 +4359,7 @@ "description": "ARIA label for the inline menu button that logs in with a passkey." }, "assign": { - "message": "Assign" + "message": "Прызначыць" }, "bulkCollectionAssignmentDialogDescriptionSingular": { "message": "Only organization members with access to these collections will be able to see the item." @@ -4371,16 +4380,16 @@ } }, "addField": { - "message": "Add field" + "message": "Дадаць поле" }, "add": { - "message": "Add" + "message": "Дадаць" }, "fieldType": { - "message": "Field type" + "message": "Тып поля" }, "fieldLabel": { - "message": "Field label" + "message": "Назва поля" }, "textHelpText": { "message": "Use text fields for data like security questions" @@ -4398,10 +4407,10 @@ "message": "Enter the the field's html id, name, aria-label, or placeholder." }, "editField": { - "message": "Edit field" + "message": "Рэдагаваць поле" }, "editFieldLabel": { - "message": "Edit $LABEL$", + "message": "Рэдагаваць $LABEL$", "placeholders": { "label": { "content": "$1", @@ -4410,7 +4419,7 @@ } }, "deleteCustomField": { - "message": "Delete $LABEL$", + "message": "Выдалісь $LABEL$", "placeholders": { "label": { "content": "$1", @@ -4494,10 +4503,10 @@ "message": "Successfully assigned collections" }, "nothingSelected": { - "message": "You have not selected anything." + "message": "Вы пакуль нічога не выбралі." }, "movedItemsToOrg": { - "message": "Selected items moved to $ORGNAME$", + "message": "Выбраныя элементы перамешчаны ў $ORGNAME$", "placeholders": { "orgname": { "content": "$1", @@ -4628,11 +4637,11 @@ "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "Прагал", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { - "message": "Tilde", + "message": "Тыльда", "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { @@ -4660,7 +4669,7 @@ "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { - "message": "Caret", + "message": "Карэтка", "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { @@ -4668,27 +4677,27 @@ "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { - "message": "Asterisk", + "message": "Зорачка", "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Left parenthesis", + "message": "Левая дужка", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Right parenthesis", + "message": "Правая дужка", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "Падкрэсленне", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { - "message": "Hyphen", + "message": "Злучок", "description": "Represents the - key in screen reader content as a readable word" }, "plusCharacterDescriptor": { - "message": "Plus", + "message": "Плюс", "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { @@ -4696,23 +4705,23 @@ "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Левая фігурная дужка", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Правая фігурная дужка", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Левая квадратная дужка", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Правая квадратная дужка", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { - "message": "Pipe", + "message": "Раздзяляльнік", "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { @@ -4720,39 +4729,39 @@ "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { - "message": "Colon", + "message": "Двукроп'е", "description": "Represents the : key in screen reader content as a readable word" }, "semicolonCharacterDescriptor": { - "message": "Semicolon", + "message": "Кропка з коскай", "description": "Represents the ; key in screen reader content as a readable word" }, "doubleQuoteCharacterDescriptor": { - "message": "Double quote", + "message": "Падвойнае двукоссе", "description": "Represents the double quote key in screen reader content as a readable word" }, "singleQuoteCharacterDescriptor": { - "message": "Single quote", + "message": "Адзінарнае двукоссе", "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Less than", + "message": "Менш", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Greater than", + "message": "Больш", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { - "message": "Comma", + "message": "Коска", "description": "Represents the , key in screen reader content as a readable word" }, "periodCharacterDescriptor": { - "message": "Period", + "message": "Кропка", "description": "Represents the . key in screen reader content as a readable word" }, "questionCharacterDescriptor": { - "message": "Question mark", + "message": "Пытальнік", "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { @@ -4760,12 +4769,12 @@ "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { - "message": "Lowercase" + "message": "Малыя літары" }, "uppercaseAriaLabel": { - "message": "Uppercase" + "message": "Вялікія літары" }, "generatedPassword": { - "message": "Generated password" + "message": "Згенерыраваны пароль" } } diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json index d0646bbf513..626221f06d1 100644 --- a/apps/browser/src/_locales/bg/messages.json +++ b/apps/browser/src/_locales/bg/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Хронология на паролата" }, + "generatorHistory": { + "message": "История на генерирането" + }, + "clearGeneratorHistoryTitle": { + "message": "Изчистване на историята на генериране" + }, + "cleargGeneratorHistoryDescription": { + "message": "Ако продължите, всички записи в историята на генериране ще бъдат изтрити завинаги. Наистина ли искате това?" + }, "back": { "message": "Назад" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Изчистване на историята" }, - "noPasswordsToShow": { - "message": "Няма пароли за показване" + "nothingToShow": { + "message": "Няма нищо за показване" }, - "noRecentlyGeneratedPassword": { - "message": "Скоро не сте генерирали пароли" + "nothingGeneratedRecently": { + "message": "Скоро не сте генерирали нищо" }, "remove": { "message": "Премахване" diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json index c694b3b5724..b808ab5eb62 100644 --- a/apps/browser/src/_locales/bn/messages.json +++ b/apps/browser/src/_locales/bn/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "পাসওয়ার্ড ইতিহাস" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "পেছন" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "সরান" diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json index 0702287b27e..2793b4dee62 100644 --- a/apps/browser/src/_locales/bs/messages.json +++ b/apps/browser/src/_locales/bs/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json index 6829e84ba3d..eee9e4956ce 100644 --- a/apps/browser/src/_locales/ca/messages.json +++ b/apps/browser/src/_locales/ca/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Historial de les contrasenyes" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Arrere" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Suprimeix" diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json index 3baa325fe8e..80cce02f219 100644 --- a/apps/browser/src/_locales/cs/messages.json +++ b/apps/browser/src/_locales/cs/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Historie hesel" }, + "generatorHistory": { + "message": "Historie generátoru" + }, + "clearGeneratorHistoryTitle": { + "message": "Vymazat historii generátoru" + }, + "cleargGeneratorHistoryDescription": { + "message": "Pokud budete pokračovat, všechny položky budou trvale smazány z historie generátoru. Jste si jisti, že chcete pokračovat?" + }, "back": { "message": "Zpět" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Vymazat historii" }, - "noPasswordsToShow": { - "message": "Žádná hesla k zobrazení" + "nothingToShow": { + "message": "Nic k zobrazení" }, - "noRecentlyGeneratedPassword": { - "message": "Nedávno jste nevygenerovali heslo" + "nothingGeneratedRecently": { + "message": "Nedávno jste nic nevygenerovali" }, "remove": { "message": "Odebrat" diff --git a/apps/browser/src/_locales/cy/messages.json b/apps/browser/src/_locales/cy/messages.json index 90b5987a1cb..13a75b413f7 100644 --- a/apps/browser/src/_locales/cy/messages.json +++ b/apps/browser/src/_locales/cy/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Hanes cyfrineiriau" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Yn ôl" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Tynnu" diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index d14b62a3dd8..437a3fa7df4 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Adgangskodehistorik" }, + "generatorHistory": { + "message": "Generatorhistorik" + }, + "clearGeneratorHistoryTitle": { + "message": "Ryd generatorhistorik" + }, + "cleargGeneratorHistoryDescription": { + "message": "Fortsættes, slettes alle poster permanent fra generatorens historik. Sikker på, at handlingen skal udføres?" + }, "back": { "message": "Tilbage" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Ryd historik" }, - "noPasswordsToShow": { - "message": "Ingen adgangskoder at vise" + "nothingToShow": { + "message": "Intet at vise" }, - "noRecentlyGeneratedPassword": { - "message": "Der er ikke genereret nogen adgangskode for nylig" + "nothingGeneratedRecently": { + "message": "Intet genereret for nylig" }, "remove": { "message": "Fjern" diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json index c0748518f54..1e3a38ffc7b 100644 --- a/apps/browser/src/_locales/de/messages.json +++ b/apps/browser/src/_locales/de/messages.json @@ -20,16 +20,16 @@ "message": "Konto erstellen" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Neu bei Bitwarden?" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Mit Passkey anmelden" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Single Sign-on verwenden" }, "welcomeBack": { - "message": "Welcome back" + "message": "Willkommen zurück" }, "setAStrongPassword": { "message": "Lege ein starkes Passwort fest" @@ -846,7 +846,7 @@ "message": "Anmelden" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Bei Bitwarden anmelden" }, "restartRegistration": { "message": "Registrierung neu starten" @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Passwortverlauf" }, + "generatorHistory": { + "message": "Generator-Verlauf" + }, + "clearGeneratorHistoryTitle": { + "message": "Generator-Verlauf löschen" + }, + "cleargGeneratorHistoryDescription": { + "message": "Wenn du fortfährst, werden alle Einträge dauerhaft aus dem Generator-Verlauf gelöscht. Bist du sicher, dass du fortfahren möchtest?" + }, "back": { "message": "Zurück" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Verlauf löschen" }, - "noPasswordsToShow": { - "message": "Keine Passwörter zum Anzeigen" + "nothingToShow": { + "message": "Nichts anzuzeigen" }, - "noRecentlyGeneratedPassword": { - "message": "Du hast in letzter Zeit kein Passwort generiert" + "nothingGeneratedRecently": { + "message": "Du hast in letzter Zeit nichts generiert" }, "remove": { "message": "Entfernen" @@ -4616,19 +4625,19 @@ "message": "Authentifizierung" }, "fillGeneratedPassword": { - "message": "Fill generated password", + "message": "Generiertes Passwort ausfüllen", "description": "Heading for the password generator within the inline menu" }, "passwordRegenerated": { - "message": "Password regenerated", + "message": "Passwort neu generiert", "description": "Notification message for when a password has been regenerated" }, "saveLoginToBitwarden": { - "message": "Save login to Bitwarden?", + "message": "Zugangsdaten in Bitwarden speichern?", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "Leerzeichen", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { @@ -4636,31 +4645,31 @@ "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { - "message": "Backtick", + "message": "Gravis", "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { - "message": "Exclamation mark", + "message": "Ausrufezeichen", "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "At-Zeichen", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "Raute", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "Dollarzeichen", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "Prozentzeichen", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { - "message": "Caret", + "message": "Zirkumflex", "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { @@ -4668,23 +4677,23 @@ "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { - "message": "Asterisk", + "message": "Sternzeichen", "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Left parenthesis", + "message": "Linke Klammer", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Right parenthesis", + "message": "Rechte Klammer", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "Unterstrich", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { - "message": "Hyphen", + "message": "Bindestrich", "description": "Represents the - key in screen reader content as a readable word" }, "plusCharacterDescriptor": { @@ -4692,80 +4701,80 @@ "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Equals", + "message": "Gleich", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Linke geschweifte Klammer", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Rechte geschweifte Klammer", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Linke eckige Klammer", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Rechte eckige Klammer", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { - "message": "Pipe", + "message": "Senkrechter Strich", "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { - "message": "Back slash", + "message": "Rückstrich", "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { - "message": "Colon", + "message": "Doppelpunkt", "description": "Represents the : key in screen reader content as a readable word" }, "semicolonCharacterDescriptor": { - "message": "Semicolon", + "message": "Semikolon", "description": "Represents the ; key in screen reader content as a readable word" }, "doubleQuoteCharacterDescriptor": { - "message": "Double quote", + "message": "Doppelte Anführungszeichen", "description": "Represents the double quote key in screen reader content as a readable word" }, "singleQuoteCharacterDescriptor": { - "message": "Single quote", + "message": "Einfaches Anführungszeichen", "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Less than", + "message": "Kleiner als", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Greater than", + "message": "Größer als", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { - "message": "Comma", + "message": "Komma", "description": "Represents the , key in screen reader content as a readable word" }, "periodCharacterDescriptor": { - "message": "Period", + "message": "Punkt", "description": "Represents the . key in screen reader content as a readable word" }, "questionCharacterDescriptor": { - "message": "Question mark", + "message": "Fragezeichen", "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { - "message": "Forward slash", + "message": "Schrägstrich", "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { - "message": "Lowercase" + "message": "Kleinbuchstaben" }, "uppercaseAriaLabel": { - "message": "Uppercase" + "message": "Großbuchstaben" }, "generatedPassword": { - "message": "Generated password" + "message": "Generiertes Passwort" } } diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json index 3cbcf58ac7c..c2bc58519cc 100644 --- a/apps/browser/src/_locales/el/messages.json +++ b/apps/browser/src/_locales/el/messages.json @@ -3,7 +3,7 @@ "message": "Bitwarden" }, "extName": { - "message": "Bitwarden: Διαχείριση κωδικών πρόσβασης", + "message": "Διαχειριστής Κωδικών Πρόσβασης Bitwarden", "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { @@ -20,16 +20,16 @@ "message": "Δημιουργία λογαριασμού" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Νέος/α στο Bitwarden;" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Σύνδεση με κλειδί πρόσβασης" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Χρήση ενιαίας σύνδεσης" }, "welcomeBack": { - "message": "Welcome back" + "message": "Καλωσορίσατε και πάλι" }, "setAStrongPassword": { "message": "Ορίστε έναν ισχυρό κωδικό πρόσβασης" @@ -120,7 +120,7 @@ "message": "Αντιγραφή κωδικού πρόσβασης" }, "copyPassphrase": { - "message": "Copy passphrase" + "message": "Αντιγραφή φράσης πρόσβασης" }, "copyNote": { "message": "Αντιγραφή σημείωσης" @@ -168,7 +168,7 @@ "message": "Αντιγραφή σημειώσεων" }, "fill": { - "message": "Fill", + "message": "Συμπλήρωση", "description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible." }, "autoFill": { @@ -427,7 +427,7 @@ "message": "Δημιουργία κωδικού πρόσβασης" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Δημιουργία φράσης πρόσβασης" }, "regeneratePassword": { "message": "Επαναδημιουργία κωδικού πρόσβασης" @@ -591,7 +591,7 @@ "message": "Εκκίνηση ιστοσελίδας" }, "launchWebsiteName": { - "message": "Launch website $ITEMNAME$", + "message": "Εκκίνηση ιστοσελίδας $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -846,7 +846,7 @@ "message": "Σύνδεση" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Σύνδεση στο Bitwarden" }, "restartRegistration": { "message": "Επανεκκίνηση εγγραφής" @@ -1424,7 +1424,7 @@ "message": "URL Διακομιστή" }, "selfHostBaseUrl": { - "message": "Self-host server URL", + "message": "URL διακομιστή αυτο-φιλοξενίας", "description": "Label for field requesting a self-hosted integration service URL" }, "apiUrl": { @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Ιστορικό κωδικού πρόσβασης" }, + "generatorHistory": { + "message": "Ιστορικό γεννήτριας" + }, + "clearGeneratorHistoryTitle": { + "message": "Εκκαθάριση ιστορικού γεννήτριας" + }, + "cleargGeneratorHistoryDescription": { + "message": "Αν συνεχίσετε, όλες οι καταχωρήσεις θα διαγραφούν οριστικά από το ιστορικό της γεννήτριας. Είστε σίγουροι ότι θέλετε να συνεχίσετε;" + }, "back": { "message": "Πίσω" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Διαγραφή ιστορικού" }, - "noPasswordsToShow": { - "message": "Δεν υπάρχουν κωδικοί πρόσβασης για εμφάνιση" + "nothingToShow": { + "message": "Τίποτα για προβολή" }, - "noRecentlyGeneratedPassword": { - "message": "Δεν έχετε δημιουργήσει πρόσφατα έναν κωδικό πρόσβασης" + "nothingGeneratedRecently": { + "message": "Δεν έχετε δημιουργήσει τίποτα πρόσφατα" }, "remove": { "message": "Αφαίρεση" @@ -2503,7 +2512,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendPasswordDescV3": { - "message": "Add an optional password for recipients to access this Send.", + "message": "Προσθέστε έναν προαιρετικό κωδικό πρόσβασης για τους παραλήπτες για πρόσβαση σε αυτό το Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNotesDesc": { @@ -2866,7 +2875,7 @@ "message": "Δημιουργία ονόματος χρήστη" }, "generateEmail": { - "message": "Generate email" + "message": "Δημιουργία email" }, "usernameType": { "message": "Τύπος ονόματος χρήστη" @@ -2909,11 +2918,11 @@ "message": "Δημιουργήστε ένα alias email με μια εξωτερική υπηρεσία προώθησης." }, "forwarderDomainName": { - "message": "Email domain", + "message": "Τομέας ηλ. ταχυδρομείου", "description": "Labels the domain name email forwarder service option" }, "forwarderDomainNameHint": { - "message": "Choose a domain that is supported by the selected service", + "message": "Επιλέξτε ένα τομέα που υποστηρίζεται από την επιλεγμένη υπηρεσία", "description": "Guidance provided for email forwarding services that support multiple email domains." }, "forwarderError": { @@ -4616,23 +4625,23 @@ "message": "Ταυτοποίηση" }, "fillGeneratedPassword": { - "message": "Fill generated password", + "message": "Συμπληρώση του δημιουργημένου κωδικού πρόσβασης", "description": "Heading for the password generator within the inline menu" }, "passwordRegenerated": { - "message": "Password regenerated", + "message": "Ο κωδικός επαναδημιουργήθηκε", "description": "Notification message for when a password has been regenerated" }, "saveLoginToBitwarden": { - "message": "Save login to Bitwarden?", + "message": "Αποθήκευση σύνδεσης στο Bitwarden;", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "Κενό", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { - "message": "Tilde", + "message": "Περισπωμένη", "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { @@ -4640,23 +4649,23 @@ "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { - "message": "Exclamation mark", + "message": "Θαυμαστικό", "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "Παπάκι", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "Δίεση", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "Δολάριο", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "Τοις εκατό", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { @@ -4668,47 +4677,47 @@ "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { - "message": "Asterisk", + "message": "Αστερίσκος", "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Left parenthesis", + "message": "Αριστερή παρένθεση", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Right parenthesis", + "message": "Δεξιά παρένθεση", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "Κάτω παύλα", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { - "message": "Hyphen", + "message": "Παύλα", "description": "Represents the - key in screen reader content as a readable word" }, "plusCharacterDescriptor": { - "message": "Plus", + "message": "Συν", "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Equals", + "message": "Ίσον", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Αριστερό άγκιστρο", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Δεξί άγκιστρο", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Αριστερή αγκύλη", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Δεξιά αγκύλη", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { @@ -4720,7 +4729,7 @@ "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { - "message": "Colon", + "message": "Άνω κάτω τελεία", "description": "Represents the : key in screen reader content as a readable word" }, "semicolonCharacterDescriptor": { @@ -4736,11 +4745,11 @@ "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Less than", + "message": "Λιγότερο από", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Greater than", + "message": "Μεγαλύτερο από", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { @@ -4748,11 +4757,11 @@ "description": "Represents the , key in screen reader content as a readable word" }, "periodCharacterDescriptor": { - "message": "Period", + "message": "Τελεία", "description": "Represents the . key in screen reader content as a readable word" }, "questionCharacterDescriptor": { - "message": "Question mark", + "message": "Αγγλικό ερωτηματικό", "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { @@ -4760,10 +4769,10 @@ "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { - "message": "Lowercase" + "message": "Πεζά" }, "uppercaseAriaLabel": { - "message": "Uppercase" + "message": "Κεφαλαία" }, "generatedPassword": { "message": "Generated password" diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json index 0aae94aee47..71161b14e5c 100644 --- a/apps/browser/src/_locales/en_GB/messages.json +++ b/apps/browser/src/_locales/en_GB/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json index 4eab6adf74a..4265ffa6964 100644 --- a/apps/browser/src/_locales/en_IN/messages.json +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json index 28d63aca133..5c7e82f89ba 100644 --- a/apps/browser/src/_locales/es/messages.json +++ b/apps/browser/src/_locales/es/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Historial de contraseñas" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Atrás" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Eliminar" diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json index 13b521c47a1..38543a88842 100644 --- a/apps/browser/src/_locales/et/messages.json +++ b/apps/browser/src/_locales/et/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Paroolide ajalugu" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Tagasi" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Eemalda" diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json index 037873bbc5f..3bdc49f61ad 100644 --- a/apps/browser/src/_locales/eu/messages.json +++ b/apps/browser/src/_locales/eu/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Pasahitz historia" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Itzuli" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Ezabatu" diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json index 42005f3f45c..94c420155e7 100644 --- a/apps/browser/src/_locales/fa/messages.json +++ b/apps/browser/src/_locales/fa/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "تاریخچه کلمه عبور" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "بازگشت" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "حذف" diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json index dcd38ff6c7a..3d0fe6ea64d 100644 --- a/apps/browser/src/_locales/fi/messages.json +++ b/apps/browser/src/_locales/fi/messages.json @@ -1627,7 +1627,7 @@ "message": "Erääntymisvuosi" }, "expiration": { - "message": "Erääntymisaika" + "message": "Voimassaolo päättyy" }, "january": { "message": "Tammikuu" @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Salasanahistoria" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Takaisin" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Tyhjennä historia" }, - "noPasswordsToShow": { - "message": "Näytettäviä salasanoja ei ole" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "Et ole luonut salasanoja hiljattain" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Poista" @@ -4007,7 +4016,7 @@ "message": "Tyhjennä suodattimet tai kokeile toista hakutermiä" }, "copyInfoTitle": { - "message": "Kopioi tietoja - $ITEMNAME$", + "message": "Kopioi tiedot - $ITEMNAME$", "description": "Title for a button that opens a menu with options to copy information from an item.", "placeholders": { "itemname": { @@ -4070,7 +4079,7 @@ "message": "Ei kopioitavia arvoja" }, "assignToCollections": { - "message": "Määritä kokoelmiin" + "message": "Määritä kokoelmat" }, "copyEmail": { "message": "Kopioi sähköpostiosoite" @@ -4559,7 +4568,7 @@ "message": "Bitwardenilla on uusi ulkoasu!" }, "bitwardenNewLookDesc": { - "message": "Automaattitäyttäminen ja hakujen tekeminen Holvi-välilehdeltä on entistä helpompaa ja luontevampaa. Kokeile nyt!" + "message": "Automaattinen täyttö ja sisällön haku Holvi-välilehdeltä on nyt entistä helpompaa ja luontevampaa. Kokeile nyt!" }, "accountActions": { "message": "Tilitoiminnot" diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json index 8a52a1a09c8..5adeda013f9 100644 --- a/apps/browser/src/_locales/fil/messages.json +++ b/apps/browser/src/_locales/fil/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Kasaysayan ng Password" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Bumalik" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Alisin" diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json index f8e7dc41687..ed2cfb19df7 100644 --- a/apps/browser/src/_locales/fr/messages.json +++ b/apps/browser/src/_locales/fr/messages.json @@ -120,7 +120,7 @@ "message": "Copier le mot de passe" }, "copyPassphrase": { - "message": "Copy passphrase" + "message": "Copier la phrase de passe" }, "copyNote": { "message": "Copier la note" @@ -427,7 +427,7 @@ "message": "Générer un mot de passe" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Générer une phrase de passe" }, "regeneratePassword": { "message": "Régénérer un mot de passe" @@ -567,7 +567,7 @@ "message": "Notes" }, "privateNote": { - "message": "Private note" + "message": "Note privée" }, "note": { "message": "Note" @@ -624,7 +624,7 @@ "message": "Expiration de la session" }, "vaultTimeoutHeader": { - "message": "Vault timeout" + "message": "Délai d'expiration du coffre" }, "otherOptions": { "message": "Autres options" @@ -676,7 +676,7 @@ "message": "Délai d'expiration du coffre" }, "vaultTimeout1": { - "message": "Timeout" + "message": "Délai d'expiration" }, "lockNow": { "message": "Verrouiller maintenant" @@ -882,7 +882,7 @@ "message": "L'authentification à deux facteurs rend votre compte plus sûr en vous demandant de vérifier votre connexion avec un autre dispositif tel qu'une clé de sécurité, une application d'authentification, un SMS, un appel téléphonique ou un courriel. L'authentification à deux facteurs peut être configurée dans le coffre web de bitwarden.com. Voulez-vous visiter le site web maintenant ?" }, "twoStepLoginConfirmationContent": { - "message": "Make your account more secure by setting up two-step login in the Bitwarden web app." + "message": "Rendez votre compte plus sécurisé en configurant la connexion en deux étapes dans l'application web Bitwarden." }, "twoStepLoginConfirmationTitle": { "message": "Poursuivre vers l'application web ?" @@ -1424,7 +1424,7 @@ "message": "URL du serveur" }, "selfHostBaseUrl": { - "message": "Self-host server URL", + "message": "URL du serveur auto-hébergé", "description": "Label for field requesting a self-hosted integration service URL" }, "apiUrl": { @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Historique des mots de passe" }, + "generatorHistory": { + "message": "Historique du générateur" + }, + "clearGeneratorHistoryTitle": { + "message": "Effacer l'historique du générateur" + }, + "cleargGeneratorHistoryDescription": { + "message": "Si vous continuez, toutes les entrées seront définitivement supprimées de l'historique du générateur. Êtes-vous sûr de vouloir continuer ?" + }, "back": { "message": "Retour" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Effacer l'historique" }, - "noPasswordsToShow": { - "message": "Aucun mot de passe à afficher" + "nothingToShow": { + "message": "Rien à montrer" }, - "noRecentlyGeneratedPassword": { - "message": "Vous n'avez pas généré de mot de passe récemment" + "nothingGeneratedRecently": { + "message": "Vous n'avez rien généré récemment" }, "remove": { "message": "Supprimer" @@ -1984,7 +1993,7 @@ "message": "Définissez votre code PIN pour déverrouiller Bitwarden. Les paramètres relatifs à votre code PIN seront réinitialisés si vous vous déconnectez complètement de l'application." }, "setYourPinCode1": { - "message": "Your PIN will be used to unlock Bitwarden instead of your master password. Your PIN will reset if you ever fully log out of Bitwarden." + "message": "Votre code PIN sera utilisé pour déverrouiller Bitwarden au lieu de votre mot de passe principal. Votre code PIN sera réinitialisé si vous vous déconnectez complètement de Bitwarden." }, "pinRequired": { "message": "Le code PIN est requis." @@ -2011,7 +2020,7 @@ "message": "Verrouiller avec le mot de passe principal au redémarrage du navigateur" }, "lockWithMasterPassOnRestart1": { - "message": "Require master password on browser restart" + "message": "Exiger le mot de passe principal au redémarrage du navigateur" }, "selectOneCollection": { "message": "Vous devez sélectionner au moins une collection." @@ -2052,7 +2061,7 @@ "message": "Action après délai d'expiration du coffre" }, "vaultTimeoutAction1": { - "message": "Timeout action" + "message": "Expiration de l'action" }, "lock": { "message": "Verrouiller", @@ -2340,14 +2349,14 @@ "message": "Changements de domaines exclus enregistrés" }, "limitSendViews": { - "message": "Limit views" + "message": "Limiter les vues" }, "limitSendViewsHint": { - "message": "No one can view this Send after the limit is reached.", + "message": "Personne ne peut voir ce Send une fois la limite atteinte.", "description": "Displayed under the limit views field on Send" }, "limitSendViewsCount": { - "message": "$ACCESSCOUNT$ views left", + "message": "$ACCESSCOUNT$ vues restantes", "description": "Displayed under the limit views field on Send", "placeholders": { "accessCount": { @@ -2866,7 +2875,7 @@ "message": "Générer un nom d'utilisateur" }, "generateEmail": { - "message": "Generate email" + "message": "Générer un courriel" }, "usernameType": { "message": "Type de nom d'utilisateur" @@ -2909,7 +2918,7 @@ "message": "Générer un alias de courriel avec un service de transfert externe." }, "forwarderDomainName": { - "message": "Email domain", + "message": "Domaine du courriel", "description": "Labels the domain name email forwarder service option" }, "forwarderDomainNameHint": { diff --git a/apps/browser/src/_locales/gl/messages.json b/apps/browser/src/_locales/gl/messages.json index dfaa32981dc..b6aea83973b 100644 --- a/apps/browser/src/_locales/gl/messages.json +++ b/apps/browser/src/_locales/gl/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Historial de contrasinais" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Atrás" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Eliminar" diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json index a991d57b488..ceaa7370256 100644 --- a/apps/browser/src/_locales/he/messages.json +++ b/apps/browser/src/_locales/he/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "היסטוריית סיסמאות" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "הקודם" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "הסר" diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json index 85d99becefc..f9b11310f6a 100644 --- a/apps/browser/src/_locales/hi/messages.json +++ b/apps/browser/src/_locales/hi/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "पासवर्ड इतिहास" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "वापस जाएं" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "हटाएं" diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json index d23fed9cda3..aef566431bb 100644 --- a/apps/browser/src/_locales/hr/messages.json +++ b/apps/browser/src/_locales/hr/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Povijest" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Natrag" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Očisti povijest" }, - "noPasswordsToShow": { - "message": "Nema lozinki za prikaz" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "Nema nedavno generiranih lozinki" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Ukloni" diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json index 2582fc75153..32b577b0e83 100644 --- a/apps/browser/src/_locales/hu/messages.json +++ b/apps/browser/src/_locales/hu/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Jelszó előzmények" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Beenerátor előzmények kiürítése" + }, + "cleargGeneratorHistoryDescription": { + "message": "Ha folytatjuk, az összes bejegyzés véglegesen törlődik a generátor előzményeiből. Biztosan folytatjuk?" + }, "back": { "message": "Vissza" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Előzmények törlése" }, - "noPasswordsToShow": { - "message": "Nincsenek megjeleníthető jelszavak." + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "Mostanában nem lett jelszó generálva." + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Eltávolítás" diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json index 2ee5e6855de..1b0f9d19295 100644 --- a/apps/browser/src/_locales/id/messages.json +++ b/apps/browser/src/_locales/id/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Riwayat Kata Sandi" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Kembali" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Hapus" diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json index 912fba56266..300d99cbed2 100644 --- a/apps/browser/src/_locales/it/messages.json +++ b/apps/browser/src/_locales/it/messages.json @@ -1328,7 +1328,7 @@ "message": "Ricordami" }, "sendVerificationCodeEmailAgain": { - "message": "Invia email con codice di verifica di nuovo" + "message": "Invia di nuovo l'email con codice di verifica" }, "useAnotherTwoStepMethod": { "message": "Usa un altro metodo di verifica in due passaggi" @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Cronologia delle password" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Indietro" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Cancella cronologia" }, - "noPasswordsToShow": { - "message": "Nessuna password da mostrare" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "Non hai generato una password di recente" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Rimuovi" @@ -2135,7 +2144,7 @@ "message": "Una o più politiche dell'organizzazione richiedono che la tua password principale soddisfi questi requisiti:" }, "policyInEffectMinComplexity": { - "message": "Punteggio minimo di complessità di $SCORE$", + "message": "Punteggio di complessità minimo di $SCORE$", "placeholders": { "score": { "content": "$1", @@ -3134,7 +3143,7 @@ "message": "Password principale debole e violata" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Password debole e trovata una violazione dei dati. Usa una password forte e unica per proteggere il tuo account. Sei sicuro di voler usare questa password?" + "message": "Password debole e trovata in una violazione dei dati. Usa una password forte e unica per proteggere il tuo account. Sei sicuro di voler usare questa password?" }, "checkForBreaches": { "message": "Controlla se la tua password è presente in una violazione dei dati" diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json index 59fe8fcf708..75378889d1a 100644 --- a/apps/browser/src/_locales/ja/messages.json +++ b/apps/browser/src/_locales/ja/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "パスワードの履歴" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "戻る" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "履歴を消去" }, - "noPasswordsToShow": { - "message": "パスワードがありません" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "最近パスワードを生成していません" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "削除" diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json index 1d38c4b53ea..a5f82794ec8 100644 --- a/apps/browser/src/_locales/ka/messages.json +++ b/apps/browser/src/_locales/ka/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "უკან" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "პაროლების ისტორია" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "წაშლა" diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json index 4037887cb28..3414760d2a3 100644 --- a/apps/browser/src/_locales/km/messages.json +++ b/apps/browser/src/_locales/km/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json index c58b6e5ff80..96078aa7edb 100644 --- a/apps/browser/src/_locales/kn/messages.json +++ b/apps/browser/src/_locales/kn/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "ಪಾಸ್ವರ್ಡ್ ಇತಿಹಾಸ" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "ಹಿಂದಕ್ಕೆ" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "ತೆಗೆ" diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json index e9b012cc277..de015d285a4 100644 --- a/apps/browser/src/_locales/ko/messages.json +++ b/apps/browser/src/_locales/ko/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "비밀번호 변경 기록" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "뒤로" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "제거" diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index 660cf62b697..716c474b53e 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Slaptažodžio istorija" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Atgal" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Pašalinti" diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json index 56321c97cba..8e277cf7f8a 100644 --- a/apps/browser/src/_locales/lv/messages.json +++ b/apps/browser/src/_locales/lv/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Paroļu vēsture" }, + "generatorHistory": { + "message": "Veidotāja vēsture" + }, + "clearGeneratorHistoryTitle": { + "message": "Iztīrīt veidotāja vēsturi" + }, + "cleargGeneratorHistoryDescription": { + "message": "Turpinot visi veidotāja vēstures ieraksti tiks neatgrieziniski izdzēsti. Vai tiešām turpināt?" + }, "back": { "message": "Atpakaļ" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Notīrīt vēsturi" }, - "noPasswordsToShow": { - "message": "Nav paroļu, ko parādīt" + "nothingToShow": { + "message": "Nav nekā, ko parādīt" }, - "noRecentlyGeneratedPassword": { - "message": "Pēdējā laikā nav izveidota neviena parole" + "nothingGeneratedRecently": { + "message": "Pēdējā laikā nav nekas izveidots" }, "remove": { "message": "Noņemt" diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json index 45576592038..2cfabae5b96 100644 --- a/apps/browser/src/_locales/ml/messages.json +++ b/apps/browser/src/_locales/ml/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "പാസ്സ്‌വേഡ് നാൾവഴി" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "പുറകോട്ട്" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "നീക്കുക" diff --git a/apps/browser/src/_locales/mr/messages.json b/apps/browser/src/_locales/mr/messages.json index 083e61c3b94..d8e86c4c9e8 100644 --- a/apps/browser/src/_locales/mr/messages.json +++ b/apps/browser/src/_locales/mr/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/my/messages.json b/apps/browser/src/_locales/my/messages.json index 4037887cb28..3414760d2a3 100644 --- a/apps/browser/src/_locales/my/messages.json +++ b/apps/browser/src/_locales/my/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json index 19c1fd0e89e..ecd0b1e5c10 100644 --- a/apps/browser/src/_locales/nb/messages.json +++ b/apps/browser/src/_locales/nb/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Passordhistorikk" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Tilbake" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Fjern" diff --git a/apps/browser/src/_locales/ne/messages.json b/apps/browser/src/_locales/ne/messages.json index 4037887cb28..3414760d2a3 100644 --- a/apps/browser/src/_locales/ne/messages.json +++ b/apps/browser/src/_locales/ne/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json index c36a0018b90..fe415cfb1dc 100644 --- a/apps/browser/src/_locales/nl/messages.json +++ b/apps/browser/src/_locales/nl/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Geschiedenis" }, + "generatorHistory": { + "message": "Generatorgeschiedenis" + }, + "clearGeneratorHistoryTitle": { + "message": "Generatorgeschiedenis wissen" + }, + "cleargGeneratorHistoryDescription": { + "message": "Als je doorgaat, wis je definitief de geschiedenis van de generator. Weet je zeker dat je wilt doorgaan?" + }, "back": { "message": "Terug" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Geschiedenis wissen" }, - "noPasswordsToShow": { - "message": "Geen wachtwoorden weer te geven" + "nothingToShow": { + "message": "Niets om te laten zien" }, - "noRecentlyGeneratedPassword": { - "message": "Je hebt onlangs geen wachtwoord gegenereerd" + "nothingGeneratedRecently": { + "message": "Je hebt de laatste tijd niets gegenereerd" }, "remove": { "message": "Verwijderen" diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json index 4037887cb28..3414760d2a3 100644 --- a/apps/browser/src/_locales/nn/messages.json +++ b/apps/browser/src/_locales/nn/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/or/messages.json b/apps/browser/src/_locales/or/messages.json index 4037887cb28..3414760d2a3 100644 --- a/apps/browser/src/_locales/or/messages.json +++ b/apps/browser/src/_locales/or/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index b71035cfaff..39f5541e596 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -20,22 +20,22 @@ "message": "Utwórz konto" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Nowy użytkownik Bitwarden?" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Zaloguj się używając passkey" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Użyj jednokrotnego logowania" }, "welcomeBack": { - "message": "Welcome back" + "message": "Witaj ponownie" }, "setAStrongPassword": { "message": "Ustaw silne hasło" }, "finishCreatingYourAccountBySettingAPassword": { - "message": "Ukończ tworzenie konta poprzez ustawienie hasła" + "message": "Ukończ tworzenie konta poprzez utworzenie hasła" }, "enterpriseSingleSignOn": { "message": "Logowanie jednokrotne" @@ -84,7 +84,7 @@ "message": "Dołącz do organizacji" }, "joinOrganizationName": { - "message": "Join $ORGANIZATIONNAME$", + "message": "Dołącz do $ORGANIZATIONNAME$", "placeholders": { "organizationName": { "content": "$1", @@ -120,7 +120,7 @@ "message": "Kopiuj hasło" }, "copyPassphrase": { - "message": "Copy passphrase" + "message": "Kopiuj frazę bezpieczeństwa" }, "copyNote": { "message": "Kopiuj notatkę" @@ -168,7 +168,7 @@ "message": "Kopiuj notatki" }, "fill": { - "message": "Fill", + "message": "Uzupełnij", "description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible." }, "autoFill": { @@ -427,7 +427,7 @@ "message": "Wygeneruj hasło" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Wygenruj frazę zabezpieczającą" }, "regeneratePassword": { "message": "Wygeneruj ponownie hasło" @@ -591,7 +591,7 @@ "message": "Otwórz stronę" }, "launchWebsiteName": { - "message": "Launch website $ITEMNAME$", + "message": "Otwórz stronę internetową $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -645,13 +645,13 @@ "message": "Sejf jest zablokowany. Zweryfikuj swoją tożsamość, aby kontynuować." }, "yourVaultIsLockedV2": { - "message": "Your vault is locked" + "message": "Twój sejf jest zablokowany" }, "yourAccountIsLocked": { - "message": "Your account is locked" + "message": "Twoje konto jest zablokowane" }, "or": { - "message": "or" + "message": "lub" }, "unlock": { "message": "Odblokuj" @@ -846,7 +846,7 @@ "message": "Zaloguj się" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Zaloguj się do Bitwarden" }, "restartRegistration": { "message": "Zrestartuj rejestrację" @@ -1424,7 +1424,7 @@ "message": "Adres URL serwera" }, "selfHostBaseUrl": { - "message": "Self-host server URL", + "message": "URL samodzielnie hostowanego serwera", "description": "Label for field requesting a self-hosted integration service URL" }, "apiUrl": { @@ -1456,10 +1456,10 @@ "message": "Pokaż sugestie autouzupełniania na polach formularza" }, "showInlineMenuIdentitiesLabel": { - "message": "Display identities as suggestions" + "message": "Pokazuj tożsamości jako sugestie" }, "showInlineMenuCardsLabel": { - "message": "Display cards as suggestions" + "message": "Pokazuj karty jako sugestie" }, "showInlineMenuOnIconSelectionLabel": { "message": "Wyświetlaj sugestie kiedy ikona jest zaznaczona" @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Historia hasła" }, + "generatorHistory": { + "message": "Historia generatora" + }, + "clearGeneratorHistoryTitle": { + "message": "Wyczyść historię generatora" + }, + "cleargGeneratorHistoryDescription": { + "message": "Jeśli kontynuujesz, wszystkie elementy zostaną usunięte z historii generatora. Czy chcesz kontynuować mimo to?" + }, "back": { "message": "Powrót" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Wyczyść historię" }, - "noPasswordsToShow": { - "message": "Brak haseł do wyświetlenia" + "nothingToShow": { + "message": "Nic do pokazania" }, - "noRecentlyGeneratedPassword": { - "message": "W ostatnim czasie nie wygenerowano hasła" + "nothingGeneratedRecently": { + "message": "Nic nie zostało wygenerowane przez ciebie w ostatnim czasie" }, "remove": { "message": "Usuń" @@ -1999,7 +2008,7 @@ "message": "Odblokuj danymi biometrycznymi" }, "unlockWithMasterPassword": { - "message": "Unlock with master password" + "message": "Odblokuj za pomocą głównego hasła" }, "awaitDesktop": { "message": "Oczekiwanie na potwierdzenie z aplikacji desktopowej" @@ -2503,7 +2512,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendPasswordDescV3": { - "message": "Add an optional password for recipients to access this Send.", + "message": "Zabezpiecz tę wiadomość hasłem, które będzie wymagane, aby uzyskać do niej dostęp.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNotesDesc": { @@ -2552,11 +2561,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHoursSingle": { - "message": "The Send will be available to anyone with the link for the next 1 hour.", + "message": "Wiadomość będzie dostępna dla każdego z dostępem do tego linku przez następną godzinę.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHours": { - "message": "The Send will be available to anyone with the link for the next $HOURS$ hours.", + "message": "Wiadomość będzie dostępna dla każdego z dostępem do tego linku przez następne $HOURS$ godzin.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "hours": { @@ -2566,11 +2575,11 @@ } }, "sendExpiresInDaysSingle": { - "message": "The Send will be available to anyone with the link for the next 1 day.", + "message": "Wiadomość będzie dostępna dla każdego z dostępem do tego linku przez 1 dzień.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInDays": { - "message": "The Send will be available to anyone with the link for the next $DAYS$ days.", + "message": "Wiadomość będzie dostępna dla każdego z dostępem do tego linku przez następne $DAYS$ dni.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "days": { @@ -2701,7 +2710,7 @@ "description": "Used as a card title description on the set password page to explain why the user is there" }, "cardMetrics": { - "message": "out of $TOTAL$", + "message": "z $TOTAL$ elementów", "placeholders": { "total": { "content": "$1", @@ -2866,7 +2875,7 @@ "message": "Wygeneruj nazwę użytkownika" }, "generateEmail": { - "message": "Generate email" + "message": "Wygenruj adres e-mail" }, "usernameType": { "message": "Rodzaj nazwy użytkownika" @@ -2909,7 +2918,7 @@ "message": "Wygeneruj alias adresu e-mail z zewnętrznej usługi przekierowania." }, "forwarderDomainName": { - "message": "Email domain", + "message": "Domena adresu e-mail", "description": "Labels the domain name email forwarder service option" }, "forwarderDomainNameHint": { @@ -3727,7 +3736,7 @@ "message": "Passkey" }, "accessing": { - "message": "Accessing" + "message": "Uzyskiwanie dostępu" }, "passkeyNotCopied": { "message": "Passkey nie zostanie skopiowany" @@ -3754,7 +3763,7 @@ "message": "Brak pasujących loginów dla tej witryny" }, "searchSavePasskeyNewLogin": { - "message": "Search or save passkey as new login" + "message": "Wyszukaj alb zapisz passkey jako nowy login" }, "confirm": { "message": "Potwierdź" @@ -4613,22 +4622,22 @@ "message": "Nie masz uprawnień do edycji tego elementu" }, "authenticating": { - "message": "Authenticating" + "message": "Uwierzytelnianie" }, "fillGeneratedPassword": { "message": "Fill generated password", "description": "Heading for the password generator within the inline menu" }, "passwordRegenerated": { - "message": "Password regenerated", + "message": "Hasło zostało ponownie wygenerowane", "description": "Notification message for when a password has been regenerated" }, "saveLoginToBitwarden": { - "message": "Save login to Bitwarden?", + "message": "Zapisać dane logowania w Bitwarden?", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "Spacja", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { @@ -4640,23 +4649,23 @@ "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { - "message": "Exclamation mark", + "message": "Wykrzyknik", "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "Małpa", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "Hashtag", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "Znak dolara", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "Znak procenta", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { @@ -4668,7 +4677,7 @@ "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { - "message": "Asterisk", + "message": "Gwiazdka", "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { @@ -4680,7 +4689,7 @@ "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "Podkreślenie", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { @@ -4692,23 +4701,23 @@ "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Equals", + "message": "Znak równości", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Lewy nawias klamrowy", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Prawy nawias klamrowy", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Lewy nawias kwadratowy", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Prawy nawias kwadratowy", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json index a5509efc487..63ab1eb3d8f 100644 --- a/apps/browser/src/_locales/pt_BR/messages.json +++ b/apps/browser/src/_locales/pt_BR/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Histórico de Senha" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Voltar" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Limpar histórico" }, - "noPasswordsToShow": { - "message": "Nenhuma senha para mostrar" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "Você não gerou uma senha recentemente" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remover" diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json index 244f700dac3..a40a5ec1113 100644 --- a/apps/browser/src/_locales/pt_PT/messages.json +++ b/apps/browser/src/_locales/pt_PT/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Histórico de palavras-passe" }, + "generatorHistory": { + "message": "Histórico do gerador" + }, + "clearGeneratorHistoryTitle": { + "message": "Limpar o histórico do gerador" + }, + "cleargGeneratorHistoryDescription": { + "message": "Se continuar, todas as entradas serão permanentemente eliminadas do histórico do gerador. Tem a certeza de que pretende continuar?" + }, "back": { "message": "Voltar" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Limpar histórico" }, - "noPasswordsToShow": { - "message": "Não há palavras-passe para mostrar" + "nothingToShow": { + "message": "Nada a mostrar" }, - "noRecentlyGeneratedPassword": { - "message": "Não gerou nenhuma palavra-passe recentemente" + "nothingGeneratedRecently": { + "message": "Não gerou nada recentemente" }, "remove": { "message": "Remover" @@ -4636,7 +4645,7 @@ "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { - "message": "Backtick", + "message": "Plicas", "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { @@ -4644,27 +4653,27 @@ "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "Arroba", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "Cardinal", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "Dólar", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "Percentagem", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { - "message": "Caret", + "message": "Acento circunflexo", "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { - "message": "Ampersand", + "message": "E comercial", "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { @@ -4696,27 +4705,27 @@ "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Chaveta esquerda", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Chaveta direita", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Parêntesis reto esquerdo", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Parêntesis reto direito", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { - "message": "Pipe", + "message": "Barra vertical", "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { - "message": "Back slash", + "message": "Barra invertida", "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { @@ -4728,11 +4737,11 @@ "description": "Represents the ; key in screen reader content as a readable word" }, "doubleQuoteCharacterDescriptor": { - "message": "Double quote", + "message": "Aspas", "description": "Represents the double quote key in screen reader content as a readable word" }, "singleQuoteCharacterDescriptor": { - "message": "Single quote", + "message": "Aspas simples", "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { @@ -4756,7 +4765,7 @@ "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { - "message": "Forward slash", + "message": "Barra oblíqua", "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json index 4847fecf059..99bf86c9876 100644 --- a/apps/browser/src/_locales/ro/messages.json +++ b/apps/browser/src/_locales/ro/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Istoric parole" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Înapoi" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Ștergere" diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json index 9df9fc8d567..e898d68ae86 100644 --- a/apps/browser/src/_locales/ru/messages.json +++ b/apps/browser/src/_locales/ru/messages.json @@ -20,16 +20,16 @@ "message": "Создать аккаунт" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Впервые на Bitwarden?" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Войти с passkey" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Использовать единый вход" }, "welcomeBack": { - "message": "Welcome back" + "message": "С возвращением" }, "setAStrongPassword": { "message": "Задайте надежный пароль" @@ -168,7 +168,7 @@ "message": "Скопировать заметки" }, "fill": { - "message": "Fill", + "message": "Заполнить", "description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible." }, "autoFill": { @@ -591,7 +591,7 @@ "message": "Открыть сайт" }, "launchWebsiteName": { - "message": "Launch website $ITEMNAME$", + "message": "Открыть сайт $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -846,7 +846,7 @@ "message": "Войти" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Войти в Bitwarden" }, "restartRegistration": { "message": "Перезапустить регистрацию" @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "История паролей" }, + "generatorHistory": { + "message": "История генератора" + }, + "clearGeneratorHistoryTitle": { + "message": "Очистить историю генератора" + }, + "cleargGeneratorHistoryDescription": { + "message": "Если вы продолжите, все записи будут навсегда удалены из истории генератора. Вы уверены, что хотите продолжить?" + }, "back": { "message": "Назад" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Очистить историю" }, - "noPasswordsToShow": { - "message": "Нет паролей для отображения" + "nothingToShow": { + "message": "Нечего показать" }, - "noRecentlyGeneratedPassword": { - "message": "Нет недавно сгенерированных паролей" + "nothingGeneratedRecently": { + "message": "Вы ничего не создавали в последнее время" }, "remove": { "message": "Удалить" @@ -4616,156 +4625,156 @@ "message": "Аутентификация" }, "fillGeneratedPassword": { - "message": "Fill generated password", + "message": "Заполнить сгенерированный пароль", "description": "Heading for the password generator within the inline menu" }, "passwordRegenerated": { - "message": "Password regenerated", + "message": "Пароль сгенерирован", "description": "Notification message for when a password has been regenerated" }, "saveLoginToBitwarden": { - "message": "Save login to Bitwarden?", + "message": "Сохранить логин в Bitwarden?", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "Пробел", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { - "message": "Tilde", + "message": "Тильда", "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { - "message": "Backtick", + "message": "Кавычка", "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { - "message": "Exclamation mark", + "message": "Восклицательный знак", "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "Символ At", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "Символ хэша", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "Символ доллара", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "Символ процента", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { - "message": "Caret", + "message": "Каре", "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { - "message": "Ampersand", + "message": "Амперсанд", "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { - "message": "Asterisk", + "message": "Звездочка", "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Left parenthesis", + "message": "Левая круглая скобка", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Right parenthesis", + "message": "Правая круглая скобка", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "Подчеркивание", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { - "message": "Hyphen", + "message": "Дефис", "description": "Represents the - key in screen reader content as a readable word" }, "plusCharacterDescriptor": { - "message": "Plus", + "message": "Плюс", "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Equals", + "message": "Равно", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Левая фигурная скобка", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Правая фигурная скобка", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Левая квадратная скобка", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Правая квадратная скобка", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { - "message": "Pipe", + "message": "Вертикальная черта", "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { - "message": "Back slash", + "message": "Обратный слэш", "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { - "message": "Colon", + "message": "Двоеточие", "description": "Represents the : key in screen reader content as a readable word" }, "semicolonCharacterDescriptor": { - "message": "Semicolon", + "message": "Точка с запятой", "description": "Represents the ; key in screen reader content as a readable word" }, "doubleQuoteCharacterDescriptor": { - "message": "Double quote", + "message": "Двойные кавычки", "description": "Represents the double quote key in screen reader content as a readable word" }, "singleQuoteCharacterDescriptor": { - "message": "Single quote", + "message": "Одинарная кавычка", "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Less than", + "message": "Меньше", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Greater than", + "message": "Больше", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { - "message": "Comma", + "message": "Запятая", "description": "Represents the , key in screen reader content as a readable word" }, "periodCharacterDescriptor": { - "message": "Period", + "message": "Точка", "description": "Represents the . key in screen reader content as a readable word" }, "questionCharacterDescriptor": { - "message": "Question mark", + "message": "Вопросительный знак", "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { - "message": "Forward slash", + "message": "Слэш", "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { - "message": "Lowercase" + "message": "Строчные буквы" }, "uppercaseAriaLabel": { - "message": "Uppercase" + "message": "Заглавные буквы" }, "generatedPassword": { - "message": "Generated password" + "message": "Сгенерированный пароль" } } diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json index a4b8c3b8149..3ff7dde6897 100644 --- a/apps/browser/src/_locales/si/messages.json +++ b/apps/browser/src/_locales/si/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "මුරපද ඉතිහාසය" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "ආපසු" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "ඉවත් කරන්න" diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json index f08b18f33ba..e47d80bca26 100644 --- a/apps/browser/src/_locales/sk/messages.json +++ b/apps/browser/src/_locales/sk/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "História hesla" }, + "generatorHistory": { + "message": "História generátora" + }, + "clearGeneratorHistoryTitle": { + "message": "Vymazať históriu generátora" + }, + "cleargGeneratorHistoryDescription": { + "message": "Ak budete pokračovať, všetky položky z histórie generátora budu natrvalo vymazané. Naozaj chcete pokračovať?" + }, "back": { "message": "Späť" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Vymazať históriu" }, - "noPasswordsToShow": { - "message": "Žiadne heslá na zobrazenie" + "nothingToShow": { + "message": "Nič na zobrazenie" }, - "noRecentlyGeneratedPassword": { - "message": "V poslednej dobe ste negenerovali žiadne heslá" + "nothingGeneratedRecently": { + "message": "V poslednej dobe ste nič negenerovali" }, "remove": { "message": "Odstrániť" diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json index ea2d29dfe3c..7ee7d1c5c77 100644 --- a/apps/browser/src/_locales/sl/messages.json +++ b/apps/browser/src/_locales/sl/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Zgodovina gesel" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Nazaj" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Odstrani" diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json index ea1a030e07b..ad9ee20f295 100644 --- a/apps/browser/src/_locales/sr/messages.json +++ b/apps/browser/src/_locales/sr/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Историја Лозинке" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Назад" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Обриши историју" }, - "noPasswordsToShow": { - "message": "Нема лозинке за приказ" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "Нисте недавно генерисали лозинку" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Уклони" diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json index 175f4824179..93a0b899a3c 100644 --- a/apps/browser/src/_locales/sv/messages.json +++ b/apps/browser/src/_locales/sv/messages.json @@ -20,16 +20,16 @@ "message": "Skapa konto" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Ny på Bitwarden?" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Logga in med nyckel" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Använd Single Sign-On" }, "welcomeBack": { - "message": "Welcome back" + "message": "Välkommen tillbaka" }, "setAStrongPassword": { "message": "Ställ in ett starkt lösenord" @@ -120,7 +120,7 @@ "message": "Kopiera lösenord" }, "copyPassphrase": { - "message": "Copy passphrase" + "message": "Kopiera lösenfras" }, "copyNote": { "message": "Kopiera anteckning" @@ -427,7 +427,7 @@ "message": "Generera lösenord" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Generera lösenfras" }, "regeneratePassword": { "message": "Återskapa lösenord" @@ -846,7 +846,7 @@ "message": "Logga in" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Logga in på Bitwarden" }, "restartRegistration": { "message": "Restart registration" @@ -1456,10 +1456,10 @@ "message": "Show autofill suggestions on form fields" }, "showInlineMenuIdentitiesLabel": { - "message": "Display identities as suggestions" + "message": "Visa identiteter som förslag" }, "showInlineMenuCardsLabel": { - "message": "Display cards as suggestions" + "message": "Visa kort som förslag" }, "showInlineMenuOnIconSelectionLabel": { "message": "Display suggestions when icon is selected" @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Lösenordshistorik" }, + "generatorHistory": { + "message": "Generatorhistorik" + }, + "clearGeneratorHistoryTitle": { + "message": "Rensa generatorhistorik" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Tillbaka" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Rensa historik" }, - "noPasswordsToShow": { - "message": "Inga lösenord att visa" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Ta bort" @@ -2093,7 +2102,7 @@ "message": "Fyll i automatiskt och spara" }, "fillAndSave": { - "message": "Fill and save" + "message": "Fyll och spara" }, "autoFillSuccessAndSavedUri": { "message": "Fyllde i objektet automatiskt och sparade URI:n" @@ -2701,7 +2710,7 @@ "description": "Used as a card title description on the set password page to explain why the user is there" }, "cardMetrics": { - "message": "out of $TOTAL$", + "message": "av $TOTAL$", "placeholders": { "total": { "content": "$1", @@ -3754,7 +3763,7 @@ "message": "No matching logins for this site" }, "searchSavePasskeyNewLogin": { - "message": "Search or save passkey as new login" + "message": "Sök eller spara nyckel som ny inloggning" }, "confirm": { "message": "Bekräfta" @@ -4624,7 +4633,7 @@ "description": "Notification message for when a password has been regenerated" }, "saveLoginToBitwarden": { - "message": "Save login to Bitwarden?", + "message": "Spara inloggning på Bitwarden?", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { diff --git a/apps/browser/src/_locales/te/messages.json b/apps/browser/src/_locales/te/messages.json index 4037887cb28..3414760d2a3 100644 --- a/apps/browser/src/_locales/te/messages.json +++ b/apps/browser/src/_locales/te/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Password history" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Back" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Remove" diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json index e157ac74fed..3b6ac3ebd15 100644 --- a/apps/browser/src/_locales/th/messages.json +++ b/apps/browser/src/_locales/th/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "ประวัติของรหัสผ่าน" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "ย้อนกลับ" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Clear history" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "ลบ" diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json index 7ed5f94e29d..063dd63ede9 100644 --- a/apps/browser/src/_locales/tr/messages.json +++ b/apps/browser/src/_locales/tr/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Parola geçmişi" }, + "generatorHistory": { + "message": "Üreteç geçmişi" + }, + "clearGeneratorHistoryTitle": { + "message": "Üreteç geçmişini temizle" + }, + "cleargGeneratorHistoryDescription": { + "message": "Devam ederseniz üreteç geçmişindeki tüm kayıtlar kalıcı olarak silinecektir. Devam etmek istediğinizden emin misiniz?" + }, "back": { "message": "Geri" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Geçmişi temizle" }, - "noPasswordsToShow": { - "message": "Gösterilecek parola yok" + "nothingToShow": { + "message": "Gösterilecek bir şey yok" }, - "noRecentlyGeneratedPassword": { - "message": "Yakın zamanda parola üretmediniz" + "nothingGeneratedRecently": { + "message": "Yakın zamanda herhangi bir şey üretmediniz" }, "remove": { "message": "Kaldır" diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json index 74544eca2f2..25d12ca2600 100644 --- a/apps/browser/src/_locales/uk/messages.json +++ b/apps/browser/src/_locales/uk/messages.json @@ -20,16 +20,16 @@ "message": "Створити обліковий запис" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Вперше у Bitwarden?" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Увійти з ключем доступу" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Використовувати єдиний вхід" }, "welcomeBack": { - "message": "Welcome back" + "message": "З поверненням" }, "setAStrongPassword": { "message": "Встановіть надійний пароль" @@ -168,7 +168,7 @@ "message": "Копіювати нотатки" }, "fill": { - "message": "Fill", + "message": "Заповнити", "description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible." }, "autoFill": { @@ -591,7 +591,7 @@ "message": "Відкрити вебсайт" }, "launchWebsiteName": { - "message": "Launch website $ITEMNAME$", + "message": "Відкрити вебсайт $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -846,7 +846,7 @@ "message": "Увійти" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Увійти в Bitwarden" }, "restartRegistration": { "message": "Перезапустити реєстрацію" @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Історія паролів" }, + "generatorHistory": { + "message": "Історія генератора" + }, + "clearGeneratorHistoryTitle": { + "message": "Очистити історію генератора" + }, + "cleargGeneratorHistoryDescription": { + "message": "Якщо ви продовжите, усі записи будуть остаточно видалені з історії генератора. Справді продовжити?" + }, "back": { "message": "Назад" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Очистити історію" }, - "noPasswordsToShow": { - "message": "Немає паролів" + "nothingToShow": { + "message": "Немає даних для показу" }, - "noRecentlyGeneratedPassword": { - "message": "Ви не генерували паролі останнім часом" + "nothingGeneratedRecently": { + "message": "Ви нічого не генерували останнім часом" }, "remove": { "message": "Вилучити" @@ -4616,156 +4625,156 @@ "message": "Аутентифікація" }, "fillGeneratedPassword": { - "message": "Fill generated password", + "message": "Заповнити згенерований пароль", "description": "Heading for the password generator within the inline menu" }, "passwordRegenerated": { - "message": "Password regenerated", + "message": "Пароль згенеровано повторно", "description": "Notification message for when a password has been regenerated" }, "saveLoginToBitwarden": { - "message": "Save login to Bitwarden?", + "message": "Зберегти запис у Bitwarden?", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "Пробіл", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { - "message": "Tilde", + "message": "Тильда", "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { - "message": "Backtick", + "message": "Зворотна лапка", "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { - "message": "Exclamation mark", + "message": "Знак оклику", "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "Знак @ (At)", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "Знак решітки", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "Знак долара", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "Знак відсотка", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { - "message": "Caret", + "message": "Карет", "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { - "message": "Ampersand", + "message": "Амперсанд", "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { - "message": "Asterisk", + "message": "Зірочка", "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Left parenthesis", + "message": "Ліва дужка", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Right parenthesis", + "message": "Права дужка", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "Знак підкреслення", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { - "message": "Hyphen", + "message": "Дефіс", "description": "Represents the - key in screen reader content as a readable word" }, "plusCharacterDescriptor": { - "message": "Plus", + "message": "Плюс", "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Equals", + "message": "Дорівнює", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Ліва фігурна дужка", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Права фігурна дужка", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Ліва квадратна дужка", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Права квадратна дужка", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { - "message": "Pipe", + "message": "Вертикальна риска", "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { - "message": "Back slash", + "message": "Обернена скісна риска", "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { - "message": "Colon", + "message": "Двокрапка", "description": "Represents the : key in screen reader content as a readable word" }, "semicolonCharacterDescriptor": { - "message": "Semicolon", + "message": "Крапка з комою", "description": "Represents the ; key in screen reader content as a readable word" }, "doubleQuoteCharacterDescriptor": { - "message": "Double quote", + "message": "Подвійні лапки", "description": "Represents the double quote key in screen reader content as a readable word" }, "singleQuoteCharacterDescriptor": { - "message": "Single quote", + "message": "Одинарні лапки", "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Less than", + "message": "Менше", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Greater than", + "message": "Більше", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { - "message": "Comma", + "message": "Кома", "description": "Represents the , key in screen reader content as a readable word" }, "periodCharacterDescriptor": { - "message": "Period", + "message": "Крапка", "description": "Represents the . key in screen reader content as a readable word" }, "questionCharacterDescriptor": { - "message": "Question mark", + "message": "Знак питання", "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { - "message": "Forward slash", + "message": "Скісна риска", "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { - "message": "Lowercase" + "message": "Малі літери" }, "uppercaseAriaLabel": { - "message": "Uppercase" + "message": "Великі літери" }, "generatedPassword": { - "message": "Generated password" + "message": "Згенерований пароль" } } diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json index 37dfd796c6b..cd390c6496e 100644 --- a/apps/browser/src/_locales/vi/messages.json +++ b/apps/browser/src/_locales/vi/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "Lịch sử mật khẩu" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "Quay lại" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "Xóa lịch sử" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "Xoá" diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index 20711539af5..25baa71d7a1 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "密码历史记录" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "后退" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "清除历史记录" }, - "noPasswordsToShow": { - "message": "没有可显示的密码" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "您最近还没有生成过密码" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "移除" diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json index a6a8d933b82..f022d75a718 100644 --- a/apps/browser/src/_locales/zh_TW/messages.json +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -1794,6 +1794,15 @@ "passwordHistory": { "message": "密碼歷史記錄" }, + "generatorHistory": { + "message": "Generator history" + }, + "clearGeneratorHistoryTitle": { + "message": "Clear generator history" + }, + "cleargGeneratorHistoryDescription": { + "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + }, "back": { "message": "返回" }, @@ -1910,11 +1919,11 @@ "clearHistory": { "message": "清除歷史紀錄" }, - "noPasswordsToShow": { - "message": "No passwords to show" + "nothingToShow": { + "message": "Nothing to show" }, - "noRecentlyGeneratedPassword": { - "message": "You haven't generated a password recently" + "nothingGeneratedRecently": { + "message": "You haven't generated anything recently" }, "remove": { "message": "移除" diff --git a/apps/browser/src/auth/popup/settings/account-security.component.html b/apps/browser/src/auth/popup/settings/account-security.component.html index af6525daa8a..00e1fd17150 100644 --- a/apps/browser/src/auth/popup/settings/account-security.component.html +++ b/apps/browser/src/auth/popup/settings/account-security.component.html @@ -94,7 +94,7 @@ @@ -115,11 +115,11 @@ " > -
{{ "lockNow" | i18n }}
+ {{ "lockNow" | i18n }}
-
{{ "logOut" | i18n }}
+ {{ "logOut" | i18n }}
diff --git a/apps/browser/src/autofill/background/abstractions/overlay.background.ts b/apps/browser/src/autofill/background/abstractions/overlay.background.ts index 68d3f32b80f..db50b784453 100644 --- a/apps/browser/src/autofill/background/abstractions/overlay.background.ts +++ b/apps/browser/src/autofill/background/abstractions/overlay.background.ts @@ -216,6 +216,7 @@ export type OverlayBackgroundExtensionMessageHandlers = { getCurrentTabFrameId: ({ sender }: BackgroundSenderParam) => number; updateSubFrameData: ({ message, sender }: BackgroundOnMessageHandlerParams) => void; triggerSubFrameFocusInRebuild: ({ sender }: BackgroundSenderParam) => void; + shouldRepositionSubFrameInlineMenuOnScroll: ({ sender }: BackgroundSenderParam) => void; destroyAutofillInlineMenuListeners: ({ message, sender, diff --git a/apps/browser/src/autofill/background/overlay.background.ts b/apps/browser/src/autofill/background/overlay.background.ts index 2b8f2c273c7..6fb4589baa1 100644 --- a/apps/browser/src/autofill/background/overlay.background.ts +++ b/apps/browser/src/autofill/background/overlay.background.ts @@ -168,6 +168,8 @@ export class OverlayBackground implements OverlayBackgroundInterface { getCurrentTabFrameId: ({ sender }) => this.getSenderFrameId(sender), updateSubFrameData: ({ message, sender }) => this.updateSubFrameData(message, sender), triggerSubFrameFocusInRebuild: ({ sender }) => this.triggerSubFrameFocusInRebuild(sender), + shouldRepositionSubFrameInlineMenuOnScroll: ({ sender }) => + this.shouldRepositionSubFrameInlineMenuOnScroll(sender), destroyAutofillInlineMenuListeners: ({ message, sender }) => this.triggerDestroyInlineMenuListeners(sender.tab, message.subFrameData.frameId), collectPageDetailsResponse: ({ message, sender }) => this.storePageDetails(message, sender), @@ -2594,6 +2596,20 @@ export class OverlayBackground implements OverlayBackgroundInterface { this.repositionInlineMenu$.next(sender); } + /** + * Triggers on scroll of a frame within the tab. Will reposition the inline menu + * if the focused field is within a sub-frame and the inline menu is visible. + * + * @param sender - The sender of the message + */ + private shouldRepositionSubFrameInlineMenuOnScroll(sender: chrome.runtime.MessageSender) { + if (!this.isInlineMenuButtonVisible || sender.tab.id !== this.focusedFieldData?.tabId) { + return false; + } + + return this.focusedFieldData.frameId > 0; + } + /** * Handles determining if the inline menu should be repositioned or closed, and initiates * the process of calculating the new position of the inline menu. diff --git a/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts b/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts index c74fa21937a..91ad63955c7 100644 --- a/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts +++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts @@ -1699,6 +1699,7 @@ describe("AutofillOverlayContentService", () => { const repositionEvents = [EVENTS.SCROLL, EVENTS.RESIZE]; repositionEvents.forEach((repositionEvent) => { it(`sends a message trigger overlay reposition message to the background when a ${repositionEvent} event occurs`, async () => { + sendExtensionMessageSpy.mockResolvedValueOnce(true); globalThis.dispatchEvent(new Event(repositionEvent)); await flushPromises(); diff --git a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts index 760a585bd60..645795d9f27 100644 --- a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts +++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts @@ -1571,14 +1571,35 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ AUTOFILL_OVERLAY_HANDLE_REPOSITION, ); - const eventTargetDoesNotContainFocusedField = (element: Element) => - typeof element?.contains === "function" && !element.contains(this.mostRecentlyFocusedField); + const eventTargetContainsFocusedField = (eventTarget: Element | Document) => { + if (!eventTarget || !this.mostRecentlyFocusedField) { + return false; + } + + const activeElement = (eventTarget as Document).activeElement; + if (activeElement) { + return ( + activeElement === this.mostRecentlyFocusedField || + activeElement.contains(this.mostRecentlyFocusedField) + ); + } + + if (typeof eventTarget.contains !== "function") { + return false; + } + return ( + eventTarget === this.mostRecentlyFocusedField || + eventTarget.contains(this.mostRecentlyFocusedField) + ); + }; const scrollHandler = this.useEventHandlersMemo( - throttle((event) => { - if (eventTargetDoesNotContainFocusedField(event.target as Element)) { - return; + throttle(async (event) => { + if ( + eventTargetContainsFocusedField(event.target) || + (await this.shouldRepositionSubFrameInlineMenuOnScroll()) + ) { + repositionHandler(event); } - repositionHandler(event); }, 50), AUTOFILL_OVERLAY_HANDLE_SCROLL, ); @@ -1590,6 +1611,10 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ globalThis.addEventListener(EVENTS.RESIZE, repositionHandler); } + private shouldRepositionSubFrameInlineMenuOnScroll = async () => { + return await this.sendExtensionMessage("shouldRepositionSubFrameInlineMenuOnScroll"); + }; + /** * Removes the listeners that facilitate repositioning * the overlay elements on scroll or resize. diff --git a/apps/browser/store/locales/be/copy.resx b/apps/browser/store/locales/be/copy.resx index b11a1e325c6..8ac2e86232f 100644 --- a/apps/browser/store/locales/be/copy.resx +++ b/apps/browser/store/locales/be/copy.resx @@ -121,7 +121,7 @@ Менеджар пароляў Bitwarden - At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information. + Дома, на працы ці ў дарозе Bitwarden лёгка абараняе ўсе вашы паролі, ключы доступу і канфідэнцыяльную інфармацыю. Recognized as the best password manager by PCMag, WIRED, The Verge, CNET, G2, and more! @@ -169,7 +169,7 @@ End-to-end encrypted credential management solutions from Bitwarden empower orga - At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information. + Дома, на працы ці ў дарозе Bitwarden лёгка абараняе ўсе вашы паролі, ключы доступу і канфідэнцыяльную інфармацыю. Сінхранізацыя і доступ да сховішча з некалькіх прылад diff --git a/apps/desktop/src/app/app.component.ts b/apps/desktop/src/app/app.component.ts index cefcb9d7093..aba664e7a86 100644 --- a/apps/desktop/src/app/app.component.ts +++ b/apps/desktop/src/app/app.component.ts @@ -10,7 +10,17 @@ import { } from "@angular/core"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { Router } from "@angular/router"; -import { catchError, filter, firstValueFrom, map, of, Subject, takeUntil, timeout } from "rxjs"; +import { + catchError, + filter, + firstValueFrom, + map, + of, + Subject, + takeUntil, + timeout, + withLatestFrom, +} from "rxjs"; import { CollectionService } from "@bitwarden/admin-console/common"; import { ModalRef } from "@bitwarden/angular/components/modal/modal.ref"; @@ -22,6 +32,7 @@ import { NotificationsService } from "@bitwarden/common/abstractions/notificatio import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout-settings.service"; import { VaultTimeoutService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout.service"; +import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { InternalPolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; @@ -155,6 +166,7 @@ export class AppComponent implements OnInit, OnDestroy { private stateEventRunnerService: StateEventRunnerService, private accountService: AccountService, private sdkService: SdkService, + private organizationService: OrganizationService, ) { if (flagEnabled("sdk")) { // Warn if the SDK for some reason can't be initialized @@ -309,7 +321,7 @@ export class AppComponent implements OnInit, OnDestroy { break; } case "deleteAccount": - DeleteAccountComponent.open(this.dialogService); + await this.deleteAccount(); break; case "openPasswordHistory": await this.openModal( @@ -863,4 +875,28 @@ export class AppComponent implements OnInit, OnDestroy { this.messagingService.send(message, { code: code, state: receivedState }); } + + private async deleteAccount() { + await firstValueFrom( + this.configService.getFeatureFlag$(FeatureFlag.AccountDeprovisioning).pipe( + withLatestFrom(this.organizationService.organizations$), + map(async ([accountDeprovisioningEnabled, organization]) => { + if ( + accountDeprovisioningEnabled && + organization.some((o) => o.userIsManagedByOrganization === true) + ) { + await this.dialogService.openSimpleDialog({ + title: { key: "cannotDeleteAccount" }, + content: { key: "cannotDeleteAccountDesc" }, + cancelButtonText: null, + acceptButtonText: { key: "close" }, + type: "danger", + }); + } else { + DeleteAccountComponent.open(this.dialogService); + } + }), + ), + ); + } } diff --git a/apps/desktop/src/locales/af/messages.json b/apps/desktop/src/locales/af/messages.json index 419b2ef191a..3edb68bf84b 100644 --- a/apps/desktop/src/locales/af/messages.json +++ b/apps/desktop/src/locales/af/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Skrap van u rekening is permanent. Dit kan nie ontdaan word nie." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Rekening geskrap" }, diff --git a/apps/desktop/src/locales/ar/messages.json b/apps/desktop/src/locales/ar/messages.json index 9f1d9ca456d..f44b58a9783 100644 --- a/apps/desktop/src/locales/ar/messages.json +++ b/apps/desktop/src/locales/ar/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "حذف حسابك دائم. لا يمكن التراجع عنه." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "تم حذف الحساب" }, diff --git a/apps/desktop/src/locales/az/messages.json b/apps/desktop/src/locales/az/messages.json index 9fc3e92f9de..be9cf33d4f1 100644 --- a/apps/desktop/src/locales/az/messages.json +++ b/apps/desktop/src/locales/az/messages.json @@ -61,7 +61,7 @@ } }, "welcomeBack": { - "message": "Welcome back" + "message": "Yenidən xoş gəlmisiniz" }, "moveToOrgDesc": { "message": "Bu elementi daşımaq istədiyiniz təşkilatı seçin. Bir təşkilata daşımaq, elementin sahibliyini də həmin təşkilata daşıyacaq. Daşıdıqdan sonra bu elementə birbaşa sahibliyiniz olmayacaq." @@ -558,7 +558,7 @@ "message": "Hesab yarat" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Bitwarden-də yenisiniz?" }, "setAStrongPassword": { "message": "Güclü bir parol təyin et" @@ -570,16 +570,16 @@ "message": "Giriş et" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Bitwarden-ə giriş edin" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Keçid açarı ilə giriş et" }, "loginWithDevice": { - "message": "Log in with device" + "message": "Cihazla giriş et" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Tək daxil olma üsulunu istifadə et" }, "submit": { "message": "Göndər" @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Hesabınızı silmək birdəfəlik prosesdir. Bu əməliyyatın geri dönüşü yoxdur." }, + "cannotDeleteAccount": { + "message": "Hesab silinə bilmir" + }, + "cannotDeleteAccountDesc": { + "message": "Hesabınız bir təşkilata aid olduğu üçün bu əməliyyat icra edilə bilməz. Əlavə məlumat üçün təşkilatınızın administratoru ilə əlaqə saxlayın." + }, "accountDeleted": { "message": "Hesab silindi" }, diff --git a/apps/desktop/src/locales/be/messages.json b/apps/desktop/src/locales/be/messages.json index 03d5601b074..bd65ddfe44d 100644 --- a/apps/desktop/src/locales/be/messages.json +++ b/apps/desktop/src/locales/be/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Выдаленне вашага ўліковага запісу з'яўляецца незваротным дзеяннем. Яго нельга будзе адрабіць." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Уліковы запіс выдалены" }, diff --git a/apps/desktop/src/locales/bg/messages.json b/apps/desktop/src/locales/bg/messages.json index 34abb4ec47e..563eaf2ebac 100644 --- a/apps/desktop/src/locales/bg/messages.json +++ b/apps/desktop/src/locales/bg/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Изтриването на регистрацията е окончателно и необратимо." }, + "cannotDeleteAccount": { + "message": "Регистрацията не може да бъде изтрита" + }, + "cannotDeleteAccountDesc": { + "message": "Това действие не може да бъде завършено, тъй като регистрацията Ви се управлява от организация. Свържете се с администратора на организацията си за повече подробности." + }, "accountDeleted": { "message": "Регистрацията е изтрита" }, diff --git a/apps/desktop/src/locales/bn/messages.json b/apps/desktop/src/locales/bn/messages.json index bd4b2cef542..3428ee822a6 100644 --- a/apps/desktop/src/locales/bn/messages.json +++ b/apps/desktop/src/locales/bn/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/bs/messages.json b/apps/desktop/src/locales/bs/messages.json index 8ac7f011f88..c362bcd52c2 100644 --- a/apps/desktop/src/locales/bs/messages.json +++ b/apps/desktop/src/locales/bs/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/ca/messages.json b/apps/desktop/src/locales/ca/messages.json index 8cf7c735507..b9de40707e2 100644 --- a/apps/desktop/src/locales/ca/messages.json +++ b/apps/desktop/src/locales/ca/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "La supressió del compte és permanent. No es pot desfer." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "S'ha suprimit el compte" }, diff --git a/apps/desktop/src/locales/cs/messages.json b/apps/desktop/src/locales/cs/messages.json index a0544cc991f..c9bec3558d5 100644 --- a/apps/desktop/src/locales/cs/messages.json +++ b/apps/desktop/src/locales/cs/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Smazání účtu je trvalé. Tuto akci nelze vrátit zpět." }, + "cannotDeleteAccount": { + "message": "Nelze smazat účet" + }, + "cannotDeleteAccountDesc": { + "message": "Tuto akci nelze dokončit, protože Váš účet vlastní organizace. Další informace získáte od správce organizace." + }, "accountDeleted": { "message": "Účet byl smazán" }, diff --git a/apps/desktop/src/locales/cy/messages.json b/apps/desktop/src/locales/cy/messages.json index 17be35180dd..3c448f9ffc6 100644 --- a/apps/desktop/src/locales/cy/messages.json +++ b/apps/desktop/src/locales/cy/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/da/messages.json b/apps/desktop/src/locales/da/messages.json index 36c8d305469..1216977ff1d 100644 --- a/apps/desktop/src/locales/da/messages.json +++ b/apps/desktop/src/locales/da/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Sletning af din konto er permanent og irreversibel." }, + "cannotDeleteAccount": { + "message": "Kan ikke slette konto" + }, + "cannotDeleteAccountDesc": { + "message": "Denne handling kan ikke fuldføres, da kontoen ejes af en organisation. Kontakt organisationsadministratoren for yderligere detaljer." + }, "accountDeleted": { "message": "Konto slettet" }, diff --git a/apps/desktop/src/locales/de/messages.json b/apps/desktop/src/locales/de/messages.json index 6679ad492ba..4efe97bfe84 100644 --- a/apps/desktop/src/locales/de/messages.json +++ b/apps/desktop/src/locales/de/messages.json @@ -61,7 +61,7 @@ } }, "welcomeBack": { - "message": "Welcome back" + "message": "Willkommen zurück" }, "moveToOrgDesc": { "message": "Wähle eine Organisation aus, in die du diesen Eintrag verschieben möchtest. Das Verschieben in eine Organisation überträgt das Eigentum an diese Organisation. Du bist nicht mehr der direkte Eigentümer dieses Eintrags, sobald er verschoben wurde." @@ -558,7 +558,7 @@ "message": "Konto erstellen" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Neu bei Bitwarden?" }, "setAStrongPassword": { "message": "Lege ein starkes Passwort fest" @@ -570,16 +570,16 @@ "message": "Anmelden" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Bei Bitwarden anmelden" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Mit Passkey anmelden" }, "loginWithDevice": { - "message": "Log in with device" + "message": "Mit Gerät anmelden" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Single Sign-on verwenden" }, "submit": { "message": "Absenden" @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Die Kontolöschung ist dauerhaft. Sie kann nicht rückgängig gemacht werden." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Konto gelöscht" }, diff --git a/apps/desktop/src/locales/el/messages.json b/apps/desktop/src/locales/el/messages.json index 6f92a5dd714..aecc067645b 100644 --- a/apps/desktop/src/locales/el/messages.json +++ b/apps/desktop/src/locales/el/messages.json @@ -61,7 +61,7 @@ } }, "welcomeBack": { - "message": "Welcome back" + "message": "Καλωσορίσατε και πάλι" }, "moveToOrgDesc": { "message": "Επιλέξτε έναν οργανισμό στον οποίο θέλετε να μετακινήσετε αυτό το στοιχείο. Η μετακίνηση σε έναν οργανισμό μεταβιβάζει την ιδιοκτησία του στοιχείου σε αυτό τον οργανισμό. Δεν θα είστε πλέον ο άμεσος ιδιοκτήτης αυτού του στοιχείου μόλις το μετακινήσετε." @@ -263,7 +263,7 @@ "message": "Γέννηση κωδικού πρόσβασης" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Δημιουργία φράσης πρόσβασης" }, "type": { "message": "Τύπος" @@ -401,7 +401,7 @@ "message": "Αντιγραφή κωδικού πρόσβασης" }, "copyPassphrase": { - "message": "Copy passphrase", + "message": "Αντιγραφή φράσης πρόσβασης", "description": "Copy passphrase to clipboard" }, "copyUri": { @@ -558,7 +558,7 @@ "message": "Δημιουργία λογαριασμού" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Νέος/α στο Bitwarden;" }, "setAStrongPassword": { "message": "Ορίστε έναν ισχυρό κωδικό πρόσβασης" @@ -570,16 +570,16 @@ "message": "Είσοδος" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Σύνδεση στο Bitwarden" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Σύνδεση με κλειδί πρόσβασης" }, "loginWithDevice": { - "message": "Log in with device" + "message": "Σύνδεση με χρήση συσκευής" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Χρήση ενιαίας σύνδεσης" }, "submit": { "message": "Υποβολή" @@ -643,16 +643,16 @@ "message": "Ρυθμίσεις" }, "accountEmail": { - "message": "Email λογαριασμού" + "message": "Διεύθυνση ηλ. ταχυδρομείου λογαριασμού" }, "requestHint": { "message": "Αίτηση υπόδειξης" }, "requestPasswordHint": { - "message": "Υπόδειξη κωδικού πρόσβασης" + "message": "Αίτηση υπόδειξης κωδικού πρόσβασης" }, "enterYourAccountEmailAddressAndYourPasswordHintWillBeSentToYou": { - "message": "Εισάγετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου του λογαριασμού σας και θα σας αποσταλεί η υπόδειξη κωδικού πρόσβασης" + "message": "Εισάγετε τη διεύθυνση ηλ. ταχυδρομείου του λογαριασμού σας και θα σας αποσταλεί η υπόδειξη κωδικού πρόσβασης" }, "passwordHint": { "message": "Υπόδειξη κωδικού πρόσβασης" @@ -854,7 +854,7 @@ "message": "URL Διακομιστή" }, "selfHostBaseUrl": { - "message": "Self-host server URL", + "message": "URL διακομιστή αυτο-φιλοξενίας", "description": "Label for field requesting a self-hosted integration service URL" }, "apiUrl": { @@ -1248,7 +1248,7 @@ "description": "Copy credit card number" }, "copyEmail": { - "message": "Copy email" + "message": "Αντιγραφή διεύθυνσης ηλ. ταχυδρομείου" }, "copySecurityCode": { "message": "Αντιγραφή κωδικού ασφαλείας", @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Η διαγραφή του λογαριασμού σας είναι μόνιμη. Δεν μπορεί να αναιρεθεί." }, + "cannotDeleteAccount": { + "message": "Αδυναμία διαγραφής λογαριασμού" + }, + "cannotDeleteAccountDesc": { + "message": "Αυτή η ενέργεια δεν μπορεί να ολοκληρωθεί επειδή ο λογαριασμός σας ανήκει σε έναν οργανισμό. Επικοινωνήστε με το διαχειριστή του οργανισμού σας για πρόσθετες λεπτομέρειες." + }, "accountDeleted": { "message": "Ο λογαριασμός διαγράφηκε" }, @@ -2385,7 +2391,7 @@ "message": "Δημιουργία ονόματος χρήστη" }, "generateEmail": { - "message": "Generate email" + "message": "Δημιουργία διεύθυνσης ηλ. ταχυδρομείου" }, "usernameType": { "message": "Τύπος ονόματος χρήστη" @@ -2431,11 +2437,11 @@ "message": "Δημιουργήστε ένα alias email με μια εξωτερική υπηρεσία προώθησης." }, "forwarderDomainName": { - "message": "Email domain", + "message": "Τομέας ηλ. ταχυδρομείου", "description": "Labels the domain name email forwarder service option" }, "forwarderDomainNameHint": { - "message": "Choose a domain that is supported by the selected service", + "message": "Επιλέξτε ένα τομέα που υποστηρίζεται από την επιλεγμένη υπηρεσία", "description": "Guidance provided for email forwarding services that support multiple email domains." }, "forwarderError": { diff --git a/apps/desktop/src/locales/en/messages.json b/apps/desktop/src/locales/en/messages.json index 64109a052c6..d24616edab5 100644 --- a/apps/desktop/src/locales/en/messages.json +++ b/apps/desktop/src/locales/en/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount":{ + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc":{ + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/en_GB/messages.json b/apps/desktop/src/locales/en_GB/messages.json index 04b367afa97..8602bb635e3 100644 --- a/apps/desktop/src/locales/en_GB/messages.json +++ b/apps/desktop/src/locales/en_GB/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organisation. Contact your organisation administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/en_IN/messages.json b/apps/desktop/src/locales/en_IN/messages.json index 6ccdf450f79..cd8a1f42bdd 100644 --- a/apps/desktop/src/locales/en_IN/messages.json +++ b/apps/desktop/src/locales/en_IN/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organisation. Contact your organisation administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/eo/messages.json b/apps/desktop/src/locales/eo/messages.json index 92ba6047bba..eaa6f7ad594 100644 --- a/apps/desktop/src/locales/eo/messages.json +++ b/apps/desktop/src/locales/eo/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Konto forigita" }, diff --git a/apps/desktop/src/locales/es/messages.json b/apps/desktop/src/locales/es/messages.json index 90ba8426d7c..36d019b03c7 100644 --- a/apps/desktop/src/locales/es/messages.json +++ b/apps/desktop/src/locales/es/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "El borrado de su cuenta es una operación permanente. No se puede deshacer." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Cuenta eliminada" }, diff --git a/apps/desktop/src/locales/et/messages.json b/apps/desktop/src/locales/et/messages.json index fc51b2ac583..6700efbd174 100644 --- a/apps/desktop/src/locales/et/messages.json +++ b/apps/desktop/src/locales/et/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Konto kustutamine on ühekordne tegevus. Seda ei saa tagasi võtta." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Konto on kustutatud" }, diff --git a/apps/desktop/src/locales/eu/messages.json b/apps/desktop/src/locales/eu/messages.json index 056b543f28f..d6c00e2e9db 100644 --- a/apps/desktop/src/locales/eu/messages.json +++ b/apps/desktop/src/locales/eu/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Zure kontua ezabatzea iraunkorra da. Ezin da desegin." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Kontua ezabatua" }, diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json index c17a1faad0e..90e44caec98 100644 --- a/apps/desktop/src/locales/fa/messages.json +++ b/apps/desktop/src/locales/fa/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "حذف حساب شما دائمی است. نمی‌توان آن را برگرداند." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "حساب حذف شد" }, diff --git a/apps/desktop/src/locales/fi/messages.json b/apps/desktop/src/locales/fi/messages.json index ebd2ba29a76..f49773d5216 100644 --- a/apps/desktop/src/locales/fi/messages.json +++ b/apps/desktop/src/locales/fi/messages.json @@ -148,7 +148,7 @@ "message": "Merkki" }, "expiration": { - "message": "Erääntymisaika" + "message": "Voimassaolo päättyy" }, "securityCode": { "message": "Turvakoodi (CVC/CVV)" @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Tilin poisto on pysyvä toimenpide, eikä sen peruminen ole mahdollista." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Tili poistettiin" }, diff --git a/apps/desktop/src/locales/fil/messages.json b/apps/desktop/src/locales/fil/messages.json index 16f1bb0c043..bd9a5e3b6a8 100644 --- a/apps/desktop/src/locales/fil/messages.json +++ b/apps/desktop/src/locales/fil/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Ang pagtanggal ng iyong account ay permanente. Hindi na ito mababawi." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Tinanggal ang account" }, diff --git a/apps/desktop/src/locales/fr/messages.json b/apps/desktop/src/locales/fr/messages.json index 84964e0d3bf..0ad99bd1b42 100644 --- a/apps/desktop/src/locales/fr/messages.json +++ b/apps/desktop/src/locales/fr/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "La suppression de votre compte est définitive. Cette action ne peut pas être annulée." }, + "cannotDeleteAccount": { + "message": "Impossible de supprimer le compte" + }, + "cannotDeleteAccountDesc": { + "message": "Cette action ne peut pas être complétée car votre compte appartient à une organisation. Contactez l'administrateur de votre organisation pour plus de détails." + }, "accountDeleted": { "message": "Compte supprimé" }, diff --git a/apps/desktop/src/locales/gl/messages.json b/apps/desktop/src/locales/gl/messages.json index 64109a052c6..b46e4bc92cb 100644 --- a/apps/desktop/src/locales/gl/messages.json +++ b/apps/desktop/src/locales/gl/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/he/messages.json b/apps/desktop/src/locales/he/messages.json index a7d2b0990ea..addcd832076 100644 --- a/apps/desktop/src/locales/he/messages.json +++ b/apps/desktop/src/locales/he/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "מחיקת חשבון היא פעולה בלתי הפיכה." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "החשבון נמחק" }, diff --git a/apps/desktop/src/locales/hi/messages.json b/apps/desktop/src/locales/hi/messages.json index 74f0f7eef91..ebc8da9613e 100644 --- a/apps/desktop/src/locales/hi/messages.json +++ b/apps/desktop/src/locales/hi/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/hr/messages.json b/apps/desktop/src/locales/hr/messages.json index d121600b024..0a2c8184183 100644 --- a/apps/desktop/src/locales/hr/messages.json +++ b/apps/desktop/src/locales/hr/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Brisanje računa je TRAJNO i NEPOVRATNO i naknadno ga nije moguće vratiti." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Račun izbrisan" }, diff --git a/apps/desktop/src/locales/hu/messages.json b/apps/desktop/src/locales/hu/messages.json index f218fa6a621..5cb27e878ec 100644 --- a/apps/desktop/src/locales/hu/messages.json +++ b/apps/desktop/src/locales/hu/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "A fiók véglegesen törlésre kerül. A művelet nem vonható vissza." }, + "cannotDeleteAccount": { + "message": "A fiók nem törölhető." + }, + "cannotDeleteAccountDesc": { + "message": "Ez a művelet nem hajtható végre, mert a fiók egy szervezet tulajdonában van. További részletekért forduljunk a szervezet adminisztrátorához." + }, "accountDeleted": { "message": "A fiók törlésre került." }, diff --git a/apps/desktop/src/locales/id/messages.json b/apps/desktop/src/locales/id/messages.json index 3ca3f06ce1a..6b9bb099b9f 100644 --- a/apps/desktop/src/locales/id/messages.json +++ b/apps/desktop/src/locales/id/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Menghapus akun Anda bersifat permanen. Tindakan ini tidak dapat dibatalkan." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Akun Dihapus" }, diff --git a/apps/desktop/src/locales/it/messages.json b/apps/desktop/src/locales/it/messages.json index eac15e7e4bc..8baf948dfd8 100644 --- a/apps/desktop/src/locales/it/messages.json +++ b/apps/desktop/src/locales/it/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "L'eliminazione del tuo account è permanente. Non può essere annullata." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account eliminato" }, @@ -1819,7 +1825,7 @@ "message": "Una o più politiche dell'organizzazione richiedono che la tua password principale soddisfi questi requisiti:" }, "policyInEffectMinComplexity": { - "message": "Punteggio minimo di complessità $SCORE$", + "message": "Punteggio di complessità minimo di $SCORE$", "placeholders": { "score": { "content": "$1", @@ -2721,7 +2727,7 @@ "message": "Password principale debole e violata" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Password debole e trovata una violazione dei dati. Usa una password forte e unica per proteggere il tuo account. Sei sicuro di voler usare questa password?" + "message": "Password debole e trovata in una violazione dei dati. Usa una password forte e unica per proteggere il tuo account. Sei sicuro di voler usare questa password?" }, "checkForBreaches": { "message": "Controlla se la tua password è presente in una violazione dei dati" diff --git a/apps/desktop/src/locales/ja/messages.json b/apps/desktop/src/locales/ja/messages.json index 9c5ec2e9fc3..7f496b6de40 100644 --- a/apps/desktop/src/locales/ja/messages.json +++ b/apps/desktop/src/locales/ja/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "アカウントを恒久的に削除します。元に戻すことはできません。" }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "アカウントが削除されました" }, diff --git a/apps/desktop/src/locales/ka/messages.json b/apps/desktop/src/locales/ka/messages.json index 49179259473..db8e2a814f0 100644 --- a/apps/desktop/src/locales/ka/messages.json +++ b/apps/desktop/src/locales/ka/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/km/messages.json b/apps/desktop/src/locales/km/messages.json index 64109a052c6..b46e4bc92cb 100644 --- a/apps/desktop/src/locales/km/messages.json +++ b/apps/desktop/src/locales/km/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/kn/messages.json b/apps/desktop/src/locales/kn/messages.json index ba5059aaa3a..659a0475e21 100644 --- a/apps/desktop/src/locales/kn/messages.json +++ b/apps/desktop/src/locales/kn/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/ko/messages.json b/apps/desktop/src/locales/ko/messages.json index adde12a5e92..ae72b61374e 100644 --- a/apps/desktop/src/locales/ko/messages.json +++ b/apps/desktop/src/locales/ko/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "계정 삭제는 영구적이며 되돌릴 수 없습니다." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "계정 삭제됨" }, diff --git a/apps/desktop/src/locales/lt/messages.json b/apps/desktop/src/locales/lt/messages.json index 90b47fe5564..5265bb85bf1 100644 --- a/apps/desktop/src/locales/lt/messages.json +++ b/apps/desktop/src/locales/lt/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Paskyros ištrinimas yra amžinas. Jos nebus galima atkurti." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Paskyra ištrinta" }, diff --git a/apps/desktop/src/locales/lv/messages.json b/apps/desktop/src/locales/lv/messages.json index d9d16d58b48..2f3d3970fdc 100644 --- a/apps/desktop/src/locales/lv/messages.json +++ b/apps/desktop/src/locales/lv/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Konta izdzēšana ir neatgriezeniska. To nevar atsaukt." }, + "cannotDeleteAccount": { + "message": "Nevar izdzēst kontu" + }, + "cannotDeleteAccountDesc": { + "message": "Šo darbību nevar pabeigt, jo konts pieder apvienībai. Jāsazinās ar savas apvienības pārvaldītāju, lai noskaidrotu vairāk." + }, "accountDeleted": { "message": "Konts tika izdzēsts" }, diff --git a/apps/desktop/src/locales/me/messages.json b/apps/desktop/src/locales/me/messages.json index 0140da6eb90..28b522480b2 100644 --- a/apps/desktop/src/locales/me/messages.json +++ b/apps/desktop/src/locales/me/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/ml/messages.json b/apps/desktop/src/locales/ml/messages.json index 01ce328739c..65b1b02f6ea 100644 --- a/apps/desktop/src/locales/ml/messages.json +++ b/apps/desktop/src/locales/ml/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/mr/messages.json b/apps/desktop/src/locales/mr/messages.json index 64109a052c6..b46e4bc92cb 100644 --- a/apps/desktop/src/locales/mr/messages.json +++ b/apps/desktop/src/locales/mr/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/my/messages.json b/apps/desktop/src/locales/my/messages.json index d1266f1225a..fdc322353c0 100644 --- a/apps/desktop/src/locales/my/messages.json +++ b/apps/desktop/src/locales/my/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/nb/messages.json b/apps/desktop/src/locales/nb/messages.json index 3c970433d66..be484a43c68 100644 --- a/apps/desktop/src/locales/nb/messages.json +++ b/apps/desktop/src/locales/nb/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Å slette kontoen din er permanent. Det kan ikke reverseres." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Konto slettet" }, diff --git a/apps/desktop/src/locales/ne/messages.json b/apps/desktop/src/locales/ne/messages.json index 6d5a1dca8a5..59b485ac127 100644 --- a/apps/desktop/src/locales/ne/messages.json +++ b/apps/desktop/src/locales/ne/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/nl/messages.json b/apps/desktop/src/locales/nl/messages.json index e1fab54089e..7c63cf91020 100644 --- a/apps/desktop/src/locales/nl/messages.json +++ b/apps/desktop/src/locales/nl/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Het verwijderen van je account is definitief. Je kunt dit niet ongedaan maken." }, + "cannotDeleteAccount": { + "message": "Kan account niet verwijderen" + }, + "cannotDeleteAccountDesc": { + "message": "Je kunt deze actie niet afronden omdat je account eigendom is van een organisatie. Neem contact op met de beheerder van je organisatie voor details." + }, "accountDeleted": { "message": "Account verwijderd" }, diff --git a/apps/desktop/src/locales/nn/messages.json b/apps/desktop/src/locales/nn/messages.json index 23fa6d498b0..ec7751940fd 100644 --- a/apps/desktop/src/locales/nn/messages.json +++ b/apps/desktop/src/locales/nn/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/or/messages.json b/apps/desktop/src/locales/or/messages.json index a51f8666b09..7e31ce289ab 100644 --- a/apps/desktop/src/locales/or/messages.json +++ b/apps/desktop/src/locales/or/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/pl/messages.json b/apps/desktop/src/locales/pl/messages.json index 8fe52888497..17ae9d3f8ac 100644 --- a/apps/desktop/src/locales/pl/messages.json +++ b/apps/desktop/src/locales/pl/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Usunięcie konta jest nieodwracalne. Ta czynność nie może zostać cofnięta." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Konto zostało usunięte" }, diff --git a/apps/desktop/src/locales/pt_BR/messages.json b/apps/desktop/src/locales/pt_BR/messages.json index 4ab8cf9629c..6a869f4d7a6 100644 --- a/apps/desktop/src/locales/pt_BR/messages.json +++ b/apps/desktop/src/locales/pt_BR/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "A exclusão de sua conta é permanente. Não poderá ser desfeito." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Conta excluída" }, diff --git a/apps/desktop/src/locales/pt_PT/messages.json b/apps/desktop/src/locales/pt_PT/messages.json index 443c13c0a90..0fed42cecc4 100644 --- a/apps/desktop/src/locales/pt_PT/messages.json +++ b/apps/desktop/src/locales/pt_PT/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "A eliminação da sua conta é permanente. Não pode ser anulada." }, + "cannotDeleteAccount": { + "message": "Não é possível eliminar a conta" + }, + "cannotDeleteAccountDesc": { + "message": "Esta ação não pode ser concluída porque a sua conta é propriedade de uma organização. Contacte o administrador da sua organização para obter mais informações." + }, "accountDeleted": { "message": "Conta eliminada" }, diff --git a/apps/desktop/src/locales/ro/messages.json b/apps/desktop/src/locales/ro/messages.json index f0b7205392d..130eb2f349a 100644 --- a/apps/desktop/src/locales/ro/messages.json +++ b/apps/desktop/src/locales/ro/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Ștergerea contului dvs. este permanentă. Nu poate fi anulată." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Contul a fost șters" }, diff --git a/apps/desktop/src/locales/ru/messages.json b/apps/desktop/src/locales/ru/messages.json index b18f5eaadc4..0785d0ca3b6 100644 --- a/apps/desktop/src/locales/ru/messages.json +++ b/apps/desktop/src/locales/ru/messages.json @@ -61,7 +61,7 @@ } }, "welcomeBack": { - "message": "Welcome back" + "message": "С возвращением" }, "moveToOrgDesc": { "message": "Выберите организацию, в которую вы хотите переместить этот элемент. При перемещении в организацию право собственности на элемент переходит к этой организации. Вы больше не будете прямым владельцем этого элемента после его перемещения." @@ -558,7 +558,7 @@ "message": "Создать аккаунт" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Впервые на Bitwarden?" }, "setAStrongPassword": { "message": "Задайте надежный пароль" @@ -570,16 +570,16 @@ "message": "Войти" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Войти в Bitwarden" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Войти с passkey" }, "loginWithDevice": { - "message": "Log in with device" + "message": "Войти с помощью устройства" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Использовать единый вход" }, "submit": { "message": "Отправить" @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Удаление вашей учетной записи необратимо. Его нельзя отменить." }, + "cannotDeleteAccount": { + "message": "Невозможно удалить аккаунт" + }, + "cannotDeleteAccountDesc": { + "message": "Это действие не может быть выполнено, поскольку ваша учетная запись принадлежит организации. Обратитесь к администратору организации за дополнительными сведениями." + }, "accountDeleted": { "message": "Аккаунт удален" }, diff --git a/apps/desktop/src/locales/si/messages.json b/apps/desktop/src/locales/si/messages.json index b111d3a5e96..96baac32bb1 100644 --- a/apps/desktop/src/locales/si/messages.json +++ b/apps/desktop/src/locales/si/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/sk/messages.json b/apps/desktop/src/locales/sk/messages.json index af6b765d67a..dc802a32d13 100644 --- a/apps/desktop/src/locales/sk/messages.json +++ b/apps/desktop/src/locales/sk/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Odstránenie účtu je trvalé. Operáciu nie je možné vrátiť späť." }, + "cannotDeleteAccount": { + "message": "Účet nie je možné odstrániť" + }, + "cannotDeleteAccountDesc": { + "message": "Túto akciu nie je možné dokončiť, pretože váš účet vlastní organizácia. Ďalšie informácie vám poskytne správca vašej organizácie." + }, "accountDeleted": { "message": "Účet bol odstránený" }, diff --git a/apps/desktop/src/locales/sl/messages.json b/apps/desktop/src/locales/sl/messages.json index 902b7a0ae36..7fe0c8633ce 100644 --- a/apps/desktop/src/locales/sl/messages.json +++ b/apps/desktop/src/locales/sl/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/sr/messages.json b/apps/desktop/src/locales/sr/messages.json index 5409b51e989..bcb1d3f5f9f 100644 --- a/apps/desktop/src/locales/sr/messages.json +++ b/apps/desktop/src/locales/sr/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Брисање налога је трајно. Не може се поништити." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Налог обрисан" }, diff --git a/apps/desktop/src/locales/sv/messages.json b/apps/desktop/src/locales/sv/messages.json index 6818ea09fc0..5340da71b25 100644 --- a/apps/desktop/src/locales/sv/messages.json +++ b/apps/desktop/src/locales/sv/messages.json @@ -61,7 +61,7 @@ } }, "welcomeBack": { - "message": "Welcome back" + "message": "Välkommen tillbaka" }, "moveToOrgDesc": { "message": "Välj en organisation som du vill flytta detta objektet till. Flytt till en organisation överför ägandet av objektet till den organisationen. Du kommer inte längre att vara direkt ägare till detta objekt när det har flyttats." @@ -263,7 +263,7 @@ "message": "Generera lösenord" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Generera lösenfras" }, "type": { "message": "Typ" @@ -401,7 +401,7 @@ "message": "Kopiera lösenord" }, "copyPassphrase": { - "message": "Copy passphrase", + "message": "Kopiera lösenfras", "description": "Copy passphrase to clipboard" }, "copyUri": { @@ -558,7 +558,7 @@ "message": "Skapa konto" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Ny på Bitwarden?" }, "setAStrongPassword": { "message": "Ställ in ett starkt lösenord" @@ -570,13 +570,13 @@ "message": "Logga in" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Logga in på Bitwarden" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Logga in med nyckel" }, "loginWithDevice": { - "message": "Log in with device" + "message": "Logga in med enhet" }, "useSingleSignOn": { "message": "Use single sign-on" @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Att radera ditt konto är permanent. Det går inte att ångra." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Kontot raderades" }, @@ -1794,7 +1800,7 @@ "description": "Used as a card title description on the set password page to explain why the user is there" }, "cardMetrics": { - "message": "out of $TOTAL$", + "message": "av $TOTAL$", "placeholders": { "total": { "content": "$1", diff --git a/apps/desktop/src/locales/te/messages.json b/apps/desktop/src/locales/te/messages.json index 64109a052c6..b46e4bc92cb 100644 --- a/apps/desktop/src/locales/te/messages.json +++ b/apps/desktop/src/locales/te/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Account deleted" }, diff --git a/apps/desktop/src/locales/th/messages.json b/apps/desktop/src/locales/th/messages.json index d0d1a177301..05246b87bc2 100644 --- a/apps/desktop/src/locales/th/messages.json +++ b/apps/desktop/src/locales/th/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Deleting your account is permanent. It cannot be undone." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "ลบบัญชีผู้ใช้แล้ว" }, diff --git a/apps/desktop/src/locales/tr/messages.json b/apps/desktop/src/locales/tr/messages.json index 41b3064eefc..d1c80208ef6 100644 --- a/apps/desktop/src/locales/tr/messages.json +++ b/apps/desktop/src/locales/tr/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Hesabınızı silmek kalıcıdır. Geri alınamaz." }, + "cannotDeleteAccount": { + "message": "Hesap silinemiyor" + }, + "cannotDeleteAccountDesc": { + "message": "Hesabınızın sahibi bir kuruluş olduğu için bu işlem tamamlanamadı. Bilgi almak için kuruluş yöneticinizle iletişime geçin." + }, "accountDeleted": { "message": "Hesap silindi" }, diff --git a/apps/desktop/src/locales/uk/messages.json b/apps/desktop/src/locales/uk/messages.json index 63e2f00ed02..bf03a0fa175 100644 --- a/apps/desktop/src/locales/uk/messages.json +++ b/apps/desktop/src/locales/uk/messages.json @@ -61,7 +61,7 @@ } }, "welcomeBack": { - "message": "Welcome back" + "message": "З поверненням" }, "moveToOrgDesc": { "message": "Виберіть організацію, до якої ви бажаєте перемістити цей запис. Переміщуючи до організації, власність запису передається тій організації. Ви більше не будете єдиним власником цього запису після переміщення." @@ -558,7 +558,7 @@ "message": "Створити обліковий запис" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Вперше у Bitwarden?" }, "setAStrongPassword": { "message": "Встановіть надійний пароль" @@ -570,16 +570,16 @@ "message": "Увійти" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Увійти в Bitwarden" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Увійти з ключем доступу" }, "loginWithDevice": { - "message": "Log in with device" + "message": "Увійти з пристроєм" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Використовувати єдиний вхід" }, "submit": { "message": "Відправити" @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Видалення облікового запису є незворотною дією. Це не можна буде скасувати." }, + "cannotDeleteAccount": { + "message": "Не вдається видалити обліковий запис" + }, + "cannotDeleteAccountDesc": { + "message": "Цю дію не можна виконати, тому що ваш обліковий запис належить організації. Зверніться до адміністратора організації для отримання додаткової інформації." + }, "accountDeleted": { "message": "Обліковий запис видалено" }, diff --git a/apps/desktop/src/locales/vi/messages.json b/apps/desktop/src/locales/vi/messages.json index e79a66153f6..70999e31929 100644 --- a/apps/desktop/src/locales/vi/messages.json +++ b/apps/desktop/src/locales/vi/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "Việc xóa tài khoản là vĩnh viễn và không thể hoàn tác." }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "Đã xóa tài khoản" }, diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json index bd07219f84d..e266b1fcaff 100644 --- a/apps/desktop/src/locales/zh_CN/messages.json +++ b/apps/desktop/src/locales/zh_CN/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "删除账户是永久性操作,无法撤销!" }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "账户已删除" }, diff --git a/apps/desktop/src/locales/zh_TW/messages.json b/apps/desktop/src/locales/zh_TW/messages.json index d3519833349..94a8a76823d 100644 --- a/apps/desktop/src/locales/zh_TW/messages.json +++ b/apps/desktop/src/locales/zh_TW/messages.json @@ -1683,6 +1683,12 @@ "deleteAccountWarning": { "message": "刪除您的帳戶是永久性的。並且無法復原。" }, + "cannotDeleteAccount": { + "message": "Cannot delete account" + }, + "cannotDeleteAccountDesc": { + "message": "This action cannot be completed because your account is owned by an organization. Contact your organization administrator for additional details." + }, "accountDeleted": { "message": "帳戶已刪除" }, diff --git a/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.ts b/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.ts index abfae811d54..88cb75b087e 100644 --- a/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.ts +++ b/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.ts @@ -5,7 +5,6 @@ import { OrganizationUserResetPasswordRequest, OrganizationUserResetPasswordWithIdRequest, } from "@bitwarden/admin-console/common"; -import { UserKeyRotationDataProvider } from "@bitwarden/auth/common"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { @@ -21,7 +20,7 @@ import { EncryptedString, EncString } from "@bitwarden/common/platform/models/do import { SymmetricCryptoKey } from "@bitwarden/common/platform/models/domain/symmetric-crypto-key"; import { UserId } from "@bitwarden/common/types/guid"; import { UserKey } from "@bitwarden/common/types/key"; -import { KeyService } from "@bitwarden/key-management"; +import { UserKeyRotationDataProvider, KeyService } from "@bitwarden/key-management"; @Injectable({ providedIn: "root", diff --git a/apps/web/src/app/auth/core/services/webauthn-login/webauthn-login-admin.service.ts b/apps/web/src/app/auth/core/services/webauthn-login/webauthn-login-admin.service.ts index 09ea17829ce..2edbd0ada1a 100644 --- a/apps/web/src/app/auth/core/services/webauthn-login/webauthn-login-admin.service.ts +++ b/apps/web/src/app/auth/core/services/webauthn-login/webauthn-login-admin.service.ts @@ -1,7 +1,7 @@ import { Injectable, Optional } from "@angular/core"; import { BehaviorSubject, filter, from, map, Observable, shareReplay, switchMap, tap } from "rxjs"; -import { PrfKeySet, UserKeyRotationDataProvider } from "@bitwarden/auth/common"; +import { PrfKeySet } from "@bitwarden/auth/common"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; import { WebAuthnLoginPrfKeyServiceAbstraction } from "@bitwarden/common/auth/abstractions/webauthn/webauthn-login-prf-key.service.abstraction"; import { WebauthnRotateCredentialRequest } from "@bitwarden/common/auth/models/request/webauthn-rotate-credential.request"; @@ -11,6 +11,7 @@ import { Verification } from "@bitwarden/common/auth/types/verification"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { UserId } from "@bitwarden/common/types/guid"; import { UserKey } from "@bitwarden/common/types/key"; +import { UserKeyRotationDataProvider } from "@bitwarden/key-management"; import { CredentialCreateOptionsView } from "../../views/credential-create-options.view"; import { PendingWebauthnLoginCredentialView } from "../../views/pending-webauthn-login-credential.view"; diff --git a/apps/web/src/app/auth/emergency-access/services/emergency-access.service.ts b/apps/web/src/app/auth/emergency-access/services/emergency-access.service.ts index a4fd9eeff02..39eb6570df9 100644 --- a/apps/web/src/app/auth/emergency-access/services/emergency-access.service.ts +++ b/apps/web/src/app/auth/emergency-access/services/emergency-access.service.ts @@ -1,6 +1,5 @@ import { Injectable } from "@angular/core"; -import { UserKeyRotationDataProvider } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { PolicyData } from "@bitwarden/common/admin-console/models/data/policy.data"; import { Policy } from "@bitwarden/common/admin-console/models/domain/policy"; @@ -23,7 +22,7 @@ import { UserKey } from "@bitwarden/common/types/key"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; import { Cipher } from "@bitwarden/common/vault/models/domain/cipher"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; -import { KeyService } from "@bitwarden/key-management"; +import { UserKeyRotationDataProvider, KeyService } from "@bitwarden/key-management"; import { EmergencyAccessStatusType } from "../enums/emergency-access-status-type"; import { EmergencyAccessType } from "../enums/emergency-access-type"; diff --git a/apps/web/src/app/auth/settings/change-password.component.ts b/apps/web/src/app/auth/settings/change-password.component.ts index ec1416ba0ae..3406c2d5b61 100644 --- a/apps/web/src/app/auth/settings/change-password.component.ts +++ b/apps/web/src/app/auth/settings/change-password.component.ts @@ -25,7 +25,7 @@ import { DialogService, ToastService } from "@bitwarden/components"; import { PasswordGenerationServiceAbstraction } from "@bitwarden/generator-legacy"; import { KeyService } from "@bitwarden/key-management"; -import { UserKeyRotationService } from "../key-rotation/user-key-rotation.service"; +import { UserKeyRotationService } from "../../key-management/key-rotation/user-key-rotation.service"; @Component({ selector: "app-change-password", diff --git a/apps/web/src/app/auth/settings/settings.module.ts b/apps/web/src/app/auth/settings/settings.module.ts index 2d1f64d1ebb..437711f4aa6 100644 --- a/apps/web/src/app/auth/settings/settings.module.ts +++ b/apps/web/src/app/auth/settings/settings.module.ts @@ -2,9 +2,9 @@ import { NgModule } from "@angular/core"; import { PasswordCalloutComponent } from "@bitwarden/auth/angular"; +import { UserKeyRotationModule } from "../../key-management/key-rotation/user-key-rotation.module"; import { SharedModule } from "../../shared"; import { EmergencyAccessModule } from "../emergency-access"; -import { UserKeyRotationModule } from "../key-rotation/user-key-rotation.module"; import { ChangePasswordComponent } from "./change-password.component"; import { WebauthnLoginSettingsModule } from "./webauthn-login-settings"; diff --git a/apps/web/src/app/auth/key-rotation/request/update-key.request.ts b/apps/web/src/app/key-management/key-rotation/request/update-key.request.ts similarity index 88% rename from apps/web/src/app/auth/key-rotation/request/update-key.request.ts rename to apps/web/src/app/key-management/key-rotation/request/update-key.request.ts index 0988ed54a99..81b7d361579 100644 --- a/apps/web/src/app/auth/key-rotation/request/update-key.request.ts +++ b/apps/web/src/app/key-management/key-rotation/request/update-key.request.ts @@ -4,7 +4,7 @@ import { SendWithIdRequest } from "@bitwarden/common/src/tools/send/models/reque import { CipherWithIdRequest } from "@bitwarden/common/src/vault/models/request/cipher-with-id.request"; import { FolderWithIdRequest } from "@bitwarden/common/src/vault/models/request/folder-with-id.request"; -import { EmergencyAccessWithIdRequest } from "../../emergency-access/request/emergency-access-update.request"; +import { EmergencyAccessWithIdRequest } from "../../../auth/emergency-access/request/emergency-access-update.request"; export class UpdateKeyRequest { masterPasswordHash: string; diff --git a/apps/web/src/app/auth/key-rotation/user-key-rotation-api.service.ts b/apps/web/src/app/key-management/key-rotation/user-key-rotation-api.service.ts similarity index 100% rename from apps/web/src/app/auth/key-rotation/user-key-rotation-api.service.ts rename to apps/web/src/app/key-management/key-rotation/user-key-rotation-api.service.ts diff --git a/apps/web/src/app/auth/key-rotation/user-key-rotation.module.ts b/apps/web/src/app/key-management/key-rotation/user-key-rotation.module.ts similarity index 100% rename from apps/web/src/app/auth/key-rotation/user-key-rotation.module.ts rename to apps/web/src/app/key-management/key-rotation/user-key-rotation.module.ts diff --git a/apps/web/src/app/auth/key-rotation/user-key-rotation.service.spec.ts b/apps/web/src/app/key-management/key-rotation/user-key-rotation.service.spec.ts similarity index 100% rename from apps/web/src/app/auth/key-rotation/user-key-rotation.service.spec.ts rename to apps/web/src/app/key-management/key-rotation/user-key-rotation.service.spec.ts diff --git a/apps/web/src/app/auth/key-rotation/user-key-rotation.service.ts b/apps/web/src/app/key-management/key-rotation/user-key-rotation.service.ts similarity index 98% rename from apps/web/src/app/auth/key-rotation/user-key-rotation.service.ts rename to apps/web/src/app/key-management/key-rotation/user-key-rotation.service.ts index 8116bcd0470..e4e5ab2caaa 100644 --- a/apps/web/src/app/auth/key-rotation/user-key-rotation.service.ts +++ b/apps/web/src/app/key-management/key-rotation/user-key-rotation.service.ts @@ -18,8 +18,8 @@ import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.serv import { KeyService } from "@bitwarden/key-management"; import { OrganizationUserResetPasswordService } from "../../admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service"; -import { WebauthnLoginAdminService } from "../core"; -import { EmergencyAccessService } from "../emergency-access"; +import { WebauthnLoginAdminService } from "../../auth/core"; +import { EmergencyAccessService } from "../../auth/emergency-access"; import { UpdateKeyRequest } from "./request/update-key.request"; import { UserKeyRotationApiService } from "./user-key-rotation-api.service"; diff --git a/apps/web/src/app/auth/migrate-encryption/migrate-legacy-encryption.component.html b/apps/web/src/app/key-management/migrate-encryption/migrate-legacy-encryption.component.html similarity index 100% rename from apps/web/src/app/auth/migrate-encryption/migrate-legacy-encryption.component.html rename to apps/web/src/app/key-management/migrate-encryption/migrate-legacy-encryption.component.html diff --git a/apps/web/src/app/auth/migrate-encryption/migrate-legacy-encryption.component.ts b/apps/web/src/app/key-management/migrate-encryption/migrate-legacy-encryption.component.ts similarity index 100% rename from apps/web/src/app/auth/migrate-encryption/migrate-legacy-encryption.component.ts rename to apps/web/src/app/key-management/migrate-encryption/migrate-legacy-encryption.component.ts diff --git a/apps/web/src/app/oss-routing.module.ts b/apps/web/src/app/oss-routing.module.ts index 9f36df175fe..b3a8db20028 100644 --- a/apps/web/src/app/oss-routing.module.ts +++ b/apps/web/src/app/oss-routing.module.ts @@ -177,7 +177,7 @@ const routes: Routes = [ { path: "migrate-legacy-encryption", loadComponent: () => - import("./auth/migrate-encryption/migrate-legacy-encryption.component").then( + import("./key-management/migrate-encryption/migrate-legacy-encryption.component").then( (mod) => mod.MigrateFromLegacyEncryptionComponent, ), }, diff --git a/apps/web/src/app/shared/loose-components.module.ts b/apps/web/src/app/shared/loose-components.module.ts index 29b4f2308c7..638a523cd4f 100644 --- a/apps/web/src/app/shared/loose-components.module.ts +++ b/apps/web/src/app/shared/loose-components.module.ts @@ -76,13 +76,11 @@ import { PremiumBadgeComponent } from "../vault/components/premium-badge.compone import { AddEditCustomFieldsComponent } from "../vault/individual-vault/add-edit-custom-fields.component"; import { AddEditComponent } from "../vault/individual-vault/add-edit.component"; import { AttachmentsComponent } from "../vault/individual-vault/attachments.component"; -import { CollectionsComponent } from "../vault/individual-vault/collections.component"; import { FolderAddEditComponent } from "../vault/individual-vault/folder-add-edit.component"; import { OrganizationBadgeModule } from "../vault/individual-vault/organization-badge/organization-badge.module"; import { PipesModule } from "../vault/individual-vault/pipes/pipes.module"; import { AddEditComponent as OrgAddEditComponent } from "../vault/org-vault/add-edit.component"; import { AttachmentsComponent as OrgAttachmentsComponent } from "../vault/org-vault/attachments.component"; -import { CollectionsComponent as OrgCollectionsComponent } from "../vault/org-vault/collections.component"; import { PurgeVaultComponent } from "../vault/settings/purge-vault.component"; import { EnvironmentSelectorModule } from "./../components/environment-selector/environment-selector.module"; @@ -123,7 +121,6 @@ import { SharedModule } from "./shared.module"; ApiKeyComponent, AttachmentsComponent, ChangeEmailComponent, - CollectionsComponent, DeauthorizeSessionsComponent, DeleteAccountDialogComponent, DomainRulesComponent, @@ -139,7 +136,6 @@ import { SharedModule } from "./shared.module"; HintComponent, OrgAddEditComponent, OrgAttachmentsComponent, - OrgCollectionsComponent, OrgEventsComponent, OrgExposedPasswordsReportComponent, OrgInactiveTwoFactorReportComponent, @@ -192,7 +188,6 @@ import { SharedModule } from "./shared.module"; ApiKeyComponent, AttachmentsComponent, ChangeEmailComponent, - CollectionsComponent, DeauthorizeSessionsComponent, DeleteAccountDialogComponent, DomainRulesComponent, @@ -210,7 +205,6 @@ import { SharedModule } from "./shared.module"; OrgAddEditComponent, OrganizationLayoutComponent, OrgAttachmentsComponent, - OrgCollectionsComponent, OrgEventsComponent, OrgExposedPasswordsReportComponent, OrgInactiveTwoFactorReportComponent, diff --git a/apps/web/src/app/tools/access-intelligence/access-intelligence.component.html b/apps/web/src/app/tools/access-intelligence/access-intelligence.component.html index 78ddfb23929..44ca90cfaa5 100644 --- a/apps/web/src/app/tools/access-intelligence/access-intelligence.component.html +++ b/apps/web/src/app/tools/access-intelligence/access-intelligence.component.html @@ -1,4 +1,20 @@ - +
{{ "accessIntelligence" | i18n }}
+

{{ "passwordRisk" | i18n }}

+
{{ "discoverAtRiskPasswords" | i18n }}
+
+ + {{ + "dataLastUpdated" | i18n: (dataLastUpdated | date: "MMMM d, y 'at' h:mm a") + }} + + {{ "refresh" | i18n }} + +
diff --git a/apps/web/src/app/tools/access-intelligence/access-intelligence.component.ts b/apps/web/src/app/tools/access-intelligence/access-intelligence.component.ts index 3444e3a7ff1..90b2979d1b1 100644 --- a/apps/web/src/app/tools/access-intelligence/access-intelligence.component.ts +++ b/apps/web/src/app/tools/access-intelligence/access-intelligence.component.ts @@ -5,7 +5,7 @@ import { ActivatedRoute } from "@angular/router"; import { first } from "rxjs"; import { JslibModule } from "@bitwarden/angular/jslib.module"; -import { TabsModule } from "@bitwarden/components"; +import { AsyncActionsModule, ButtonModule, TabsModule } from "@bitwarden/components"; import { HeaderModule } from "../../layouts/header/header.module"; @@ -25,6 +25,8 @@ export enum AccessIntelligenceTabType { templateUrl: "./access-intelligence.component.html", imports: [ ApplicationTableComponent, + AsyncActionsModule, + ButtonModule, CommonModule, JslibModule, HeaderModule, @@ -36,11 +38,22 @@ export enum AccessIntelligenceTabType { }) export class AccessIntelligenceComponent { tabIndex: AccessIntelligenceTabType; + dataLastUpdated = new Date(); apps: any[] = []; priorityApps: any[] = []; notifiedMembers: any[] = []; + async refreshData() { + // TODO: Implement + return new Promise((resolve) => + setTimeout(() => { + this.dataLastUpdated = new Date(); + resolve(true); + }, 1000), + ); + } + constructor(route: ActivatedRoute) { route.queryParams.pipe(takeUntilDestroyed(), first()).subscribe(({ tabIndex }) => { this.tabIndex = !isNaN(tabIndex) ? tabIndex : AccessIntelligenceTabType.AllApps; diff --git a/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.html b/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.html new file mode 100644 index 00000000000..9c3b4f48916 --- /dev/null +++ b/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.html @@ -0,0 +1,15 @@ + + +

+ {{ "noPriorityApplicationsTitle" | i18n }} +

+
+ +

+ {{ "noPriorityApplicationsDescription" | i18n }} +

+
+ + + +
diff --git a/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.ts b/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.ts new file mode 100644 index 00000000000..e4e54ca2f13 --- /dev/null +++ b/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.ts @@ -0,0 +1,15 @@ +import { CommonModule } from "@angular/common"; +import { Component } from "@angular/core"; + +import { JslibModule } from "@bitwarden/angular/jslib.module"; +import { ButtonModule, NoItemsModule, Icons } from "@bitwarden/components"; + +@Component({ + standalone: true, + selector: "tools-no-priority-apps", + templateUrl: "no-priority-apps.component.html", + imports: [ButtonModule, CommonModule, JslibModule, NoItemsModule], +}) +export class NoPriorityAppsComponent { + noItemsIcon = Icons.NoResults; +} diff --git a/apps/web/src/app/tools/access-intelligence/password-health-members.component.html b/apps/web/src/app/tools/access-intelligence/password-health-members.component.html index f902011110b..885c21f0a2c 100644 --- a/apps/web/src/app/tools/access-intelligence/password-health-members.component.html +++ b/apps/web/src/app/tools/access-intelligence/password-health-members.component.html @@ -8,7 +8,33 @@ > {{ "loading" | i18n }} -
+
+ +
+
+
+ + + + +
+
+ + +
diff --git a/apps/web/src/app/tools/access-intelligence/password-health-members.component.ts b/apps/web/src/app/tools/access-intelligence/password-health-members.component.ts index 30c9ad8dba8..17b2456406b 100644 --- a/apps/web/src/app/tools/access-intelligence/password-health-members.component.ts +++ b/apps/web/src/app/tools/access-intelligence/password-health-members.component.ts @@ -1,10 +1,9 @@ -import { CommonModule } from "@angular/common"; import { Component, DestroyRef, inject, OnInit } from "@angular/core"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; +import { FormControl, FormsModule } from "@angular/forms"; import { ActivatedRoute } from "@angular/router"; -import { map } from "rxjs"; +import { debounceTime, map } from "rxjs"; -import { JslibModule } from "@bitwarden/angular/jslib.module"; // eslint-disable-next-line no-restricted-imports import { PasswordHealthService } from "@bitwarden/bit-common/tools/reports/access-intelligence"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; @@ -12,33 +11,31 @@ import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.servic import { PasswordStrengthServiceAbstraction } from "@bitwarden/common/tools/password-strength"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; -import { - BadgeModule, - BadgeVariant, - ContainerComponent, - TableDataSource, - TableModule, -} from "@bitwarden/components"; +import { BadgeVariant, SearchModule, TableDataSource, TableModule } from "@bitwarden/components"; +import { CardComponent } from "@bitwarden/tools-card"; -// eslint-disable-next-line no-restricted-imports import { HeaderModule } from "../../layouts/header/header.module"; // eslint-disable-next-line no-restricted-imports +import { SharedModule } from "../../shared"; import { OrganizationBadgeModule } from "../../vault/individual-vault/organization-badge/organization-badge.module"; // eslint-disable-next-line no-restricted-imports import { PipesModule } from "../../vault/individual-vault/pipes/pipes.module"; +import { NoPriorityAppsComponent } from "./no-priority-apps.component"; + @Component({ standalone: true, selector: "tools-password-health-members", templateUrl: "password-health-members.component.html", imports: [ - BadgeModule, + CardComponent, OrganizationBadgeModule, - CommonModule, - ContainerComponent, PipesModule, - JslibModule, HeaderModule, + SearchModule, + FormsModule, + NoPriorityAppsComponent, + SharedModule, TableModule, ], providers: [PasswordHealthService], @@ -56,6 +53,8 @@ export class PasswordHealthMembersComponent implements OnInit { loading = true; + protected searchControl = new FormControl("", { nonNullable: true }); + private destroyRef = inject(DestroyRef); constructor( @@ -64,7 +63,11 @@ export class PasswordHealthMembersComponent implements OnInit { protected auditService: AuditService, protected i18nService: I18nService, protected activatedRoute: ActivatedRoute, - ) {} + ) { + this.searchControl.valueChanges + .pipe(debounceTime(200), takeUntilDestroyed()) + .subscribe((v) => (this.dataSource.filter = v)); + } ngOnInit() { this.activatedRoute.paramMap @@ -89,6 +92,7 @@ export class PasswordHealthMembersComponent implements OnInit { await passwordHealthService.generateReport(); this.dataSource.data = passwordHealthService.reportCiphers; + this.exposedPasswordMap = passwordHealthService.exposedPasswordMap; this.passwordStrengthMap = passwordHealthService.passwordStrengthMap; this.passwordUseMap = passwordHealthService.passwordUseMap; diff --git a/apps/web/src/app/tools/access-intelligence/password-health.component.html b/apps/web/src/app/tools/access-intelligence/password-health.component.html index 32459706449..5b1fe4610d9 100644 --- a/apps/web/src/app/tools/access-intelligence/password-health.component.html +++ b/apps/web/src/app/tools/access-intelligence/password-health.component.html @@ -8,7 +8,7 @@ > {{ "loading" | i18n }}
-
+
diff --git a/apps/web/src/app/vault/individual-vault/collections.component.html b/apps/web/src/app/vault/individual-vault/collections.component.html deleted file mode 100644 index 028d91ad346..00000000000 --- a/apps/web/src/app/vault/individual-vault/collections.component.html +++ /dev/null @@ -1,52 +0,0 @@ -
- - - {{ "collections" | i18n }} - {{ cipher.name }} - - -

{{ "collectionsDesc" | i18n }}

-
- -
- - -
-
-
- {{ "noCollectionsInList" | i18n }} -
- - - - - - {{ c.name }} - - - - -
- - - - -
-
diff --git a/apps/web/src/app/vault/individual-vault/collections.component.ts b/apps/web/src/app/vault/individual-vault/collections.component.ts deleted file mode 100644 index f527a74e368..00000000000 --- a/apps/web/src/app/vault/individual-vault/collections.component.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { DIALOG_DATA, DialogConfig, DialogRef } from "@angular/cdk/dialog"; -import { Component, Inject, OnDestroy } from "@angular/core"; - -import { CollectionService, CollectionView } from "@bitwarden/admin-console/common"; -import { CollectionsComponent as BaseCollectionsComponent } from "@bitwarden/angular/admin-console/components/collections.component"; -import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; -import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; -import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; -import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; -import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; -import { DialogService, ToastService } from "@bitwarden/components"; - -@Component({ - selector: "app-vault-collections", - templateUrl: "collections.component.html", -}) -export class CollectionsComponent extends BaseCollectionsComponent implements OnDestroy { - constructor( - collectionService: CollectionService, - platformUtilsService: PlatformUtilsService, - i18nService: I18nService, - cipherService: CipherService, - organizationSerivce: OrganizationService, - logService: LogService, - accountService: AccountService, - protected dialogRef: DialogRef, - @Inject(DIALOG_DATA) params: CollectionsDialogParams, - toastService: ToastService, - ) { - super( - collectionService, - platformUtilsService, - i18nService, - cipherService, - organizationSerivce, - logService, - accountService, - toastService, - ); - this.cipherId = params?.cipherId; - } - - override async submit(): Promise { - const success = await super.submit(); - if (success) { - this.dialogRef.close(CollectionsDialogResult.Saved); - return true; - } - return false; - } - - check(c: CollectionView, select?: boolean) { - if (!c.canEditItems(this.organization)) { - return; - } - (c as any).checked = select == null ? !(c as any).checked : select; - } - - selectAll(select: boolean) { - this.collections.forEach((c) => this.check(c, select)); - } - - ngOnDestroy() { - this.selectAll(false); - } -} - -export interface CollectionsDialogParams { - cipherId: string; -} - -export enum CollectionsDialogResult { - Saved = "saved", -} - -/** - * Strongly typed helper to open a Collections dialog - * @param dialogService Instance of the dialog service that will be used to open the dialog - * @param config Optional configuration for the dialog - */ -export function openIndividualVaultCollectionsDialog( - dialogService: DialogService, - config?: DialogConfig, -) { - return dialogService.open( - CollectionsComponent, - config, - ); -} diff --git a/apps/web/src/app/vault/org-vault/collections.component.ts b/apps/web/src/app/vault/org-vault/collections.component.ts deleted file mode 100644 index 47f5325c756..00000000000 --- a/apps/web/src/app/vault/org-vault/collections.component.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { DIALOG_DATA, DialogConfig, DialogRef } from "@angular/cdk/dialog"; -import { Component, Inject } from "@angular/core"; - -import { CollectionService, CollectionView } from "@bitwarden/admin-console/common"; -import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; -import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; -import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; -import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; -import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; -import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; -import { CipherData } from "@bitwarden/common/vault/models/data/cipher.data"; -import { Cipher } from "@bitwarden/common/vault/models/domain/cipher"; -import { CipherCollectionsRequest } from "@bitwarden/common/vault/models/request/cipher-collections.request"; -import { DialogService, ToastService } from "@bitwarden/components"; - -import { - CollectionsComponent as BaseCollectionsComponent, - CollectionsDialogResult, -} from "../individual-vault/collections.component"; - -@Component({ - selector: "app-org-vault-collections", - templateUrl: "../../vault/individual-vault/collections.component.html", -}) -export class CollectionsComponent extends BaseCollectionsComponent { - organization: Organization; - - constructor( - collectionService: CollectionService, - platformUtilsService: PlatformUtilsService, - i18nService: I18nService, - cipherService: CipherService, - organizationService: OrganizationService, - private apiService: ApiService, - logService: LogService, - accountService: AccountService, - protected dialogRef: DialogRef, - @Inject(DIALOG_DATA) params: OrgVaultCollectionsDialogParams, - toastService: ToastService, - ) { - super( - collectionService, - platformUtilsService, - i18nService, - cipherService, - organizationService, - logService, - accountService, - dialogRef, - params, - toastService, - ); - this.allowSelectNone = true; - this.collectionIds = params?.collectionIds; - this.collections = params?.collections; - this.organization = params?.organization; - this.cipherId = params?.cipherId; - } - - protected async loadCipher() { - // if cipher is unassigned use apiService. We can see this by looking at this.collectionIds - if (!this.organization.canEditAllCiphers && this.collectionIds.length !== 0) { - return await super.loadCipher(); - } - const response = await this.apiService.getCipherAdmin(this.cipherId); - return new Cipher(new CipherData(response)); - } - - protected loadCipherCollections() { - if (!this.organization.canViewAllCollections) { - return super.loadCipherCollections(); - } - return this.collectionIds; - } - - protected loadCollections() { - if (!this.organization.canViewAllCollections) { - return super.loadCollections(); - } - return Promise.resolve(this.collections); - } - - protected saveCollections() { - if (this.organization.canEditAllCiphers || this.collectionIds.length === 0) { - const request = new CipherCollectionsRequest(this.cipherDomain.collectionIds); - return this.apiService.putCipherCollectionsAdmin(this.cipherId, request); - } else { - return super.saveCollections(); - } - } -} - -export interface OrgVaultCollectionsDialogParams { - collectionIds: string[]; - collections: CollectionView[]; - organization: Organization; - cipherId: string; -} - -/** - * Strongly typed helper to open a Collections dialog - * @param dialogService Instance of the dialog service that will be used to open the dialog - * @param config Optional configuration for the dialog - */ -export function openOrgVaultCollectionsDialog( - dialogService: DialogService, - config?: DialogConfig, -) { - return dialogService.open( - CollectionsComponent, - config, - ); -} diff --git a/apps/web/src/app/vault/org-vault/vault.component.ts b/apps/web/src/app/vault/org-vault/vault.component.ts index 87e40036d50..4c7e35ef6f4 100644 --- a/apps/web/src/app/vault/org-vault/vault.component.ts +++ b/apps/web/src/app/vault/org-vault/vault.component.ts @@ -93,7 +93,6 @@ import { BulkDeleteDialogResult, openBulkDeleteDialog, } from "../individual-vault/bulk-action-dialogs/bulk-delete-dialog/bulk-delete-dialog.component"; -import { CollectionsDialogResult } from "../individual-vault/collections.component"; import { RoutedVaultFilterBridgeService } from "../individual-vault/vault-filter/services/routed-vault-filter-bridge.service"; import { RoutedVaultFilterService } from "../individual-vault/vault-filter/services/routed-vault-filter.service"; import { createFilterFunction } from "../individual-vault/vault-filter/shared/models/filter-function"; @@ -111,7 +110,6 @@ import { BulkCollectionsDialogResult, } from "./bulk-collections-dialog"; import { CollectionAccessRestrictedComponent } from "./collection-access-restricted.component"; -import { openOrgVaultCollectionsDialog } from "./collections.component"; import { AdminConsoleCipherFormConfigService } from "./services/admin-console-cipher-form-config.service"; import { VaultFilterModule } from "./vault-filter/vault-filter.module"; const BroadcasterSubscriptionId = "OrgVaultComponent"; @@ -718,39 +716,6 @@ export class VaultComponent implements OnInit, OnDestroy { }); } - async editCipherCollections(cipher: CipherView) { - let collections: CollectionAdminView[] = []; - - // Admins limited to only adding items to collections they have access to. - collections = await firstValueFrom( - this.allCollectionsWithoutUnassigned$.pipe( - map((c) => { - return c.sort((a, b) => { - if (a.canEditItems(this.organization) && !b.canEditItems(this.organization)) { - return -1; - } else if (!a.canEditItems(this.organization) && b.canEditItems(this.organization)) { - return 1; - } else { - return a.name.localeCompare(b.name); - } - }); - }), - ), - ); - const dialog = openOrgVaultCollectionsDialog(this.dialogService, { - data: { - collectionIds: cipher.collectionIds, - collections: collections, - organization: this.organization, - cipherId: cipher.id, - }, - }); - - if ((await lastValueFrom(dialog.closed)) == CollectionsDialogResult.Saved) { - this.refresh(); - } - } - async addCipher(cipherType?: CipherType) { if (this.extensionRefreshEnabled) { return this.addCipherV2(cipherType); diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json index 2a3e2a91a98..15283efb234 100644 --- a/apps/web/src/locales/af/messages.json +++ b/apps/web/src/locales/af/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/ar/messages.json b/apps/web/src/locales/ar/messages.json index 7885dc39d0f..4f71b9de861 100644 --- a/apps/web/src/locales/ar/messages.json +++ b/apps/web/src/locales/ar/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json index c937d724d9d..35746f22283 100644 --- a/apps/web/src/locales/az/messages.json +++ b/apps/web/src/locales/az/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Müraciət Kəşfiyyatı" }, + "passwordRisk": { + "message": "Parol riski" + }, + "discoverAtRiskPasswords": { + "message": "Riskli parolları kəşf edin və bu parolları dəyişdirməsi üçün istifadəçiləri məlumatlandırın." + }, + "dataLastUpdated": { + "message": "Datanın son güncəlləmə tarixi: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Məlumatlandırılan üzvlər" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Heç bir tətbiqi prioritet olaraq işarələməmisiniz" + }, + "noPriorityApplicationsDescription": { + "message": "Riskli parolları kəşf etmək üçün ən kritik tətbiqlərinizi seçin və bu parolları dəyişdirməsi üçün istifadəçiləri məlumatlandırın." + }, + "markPriorityApps": { + "message": "Prioritet tətbiqləri işarələ" + }, + "markAppAsCritical": { + "message": "Tətbiqi kritik olaraq işarələ" + }, "application": { "message": "Tətbiq" }, @@ -406,7 +433,7 @@ "message": "Parol yarat" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Keçid ifadələri yarat" }, "checkPassword": { "message": "Parolun ifşalanıb ifşalanmadığını yoxlayın." @@ -667,7 +694,7 @@ "description": "Copy password to clipboard" }, "copyPassphrase": { - "message": "Copy passphrase", + "message": "Keçid ifadəsini kopyala", "description": "Copy passphrase to clipboard" }, "passwordCopied": { @@ -940,13 +967,13 @@ "message": "Fərqli bir giriş üsulu istifadə edin" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Keçid açarı ilə giriş et" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Tək daxil olma üsulunu istifadə et" }, "welcomeBack": { - "message": "Welcome back" + "message": "Yenidən xoş gəlmisiniz" }, "invalidPasskeyPleaseTryAgain": { "message": "Yararsız keçid açarı. Lütfən yenidən sınayın." @@ -1030,7 +1057,7 @@ "message": "Hesab yarat" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Bitwarden-də yenisiniz?" }, "setAStrongPassword": { "message": "Güclü bir parol təyin et" @@ -1048,7 +1075,7 @@ "message": "Giriş et" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Bitwarden-ə giriş edin" }, "verifyIdentity": { "message": "Kimliyinizi doğrulayın" diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json index 45371bbf914..4cff7663bf3 100644 --- a/apps/web/src/locales/be/messages.json +++ b/apps/web/src/locales/be/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/bg/messages.json b/apps/web/src/locales/bg/messages.json index a251cdffa12..65d41f4de60 100644 --- a/apps/web/src/locales/bg/messages.json +++ b/apps/web/src/locales/bg/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Рискова парола" + }, + "discoverAtRiskPasswords": { + "message": "Откриване на пароли в риск и известяване на потребителите да ги сменят." + }, + "dataLastUpdated": { + "message": "Последно обновяване на данните: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Известени членове" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Не сте отбелязали нито едно приложение като приоритетно" + }, + "noPriorityApplicationsDescription": { + "message": "Изберете най-важните си приложения, за да откриете паролите, които може да са в риск, и да известите потребителите да ги сменят." + }, + "markPriorityApps": { + "message": "Отбелязване на приоритетни приложения" + }, + "markAppAsCritical": { + "message": "Отбелязване на приложението като важно" + }, "application": { "message": "Приложение" }, diff --git a/apps/web/src/locales/bn/messages.json b/apps/web/src/locales/bn/messages.json index f7a3415efe9..bb70d824123 100644 --- a/apps/web/src/locales/bn/messages.json +++ b/apps/web/src/locales/bn/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/bs/messages.json b/apps/web/src/locales/bs/messages.json index 45813699704..da7183cfc98 100644 --- a/apps/web/src/locales/bs/messages.json +++ b/apps/web/src/locales/bs/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/ca/messages.json b/apps/web/src/locales/ca/messages.json index 613a47ce057..f765f2969c3 100644 --- a/apps/web/src/locales/ca/messages.json +++ b/apps/web/src/locales/ca/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/cs/messages.json b/apps/web/src/locales/cs/messages.json index d6bb5e45d1b..f393fb3527f 100644 --- a/apps/web/src/locales/cs/messages.json +++ b/apps/web/src/locales/cs/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Přístup k inteligenci" }, + "passwordRisk": { + "message": "Rizikové heslo" + }, + "discoverAtRiskPasswords": { + "message": "Objevte riziková hesla a upozorněte uživatele na změnu těchto hesel." + }, + "dataLastUpdated": { + "message": "Data naposledy aktualizována: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Obeznámení členové" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Neoznačili jste žádné aplikace jako prioritu" + }, + "noPriorityApplicationsDescription": { + "message": "Vyberte své nejkritičtější aplikace, abyste objevili riziková hesla a upozorněte uživatele na změnu těchto hesel." + }, + "markPriorityApps": { + "message": "Označit prioritní aplikace" + }, + "markAppAsCritical": { + "message": "Označit aplikaci jako kritickou" + }, "application": { "message": "Aplikace" }, diff --git a/apps/web/src/locales/cy/messages.json b/apps/web/src/locales/cy/messages.json index b61475b511f..ba4d265c641 100644 --- a/apps/web/src/locales/cy/messages.json +++ b/apps/web/src/locales/cy/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json index b2edfe31c13..73a2227aecd 100644 --- a/apps/web/src/locales/da/messages.json +++ b/apps/web/src/locales/da/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Adgangsintelligens" }, + "passwordRisk": { + "message": "Adgangskoderisiko" + }, + "discoverAtRiskPasswords": { + "message": "Opdag risikable adgangskoder og underret brugerne om at ændre disse." + }, + "dataLastUpdated": { + "message": "Data senest opdateret: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Underrettede medlemmer" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Ingen programmer er markret som en prioritet" + }, + "noPriorityApplicationsDescription": { + "message": "Vælg de mest kritiske programmer for at afsløre risikable adgangskoder og give brugerne besked om at disse." + }, + "markPriorityApps": { + "message": "Markér prioriterede apps" + }, + "markAppAsCritical": { + "message": "Markér app som kritisk" + }, "application": { "message": "Applikation" }, diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index e75f80a4f5d..34dff949b24 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Benachrichtigte Mitglieder" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Anwendung" }, @@ -940,13 +967,13 @@ "message": "Eine andere Anmeldemethode verwenden" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Mit Passkey anmelden" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Single Sign-on verwenden" }, "welcomeBack": { - "message": "Welcome back" + "message": "Willkommen zurück" }, "invalidPasskeyPleaseTryAgain": { "message": "Ungültiger Passkey. Bitte versuche es erneut." @@ -1030,7 +1057,7 @@ "message": "Konto erstellen" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Neu bei Bitwarden?" }, "setAStrongPassword": { "message": "Lege ein starkes Passwort fest" @@ -1048,7 +1075,7 @@ "message": "Anmelden" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Bei Bitwarden anmelden" }, "verifyIdentity": { "message": "Verifiziere deine Identität" diff --git a/apps/web/src/locales/el/messages.json b/apps/web/src/locales/el/messages.json index 17462f8a0f6..ca82f4adbba 100644 --- a/apps/web/src/locales/el/messages.json +++ b/apps/web/src/locales/el/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Εφαρμογή" }, diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index 470852dce40..9ea33149de8 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json index a1675585b65..f80a8635196 100644 --- a/apps/web/src/locales/en_GB/messages.json +++ b/apps/web/src/locales/en_GB/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/en_IN/messages.json b/apps/web/src/locales/en_IN/messages.json index 02dad7b40b6..c8dea6df516 100644 --- a/apps/web/src/locales/en_IN/messages.json +++ b/apps/web/src/locales/en_IN/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/eo/messages.json b/apps/web/src/locales/eo/messages.json index 6984e4e90e6..1753b2d7766 100644 --- a/apps/web/src/locales/eo/messages.json +++ b/apps/web/src/locales/eo/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json index 0596f251768..acf3ad9c1e6 100644 --- a/apps/web/src/locales/es/messages.json +++ b/apps/web/src/locales/es/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/et/messages.json b/apps/web/src/locales/et/messages.json index 0eac8f3be63..2a9bf14533c 100644 --- a/apps/web/src/locales/et/messages.json +++ b/apps/web/src/locales/et/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json index 9d58aa1c79c..7829d997a9c 100644 --- a/apps/web/src/locales/eu/messages.json +++ b/apps/web/src/locales/eu/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/fa/messages.json b/apps/web/src/locales/fa/messages.json index f8f904c4f8b..3c48fcda927 100644 --- a/apps/web/src/locales/fa/messages.json +++ b/apps/web/src/locales/fa/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json index 76b2e75c02a..fbc5ba121c5 100644 --- a/apps/web/src/locales/fi/messages.json +++ b/apps/web/src/locales/fi/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Sovellus" }, @@ -198,7 +225,7 @@ "message": "Merkki" }, "expiration": { - "message": "Erääntymisaika" + "message": "Voimassaolo päättyy" }, "securityCode": { "message": "Turvakoodi (CVC/CVV)" diff --git a/apps/web/src/locales/fil/messages.json b/apps/web/src/locales/fil/messages.json index 17cf9b683df..bc958206c76 100644 --- a/apps/web/src/locales/fil/messages.json +++ b/apps/web/src/locales/fil/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/fr/messages.json b/apps/web/src/locales/fr/messages.json index 780caf551d5..bc9aa919578 100644 --- a/apps/web/src/locales/fr/messages.json +++ b/apps/web/src/locales/fr/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Accéder à l'Intelligence" }, + "passwordRisk": { + "message": "Risque du mot de passe" + }, + "discoverAtRiskPasswords": { + "message": "Découvrez les mots de passe à risque et avertissez les utilisateurs de modifier ces mots de passe." + }, + "dataLastUpdated": { + "message": "Dernière mise à jour des données : $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Membres notifiés" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Vous n'avez marqué aucune application comme prioritaire" + }, + "noPriorityApplicationsDescription": { + "message": "Sélectionnez vos applications les plus critiques pour découvrir les mots de passe à risque et avertissez les utilisateurs de modifier ces mots de passe." + }, + "markPriorityApps": { + "message": "Marquer les applications prioritaires" + }, + "markAppAsCritical": { + "message": "Marquer l'application comme critique" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/gl/messages.json b/apps/web/src/locales/gl/messages.json index 8559723bf8d..35a343d2474 100644 --- a/apps/web/src/locales/gl/messages.json +++ b/apps/web/src/locales/gl/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/he/messages.json b/apps/web/src/locales/he/messages.json index c4857d603f7..dc0c4220186 100644 --- a/apps/web/src/locales/he/messages.json +++ b/apps/web/src/locales/he/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/hi/messages.json b/apps/web/src/locales/hi/messages.json index 3b6800c26cd..7f304a50098 100644 --- a/apps/web/src/locales/hi/messages.json +++ b/apps/web/src/locales/hi/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/hr/messages.json b/apps/web/src/locales/hr/messages.json index 3d10e36712a..d623a17d7bc 100644 --- a/apps/web/src/locales/hr/messages.json +++ b/apps/web/src/locales/hr/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json index 14b43174715..6b6709214e0 100644 --- a/apps/web/src/locales/hu/messages.json +++ b/apps/web/src/locales/hu/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Elérés intelligencia" }, + "passwordRisk": { + "message": "Jelszó kockázat" + }, + "discoverAtRiskPasswords": { + "message": "Fedezzük fel a veszélyeztetett jelszavakat és értesítsük a felhasználókat, hogy módosítsák ezeket a jelszavakat." + }, + "dataLastUpdated": { + "message": "Az adatok utolsó frissítése: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Értesített tagok" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Egyetlen alkalmazás sem lett megjelölve kiemeltként." + }, + "noPriorityApplicationsDescription": { + "message": "Válasszuk ki a legkritikusabb alkalmazásokat a veszélyeztetett jelszavak felfedezéséhez és értesítsük a felhasználókat a jelszavak megváltoztatásáról." + }, + "markPriorityApps": { + "message": "Kiemelt alkalmazások megjelölése" + }, + "markAppAsCritical": { + "message": "Alkalmazások megjelölése kritikusként" + }, "application": { "message": "Alkalmazás" }, diff --git a/apps/web/src/locales/id/messages.json b/apps/web/src/locales/id/messages.json index f13892c4092..d84735de92a 100644 --- a/apps/web/src/locales/id/messages.json +++ b/apps/web/src/locales/id/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json index 8f9707cdfde..251a1677722 100644 --- a/apps/web/src/locales/it/messages.json +++ b/apps/web/src/locales/it/messages.json @@ -1,18 +1,33 @@ { "allApplications": { - "message": "All applications" + "message": "Tutte le applicazioni" }, "priorityApplications": { - "message": "Priority applications" + "message": "Applicazioni prioritarie" }, "accessIntelligence": { - "message": "Access Intelligence" + "message": "Intelligence sugli accessi" + }, + "passwordRisk": { + "message": "Rischio password" + }, + "discoverAtRiskPasswords": { + "message": "Scopri le password a rischio e richiedi agli utenti di cambiarle." + }, + "dataLastUpdated": { + "message": "Ultimo aggiornamento: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } }, "notifiedMembers": { - "message": "Notified members" + "message": "Membri notificati" }, "allApplicationsWithCount": { - "message": "All applications ($COUNT$)", + "message": "Tutte le applicazioni ($COUNT$)", "placeholders": { "count": { "content": "$1", @@ -21,7 +36,7 @@ } }, "priorityApplicationsWithCount": { - "message": "Priority applications ($COUNT$)", + "message": "Applicazioni prioritarie ($COUNT$)", "placeholders": { "count": { "content": "$1", @@ -30,7 +45,7 @@ } }, "notifiedMembersWithCount": { - "message": "Notified members ($COUNT$)", + "message": "Membri notificati ($COUNT$)", "placeholders": { "count": { "content": "$1", @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Non hai impostato nessuna applicazione come prioritaria" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, @@ -1279,7 +1306,7 @@ "message": "Ricordami" }, "sendVerificationCodeEmailAgain": { - "message": "Invia email con codice di verifica di nuovo" + "message": "Invia di nuovo l'email con codice di verifica" }, "useAnotherTwoStepMethod": { "message": "Usa un altro metodo di verifica in due passaggi" @@ -1515,7 +1542,7 @@ "message": "Generatore di password" }, "minComplexityScore": { - "message": "Punteggio minimo di complessità" + "message": "Punteggio di complessità minimo di {0}" }, "minNumbers": { "message": "Minimo numeri" @@ -4429,7 +4456,7 @@ "message": "Una o più politiche dell'organizzazione richiedono che la tua password principale soddisfi questi requisiti:" }, "policyInEffectMinComplexity": { - "message": "Punteggio minimo di complessità di $SCORE$", + "message": "Punteggio di complessità minimo di $SCORE$", "placeholders": { "score": { "content": "$1", @@ -6245,7 +6272,7 @@ } }, "formErrorSummarySingle": { - "message": "1 campo ha richiede tua attenzione." + "message": "1 campo richiede la tua attenzione." }, "fieldRequiredError": { "message": "$FIELDNAME$ è obbligatorio.", @@ -7856,7 +7883,7 @@ "message": "Password principale debole e violata" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Password debole e trovata una violazione dei dati. Usa una password forte e unica per proteggere il tuo account. Sei sicuro di voler usare questa password?" + "message": "Password debole e trovata in una violazione dei dati. Usa una password forte e unica per proteggere il tuo account. Sei sicuro di voler usare questa password?" }, "characterMinimum": { "message": "Minimo $LENGTH$ caratteri", @@ -8837,7 +8864,7 @@ "message": "Visualizza la repository C++" }, "jsWebAssemblySDKRepo": { - "message": "Visualizza la repository JS WebAssembly" + "message": "Visualizza il repository JS WebAssembly" }, "javaSDKRepo": { "message": "Visualizza la repository Java" diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json index 465405f8c94..1c76428c642 100644 --- a/apps/web/src/locales/ja/messages.json +++ b/apps/web/src/locales/ja/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "インテリジェンスへのアクセス" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "通知済みメンバー" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "アプリ" }, diff --git a/apps/web/src/locales/ka/messages.json b/apps/web/src/locales/ka/messages.json index 0ca4ffa0c54..9262c7e248d 100644 --- a/apps/web/src/locales/ka/messages.json +++ b/apps/web/src/locales/ka/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/km/messages.json b/apps/web/src/locales/km/messages.json index d73481686f6..93559c33fec 100644 --- a/apps/web/src/locales/km/messages.json +++ b/apps/web/src/locales/km/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/kn/messages.json b/apps/web/src/locales/kn/messages.json index 1459f7f7693..8fa4110d151 100644 --- a/apps/web/src/locales/kn/messages.json +++ b/apps/web/src/locales/kn/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/ko/messages.json b/apps/web/src/locales/ko/messages.json index 24bec17f849..dec3c79bf1f 100644 --- a/apps/web/src/locales/ko/messages.json +++ b/apps/web/src/locales/ko/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json index efa48979ff9..bcf396fa287 100644 --- a/apps/web/src/locales/lv/messages.json +++ b/apps/web/src/locales/lv/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Piekļuves inteliģence" }, + "passwordRisk": { + "message": "Paroļu risks" + }, + "discoverAtRiskPasswords": { + "message": "Atklāj riskam pakļautas paroles un apziņo lietotājus, lai tās nomaina!" + }, + "dataLastUpdated": { + "message": "Dati pēdējoreiz atjaunināti: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Apziņotie dalībnieki" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Neviena lietotne nav atzīmēta kā būtiska" + }, + "noPriorityApplicationsDescription": { + "message": "Atlasi kritiskākās lietotnes, la iatklātu riskam pakļautas paroles un apziņotu lietotājus, lai tās nomaina!" + }, + "markPriorityApps": { + "message": "Atzīmēt būtiskās lietotnes" + }, + "markAppAsCritical": { + "message": "Atzīmēt lietotni kā kritisku" + }, "application": { "message": "Lietotne" }, diff --git a/apps/web/src/locales/ml/messages.json b/apps/web/src/locales/ml/messages.json index bcb3ed0cbf9..ee6c0d24823 100644 --- a/apps/web/src/locales/ml/messages.json +++ b/apps/web/src/locales/ml/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/mr/messages.json b/apps/web/src/locales/mr/messages.json index d73481686f6..93559c33fec 100644 --- a/apps/web/src/locales/mr/messages.json +++ b/apps/web/src/locales/mr/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/my/messages.json b/apps/web/src/locales/my/messages.json index d73481686f6..93559c33fec 100644 --- a/apps/web/src/locales/my/messages.json +++ b/apps/web/src/locales/my/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/nb/messages.json b/apps/web/src/locales/nb/messages.json index ce00b906165..fb4202e4de9 100644 --- a/apps/web/src/locales/nb/messages.json +++ b/apps/web/src/locales/nb/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/ne/messages.json b/apps/web/src/locales/ne/messages.json index 2772148bf68..bcfd6a7f686 100644 --- a/apps/web/src/locales/ne/messages.json +++ b/apps/web/src/locales/ne/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json index 8e49a533808..1787c7d396a 100644 --- a/apps/web/src/locales/nl/messages.json +++ b/apps/web/src/locales/nl/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Toegangsintelligentie" }, + "passwordRisk": { + "message": "Wachtwoordrisico" + }, + "discoverAtRiskPasswords": { + "message": "Ontdek risicovolle wachtwoorden en attendeer gebruikers deze wachtwoorden te wijzigen." + }, + "dataLastUpdated": { + "message": "Datum laatste wijziging: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Geînformeerde leden" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Je hebt nog geen applicaties als belangrijk aangewezen" + }, + "noPriorityApplicationsDescription": { + "message": "Wijs je meest kritische applicaties aan om risicovolle wachtwoorden te ontdekken en gebruikers te attenderen deze te wijzigen." + }, + "markPriorityApps": { + "message": "Belangrijke apps aanwijzen" + }, + "markAppAsCritical": { + "message": "App aanwijzen als belangrijk" + }, "application": { "message": "Applicatie" }, diff --git a/apps/web/src/locales/nn/messages.json b/apps/web/src/locales/nn/messages.json index 9ee4df9aa3b..a7b9bd24058 100644 --- a/apps/web/src/locales/nn/messages.json +++ b/apps/web/src/locales/nn/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/or/messages.json b/apps/web/src/locales/or/messages.json index d73481686f6..93559c33fec 100644 --- a/apps/web/src/locales/or/messages.json +++ b/apps/web/src/locales/or/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/pl/messages.json b/apps/web/src/locales/pl/messages.json index 3e3f9c0c231..d7b39fa2fd9 100644 --- a/apps/web/src/locales/pl/messages.json +++ b/apps/web/src/locales/pl/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json index c73978a248b..bfd3a9d1907 100644 --- a/apps/web/src/locales/pt_BR/messages.json +++ b/apps/web/src/locales/pt_BR/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Acessar a Inteligência" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Membros notificados" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Aplicativo" }, diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json index 02b7b9254b1..782a3833d91 100644 --- a/apps/web/src/locales/pt_PT/messages.json +++ b/apps/web/src/locales/pt_PT/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Acesso à informação" }, + "passwordRisk": { + "message": "Risco da palavra-passe" + }, + "discoverAtRiskPasswords": { + "message": "Descubra as palavras-passe em risco e notifique os utilizadores para alterarem essas palavras-passe." + }, + "dataLastUpdated": { + "message": "Última atualização dos dados: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Membros notificados" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Não marcou nenhuma aplicação como prioritária" + }, + "noPriorityApplicationsDescription": { + "message": "Selecione as suas aplicações mais críticas para descobrir palavras-passe em risco e notifique os utilizadores para alterarem essas palavras-passe." + }, + "markPriorityApps": { + "message": "Marcar aplicações prioritárias" + }, + "markAppAsCritical": { + "message": "Marcar a aplicação como crítica" + }, "application": { "message": "Aplicação" }, diff --git a/apps/web/src/locales/ro/messages.json b/apps/web/src/locales/ro/messages.json index 5d4d9846930..8969585fb49 100644 --- a/apps/web/src/locales/ro/messages.json +++ b/apps/web/src/locales/ro/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/ru/messages.json b/apps/web/src/locales/ru/messages.json index 1cfc73958b9..7bc16f0a001 100644 --- a/apps/web/src/locales/ru/messages.json +++ b/apps/web/src/locales/ru/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Риск пароля" + }, + "discoverAtRiskPasswords": { + "message": "Обнаружение паролей, подверженных риску, и уведомление пользователей о необходимости сменить эти пароли." + }, + "dataLastUpdated": { + "message": "Последнее обновление: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Уведомленные участники" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Вы не отметили ни одного приложения в качестве приоритетного" + }, + "noPriorityApplicationsDescription": { + "message": "Выберите наиболее важные приложения, чтобы обнаружить пароли, подверженные риску, и уведомить пользователей о необходимости сменить эти пароли." + }, + "markPriorityApps": { + "message": "Отметьте приоритетные приложения" + }, + "markAppAsCritical": { + "message": "Пометить приложение как критическое" + }, "application": { "message": "Приложение" }, @@ -940,13 +967,13 @@ "message": "Использовать другой способ авторизации" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Войти с passkey" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Использовать единый вход" }, "welcomeBack": { - "message": "Welcome back" + "message": "С возвращением" }, "invalidPasskeyPleaseTryAgain": { "message": "Неверный passkey. Попробуйте снова." @@ -1030,7 +1057,7 @@ "message": "Создать аккаунт" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Впервые на Bitwarden?" }, "setAStrongPassword": { "message": "Задайте надежный пароль" @@ -1048,7 +1075,7 @@ "message": "Войти" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Войти в Bitwarden" }, "verifyIdentity": { "message": "Подтвердите вашу личность" diff --git a/apps/web/src/locales/si/messages.json b/apps/web/src/locales/si/messages.json index d7b4d263f6b..de926ef0f21 100644 --- a/apps/web/src/locales/si/messages.json +++ b/apps/web/src/locales/si/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json index 1446a292374..5de06fce1f6 100644 --- a/apps/web/src/locales/sk/messages.json +++ b/apps/web/src/locales/sk/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Ohrozenie hesla" + }, + "discoverAtRiskPasswords": { + "message": "Odhaľte ohrozené hesla a upozornite používateľov, aby si ich zmenili." + }, + "dataLastUpdated": { + "message": "Posledná aktualizácia dát: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Neoznačili ste žiadne aplikácie ako prioritné" + }, + "noPriorityApplicationsDescription": { + "message": "Pre odhalenie ohrozených hesiel a upozornenie používateľov aby si ich zmenili vyberte vaše najkritickejšie aplikácie." + }, + "markPriorityApps": { + "message": "Označiť prioritné aplikácie" + }, + "markAppAsCritical": { + "message": "Označiť aplikáciu ako kritickú" + }, "application": { "message": "Aplikácia" }, diff --git a/apps/web/src/locales/sl/messages.json b/apps/web/src/locales/sl/messages.json index 5e2cc77cf59..39a15b48975 100644 --- a/apps/web/src/locales/sl/messages.json +++ b/apps/web/src/locales/sl/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/sr/messages.json b/apps/web/src/locales/sr/messages.json index f62d9cfc11a..c9c879ddc91 100644 --- a/apps/web/src/locales/sr/messages.json +++ b/apps/web/src/locales/sr/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Обавештени чланови" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Апликација" }, diff --git a/apps/web/src/locales/sr_CS/messages.json b/apps/web/src/locales/sr_CS/messages.json index e31a99993a2..fc5f4e09269 100644 --- a/apps/web/src/locales/sr_CS/messages.json +++ b/apps/web/src/locales/sr_CS/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json index fd3078d20f9..c8742d7fdb6 100644 --- a/apps/web/src/locales/sv/messages.json +++ b/apps/web/src/locales/sv/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Markera app som kritisk" + }, "application": { "message": "Application" }, @@ -406,7 +433,7 @@ "message": "Generera lösenord" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Generera lösenfras" }, "checkPassword": { "message": "Kontrollera om lösenordet har avslöjats." @@ -667,11 +694,11 @@ "description": "Copy password to clipboard" }, "copyPassphrase": { - "message": "Copy passphrase", + "message": "Kopiera lösenfras", "description": "Copy passphrase to clipboard" }, "passwordCopied": { - "message": "Password copied" + "message": "Lösenord kopierades" }, "copyUsername": { "message": "Kopiera användarnamn", @@ -940,13 +967,13 @@ "message": "Använd en annan inloggningsmetod" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Logga in med nyckel" }, "useSingleSignOn": { "message": "Use single sign-on" }, "welcomeBack": { - "message": "Welcome back" + "message": "Välkommen tillbaka" }, "invalidPasskeyPleaseTryAgain": { "message": "Ogiltig nyckel. Försök igen." @@ -1030,7 +1057,7 @@ "message": "Skapa konto" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Ny på Bitwarden?" }, "setAStrongPassword": { "message": "Ställ in ett starkt lösenord" @@ -1048,7 +1075,7 @@ "message": "Logga in" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Logga in på Bitwarden" }, "verifyIdentity": { "message": "Verify your Identity" @@ -1348,7 +1375,7 @@ "message": "E-post" }, "emailDescV2": { - "message": "Enter a code sent to your email." + "message": "Ange en kod som skickas per e-post." }, "continue": { "message": "Fortsätt" @@ -2065,7 +2092,7 @@ "message": "Bitwarden Authenticator allows you to store authenticator keys and generate TOTP codes for 2-step verification flows. Learn more on the bitwarden.com website." }, "twoStepAuthenticatorScanCodeV2": { - "message": "Scan the QR code below with your authenticator app or enter the key." + "message": "Skanna QR-koden nedan med din autentiseringsapp eller ange nyckeln." }, "twoStepAuthenticatorQRCanvasError": { "message": "Could not load QR code. Try again or use the key below." @@ -7859,7 +7886,7 @@ "message": "Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?" }, "characterMinimum": { - "message": "$LENGTH$ character minimum", + "message": "Minst $LENGTH$ tecken", "placeholders": { "length": { "content": "$1", @@ -7968,7 +7995,7 @@ "description": "Used as a card title description on the set password page to explain why the user is there" }, "cardMetrics": { - "message": "out of $TOTAL$", + "message": "av $TOTAL$", "placeholders": { "total": { "content": "$1", diff --git a/apps/web/src/locales/te/messages.json b/apps/web/src/locales/te/messages.json index d73481686f6..93559c33fec 100644 --- a/apps/web/src/locales/te/messages.json +++ b/apps/web/src/locales/te/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/th/messages.json b/apps/web/src/locales/th/messages.json index 0f8e7b59e17..f51ced75c2b 100644 --- a/apps/web/src/locales/th/messages.json +++ b/apps/web/src/locales/th/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json index afb66b1edd3..6a2c7c82a85 100644 --- a/apps/web/src/locales/tr/messages.json +++ b/apps/web/src/locales/tr/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Parola Riski" + }, + "discoverAtRiskPasswords": { + "message": "Riskli parolaları tespit edip kullanıcıları bu parolaları değiştirmeleri konusunda bilgilendirin." + }, + "dataLastUpdated": { + "message": "Son veri güncellemesi: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Hiçbir uygulamayı öncelikli olarak işaretlemediniz" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Uygulama" }, diff --git a/apps/web/src/locales/uk/messages.json b/apps/web/src/locales/uk/messages.json index 2ffa11e574f..f3a02504d3a 100644 --- a/apps/web/src/locales/uk/messages.json +++ b/apps/web/src/locales/uk/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Керування доступом" }, + "passwordRisk": { + "message": "Ризиковані паролі" + }, + "discoverAtRiskPasswords": { + "message": "Дізнавайтеся про ризиковані паролі та сповіщайте користувачів про необхідність їх заміни." + }, + "dataLastUpdated": { + "message": "Дані востаннє оновлено: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Сповіщення учасників" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "Ви не позначили жодної пріоритетної програми" + }, + "noPriorityApplicationsDescription": { + "message": "Виберіть найбільш критичні програми, для яких виявлятимуться ризиковані паролі, та сповіщайте користувачів про необхідність їх заміни." + }, + "markPriorityApps": { + "message": "Позначити пріоритетні програми" + }, + "markAppAsCritical": { + "message": "Позначити програму критичною" + }, "application": { "message": "Програма" }, @@ -940,13 +967,13 @@ "message": "Використати інший спосіб входу" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Увійти з ключем доступу" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Використовувати єдиний вхід" }, "welcomeBack": { - "message": "Welcome back" + "message": "З поверненням" }, "invalidPasskeyPleaseTryAgain": { "message": "Недійсний ключ доступу. Повторіть спробу." @@ -1030,7 +1057,7 @@ "message": "Створити обліковий запис" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Вперше у Bitwarden?" }, "setAStrongPassword": { "message": "Встановіть надійний пароль" @@ -1048,7 +1075,7 @@ "message": "Увійти" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Увійти в Bitwarden" }, "verifyIdentity": { "message": "Підтвердьте свою особу" diff --git a/apps/web/src/locales/vi/messages.json b/apps/web/src/locales/vi/messages.json index ac585a9f66a..907a5687580 100644 --- a/apps/web/src/locales/vi/messages.json +++ b/apps/web/src/locales/vi/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index 212053d0587..7ef4fff497a 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, @@ -946,7 +973,7 @@ "message": "Use single sign-on" }, "welcomeBack": { - "message": "Welcome back" + "message": "欢迎回来" }, "invalidPasskeyPleaseTryAgain": { "message": "通行密钥无效。请重试。" @@ -1030,7 +1057,7 @@ "message": "创建账户" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Bitwarden 新手吗?" }, "setAStrongPassword": { "message": "设置强密码" @@ -1048,7 +1075,7 @@ "message": "登录" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "登录到 Bitwarden" }, "verifyIdentity": { "message": "验证您的身份" @@ -8289,7 +8316,7 @@ "message": "服务器 URL" }, "selfHostBaseUrl": { - "message": "Self-host server URL", + "message": "自托管服务器 URL", "description": "Label for field requesting a self-hosted integration service URL" }, "aliasDomain": { diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json index f40164e597d..d46bd2f4a72 100644 --- a/apps/web/src/locales/zh_TW/messages.json +++ b/apps/web/src/locales/zh_TW/messages.json @@ -8,6 +8,21 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "passwordRisk": { + "message": "Password Risk" + }, + "discoverAtRiskPasswords": { + "message": "Discover at-risk passwords and notify users to change those passwords." + }, + "dataLastUpdated": { + "message": "Data last updated: $DATE$", + "placeholders": { + "date": { + "content": "$1", + "example": "2021-01-01" + } + } + }, "notifiedMembers": { "message": "Notified members" }, @@ -38,6 +53,18 @@ } } }, + "noPriorityApplicationsTitle": { + "message": "You haven’t marked any applications as a priority" + }, + "noPriorityApplicationsDescription": { + "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords." + }, + "markPriorityApps": { + "message": "Mark priority apps" + }, + "markAppAsCritical": { + "message": "Mark app as critical" + }, "application": { "message": "Application" }, diff --git a/bitwarden_license/bit-web/src/app/admin-console/organizations/manage/scim.component.ts b/bitwarden_license/bit-web/src/app/admin-console/organizations/manage/scim.component.ts index 76e3caa145f..c900cfe28a6 100644 --- a/bitwarden_license/bit-web/src/app/admin-console/organizations/manage/scim.component.ts +++ b/bitwarden_license/bit-web/src/app/admin-console/organizations/manage/scim.component.ts @@ -82,6 +82,11 @@ export class ScimComponent implements OnInit { copyScimUrl = async () => { this.platformUtilsService.copyToClipboard(await this.getScimEndpointUrl()); + this.toastService.showToast({ + message: this.i18nService.t("valueCopied", this.i18nService.t("scimUrl")), + variant: "success", + title: null, + }); }; rotateScimKey = async () => { @@ -114,6 +119,11 @@ export class ScimComponent implements OnInit { copyScimKey = async () => { this.platformUtilsService.copyToClipboard(this.formData.get("clientSecret").value); + this.toastService.showToast({ + message: this.i18nService.t("valueCopied", this.i18nService.t("scimApiKey")), + variant: "success", + title: null, + }); }; submit = async () => { diff --git a/libs/admin-console/src/common/collections/abstractions/vnext-collection.service.ts b/libs/admin-console/src/common/collections/abstractions/vnext-collection.service.ts new file mode 100644 index 00000000000..4b5828ccf3b --- /dev/null +++ b/libs/admin-console/src/common/collections/abstractions/vnext-collection.service.ts @@ -0,0 +1,41 @@ +import { Observable } from "rxjs"; + +import { OrganizationId, UserId } from "@bitwarden/common/types/guid"; +import { OrgKey } from "@bitwarden/common/types/key"; +import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node"; + +import { CollectionData, Collection, CollectionView } from "../models"; + +export abstract class vNextCollectionService { + encryptedCollections$: (userId$: Observable) => Observable; + decryptedCollections$: (userId$: Observable) => Observable; + upsert: (collection: CollectionData | CollectionData[], userId: UserId) => Promise; + replace: (collections: { [id: string]: CollectionData }, userId: UserId) => Promise; + /** + * Clear decrypted state without affecting encrypted state. + * Used for locking the vault. + */ + clearDecryptedState: (userId: UserId) => Promise; + /** + * Clear decrypted and encrypted state. + * Used for logging out. + */ + clear: (userId: string) => Promise; + delete: (id: string | string[], userId: UserId) => Promise; + encrypt: (model: CollectionView) => Promise; + /** + * @deprecated This method will soon be made private, use `decryptedCollections$` instead. + */ + decryptMany: ( + collections: Collection[], + orgKeys?: Record, + ) => Promise; + /** + * Transforms the input CollectionViews into TreeNodes + */ + getAllNested: (collections: CollectionView[]) => TreeNode[]; + /** + * Transforms the input CollectionViews into TreeNodes and then returns the Treenode with the specified id + */ + getNested: (collections: CollectionView[], id: string) => TreeNode; +} diff --git a/libs/admin-console/src/common/collections/services/default-vnext-collection.service.spec.ts b/libs/admin-console/src/common/collections/services/default-vnext-collection.service.spec.ts new file mode 100644 index 00000000000..54c4470d414 --- /dev/null +++ b/libs/admin-console/src/common/collections/services/default-vnext-collection.service.spec.ts @@ -0,0 +1,327 @@ +import { mock, MockProxy } from "jest-mock-extended"; +import { firstValueFrom, of, ReplaySubject } from "rxjs"; + +import { EncryptService } from "@bitwarden/common/platform/abstractions/encrypt.service"; +import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { Utils } from "@bitwarden/common/platform/misc/utils"; +import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/platform/models/domain/symmetric-crypto-key"; +import { ContainerService } from "@bitwarden/common/platform/services/container.service"; +import { + FakeStateProvider, + makeEncString, + makeSymmetricCryptoKey, + mockAccountServiceWith, +} from "@bitwarden/common/spec"; +import { CollectionId, OrganizationId, UserId } from "@bitwarden/common/types/guid"; +import { OrgKey } from "@bitwarden/common/types/key"; +import { KeyService } from "@bitwarden/key-management"; + +import { CollectionData } from "../models"; + +import { DefaultvNextCollectionService } from "./default-vnext-collection.service"; +import { ENCRYPTED_COLLECTION_DATA_KEY } from "./vnext-collection.state"; + +describe("DefaultvNextCollectionService", () => { + let keyService: MockProxy; + let encryptService: MockProxy; + let i18nService: MockProxy; + let stateProvider: FakeStateProvider; + + let userId: UserId; + + let cryptoKeys: ReplaySubject | null>; + + let collectionService: DefaultvNextCollectionService; + + beforeEach(() => { + userId = Utils.newGuid() as UserId; + + keyService = mock(); + encryptService = mock(); + i18nService = mock(); + stateProvider = new FakeStateProvider(mockAccountServiceWith(userId)); + + cryptoKeys = new ReplaySubject(1); + keyService.orgKeys$.mockReturnValue(cryptoKeys); + + // Set up mock decryption + encryptService.decryptToUtf8 + .calledWith(expect.any(EncString), expect.any(SymmetricCryptoKey), expect.any(String)) + .mockImplementation((encString, key) => + Promise.resolve(encString.data.replace("ENC_", "DEC_")), + ); + + (window as any).bitwardenContainerService = new ContainerService(keyService, encryptService); + + // Arrange i18nService so that sorting algorithm doesn't throw + i18nService.collator = null; + + collectionService = new DefaultvNextCollectionService( + keyService, + encryptService, + i18nService, + stateProvider, + ); + }); + + afterEach(() => { + delete (window as any).bitwardenContainerService; + }); + + describe("decryptedCollections$", () => { + it("emits decrypted collections from state", async () => { + // Arrange test data + const org1 = Utils.newGuid() as OrganizationId; + const orgKey1 = makeSymmetricCryptoKey(64, 1); + const collection1 = collectionDataFactory(org1); + + const org2 = Utils.newGuid() as OrganizationId; + const orgKey2 = makeSymmetricCryptoKey(64, 2); + const collection2 = collectionDataFactory(org2); + + // Arrange dependencies + await setEncryptedState([collection1, collection2]); + cryptoKeys.next({ + [org1]: orgKey1, + [org2]: orgKey2, + }); + + const result = await firstValueFrom(collectionService.decryptedCollections$(of(userId))); + + // Assert emitted values + expect(result.length).toBe(2); + expect(result).toIncludeAllPartialMembers([ + { + id: collection1.id, + name: "DEC_NAME_" + collection1.id, + }, + { + id: collection2.id, + name: "DEC_NAME_" + collection2.id, + }, + ]); + + // Assert that the correct org keys were used for each encrypted string + expect(encryptService.decryptToUtf8).toHaveBeenCalledWith( + expect.objectContaining(new EncString(collection1.name)), + orgKey1, + expect.any(String), + ); + expect(encryptService.decryptToUtf8).toHaveBeenCalledWith( + expect.objectContaining(new EncString(collection2.name)), + orgKey2, + expect.any(String), + ); + }); + + it("handles null collection state", async () => { + // Arrange dependencies + await setEncryptedState(null); + cryptoKeys.next({}); + + const encryptedCollections = await firstValueFrom( + collectionService.encryptedCollections$(of(userId)), + ); + + expect(encryptedCollections.length).toBe(0); + }); + }); + + describe("encryptedCollections$", () => { + it("emits encrypted collections from state", async () => { + // Arrange test data + const collection1 = collectionDataFactory(); + const collection2 = collectionDataFactory(); + + // Arrange dependencies + await setEncryptedState([collection1, collection2]); + + const result = await firstValueFrom(collectionService.encryptedCollections$(of(userId))); + + expect(result.length).toBe(2); + expect(result).toIncludeAllPartialMembers([ + { + id: collection1.id, + name: makeEncString("ENC_NAME_" + collection1.id), + }, + { + id: collection2.id, + name: makeEncString("ENC_NAME_" + collection2.id), + }, + ]); + }); + + it("handles null collection state", async () => { + await setEncryptedState(null); + + const decryptedCollections = await firstValueFrom( + collectionService.encryptedCollections$(of(userId)), + ); + expect(decryptedCollections.length).toBe(0); + }); + }); + + describe("upsert", () => { + it("upserts to existing collections", async () => { + const collection1 = collectionDataFactory(); + const collection2 = collectionDataFactory(); + + await setEncryptedState([collection1, collection2]); + + const updatedCollection1 = Object.assign(new CollectionData({} as any), collection1, { + name: makeEncString("UPDATED_ENC_NAME_" + collection1.id).encryptedString, + }); + const newCollection3 = collectionDataFactory(); + + await collectionService.upsert([updatedCollection1, newCollection3], userId); + + const result = await firstValueFrom(collectionService.encryptedCollections$(of(userId))); + expect(result.length).toBe(3); + expect(result).toIncludeAllPartialMembers([ + { + id: collection1.id, + name: makeEncString("UPDATED_ENC_NAME_" + collection1.id), + }, + { + id: collection2.id, + name: makeEncString("ENC_NAME_" + collection2.id), + }, + { + id: newCollection3.id, + name: makeEncString("ENC_NAME_" + newCollection3.id), + }, + ]); + }); + + it("upserts to a null state", async () => { + const collection1 = collectionDataFactory(); + + await setEncryptedState(null); + + await collectionService.upsert(collection1, userId); + + const result = await firstValueFrom(collectionService.encryptedCollections$(of(userId))); + expect(result.length).toBe(1); + expect(result).toIncludeAllPartialMembers([ + { + id: collection1.id, + name: makeEncString("ENC_NAME_" + collection1.id), + }, + ]); + }); + }); + + describe("replace", () => { + it("replaces all collections", async () => { + await setEncryptedState([collectionDataFactory(), collectionDataFactory()]); + + const newCollection3 = collectionDataFactory(); + await collectionService.replace( + { + [newCollection3.id]: newCollection3, + }, + userId, + ); + + const result = await firstValueFrom(collectionService.encryptedCollections$(of(userId))); + expect(result.length).toBe(1); + expect(result).toIncludeAllPartialMembers([ + { + id: newCollection3.id, + name: makeEncString("ENC_NAME_" + newCollection3.id), + }, + ]); + }); + }); + + it("clearDecryptedState", async () => { + await setEncryptedState([collectionDataFactory(), collectionDataFactory()]); + + await collectionService.clearDecryptedState(userId); + + // Encrypted state remains + const encryptedState = await firstValueFrom( + collectionService.encryptedCollections$(of(userId)), + ); + expect(encryptedState.length).toEqual(2); + + // Decrypted state is cleared + const decryptedState = await firstValueFrom( + collectionService.decryptedCollections$(of(userId)), + ); + expect(decryptedState.length).toEqual(0); + }); + + it("clear", async () => { + await setEncryptedState([collectionDataFactory(), collectionDataFactory()]); + cryptoKeys.next({}); + + await collectionService.clear(userId); + + // Encrypted state is cleared + const encryptedState = await firstValueFrom( + collectionService.encryptedCollections$(of(userId)), + ); + expect(encryptedState.length).toEqual(0); + + // Decrypted state is cleared + const decryptedState = await firstValueFrom( + collectionService.decryptedCollections$(of(userId)), + ); + expect(decryptedState.length).toEqual(0); + }); + + describe("delete", () => { + it("deletes a collection", async () => { + const collection1 = collectionDataFactory(); + const collection2 = collectionDataFactory(); + await setEncryptedState([collection1, collection2]); + + await collectionService.delete(collection1.id, userId); + + const result = await firstValueFrom(collectionService.encryptedCollections$(of(userId))); + expect(result.length).toEqual(1); + expect(result[0]).toMatchObject({ id: collection2.id }); + }); + + it("deletes several collections", async () => { + const collection1 = collectionDataFactory(); + const collection2 = collectionDataFactory(); + const collection3 = collectionDataFactory(); + await setEncryptedState([collection1, collection2, collection3]); + + await collectionService.delete([collection1.id, collection3.id], userId); + + const result = await firstValueFrom(collectionService.encryptedCollections$(of(userId))); + expect(result.length).toEqual(1); + expect(result[0]).toMatchObject({ id: collection2.id }); + }); + + it("handles null collections", async () => { + const collection1 = collectionDataFactory(); + await setEncryptedState(null); + + await collectionService.delete(collection1.id, userId); + + const result = await firstValueFrom(collectionService.encryptedCollections$(of(userId))); + expect(result.length).toEqual(0); + }); + }); + + const setEncryptedState = (collectionData: CollectionData[] | null) => + stateProvider.setUserState( + ENCRYPTED_COLLECTION_DATA_KEY, + collectionData == null ? null : Object.fromEntries(collectionData.map((c) => [c.id, c])), + userId, + ); +}); + +const collectionDataFactory = (orgId?: OrganizationId) => { + const collection = new CollectionData({} as any); + collection.id = Utils.newGuid() as CollectionId; + collection.organizationId = orgId ?? (Utils.newGuid() as OrganizationId); + collection.name = makeEncString("ENC_NAME_" + collection.id).encryptedString; + + return collection; +}; diff --git a/libs/admin-console/src/common/collections/services/default-vnext-collection.service.ts b/libs/admin-console/src/common/collections/services/default-vnext-collection.service.ts new file mode 100644 index 00000000000..8ca1ab7fcf0 --- /dev/null +++ b/libs/admin-console/src/common/collections/services/default-vnext-collection.service.ts @@ -0,0 +1,196 @@ +import { combineLatest, firstValueFrom, map, Observable, of, switchMap } from "rxjs"; + +import { EncryptService } from "@bitwarden/common/platform/abstractions/encrypt.service"; +import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { Utils } from "@bitwarden/common/platform/misc/utils"; +import { StateProvider, DerivedState } from "@bitwarden/common/platform/state"; +import { CollectionId, OrganizationId, UserId } from "@bitwarden/common/types/guid"; +import { OrgKey } from "@bitwarden/common/types/key"; +import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node"; +import { ServiceUtils } from "@bitwarden/common/vault/service-utils"; +import { KeyService } from "@bitwarden/key-management"; + +import { vNextCollectionService } from "../abstractions/vnext-collection.service"; +import { Collection, CollectionData, CollectionView } from "../models"; + +import { + DECRYPTED_COLLECTION_DATA_KEY, + ENCRYPTED_COLLECTION_DATA_KEY, +} from "./vnext-collection.state"; + +const NestingDelimiter = "/"; + +export class DefaultvNextCollectionService implements vNextCollectionService { + constructor( + private keyService: KeyService, + private encryptService: EncryptService, + private i18nService: I18nService, + protected stateProvider: StateProvider, + ) {} + + encryptedCollections$(userId$: Observable) { + return userId$.pipe( + switchMap((userId) => this.encryptedState(userId).state$), + map((collections) => { + if (collections == null) { + return []; + } + + return Object.values(collections).map((c) => new Collection(c)); + }), + ); + } + + decryptedCollections$(userId$: Observable) { + return userId$.pipe( + switchMap((userId) => this.decryptedState(userId).state$), + map((collections) => collections ?? []), + ); + } + + async upsert(toUpdate: CollectionData | CollectionData[], userId: UserId): Promise { + if (toUpdate == null) { + return; + } + await this.encryptedState(userId).update((collections) => { + if (collections == null) { + collections = {}; + } + if (Array.isArray(toUpdate)) { + toUpdate.forEach((c) => { + collections[c.id] = c; + }); + } else { + collections[toUpdate.id] = toUpdate; + } + return collections; + }); + } + + async replace(collections: Record, userId: UserId): Promise { + await this.encryptedState(userId).update(() => collections); + } + + async clearDecryptedState(userId: UserId): Promise { + if (userId == null) { + throw new Error("User ID is required."); + } + + await this.decryptedState(userId).forceValue(null); + } + + async clear(userId: UserId): Promise { + await this.encryptedState(userId).update(() => null); + // This will propagate from the encrypted state update, but by doing it explicitly + // the promise doesn't resolve until the update is complete. + await this.decryptedState(userId).forceValue(null); + } + + async delete(id: CollectionId | CollectionId[], userId: UserId): Promise { + await this.encryptedState(userId).update((collections) => { + if (collections == null) { + collections = {}; + } + if (typeof id === "string") { + delete collections[id]; + } else { + (id as CollectionId[]).forEach((i) => { + delete collections[i]; + }); + } + return collections; + }); + } + + async encrypt(model: CollectionView): Promise { + if (model.organizationId == null) { + throw new Error("Collection has no organization id."); + } + const key = await this.keyService.getOrgKey(model.organizationId); + if (key == null) { + throw new Error("No key for this collection's organization."); + } + const collection = new Collection(); + collection.id = model.id; + collection.organizationId = model.organizationId; + collection.readOnly = model.readOnly; + collection.externalId = model.externalId; + collection.name = await this.encryptService.encrypt(model.name, key); + return collection; + } + + // TODO: this should be private and orgKeys should be required. + // See https://bitwarden.atlassian.net/browse/PM-12375 + async decryptMany( + collections: Collection[], + orgKeys?: Record, + ): Promise { + if (collections == null || collections.length === 0) { + return []; + } + const decCollections: CollectionView[] = []; + + orgKeys ??= await firstValueFrom(this.keyService.activeUserOrgKeys$); + + const promises: Promise[] = []; + collections.forEach((collection) => { + promises.push( + collection + .decrypt(orgKeys[collection.organizationId as OrganizationId]) + .then((c) => decCollections.push(c)), + ); + }); + await Promise.all(promises); + return decCollections.sort(Utils.getSortFunction(this.i18nService, "name")); + } + + getAllNested(collections: CollectionView[]): TreeNode[] { + const nodes: TreeNode[] = []; + collections.forEach((c) => { + const collectionCopy = new CollectionView(); + collectionCopy.id = c.id; + collectionCopy.organizationId = c.organizationId; + const parts = c.name != null ? c.name.replace(/^\/+|\/+$/g, "").split(NestingDelimiter) : []; + ServiceUtils.nestedTraverse(nodes, 0, parts, collectionCopy, null, NestingDelimiter); + }); + return nodes; + } + + /** + * @deprecated August 30 2022: Moved to new Vault Filter Service + * Remove when Desktop and Browser are updated + */ + getNested(collections: CollectionView[], id: string): TreeNode { + const nestedCollections = this.getAllNested(collections); + return ServiceUtils.getTreeNodeObjectFromList( + nestedCollections, + id, + ) as TreeNode; + } + + /** + * @returns a SingleUserState for encrypted collection data. + */ + private encryptedState(userId: UserId) { + return this.stateProvider.getUser(userId, ENCRYPTED_COLLECTION_DATA_KEY); + } + + /** + * @returns a SingleUserState for decrypted collection data. + */ + private decryptedState(userId: UserId): DerivedState { + const encryptedCollectionsWithKeys = this.encryptedState(userId).combinedState$.pipe( + switchMap(([userId, collectionData]) => + combineLatest([of(collectionData), this.keyService.orgKeys$(userId)]), + ), + ); + + return this.stateProvider.getDerived( + encryptedCollectionsWithKeys, + DECRYPTED_COLLECTION_DATA_KEY, + { + collectionService: this, + }, + ); + } +} diff --git a/libs/admin-console/src/common/collections/services/vnext-collection.state.ts b/libs/admin-console/src/common/collections/services/vnext-collection.state.ts new file mode 100644 index 00000000000..533308f3cc7 --- /dev/null +++ b/libs/admin-console/src/common/collections/services/vnext-collection.state.ts @@ -0,0 +1,37 @@ +import { Jsonify } from "type-fest"; + +import { + COLLECTION_DATA, + DeriveDefinition, + UserKeyDefinition, +} from "@bitwarden/common/platform/state"; +import { CollectionId, OrganizationId } from "@bitwarden/common/types/guid"; +import { OrgKey } from "@bitwarden/common/types/key"; + +import { vNextCollectionService } from "../abstractions/vnext-collection.service"; +import { Collection, CollectionData, CollectionView } from "../models"; + +export const ENCRYPTED_COLLECTION_DATA_KEY = UserKeyDefinition.record( + COLLECTION_DATA, + "collections", + { + deserializer: (jsonData: Jsonify) => CollectionData.fromJSON(jsonData), + clearOn: ["logout"], + }, +); + +export const DECRYPTED_COLLECTION_DATA_KEY = new DeriveDefinition< + [Record, Record], + CollectionView[], + { collectionService: vNextCollectionService } +>(COLLECTION_DATA, "decryptedCollections", { + deserializer: (obj) => obj.map((collection) => CollectionView.fromJSON(collection)), + derive: async ([collections, orgKeys], { collectionService }) => { + if (collections == null) { + return []; + } + + const data = Object.values(collections).map((c) => new Collection(c)); + return await collectionService.decryptMany(data, orgKeys); + }, +}); diff --git a/libs/auth/src/common/abstractions/index.ts b/libs/auth/src/common/abstractions/index.ts index 6b618992e9d..e686de52013 100644 --- a/libs/auth/src/common/abstractions/index.ts +++ b/libs/auth/src/common/abstractions/index.ts @@ -3,4 +3,3 @@ export * from "./login-email.service"; export * from "./login-strategy.service"; export * from "./user-decryption-options.service.abstraction"; export * from "./auth-request.service.abstraction"; -export * from "./user-key-rotation-data-provider.abstraction"; diff --git a/libs/common/spec/matchers/index.ts b/libs/common/spec/matchers/index.ts index 235f54d7754..44440be5b54 100644 --- a/libs/common/spec/matchers/index.ts +++ b/libs/common/spec/matchers/index.ts @@ -1,3 +1,5 @@ +import * as matchers from "jest-extended"; + import { toBeFulfilled, toBeResolved, toBeRejected } from "./promise-fulfilled"; import { toAlmostEqual } from "./to-almost-equal"; import { toEqualBuffer } from "./to-equal-buffer"; @@ -6,6 +8,9 @@ export * from "./to-equal-buffer"; export * from "./to-almost-equal"; export * from "./promise-fulfilled"; +// add all jest-extended matchers +expect.extend(matchers); + export function addCustomMatchers() { expect.extend({ toEqualBuffer: toEqualBuffer, diff --git a/libs/common/spec/utils.ts b/libs/common/spec/utils.ts index d3722329370..1cead2aa624 100644 --- a/libs/common/spec/utils.ts +++ b/libs/common/spec/utils.ts @@ -46,8 +46,15 @@ export function makeStaticByteArray(length: number, start = 0) { return arr; } -export function makeSymmetricCryptoKey(length: 32 | 64 = 64) { - return new SymmetricCryptoKey(makeStaticByteArray(length)) as T; +/** + * Creates a symmetric crypto key for use in tests. This is deterministic, i.e. it will produce identical keys + * for identical argument values. Provide a unique value to the `seed` parameter to create different keys. + */ +export function makeSymmetricCryptoKey( + length: 32 | 64 = 64, + seed = 0, +) { + return new SymmetricCryptoKey(makeStaticByteArray(length, seed)) as T; } /** diff --git a/libs/common/src/tools/send/services/send.service.abstraction.ts b/libs/common/src/tools/send/services/send.service.abstraction.ts index 4fa927942c1..866a661b4a4 100644 --- a/libs/common/src/tools/send/services/send.service.abstraction.ts +++ b/libs/common/src/tools/send/services/send.service.abstraction.ts @@ -1,6 +1,6 @@ import { Observable } from "rxjs"; -import { UserKeyRotationDataProvider } from "@bitwarden/auth/common"; +import { UserKeyRotationDataProvider } from "@bitwarden/key-management"; import { EncArrayBuffer } from "../../../platform/models/domain/enc-array-buffer"; import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key"; diff --git a/libs/common/src/vault/abstractions/cipher.service.ts b/libs/common/src/vault/abstractions/cipher.service.ts index f0e19a21342..444c922fe31 100644 --- a/libs/common/src/vault/abstractions/cipher.service.ts +++ b/libs/common/src/vault/abstractions/cipher.service.ts @@ -1,7 +1,7 @@ import { Observable } from "rxjs"; -import { UserKeyRotationDataProvider } from "@bitwarden/auth/common"; import { LocalData } from "@bitwarden/common/vault/models/data/local.data"; +import { UserKeyRotationDataProvider } from "@bitwarden/key-management"; import { UriMatchStrategySetting } from "../../models/domain/domain-service"; import { SymmetricCryptoKey } from "../../platform/models/domain/symmetric-crypto-key"; diff --git a/libs/common/src/vault/abstractions/folder/folder.service.abstraction.ts b/libs/common/src/vault/abstractions/folder/folder.service.abstraction.ts index 857915ddb80..df21b136f41 100644 --- a/libs/common/src/vault/abstractions/folder/folder.service.abstraction.ts +++ b/libs/common/src/vault/abstractions/folder/folder.service.abstraction.ts @@ -1,6 +1,6 @@ import { Observable } from "rxjs"; -import { UserKeyRotationDataProvider } from "@bitwarden/auth/common"; +import { UserKeyRotationDataProvider } from "@bitwarden/key-management"; import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key"; import { UserId } from "../../../types/guid"; diff --git a/libs/auth/src/common/abstractions/user-key-rotation-data-provider.abstraction.ts b/libs/key-management/src/abstractions/user-key-rotation-data-provider.abstraction.ts similarity index 100% rename from libs/auth/src/common/abstractions/user-key-rotation-data-provider.abstraction.ts rename to libs/key-management/src/abstractions/user-key-rotation-data-provider.abstraction.ts diff --git a/libs/key-management/src/index.ts b/libs/key-management/src/index.ts index f2bb5e30166..5ad96ddeba7 100644 --- a/libs/key-management/src/index.ts +++ b/libs/key-management/src/index.ts @@ -7,3 +7,4 @@ export * from "./biometrics/biometric.state"; export { KeyService } from "./abstractions/key.service"; export { DefaultKeyService } from "./key.service"; +export { UserKeyRotationDataProvider } from "./abstractions/user-key-rotation-data-provider.abstraction"; diff --git a/libs/tools/card/src/card.component.ts b/libs/tools/card/src/card.component.ts index 9305246c581..85db7eaa7b3 100644 --- a/libs/tools/card/src/card.component.ts +++ b/libs/tools/card/src/card.component.ts @@ -11,7 +11,7 @@ import { TypographyModule } from "@bitwarden/components"; imports: [CommonModule, TypographyModule, JslibModule], host: { class: - "tw-box-border tw-bg-background tw-block tw-text-main tw-border-solid tw-border tw-border-secondary-300 tw-border [&:not(bit-layout_*)]:tw-rounded-lg tw-p-6", + "tw-box-border tw-bg-background tw-block tw-text-main tw-border-solid tw-border tw-border-secondary-300 tw-border [&:not(bit-layout_*)]:tw-rounded-lg tw-rounded-lg tw-p-6", }, }) export class CardComponent { diff --git a/libs/tools/generator/components/src/credential-generator.component.html b/libs/tools/generator/components/src/credential-generator.component.html index 737e32fa1f9..f580b75f1ba 100644 --- a/libs/tools/generator/components/src/credential-generator.component.html +++ b/libs/tools/generator/components/src/credential-generator.component.html @@ -32,6 +32,7 @@ showToast [appA11yTitle]="credentialTypeCopyLabel$ | async" [appCopyClick]="value$ | async" + [valueLabel]="credentialTypeLabel$ | async" >
diff --git a/libs/tools/generator/components/src/credential-generator.component.ts b/libs/tools/generator/components/src/credential-generator.component.ts index e800ce4bd39..579d196a7a6 100644 --- a/libs/tools/generator/components/src/credential-generator.component.ts +++ b/libs/tools/generator/components/src/credential-generator.component.ts @@ -468,6 +468,14 @@ export class CredentialGeneratorComponent implements OnInit, OnDestroy { map(({ generate }) => generate), ); + /** + * Emits the copy credential toast respective of the selected credential type + */ + protected credentialTypeLabel$ = this.algorithm$.pipe( + filter((algorithm) => !!algorithm), + map(({ generatedValue }) => generatedValue), + ); + /** Emits hint key for the currently selected credential type */ protected credentialTypeHint$ = new ReplaySubject(1); diff --git a/libs/tools/generator/components/src/password-generator.component.html b/libs/tools/generator/components/src/password-generator.component.html index 96aa8f00b1c..6726df30855 100644 --- a/libs/tools/generator/components/src/password-generator.component.html +++ b/libs/tools/generator/components/src/password-generator.component.html @@ -30,6 +30,7 @@ showToast [appA11yTitle]="credentialTypeCopyLabel$ | async" [appCopyClick]="value$ | async" + [valueLabel]="credentialTypeLabel$ | async" >
diff --git a/libs/tools/generator/components/src/password-generator.component.ts b/libs/tools/generator/components/src/password-generator.component.ts index 60c3f629538..8566edf4664 100644 --- a/libs/tools/generator/components/src/password-generator.component.ts +++ b/libs/tools/generator/components/src/password-generator.component.ts @@ -233,6 +233,14 @@ export class PasswordGeneratorComponent implements OnInit, OnDestroy { map(({ generate }) => generate), ); + /** + * Emits the copy credential toast respective of the selected credential type + */ + protected credentialTypeLabel$ = this.algorithm$.pipe( + filter((algorithm) => !!algorithm), + map(({ generatedValue }) => generatedValue), + ); + private toOptions(algorithms: AlgorithmInfo[]) { const options: Option[] = algorithms.map((algorithm) => ({ value: algorithm.id, diff --git a/libs/tools/generator/components/src/username-generator.component.html b/libs/tools/generator/components/src/username-generator.component.html index 18b29a6184b..36aaae57ce2 100644 --- a/libs/tools/generator/components/src/username-generator.component.html +++ b/libs/tools/generator/components/src/username-generator.component.html @@ -19,6 +19,7 @@ showToast [appA11yTitle]="credentialTypeCopyLabel$ | async" [appCopyClick]="value$ | async" + [valueLabel]="credentialTypeLabel$ | async" > {{ credentialTypeCopyLabel$ | async }} diff --git a/libs/tools/generator/components/src/username-generator.component.ts b/libs/tools/generator/components/src/username-generator.component.ts index 7ba4b254e98..6518ee51ed8 100644 --- a/libs/tools/generator/components/src/username-generator.component.ts +++ b/libs/tools/generator/components/src/username-generator.component.ts @@ -108,7 +108,7 @@ export class UsernameGeneratorComponent implements OnInit, OnDestroy { map((algorithms) => { const usernames = algorithms.filter((a) => !isForwarderIntegration(a.id)); const usernameOptions = this.toOptions(usernames); - usernameOptions.push({ value: FORWARDER, label: this.i18nService.t("forwarder") }); + usernameOptions.push({ value: FORWARDER, label: this.i18nService.t("forwardedEmail") }); const forwarders = algorithms.filter((a) => isForwarderIntegration(a.id)); const forwarderOptions = this.toOptions(forwarders); @@ -390,6 +390,14 @@ export class UsernameGeneratorComponent implements OnInit, OnDestroy { map(({ generate }) => generate), ); + /** + * Emits the copy credential toast respective of the selected credential type + */ + protected credentialTypeLabel$ = this.algorithm$.pipe( + filter((algorithm) => !!algorithm), + map(({ generatedValue }) => generatedValue), + ); + /** Emits hint key for the currently selected credential type */ protected credentialTypeHint$ = new ReplaySubject(1); @@ -413,7 +421,7 @@ export class UsernameGeneratorComponent implements OnInit, OnDestroy { private toOptions(algorithms: AlgorithmInfo[]) { const options: Option[] = algorithms.map((algorithm) => ({ value: JSON.stringify(algorithm.id), - label: this.i18nService.t(algorithm.name), + label: algorithm.name, })); return options; diff --git a/libs/tools/generator/core/src/data/generators.ts b/libs/tools/generator/core/src/data/generators.ts index d86eb52a8fa..6090fe789cb 100644 --- a/libs/tools/generator/core/src/data/generators.ts +++ b/libs/tools/generator/core/src/data/generators.ts @@ -53,6 +53,7 @@ const PASSPHRASE = Object.freeze({ category: "password", nameKey: "passphrase", generateKey: "generatePassphrase", + generatedValueKey: "passphrase", copyKey: "copyPassphrase", onlyOnRequest: false, request: [], @@ -95,6 +96,7 @@ const PASSWORD = Object.freeze({ category: "password", nameKey: "password", generateKey: "generatePassword", + generatedValueKey: "password", copyKey: "copyPassword", onlyOnRequest: false, request: [], @@ -145,6 +147,7 @@ const USERNAME = Object.freeze({ category: "username", nameKey: "randomWord", generateKey: "generateUsername", + generatedValueKey: "username", copyKey: "copyUsername", onlyOnRequest: false, request: [], @@ -181,6 +184,7 @@ const CATCHALL = Object.freeze({ nameKey: "catchallEmail", descriptionKey: "catchallEmailDesc", generateKey: "generateEmail", + generatedValueKey: "email", copyKey: "copyEmail", onlyOnRequest: false, request: [], @@ -217,6 +221,7 @@ const SUBADDRESS = Object.freeze({ nameKey: "plusAddressedEmail", descriptionKey: "plusAddressedEmailDesc", generateKey: "generateEmail", + generatedValueKey: "email", copyKey: "copyEmail", onlyOnRequest: false, request: [], @@ -256,6 +261,7 @@ export function toCredentialGeneratorConfiguration {{ (passwordRemoved ? "newPassword" : "password") | i18n }} - - - - - + + +