diff --git a/keepassxc-browser/_locales/en/messages.json b/keepassxc-browser/_locales/en/messages.json new file mode 100644 index 0000000..130831a --- /dev/null +++ b/keepassxc-browser/_locales/en/messages.json @@ -0,0 +1,742 @@ +{ + "extensionDescription": { + "message": "KeePassXC integration for modern web browsers", + "description": "Name of the extension." + }, + "contextMenuFillUsernameAndPassword": { + "message": "Fill Username and Password", + "description": "Context menu item for filling both username and password." + }, + "contextMenuFillPassword": { + "message": "Fill Password Only", + "description": "Context menu item for filling password." + }, + "contextMenuFillTOTP": { + "message": "Insert TOTP", + "description": "Context menu item for filling Time-based One Time Password." + }, + "contextMenuShowPasswordGeneratorIcons": { + "message": "Show Password Generator Icons", + "description": "Show password generator icon on every password input field." + }, + "contextMenuSaveCredentials": { + "message": "Save credentials", + "description": "Save credentials using the extension popup icon." + }, + "rememberCredentialsPopup": { + "message": "Create or modify the credentials by clicking on the extension icon.", + "description": "Notification text when saving credentials from the context menu." + }, + "multipleCredentialsDetected": { + "message": "HTTP authentication with multiple credentials detected. Click on the extension icon to choose the correct one.", + "description": "Notification when HTTP Authentication has multiple credentials detected." + }, + "errorMessageUnknown": { + "message": "Unknown error.", + "description": "Unknown error." + }, + "errorMessageDatabaseNotOpened": { + "message": "Database not opened.", + "description": "Database not opened." + }, + "errorMessageDatabaseHash": { + "message": "Database hash not received.", + "description": "Database hash not received." + }, + "errorMessageClientPublicKey": { + "message": "Client public key not received.", + "description": "Client public key not received." + }, + "errorMessageDecrypt": { + "message": "Cannot decrypt message.", + "description": "Cannot decrypt message." + }, + "errorMessageTimeout": { + "message": "Timeout or not connected to KeePassXC.", + "description": "Timeout or not connected to KeePassXC." + }, + "errorMessageCanceled": { + "message": "Action canceled or denied.", + "description": "Action canceled or denied." + }, + "errorMessageEncrypt": { + "message": "Cannot encrypt message or public key not found. Is native messaging or support for your browser enabled in KeePassXC?", + "description": "Cannot encrypt message or public key not found. Is native messaging or support for your browser enabled in KeePassXC?" + }, + "errorMessageAssociate": { + "message": "KeePassXC association failed, try again.", + "description": "KeePassXC association failed, try again." + }, + "errorMessageKeyExchange": { + "message": "Key exchange was not successful.", + "description": "Key exchange was not successful." + }, + "errorMessageEncryptionKey": { + "message": "Encryption key is not recognized.", + "description": "Encryption key is not recognized." + }, + "errorMessageSavedDatabases": { + "message": "No saved databases found.", + "description": "No saved databases found." + }, + "errorMessageIncorrectAction": { + "message": "Incorrect action.", + "description": "Incorrect action." + }, + "errorMessageEmptyMessage": { + "message": "Empty message received.", + "description": "Empty message received." + }, + "errorMessageNoURL": { + "message": "No URL provided.", + "description": "No URL provided." + }, + "errorMessageNoLogins": { + "message": "No logins found.", + "description": "No logins found." + }, + "passwordGeneratorPlaceholder": { + "message": "Generated password", + "description": "Input field placeholder for generated password." + }, + "passwordGeneratorLabel": { + "message": "Also fill in the next password-field", + "description": "Checkbox text below the password generator input field." + }, + "passwordGeneratorBits": { + "message": "??? Bits", + "description": "Bits of the generated password." + }, + "passwordGeneratorTitle": { + "message": "Password Generator", + "description": "Password generator dialog title." + }, + "passwordGeneratorGenerate": { + "message": "Generate", + "description": "Generate button text in password generator." + }, + "passwordGeneratorCopy": { + "message": "Copy", + "description": "Copy button text in password generator." + }, + "passwordGeneratorFillAndCopy": { + "message": "Fill and copy", + "description": "Fill and copy button text in password generator." + }, + "passwordGeneratorErrorTooLong": { + "message": "Error:\nThe generated password is longer than the allowed length!\nIt has been cut to fit the length.\n\nPlease remember the new password!", + "description": "A warning text shown in the password generator." + }, + "passwordGeneratorGenerateText": { + "message": "Generate password", + "description": "Password icon title text." + }, + "passwordGeneratorError": { + "message": "Cannot receive generated password.
Is KeePassXC running?", + "description": "Password generator error text when KeePassXC is closed." + }, + "defineDismiss": { + "message": "Dismiss", + "description": "Dismiss button text when choosing custom login fields." + }, + "defineSkip": { + "message": "Skip", + "description": "Skip button text when choosing custom login fields." + }, + "defineAgain": { + "message": "Again", + "description": "Again button text when choosing custom login fields." + }, + "defineConfirm": { + "message": "Confirm", + "description": "Confirm button text when choosing custom login fields." + }, + "defineAlreadySelected": { + "message": "login fields for this page are already selected and will be overwritten.", + "description": "A text shown when custom credentials fields are already set for the page." + }, + "defineDiscard": { + "message": "Discard selection", + "description": "Discard selection button text when choosing custom login fields." + }, + "defineStringField": { + "message": "String field #", + "description": "Text for string field." + }, + "defineChooseUsername": { + "message": "1. Choose a username field", + "description": "Choosing a username field text when choosing custom login fields." + }, + "defineChoosePassword": { + "message": "2. Now choose a password field", + "description": "Choosing a password field text when choosing custom login fields." + }, + "defineConfirmSelection": { + "message": "3. Confirm selection", + "description": "Confirm a selection text when choosing custom login fields." + }, + "defineHelpText": { + "message": "Please confirm your selection or choose more fields as String fields.", + "description": "Confirm a selection text when choosing custom login fields which contains string fields." + }, + "username": { + "message": "Username", + "description": "General text for username." + }, + "password": { + "message": "Password", + "description": "General text for password." + }, + "credentialsNoUsername": { + "message": "- no username -", + "description": "Shown when no username is set in the credentials." + }, + "credentialsNoLoginsFound": { + "message": "Error:\nNo logins found.", + "description": "Shown when no credentials are found for the current page." + }, + "credentialsMultipleFound": { + "message": "Error:\nMore than one login was found in KeePassXC!\nPress the KeePassXC-Browser icon for more options.", + "description": "Alert message when trying to fill username and/or password when multiple credentials are found." + }, + "credentialsNoUsernameFound": { + "message": "Error:\nNo credentials for the given username found.", + "description": "Alert message when no credentials are found for the given username." + }, + "fieldsFill": { + "message": "Error:\nCannot find fields to fill in.", + "description": "Alert message when no fields are found to fill in." + }, + "fieldsNoPasswordField": { + "message": "Error:\nUnable to find a password field.", + "description": "Message shown when no password fields are found." + }, + "rememberNothingChanged": { + "message": "Error:\nCould not detect changed credentials.", + "description": "Message shown when trying to save credentials that haven't changed." + }, + "popupTitle": { + "message": "KeePassXC - Popup", + "description": "Popup window title." + }, + "popupSettingsText": { + "message": " Settings", + "description": "Popup Settings button text." + }, + "popupChooseCredentialsText": { + "message": " Choose custom login fields for this page", + "description": "Popup credential choosing button text." + }, + "popupConnectButton": { + "message": " Connect", + "description": "Popup Connect button text." + }, + "popupReconnectButton": { + "message": " Reconnect", + "description": "Popup Reconnect button text." + }, + "popupRedetectButton": { + "message": " Redetect login fields", + "description": "Popup Redetect login fields button text." + }, + "popupReloadButton": { + "message": " Reload", + "description": "Popup Reload button text." + }, + "popupReopenButton": { + "message": " Reopen database", + "description": "Popup reopen database button text." + }, + "popupErrorEncountered": { + "message": "KeePassXC-Browser has encountered an error:", + "description": "A text shown above error message in the popup." + }, + "popupUpdateAvailable": { + "message": "You use an old version of KeePassXC.", + "description": "Popup warning message about old version of KeePassXC." + }, + "popupDownloadNewVersion": { + "message": "Please download the latest version from keepassxc.org", + "description": "Popup warning message link when KeePassXC version is not up-to-date." + }, + "popupCheckingStatus": { + "message": " Checking status...", + "description": "Checking status message in popup." + }, + "popupNotConfigured": { + "message": "KeePassXC-Browser has not been configured. Press the connect button to pair with KeePassXC.", + "description": "A popup message shown when the extension has not been connected to KeePassXC." + }, + "popupNeedReconfigure": { + "message": "KeePassXC-Browser has been disconnected from KeePassXC.", + "description": "A popup message shown when the extension has been disconnected from KeePassXC." + }, + "popupNeedReconfigureMessage": { + "message": "Press the reconnect button to establish a new connection.", + "description": "A popup message shown when reconnect is needed." + }, + "popupConfiguredNotAssociated": { + "message": "KeePassXC-Browser has not yet connected to KeePassXC but has been configured using the identifier: $1", + "description": "A popup message shown when KeePassXC is not connected but configured." + }, + "popupConfiguredAndAssociated": { + "message": "KeePassXC-Browser is connected to KeePassXC and has been configured using the following identifier: $1", + "description": "A popuo message when a connection to KeePassXC is succesful." + }, + "popupRememberInfoText": { + "message": "Username or password changed! Save it?", + "description": "Popup message when username or password has changed." + }, + "popupRememberSaving": { + "message": "Credentials will be saved in connected database with identifier $1", + "description": "A popup message when saving or updating credentials." + }, + "popupRememberNewUsername": { + "message": "The following username is currently not saved: $1", + "description": "A popup message shown when a new username is detected when saving credentials." + }, + "popupRememberUsernameExists": { + "message": "The credentials with the used username are marked bold: $1", + "description": "A popup message shown when a existing username is detected when saving credentials." + }, + "popupRememberChooseCredentials": { + "message": "Please choose the credentials you want to update.", + "description": "A popup message shown choosing what credentials user wants to update." + }, + "popupLoginText": { + "message": "Select the login information you would like to get entered into the page.", + "description": "A popup message shown when one or multiple credentials are present." + }, + "popupFilterText": { + "message": "Filter:", + "description": "Text for login credentials quick filter." + }, + "popupAuthText": { + "message": "Select the login information you would like to get logged in with.", + "description": "A popup message shown when doing HTTP Authentication with multiple credentials present." + }, + "popupMultiplePasswordFields": { + "message": "More than one password field found on this page. Right-click one of the password fields, and choose one of:", + "description": "A popup message shown when web page has multiple password fields." + }, + "popupURL": { + "message": "URL: ", + "description": "URL. Might not need any translation." + }, + "popupUsername": { + "message": "Username: ", + "description": "A username field name shown on credential update." + }, + "popupButtonNew": { + "message": " New", + "description": "New button text in popup when updating credentials." + }, + "popupButtonUpdate": { + "message": " Update", + "description": "Update button text in popup when updating credentials." + }, + "popupButtonDismiss": { + "message": " Dismiss", + "description": "Dismiss button text in popup when updating credentials." + }, + "popupButtonIgnore": { + "message": "Never ask for this page", + "description": "Ignore button text in popup or in notification when updating credentials." + }, + "popupButtonClose": { + "message": "Close", + "description": "Close button text in popup or in notification." + }, + "popupButtonDismissHttpAuth": { + "message": " Dismiss and show the default authentication dialog", + "description": "Dismiss button text when in HTTP Authentication popup." + }, + "optionsTitle": { + "message": "Settings | KeePassXC-Browser", + "description": "Options page title." + }, + "optionsGeneralSettingsTab": { + "message": "General Settings", + "description": "General Settings tab text." + }, + "optionsConnectedDatabasesTab": { + "message": "Connected Databases", + "description": "Connected Databases tab text." + }, + "optionsCustomFieldsTab": { + "message": "Custom login fields", + "description": "Saved custom login fields tab text." + }, + "optionsSitePreferencesTab": { + "message": "Site preferences", + "description": "Site preferences fields tab text." + }, + "optionsAboutTab": { + "message": "About", + "description": "About tab text." + }, + "optionsMenuGeneral": { + "message": "General", + "description": "General settings page header." + }, + "optionsMenuConnectedDatabases": { + "message": "Connected Databases", + "description": "Connected Databases page header." + }, + "optionsMenuCustomFields": { + "message": "Custom login fields", + "description": "Custom login fields page header." + }, + "optionsMenuSitePreferences": { + "message": "Site preferences", + "description": "Site preferences page header." + }, + "optionsMenuAbout": { + "message": "About", + "description": "About page header." + }, + "optionsButtonSave": { + "message": " Save", + "description": "Save button text." + }, + "optionsButtonConnect": { + "message": " Connect", + "description": "Connect button text." + }, + "optionsButtonRemove": { + "message": " Remove", + "description": "Remove button text." + }, + "optionsButtonAdd": { + "message": " Add", + "description": "Add button text." + }, + "optionsButtonUpdate": { + "message": " Check for updates", + "description": "Check for updates button text." + }, + "optionsButtonRemoveNow": { + "message": " Yes, remove now", + "description": "Confirm button text when removing database key or custom login fields." + }, + "optionsButtonCancel": { + "message": " Cancel", + "description": "Cancel button text when removing database key or custom login fields." + }, + "optionsLabelBlinkTime": { + "message": "Blink Time:", + "description": "Blink Time option text." + }, + "optionsLabelRedirectOffset": { + "message": "Redirect Offset:", + "description": "Redirect Offset option text." + }, + "optionsLabelRedirectAllowance": { + "message": "Maximum (Number of) Redirects:", + "description": "RMaximum (Number of) Redirects options text." + }, + "optionsCheckboxUsePasswordGenerator": { + "message": "Activate password generator.", + "description": "Activate password generator checkbox text." + }, + "optionsCheckboxAutoRetrieveCredentials": { + "message": "Automatically retrieve credentials.", + "description": "Automatically retrieve credentials checkbox text." + }, + "optionsCheckboxAutoFillSingleEntry": { + "message": "Automatically fill in single-credential entries.", + "description": "Automatically fill-in single credential entry checkbox text." + }, + "optionsCheckboxAutoCompleteUsernames": { + "message": "Activate autocomplete for username fields.", + "description": "Activate autocomplete for username fields checkbox text." + }, + "optionsCheckboxShowNotifications": { + "message": "Show notifications.", + "description": "Show notifications checkbox text." + }, + "optionsSaveDomainOnly": { + "message": "Save domain only.", + "description": "Save domain only checkbox text." + }, + "optionsCheckboxShowLoginNotifications": { + "message": "Show a notification when new credentials can be saved to the database.", + "description": "Show login notifications checkbox text." + }, + "optionsCheckboxAutoFillAndSend": { + "message": "Automatically fill in HTTP Basic Auth dialogs and submit them.", + "description": "Auto fill HTTP Basic Auth dialogs and send them checkbox text." + }, + "optionsRadioText": { + "message": "Check for updates of KeePassXC:", + "description": "Text above radio buttons in the settings page." + }, + "optionsRadioThreeDays": { + "message": " every 3 days", + "description": "Radio button text." + }, + "optionsRadioWeek": { + "message": " every week", + "description": "Radio button text." + }, + "optionsRadioMonth": { + "message": " every month", + "description": "Radio button text." + }, + "optionsRadioNever": { + "message": " never", + "description": "Radio button text." + }, + "optionsGeneralHelpText": { + "message": "If you just want to insert username and password into the fields where your focus is, press $1", + "description": "Context menu help text." + }, + "optionsGeneralHelpTextSecond": { + "message": "If you only want to insert the password, just press $1", + "description": "Context menu help text." + }, + "optionsCustomizeCommandsHelpText": { + "message": "You can customize these shortcuts on page $1", + "descriptions": "Shortcut customize help text." + }, + "optionsBlinkTimeHelpText": { + "message": "Maximum time (ms) the icon should blink after detecting new credentials", + "description": "Blink Time option help text." + }, + "optionsRedirectOffsetHelpText": { + "message": "Minimum time (ms) the icon should blink before deactivating due to page redirects.", + "description": "Redirect Offset option help text." + }, + "optionsRedirectOffsetHelpTextSecond": { + "message": "-1 to only use blink time ignoring Maximum Redirects (old behavior)", + "description": "Redirect Offset option help text, second part." + }, + "optionsRedirectAllowanceHelpText": { + "message": "How many pages should the tab cycle through after the redirect offset before deactivating the icon", + "description": "Redirect Allowance option help text." + }, + "optionsUsePasswordGeneratorHelpText": { + "message": "Adds a button to password fields for generating a new password.", + "description": "Password Generator option help text." + }, + "optionsUsePasswordGeneratorHelpTextSecond": { + "message": "Passwords are generated by KeePassXC using your password generation profile.", + "description": "Password Generator option help text, second part." + }, + "optionsAutoRetrieveCredentialsHelpText": { + "message": "KeePassXC-Browser will immediately retrieve credentials when a tab is activated.", + "description": "Auto-Retrive Credentials option help text." + }, + "optionsAutoFillSingleEntryHelpText": { + "message": "Let KeePassXC-Browser automatically fill in credentials if it receives only a single entry.", + "description": "Auto-Fill Single Entry option help text." + }, + "optionsAutoFillSingleEntryWarning": { + "message": "Warning! Using auto-fill is not safe. Use at your own risk.", + "description": "Auto-Fill Single Entry warning text." + }, + "optionsAutocompleteUsernamesHelpText": { + "message": "Show a dropdown list containing available credentials for all username fields on a page.", + "description": "Autocomplete Usernames option help text." + }, + "optionsShowNotificationsHelpText": { + "message": "Show notifications for errors and when user interaction is required.", + "description": "Show notifications option help text." + }, + "optionsSaveDomainOnlyHelpText": { + "message": "When saving new credentials, save only the domain instead of full URL.", + "description": "Save domain only option help text." + }, + "optionsAutoFillAndSendHelpText": { + "message": "If credentials are found for a page and the login-type is an HTTP Basic Auth request, KeePassXC-Browser tries to login with the first given credentials.", + "description": "Auto-Fill And Send option help text." + }, + "optionsAutoFillAndSendHelpTextSecond": { + "message": "An HTTP Basic Auth dialog looks like this:", + "description": "HTTP Basic Auth image help text." + }, + "optionsVersionInfoText": { + "message": "KeePassXC-Browser needs KeePassXC to retrieve credentials.", + "description": "Settings page version info text." + }, + "optionsVersionDownload": { + "message": "You can download the latest stable version from $1", + "description": "Settings page download link." + }, + "optionsVersionRunning": { + "message": "You are running KeePassXC version: $1", + "description": "Settings page info text of user's KeePassXC version." + }, + "optionsLatestVersion": { + "message": "Latest available version of KeePassXC: $1", + "description": "Settings page info text about the latest KeePassXC version." + }, + "optionsDefault": { + "message": "Default: $1", + "description": "Default setting text." + }, + "optionsInfinite": { + "message": "Infinite: $1", + "description": "Infinite setting text." + }, + "optionsRecommended": { + "message": "Recommended: $1", + "description": "Recommended setting text." + }, + "optionsConnectedDatabasesText": { + "message": "The following KeePassXC databases are connected to KeePassXC-Browser.", + "description": "Info text about connected databases." + }, + "optionsConnectedDatabasesNotFound": { + "message": "No connected databases found.", + "description": "Shown in the connected databases table when there is no connected databases." + }, + "optionsDatabasesRemoveIdentifier": { + "message": "Remove identifier from database list?", + "description": "Confirmation text when removing database from the list." + }, + "optionsDatabasesRemoveIdentifierConfirmFirst": { + "message": "Do you really want to remove the following identifier from the database list?", + "description": "Confirmation text when removing database from the list." + }, + "optionsDatabasesRemoveIdentifierConfirmSecond": { + "message": "You can reconnect your database at any time.", + "description": "Confirmation text when removing database from the list, second part." + }, + "optionsDatabaseIdentifier": { + "message": "Identifier", + "description": "Database list column title." + }, + "optionsDatabaseKey": { + "message": "Key", + "description": "Database list column title." + }, + "optionsDatabaseLastUsed": { + "message": "Last used", + "description": "Database list column title." + }, + "optionsDatabaseCreated": { + "message": "Created", + "description": "Database list column title." + }, + "optionsDatabaseDelete": { + "message": "Delete", + "description": "Database list column title." + }, + "optionsColumnPageURL": { + "message": "Page URL", + "description": "Site preferences list column title." + }, + "optionsColumnIgnore": { + "message": "Ignore", + "description": "Site preferences list column title." + }, + "optionsColumnUsernameOnly": { + "message": "Username-only Detection", + "description": "Site preferences list column title." + }, + "optionsColumnDelete": { + "message": "Delete", + "description": "Site preferences list column title." + }, + "optionsSelectionNothing": { + "message": "Enable all features", + "description": "Site preferences option selection." + }, + "optionsSelectionNormal": { + "message": "Disable new/modified credentials", + "description": "Site preferences option selection." + }, + "optionsSelectionFull": { + "message": "Disable all features", + "description": "Site preferences option selection." + }, + "optionsCustomFieldsNotFound": { + "message": "No saved custom login fields found.", + "description": "Shown when no saved custom credentials are saved." + }, + "optionsCustomFieldsTabHelpTextFirst": { + "message": "If KeePassXC-Browser detects the wrong login fields, you are able to specify the correct fields yourself.", + "description": "Saved custom login fields info text, first part." + }, + "optionsCustomFieldsTabHelpTextSecond": { + "message": "Go to the page and click on the KeePassXC-Browser icon, then select ", + "description": "Saved custom login fields info text, second part." + }, + "optionsCustomFieldsTabHelpTextThird": { + "message": "On this page you can manage saved custom login fields.", + "description": "Saved custom login fields info text, third part." + }, + "optionsCustomFieldsRemove": { + "message": "Remove saved custom login fields?", + "description": "Confirmation text when removing saved custom login fields." + }, + "optionsCustomFieldsConfirmation": { + "message": "Do you really want to remove the saved custom login fields on the page: $1", + "description": "Confirmation text when removing saved custom login fields." + }, + "optionsCustomFieldsConfirmationHelpText": { + "message": "KeePassXC-Browser will automatically detect the login fields next time you visit this page.", + "description": "Part of confirmation text when removing saved custom login fields." + }, + "optionsSitePreferencesNotFound": { + "message": "No ignored sites found.", + "description": "Shown when no ignored sites are saved." + }, + "optionsSitePreferencesRemove": { + "message": "Remove site?", + "description": "Confirmation text when removing ignored sites from the list." + }, + "optionsSitePreferencesTabHelpTextFirst": { + "message": "Sites on this page have special handling methods associated with them.", + "description": "Site preferences info text, first part." + }, + "optionsSitePreferencesTabHelpTextSecond": { + "message": "To ignore new/modified credentials on a specific site, add them below or click the blinking KeePassXC-Browser icon and select", + "description": "Site preferences info text, second part." + }, + "optionsSitePreferencesTabHelpTextThird": { + "message": "If a site is fully ignored (Disable all features is selected), then the plugin will do nothing when visiting that site.", + "description": "Site preferences info text, third part." + }, + "optionsSitePreferencesTabHelpTextFourth": { + "message": "Username-only detection allows KeePassXC-Browser to fill in login details on websites with separate pages for username and password.", + "description": "Site preferences info text, fourth part." + }, + "optionsSitePreferencesManualAddText": { + "message": "Add URL manually:", + "description": "Label for adding site manually on Site preferences tab." + }, + "optionsSitePreferencesConfirmation": { + "message": "Do you really want to remove the specified site from the list: $1", + "description": "Confirmation text when removing site from site preferences." + }, + "optionsSitePreferencesConfirmationHelpText": { + "message": "KeePassXC-Browser will enable all features for this site and remove username-only detection.", + "description": "Part of confirmation text when removing site preferences." + }, + "optionsAboutChrome": { + "message": "Visit KeePassXC-Browser in the Chrome Web Store.", + "description": "About page link to Chrome Web Store." + }, + "optionsAboutMozilla": { + "message": "Visit KeePassXC-Browser in the Mozilla Add-ons directory.", + "description": "About page link to AMO." + }, + "optionsAboutGitHub": { + "message": "Visit KeePassXC-Browser on GitHub.", + "description": "About page link to GitHub." + }, + "optionsAboutExtensionVersion": { + "message": "KeePassXC-Browser Version: $1", + "description": "About page text of extension version." + }, + "optionsAboutKeePassXCVersion": { + "message": "KeePassXC Version: $1", + "description": "About page text of KeePassXC version." + }, + "optionsAboutContributors": { + "message": "Contributors:", + "description": "About page text of contributors." + } +} diff --git a/keepassxc-browser/background/browserAction.js b/keepassxc-browser/background/browserAction.js index caf095f..3f1ac52 100755 --- a/keepassxc-browser/background/browserAction.js +++ b/keepassxc-browser/background/browserAction.js @@ -252,13 +252,13 @@ browserAction.setRememberPopup = function(tabId, username, password, url, userna browserAction.show(null, {'id': id}); if (page.settings.showLoginNotifications) { - const message = 'Create or modify the credentials by clicking on the extension icon.'; + const message = tr('rememberCredentialsPopup'); const buttons = [ { - 'title': 'Close' + 'title': tr('popupButtonClose') }, { - 'title': 'Never ask for this page' + 'title': tr('popupButtonIgnore') }]; browser.notifications.create({ diff --git a/keepassxc-browser/background/httpauth.js b/keepassxc-browser/background/httpauth.js index 3209507..00663a0 100755 --- a/keepassxc-browser/background/httpauth.js +++ b/keepassxc-browser/background/httpauth.js @@ -85,7 +85,7 @@ httpAuth.loginOrShowCredentials = function(logins, details, resolve, reject) { }); } else { if (page.settings.showNotifications) { - showNotification('HTTP authentication with multiple credentials detected. Click on the extension icon to choose the correct one.'); + showNotification(tr('multipleCredentialsDetected')); } kpxcEvent.onHTTPAuthPopup(null, { 'id': details.tabId }, { 'logins': logins, 'url': details.searchUrl, 'resolve': resolve }); } diff --git a/keepassxc-browser/background/init.js b/keepassxc-browser/background/init.js index 0e015ce..7f34359 100644 --- a/keepassxc-browser/background/init.js +++ b/keepassxc-browser/background/init.js @@ -84,11 +84,11 @@ browser.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { browser.runtime.onMessage.addListener(kpxcEvent.onMessage); const contextMenuItems = [ - {title: 'Fill User + Pass', action: 'fill_user_pass'}, - {title: 'Fill Pass Only', action: 'fill_pass_only'}, - {title: 'Fill TOTP', action: 'fill_totp'}, - {title: 'Show Password Generator Icons', action: 'activate_password_generator'}, - {title: 'Save credentials', action: 'remember_credentials'} + {title: tr('contextMenuFillUsernameAndPassword'), action: 'fill_user_pass'}, + {title: tr('contextMenuFillPassword'), action: 'fill_pass_only'}, + {title: tr('contextMenuFillTOTP'), action: 'fill_totp'}, + {title: tr('contextMenuShowPasswordGeneratorIcons'), action: 'activate_password_generator'}, + {title: tr('contextMenuSaveCredentials'), action: 'remember_credentials'} ]; let menuContexts = ['editable']; diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index dbddc83..56afbd6 100755 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -56,22 +56,22 @@ const kpErrors = { NO_LOGINS_FOUND: 15, errorMessages : { - 0: { msg: 'Unknown error' }, - 1: { msg: 'Database not opened' }, - 2: { msg: 'Database hash not received' }, - 3: { msg: 'Client public key not reveiced' }, - 4: { msg: 'Cannot decrypt message' }, - 5: { msg: 'Timeout or not connected to KeePassXC' }, - 6: { msg: 'Action cancelled or denied' }, - 7: { msg: 'Cannot encrypt message or public key not found. Is native messaging or support for your browser enabled in KeePassXC?' }, - 8: { msg: 'KeePassXC association failed, try again.' }, - 9: { msg: 'Key change was not successful.' }, - 10: { msg: 'Encryption key is not recognized' }, - 11: { msg: 'No saved databases found.' }, - 12: { msg: 'Incorrect action.' }, - 13: { msg: 'Empty message received.' }, - 14: { msg: 'No URL provided.' }, - 15: { msg: 'No logins found.' } + 0: { msg: tr('errorMessageUnknown') }, + 1: { msg: tr('errorMessageDatabaseNotOpened') }, + 2: { msg: tr('errorMessageDatabaseHash') }, + 3: { msg: tr('errorMessageClientPublicKey') }, + 4: { msg: tr('errorMessageDecrypt') }, + 5: { msg: tr('errorMessageTimeout') }, + 6: { msg: tr('errorMessageCanceled') }, + 7: { msg: tr('errorMessageEncrypt') }, + 8: { msg: tr('errorMessageAssociate') }, + 9: { msg: tr('errorMessageKeyExchange') }, + 10: { msg: tr('errorMessageEncryptionKey') }, + 11: { msg: tr('errorMessageSavedDatabases') }, + 12: { msg: tr('errorMessageIncorrectAction') }, + 13: { msg: tr('errorMessageEmptyMessage') }, + 14: { msg: tr('errorMessageNoURL') }, + 15: { msg: tr('errorMessageNoLogins') } }, getError(errorCode) { diff --git a/keepassxc-browser/global.js b/keepassxc-browser/global.js index 826949a..0e8b264 100755 --- a/keepassxc-browser/global.js +++ b/keepassxc-browser/global.js @@ -96,4 +96,8 @@ var siteMatch = function(site, url) { var slashNeededForUrl = function(pattern) { const matchPattern = new RegExp(`^${schemeSegment}://${hostSegment}$`); return matchPattern.exec(pattern); -}; \ No newline at end of file +}; + +function tr(key, params) { + return browser.i18n.getMessage(key, params); +}; diff --git a/keepassxc-browser/keepassxc-browser.js b/keepassxc-browser/keepassxc-browser.js index 629e1f4..b461a19 100755 --- a/keepassxc-browser/keepassxc-browser.js +++ b/keepassxc-browser/keepassxc-browser.js @@ -237,7 +237,7 @@ cipPassword.createDialog = function() { .attr('id', 'cip-genpw-textfield-password') .attr('type', 'text') .attr('aria-describedby', 'cip-genpw-quality') - .attr('placeholder', 'Generated password') + .attr('placeholder', tr('passwordGeneratorPlaceholder')) .addClass('genpw-text ui-widget-content ui-corner-all') .on('change keypress paste textInput input', function() { jQuery('#cip-genpw-btn-clipboard:first').removeClass('btn-success'); @@ -246,7 +246,7 @@ cipPassword.createDialog = function() { .addClass('genpw-input-group-addon') .addClass('b2c-add-on') .attr('id', 'cip-genpw-quality') - .text('??? Bits'); + .text(tr('passwordGeneratorBits')); $inputGroup.append($textfieldPassword).append($quality); const $checkGroup = jQuery('
').addClass('genpw-input-group'); @@ -257,7 +257,7 @@ cipPassword.createDialog = function() { const $labelNextField = jQuery('
- What is the maximum time (ms) the icon should blink after detecting new credentials +
- Default: 7500, Infinite: -1 + ,

- +
- +
- What is the minimum time (ms) the icon should blink before deactivating due to page redirects. +
- -1 to only use Blink Time ignoring Redirect Allowance (old behavior) +
- Default: -1, Recommended: 2000 + ,

- +
- +
- How many pages should the tab cycle through after the redirect offset before deactivating the icon +
- Default: 1 + 1

@@ -89,53 +90,53 @@

- For all password-fields there will be an icon added to generate a new password. +
- It is generated by KeePassXC with the profile for automatically generated passwords for new entries.
+


- KeePassXC-Browser will immediately retrieve the credentials when the tab is activated. +


- If KeePassXC-Browser does only receive a single entry from KeePassXC it automatically fills this credentials into the found credential fields. - Warning! Using auto-fill is not safe. Use at your own risk. + +


- For all username fields on a page a dropdown list appears which contains all available credentials. +


- Show notifications for errors and when user interaction is required. +

@@ -143,44 +144,43 @@

- When saving new credentials save only the domain instead of full URL. +


- Check for updates of KeePassXC: -
- - - - +

+ + + +

- KeePassXC-Browser needs KeePassXC to retrieve credentials. +
- You can download the latest stable version from here: https://keepassxc.org/ +

- You are running KeePassXC version: +
- Latest available version of KeePassXC: - + +

- If credentials are found for a page and the login-type is an HTTP Auth request, KeePassXC-Browser tries to login with the first given credentials. +
- An HTTP Auth dialog looks like this: +
http-auth-dialog @@ -189,36 +189,34 @@
-

Connected databases

+


-

- The following KeePassXC databases are connected to KeePassXC-Browser. -

+

- - - - - + + + + + - + - +
IdentifierKeyLast usedCreatedDelete
No connected databases found.

- +
@@ -243,29 +242,29 @@
-

Custom credential fields

+


- If KeePassXC-Browser detects the wrong credential fields, you are able to specify the correct fields by yourself. +
- Go to the page and click on the KeePassXC-Browser-Icon, now select Choose custom credential fields for this page. + .
- On this page you can manage saved custom credential fields. +

- - + + - + - +
Page URLDelete
No saved custom credential fields found.
@@ -274,15 +273,15 @@
@@ -291,24 +290,24 @@
-

Site preferences

+


- Sites on this page have special handling methods associated with them. +
- To ignore new/modified credentials on a specific site, add it below or click the blinking KeePassXC-Browser icon and select Never ask for this page. + .
- If a site is fully ignored (Disable all features is selected), then the plugin will do nothing when visiting that site. +
- Enabling the Username-Only Detection feature allows KeePassXC-Browser to fill-in pages on sites that do present a separated username and password input. +


- +
- +
@@ -316,27 +315,27 @@ - - - - + + + + - + - +
Page URLIgnoreUsername-Only DetectionDelete
No sites found.
@@ -345,15 +344,15 @@
@@ -362,30 +361,30 @@
-

About

+


- Visit extension's page in Chrome Web store +

- Visit extension's page in Mozilla's Add-ons page +

- Visit project's page in GitHub. + .


- KeePassXC-Browser Version: +

- KeePassXC Version: +


- Contributors:
+
Perry Nguyen, Lukas Schulze, - Andy Brandt, Sami Vänttinen - and KeePassXC Team. + Andy Brandt, Sami Vänttinen, + KeePassXC Team.


@@ -393,5 +392,7 @@

(C) 2017-2018 - KeePassXC Team

+ + diff --git a/keepassxc-browser/popups/popup.html b/keepassxc-browser/popups/popup.html index d049a0a..496bb84 100644 --- a/keepassxc-browser/popups/popup.html +++ b/keepassxc-browser/popups/popup.html @@ -1,6 +1,6 @@ - KeePassXC - Popup + @@ -14,86 +14,70 @@
- - + +
- You use an old version of KeePassXC. +
- Please download the latest version from keepassxc.org. + .
-

Checking status...

+

+ diff --git a/keepassxc-browser/popups/popup_httpauth.html b/keepassxc-browser/popups/popup_httpauth.html index 0adeec7..2a1c773 100644 --- a/keepassxc-browser/popups/popup_httpauth.html +++ b/keepassxc-browser/popups/popup_httpauth.html @@ -14,26 +14,25 @@
- - + +
- You use an old version of KeePassXC. +
- Please download the latest version from keepassxc.org. + . +
-
-

- Select the login information you would like to get logged in with: -

+

- +

+ diff --git a/keepassxc-browser/popups/popup_login.html b/keepassxc-browser/popups/popup_login.html index d484c32..768aff0 100644 --- a/keepassxc-browser/popups/popup_login.html +++ b/keepassxc-browser/popups/popup_login.html @@ -14,27 +14,26 @@
- - + +
- You use an old version of KeePassXC. +
- Please download the latest version from keepassxc.org. + .
-

- Select the login information you would like to get entered into the page: -

+

+ diff --git a/keepassxc-browser/popups/popup_multiple-fields.html b/keepassxc-browser/popups/popup_multiple-fields.html index 6678540..b77c611 100644 --- a/keepassxc-browser/popups/popup_multiple-fields.html +++ b/keepassxc-browser/popups/popup_multiple-fields.html @@ -1,36 +1,36 @@ - KeePassXC-Browser - Popup - - - - - - - - + KeePassXC-Browser - Popup + + + + + + + + -
-
- - - +
+
+ + + -
- You use an old version of KeePassXC. -
- Please download the latest version from keepassxc.org. -
-
+
+ +
+ . +
+
-
-

- KeePassXC-Browser found more than one password field on this page. To enter your - logins, right-click on one of the password fields, and choose either the - "Fill User + Pass" or "Fill Pass Only" command. -

-
-
+
+

+ + "", "" +

+
+
+ diff --git a/keepassxc-browser/popups/popup_remember.html b/keepassxc-browser/popups/popup_remember.html index 6d367b4..d72e836 100644 --- a/keepassxc-browser/popups/popup_remember.html +++ b/keepassxc-browser/popups/popup_remember.html @@ -17,36 +17,36 @@ .credentials .username-exists {display: none;} .small { font-weight: bold; } .small .normal { font-weight: normal; } + .info { font-weight: normal; }

- Username or password changed! Save it? +
- Url: +
- Username: +

- - - - + + + +

-

Credentials will be saved in connected database with identifier .

+

-

The used username is currently not saved!

-

The credentials with the used username are marked bold.

-

- Please choose the credentials you want to update: -

+

+

+

+ diff --git a/keepassxc-browser/popups/popup_remember.js b/keepassxc-browser/popups/popup_remember.js index fd1b9ca..f189205 100644 --- a/keepassxc-browser/popups/popup_remember.js +++ b/keepassxc-browser/popups/popup_remember.js @@ -23,8 +23,8 @@ function _initialize(tab) { let url = _tab.credentials.url; url = (url.length > 50) ? url.substring(0, 50) + '...' : url; - $('.information-url:first span:first').text(url); - $('.information-username:first span:first').text(_tab.credentials.username); + $('.information-url:first').text(url); + $('.information-username:first').text(_tab.credentials.username); $('#btn-new').click(function(e) { browser.runtime.sendMessage({ diff --git a/keepassxc-browser/translate.js b/keepassxc-browser/translate.js new file mode 100644 index 0000000..69c25e8 --- /dev/null +++ b/keepassxc-browser/translate.js @@ -0,0 +1,15 @@ +'use strict' + +const items = document.querySelectorAll('[data-i18n]'); +for (let item of items) { + const key = item.getAttribute('data-i18n'); + if (key) { + const placeholder = item.getAttribute('i18n-placeholder'); + const translation = placeholder ? browser.i18n.getMessage(key, placeholder) : browser.i18n.getMessage(key); + if (item.hasAttribute('href')) { + item.text = translation; + } else { + item.innerHTML = translation; + } + } +}