diff --git a/lib/l10n/intl_af.arb b/lib/l10n/intl_af.arb new file mode 100644 index 00000000..fb282d90 --- /dev/null +++ b/lib/l10n/intl_af.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "af", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb new file mode 100644 index 00000000..7532fd62 --- /dev/null +++ b/lib/l10n/intl_ar.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "ar", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_ca.arb b/lib/l10n/intl_ca.arb new file mode 100644 index 00000000..69973ccd --- /dev/null +++ b/lib/l10n/intl_ca.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "ca", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb index 99306f0c..affc72a6 100644 --- a/lib/l10n/intl_cs.arb +++ b/lib/l10n/intl_cs.arb @@ -1,9 +1,5 @@ { "@@locale": "cs", - "retry": "Zkusit znovu", - "@retry": { - "description": "Label for e.g. a button. Something is tried to be done again." - }, "accept": "Přijmout", "@accept": { "description": "Label for e.g. a button. Something gets accepted by the user." @@ -12,7 +8,7 @@ "@decline": { "description": "Label for e.g. a button. Something gets declined by the user." }, - "editToken": null, + "editToken": "Edit Token", "@editToken": { "description": "Title of the edit token sheet." }, @@ -20,7 +16,7 @@ "@name": { "description": "Describes the field where the tokens name should be entered." }, - "nameFieldEmpty": null, + "nameFieldEmpty": "Name can't be empty", "@nameFieldEmpty": { "description": "Error message when the name field is empty." }, @@ -36,7 +32,7 @@ "@delete": { "description": "Label that describes deleting the token." }, - "saveChanges": null, + "saveChanges": "Save Changes", "@saveChanges": { "description": "Label that describes saving changes to a token." }, @@ -44,7 +40,7 @@ "@dismiss": { "description": "Text of a button that closes a dialog." }, - "next": null, + "next": "Next", "@next": { "description": "Text of a button that goes to the next page." }, @@ -52,19 +48,19 @@ "@addToken": { "description": "The button to open the screen to add tokens by hand." }, - "addTokenTitle": null, + "addTokenTitle": "Pair new Push Token", "@addTokenTitle": { "description": "The title of the token add screen." }, - "addTokenSubtitle": null, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", "@addTokenSubtitle": { "description": "The subtitle of the token add screen." }, - "or": null, + "or": "OR", "@or": { "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." }, - "uploadQrCodeButton": null, + "uploadQrCodeButton": "Upload QR Code", "@uploadQrCodeButton": { "description": "The button in the token add view to upload QR codes as an image." }, @@ -75,7 +71,6 @@ "confirmDeletionOf": "Opravdu chcete smazat token {name}?", "@confirmDeletionOf": { "description": "Asks for confirmation on deleting a token.", - "type": "text", "placeholders": { "name": { "example": "PUSH1234" @@ -94,7 +89,7 @@ "@phonePart": { "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." }, - "tokens": null, + "tokens": "Tokens", "@tokens": { "description": "Button to open the tokens page." }, @@ -102,11 +97,11 @@ "@settings": { "description": "Button to open the settings page." }, - "noSettingsSelected": null, + "noSettingsSelected": "Select a setting", "@noSettingsSelected": { "description": "Message when no setting is selected on tablets." }, - "appearance": null, + "appearance": "Appearance", "@appearance": { "description": "Title of the setting group where the theme can be selected." }, @@ -126,7 +121,7 @@ "@darkTheme": { "description": "The dark theme." }, - "autoTheme": null, + "autoTheme": "Auto", "@autoTheme": { "description": "The automatic theme applied by the system settings." }, @@ -169,7 +164,6 @@ "errorRollOutFailed": "Registrace tokenu {name} selhala.", "@errorRollOutFailed": { "description": "Tells the user that the token could not be rolled out, because a network error occurred.", - "type": "text", "placeholders": { "name": { "example": "PUSH1234A" @@ -189,10 +183,13 @@ "@errorSynchronizationNoNetworkConnection": { "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." }, + "errorRollOutNoConnectionToServer": "Registrace tokenu {name} selhala. Server není dostupný.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, "errorRollOutUnknownError": "Vyskytla se neznámá chyba. Registrace není možná: {e}", "@errorRollOutUnknownError": { "description": "Tells the user that the roll-out failed because of an unknown error.", - "type": "text", "placeholders": { "e": { "example": "IllegalArgumentException on Line 5 ..." @@ -292,25 +289,25 @@ "@lock": { "description": "Description of button that locks a token." }, - "lockDescription": null, + "lockDescription": "Lock a token with biometric authentication.", "@lockDescription": { "description": "Description of the lock option when editing a token." }, - "search": null, + "search": "Search", "@search": { "description": "Placeholder text for search bar." }, "noResultTitle": "Nejsou nainstalovány žádné tokeny.", "@noResultTitle": { - "description": "No tokens installed yet." + "description": "No tokens stored yet." }, "noResultText1": "stiskněte tlačítko ", "@noResultText1": { - "description": "first noresult text" + "description": "first no result text" }, "noResultText2": " a začněte s používáním.", "@noResultText2": { - "description": "second noresult text" + "description": "second no result text" }, "onBoardingText1": "vícefázové ověření\nusnadněno", "onBoardingTitle2": "Maximální Bezpečnost", @@ -359,21 +356,16 @@ "@rolloutCompleted": { "description": "Message for the rollout process" }, - "errorRollOutNoConnectionToServer": "Registrace tokenu {name} selhala. Server není dostupný.", - "@errorRollOutNoConnectionToServer": { - "description": "Message for the rollout process", - "placeholders": { - "name": { - "example": "PUSH1234A" - } - } - }, "authToAcceptPushRequest": "Pro přijetí požadavku na push notifikaci se přihlaste.", "authToDeclinePushRequest": "Pro odmítnutí požadavku na push notifikaci se přihlaste.", "pushRequestParseError": "Požadavek na odeslání se nepodařilo zpracovat.", "errorRollOutSSLHandshakeFailed": "SSL handshake se nezdařil. Roll-out není možný.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, "errorWhenPullingChallenges": "Při dotazování na výzvy {name} došlo k chybě.", "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", "placeholders": { "name": { "example": "PUSH1234A" @@ -389,7 +381,7 @@ } } }, - "cameraPermissionPermanentlyDenied": null, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", "cameraPermissionPermanentlyDeniedButton": "Udělit oprávnění", "decryptErrorTitle": "Chyba dešifrování", "decryptErrorContent": "Bohužel se aplikaci nepodařilo dešifrovat vaše tokeny. To znamená, že šifrovací klíč je poškozen. Můžete to zkusit znovu nebo odstranit data aplikace, čímž by došlo k odstranění tokenů v aplikaci.", @@ -397,11 +389,11 @@ "decryptErrorButtonSendError": "Odeslat chybu", "decryptErrorButtonRetry": "Opakování", "decryptErrorDeleteConfirmationContent": "Jste si jisti, že chcete data aplikace odstranit?", - "licenses": null, + "licenses": "Open Source Licenses", "@licenses": { "description": "Button to open the licenses page" }, - "appVersion": null, + "appVersion": "App Version", "@appVersion": { "description": "App version info in the About page" }, @@ -409,11 +401,11 @@ "@privacyPolicy": { "description": "Button to open the privacy policy" }, - "website": null, + "website": "Website", "@website": { "description": "Button to open the website" }, - "github": null, + "github": "GitHub", "@github": { "description": "Button to open the GitHub page" }, @@ -422,6 +414,7 @@ "authenticationRequest": "Žádost o ověření", "requestInfo": "Odesláno {issuer} pro váš účet: \"{account}\"", "@requestInfo": { + "description": "Description of the authentication request.", "placeholders": { "issuer": { "example": "eduMFA" diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb new file mode 100644 index 00000000..a6feec23 --- /dev/null +++ b/lib/l10n/intl_da.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "da", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index 88a25e7d..01e43d9b 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,9 +1,5 @@ { "@@locale": "de", - "retry": "Erneut versuchen", - "@retry": { - "description": "Label for e.g. a button. Something is tried to be done again." - }, "accept": "Akzeptieren", "@accept": { "description": "Label for e.g. a button. Something gets accepted by the user." @@ -187,6 +183,10 @@ "@errorSynchronizationNoNetworkConnection": { "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." }, + "errorRollOutNoConnectionToServer": "Der Rollout von Token {name} ist fehlgeschlagen, der Server konnte nicht erreicht werden.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, "errorRollOutUnknownError": "Ein unbekannter Fehler ist aufgetreten. Aurollen nicht möglich: {e}", "@errorRollOutUnknownError": { "description": "Tells the user that the roll-out failed because of an unknown error.", @@ -299,7 +299,7 @@ }, "noResultTitle": "Keine Token vorhanden.", "@noResultTitle": { - "description": "No tokens installed yet." + "description": "No tokens stored yet." }, "noResultText1": "Tippe auf das ", "@noResultText1": { @@ -349,20 +349,29 @@ "description": "Message for the rollout process" }, "parsingResponseFailed": "Analysieren der Antwort fehlgeschlagen", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, "rolloutCompleted": "Ausrollen abgeschlossen", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Bitte authentifizieren Sie sich, um die Anfrage anzunehmen.", + "authToDeclinePushRequest": "Bitte authentifizieren Sie sich, um die Anfrage abzulehnen.", + "pushRequestParseError": "Die Push-Anfrage konnte nicht verarbeitet werden.", + "errorRollOutSSLHandshakeFailed": "SSL-Handshake fehlgeschlagen. Roll-out nicht möglich.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, "errorWhenPullingChallenges": "Fehler beim Abrufen der Authentifizierungsanfragen von {name}", "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", "placeholders": { "name": { "example": "PUSH1234A" } } }, - "errorRollOutNoConnectionToServer": "Der Rollout von Token {name} ist fehlgeschlagen, der Server konnte nicht erreicht werden.", - "authToAcceptPushRequest": "Bitte authentifizieren Sie sich, um die Anfrage anzunehmen.", - "authToDeclinePushRequest": "Bitte authentifizieren Sie sich, um die Anfrage abzulehnen.", - "pushRequestParseError": "Die Push-Anfrage konnte nicht verarbeitet werden.", - "errorRollOutSSLHandshakeFailed": "SSL-Handshake fehlgeschlagen. Roll-out nicht möglich.", "errorRollOutNotPossibleAnymore": "Das Ausrollen dieses Tokens ist nicht mehr möglich.", "errorTokenExpired": "Der Token {name} ist abgelaufen.", "@errorTokenExpired": { @@ -405,11 +414,12 @@ "authenticationRequest": "Authentifizierung", "requestInfo": "Gesendet von {issuer} für Ihr Konto: \"{account}\"", "@requestInfo": { + "description": "Description of the authentication request.", "placeholders": { "issuer": { "example": "eduMFA" }, - "Konto": { + "account": { "example": "GitHub" } } diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb new file mode 100644 index 00000000..c7f0ff2e --- /dev/null +++ b/lib/l10n/intl_el.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "el", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index 56e20514..54fab598 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,9 +1,5 @@ { "@@locale": "es", - "retry": "Reintentar", - "@retry": { - "description": "Label for e.g. a button. Something is tried to be done again." - }, "accept": "Aceptar", "@accept": { "description": "Label for e.g. a button. Something gets accepted by the user." @@ -12,7 +8,7 @@ "@decline": { "description": "Label for e.g. a button. Something gets declined by the user." }, - "editToken": null, + "editToken": "Edit Token", "@editToken": { "description": "Title of the edit token sheet." }, @@ -20,7 +16,7 @@ "@name": { "description": "Describes the field where the tokens name should be entered." }, - "nameFieldEmpty": null, + "nameFieldEmpty": "Name can't be empty", "@nameFieldEmpty": { "description": "Error message when the name field is empty." }, @@ -36,7 +32,7 @@ "@delete": { "description": "Label that describes deleting the token." }, - "saveChanges": null, + "saveChanges": "Save Changes", "@saveChanges": { "description": "Label that describes saving changes to a token." }, @@ -44,7 +40,7 @@ "@dismiss": { "description": "Text of a button that closes a dialog." }, - "next": null, + "next": "Next", "@next": { "description": "Text of a button that goes to the next page." }, @@ -52,19 +48,19 @@ "@addToken": { "description": "The button to open the screen to add tokens by hand." }, - "addTokenTitle": null, + "addTokenTitle": "Pair new Push Token", "@addTokenTitle": { "description": "The title of the token add screen." }, - "addTokenSubtitle": null, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", "@addTokenSubtitle": { "description": "The subtitle of the token add screen." }, - "or": null, + "or": "OR", "@or": { "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." }, - "uploadQrCodeButton": null, + "uploadQrCodeButton": "Upload QR Code", "@uploadQrCodeButton": { "description": "The button in the token add view to upload QR codes as an image." }, @@ -93,7 +89,7 @@ "@phonePart": { "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." }, - "tokens": null, + "tokens": "Tokens", "@tokens": { "description": "Button to open the tokens page." }, @@ -101,11 +97,11 @@ "@settings": { "description": "Button to open the settings page." }, - "noSettingsSelected": null, + "noSettingsSelected": "Select a setting", "@noSettingsSelected": { "description": "Message when no setting is selected on tablets." }, - "appearance": null, + "appearance": "Appearance", "@appearance": { "description": "Title of the setting group where the theme can be selected." }, @@ -125,7 +121,7 @@ "@darkTheme": { "description": "The dark theme." }, - "autoTheme": null, + "autoTheme": "Auto", "@autoTheme": { "description": "The automatic theme applied by the system settings." }, @@ -187,7 +183,11 @@ "@errorSynchronizationNoNetworkConnection": { "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." }, - "errorRollOutUnknownError": null, + "errorRollOutNoConnectionToServer": "El despliegue del token {name} ha fallado, no se ha podido acceder al servidor.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", "@errorRollOutUnknownError": { "description": "Tells the user that the roll-out failed because of an unknown error.", "placeholders": { @@ -233,9 +233,9 @@ "@couldNotSignMessage": { "description": "Tells the user that the message could not be signed." }, - "language": null, + "language": "Language", "@language": { - "description": "Título del grupo de configuración lingüística." + "description": "Title of language setting group." }, "biometricRequiredTitle": "Biometría no configurada", "@biometricRequiredTitle": { @@ -289,11 +289,11 @@ "@lock": { "description": "Description of button that locks a token." }, - "lockDescription": null, + "lockDescription": "Lock a token with biometric authentication.", "@lockDescription": { "description": "Description of the lock option when editing a token." }, - "search": null, + "search": "Search", "@search": { "description": "Placeholder text for search bar." }, @@ -356,21 +356,16 @@ "@rolloutCompleted": { "description": "Message for the rollout process" }, - "errorRollOutNoConnectionToServer": "El despliegue del token {name} ha fallado, no se ha podido acceder al servidor.", - "@errorRollOutNoConnectionToServer": { - "description": "Message for the rollout process", - "placeholders": { - "name": { - "example": "PUSH1234A" - } - } - }, "authToAcceptPushRequest": "Por favor, autentifíquese para aceptar la solicitud push.", "authToDeclinePushRequest": "Por favor, autentifíquese para rechazar la solicitud push.", "pushRequestParseError": "No se ha podido procesar la solicitud push.", "errorRollOutSSLHandshakeFailed": "Ha fallado el protocolo SSL. No es posible el despliegue.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, "errorWhenPullingChallenges": "Se ha producido un error al buscar retos de {name}", "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", "placeholders": { "name": { "example": "PUSH1234A" @@ -386,7 +381,7 @@ } } }, - "cameraPermissionPermanentlyDenied": null, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", "cameraPermissionPermanentlyDeniedButton": "Conceder permiso", "decryptErrorTitle": "Error de descifrado", "decryptErrorContent": "Lamentablemente, la aplicación no ha podido descifrar tus tokens. Esto indica que la clave de cifrado está rota. Puedes volver a intentarlo o borrar los datos de la app, lo que eliminaría los tokens de la app.", @@ -394,11 +389,11 @@ "decryptErrorButtonSendError": "Enviar error", "decryptErrorButtonRetry": "Reintentar", "decryptErrorDeleteConfirmationContent": "¿Estás seguro de que quieres borrar los datos de la aplicación?", - "licenses": null, + "licenses": "Open Source Licenses", "@licenses": { "description": "Button to open the licenses page" }, - "appVersion": null, + "appVersion": "App Version", "@appVersion": { "description": "App version info in the About page" }, @@ -406,11 +401,11 @@ "@privacyPolicy": { "description": "Button to open the privacy policy" }, - "website": null, + "website": "Website", "@website": { "description": "Button to open the website" }, - "github": null, + "github": "GitHub", "@github": { "description": "Button to open the GitHub page" }, @@ -419,6 +414,7 @@ "authenticationRequest": "Autenticación", "requestInfo": "Enviado por {issuer} para su cuenta: \"{account}\"", "@requestInfo": { + "description": "Description of the authentication request.", "placeholders": { "issuer": { "example": "eduMFA" diff --git a/lib/l10n/intl_fi.arb b/lib/l10n/intl_fi.arb new file mode 100644 index 00000000..da3c0051 --- /dev/null +++ b/lib/l10n/intl_fi.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "fi", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 220628fa..e8a7ea70 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,9 +1,5 @@ { "@@locale": "fr", - "retry": "Réessayer", - "@retry": { - "description": "Label for e.g. a button. Something is tried to be done again." - }, "accept": "Accepter", "@accept": { "description": "Label for e.g. a button. Something gets accepted by the user." @@ -12,7 +8,7 @@ "@decline": { "description": "Label for e.g. a button. Something gets declined by the user." }, - "editToken": null, + "editToken": "Edit Token", "@editToken": { "description": "Title of the edit token sheet." }, @@ -20,7 +16,7 @@ "@name": { "description": "Describes the field where the tokens name should be entered." }, - "nameFieldEmpty": null, + "nameFieldEmpty": "Name can't be empty", "@nameFieldEmpty": { "description": "Error message when the name field is empty." }, @@ -36,7 +32,7 @@ "@delete": { "description": "Label that describes deleting the token." }, - "saveChanges": null, + "saveChanges": "Save Changes", "@saveChanges": { "description": "Label that describes saving changes to a token." }, @@ -44,7 +40,7 @@ "@dismiss": { "description": "Text of a button that closes a dialog." }, - "next": null, + "next": "Next", "@next": { "description": "Text of a button that goes to the next page." }, @@ -52,19 +48,19 @@ "@addToken": { "description": "The button to open the screen to add tokens by hand." }, - "addTokenTitle": null, + "addTokenTitle": "Pair new Push Token", "@addTokenTitle": { "description": "The title of the token add screen." }, - "addTokenSubtitle": null, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", "@addTokenSubtitle": { "description": "The subtitle of the token add screen." }, - "or": null, + "or": "OR", "@or": { "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." }, - "uploadQrCodeButton": null, + "uploadQrCodeButton": "Upload QR Code", "@uploadQrCodeButton": { "description": "The button in the token add view to upload QR codes as an image." }, @@ -75,7 +71,6 @@ "confirmDeletionOf": "Confirmer la suppression de {name}?", "@confirmDeletionOf": { "description": "Asks for confirmation on deleting a token.", - "type": "text", "placeholders": { "name": { "example": "PUSH1234" @@ -94,7 +89,7 @@ "@phonePart": { "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." }, - "tokens": null, + "tokens": "Tokens", "@tokens": { "description": "Button to open the tokens page." }, @@ -102,11 +97,11 @@ "@settings": { "description": "Button to open the settings page." }, - "noSettingsSelected": null, + "noSettingsSelected": "Select a setting", "@noSettingsSelected": { "description": "Message when no setting is selected on tablets." }, - "appearance": null, + "appearance": "Appearance", "@appearance": { "description": "Title of the setting group where the theme can be selected." }, @@ -126,7 +121,7 @@ "@darkTheme": { "description": "The dark theme." }, - "autoTheme": null, + "autoTheme": "Auto", "@autoTheme": { "description": "The automatic theme applied by the system settings." }, @@ -169,7 +164,6 @@ "errorRollOutFailed": "Le déploiement du jeton {name} a échoué.", "@errorRollOutFailed": { "description": "Tells the user that the token could not be rolled out, because a network error occurred.", - "type": "text", "placeholders": { "name": { "example": "PUSH1234A" @@ -189,10 +183,13 @@ "@errorSynchronizationNoNetworkConnection": { "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." }, + "errorRollOutNoConnectionToServer": "El despliegue del token {name} ha fallado, no se ha podido acceder al servidor.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, "errorRollOutUnknownError": "Le déploiement a échoué suite à une erreur inconnue: {e}", "@errorRollOutUnknownError": { "description": "Tells the user that the roll-out failed because of an unknown error.", - "type": "text", "placeholders": { "e": { "example": "IllegalArgumentException on Line 5 ..." @@ -292,11 +289,11 @@ "@lock": { "description": "Description of button that locks a token." }, - "lockDescription": null, + "lockDescription": "Lock a token with biometric authentication.", "@lockDescription": { "description": "Description of the lock option when editing a token." }, - "search": null, + "search": "Search", "@search": { "description": "Placeholder text for search bar." }, @@ -306,11 +303,11 @@ }, "noResultText1": "Appuyez sur le \n", "@noResultText1": { - "description": "first noresult text" + "description": "first no result text" }, "noResultText2": "bouton pour commencer!", "@noResultText2": { - "description": "second noresult text" + "description": "second no result text" }, "onBoardingText1": "Authentification à deux facteurs\nrendue facile", "onBoardingTitle2": "Sécurité Maximale", @@ -325,7 +322,7 @@ "showPrivacyPolicy": "Afficher la déclaration de confidentialité", "errorMailBody": "Le fichier journal des erreurs est joint.\nVous pouvez remplacer ce texte par des informations supplémentaires sur l'erreur.", "@errorMailBody": { - "description": "Message pour le corps du courriel" + "description": "Message for email body" }, "showDetails": "Afficher les détails", "deleteLockedToken": "Veuillez vous authentifier pour supprimer le jeton verrouillé.", @@ -359,22 +356,16 @@ "@rolloutCompleted": { "description": "Message for the rollout process" }, - "errorRollOutNoConnectionToServer": "El despliegue del token {name} ha fallado, no se ha podido acceder al servidor.", - "@errorRollOutNoConnectionToServer": { - "description": "Message for the rollout process" - }, "authToAcceptPushRequest": "Veuillez vous authentifier pour accepter la demande de connexion.", - "@authToAcceptPushRequest": { - "description": "authToAcceptPushRequest" - }, "authToDeclinePushRequest": "Veuillez vous authentifier pour refuser la demande de connexion.", - "@authToDeclinePushRequest": { - "description": "authToDeclinePushRequest" - }, "pushRequestParseError": "La demande push n'a pas pu être traitée.", "errorRollOutSSLHandshakeFailed": "Échec de la prise de contact SSL. Le déploiement n'est pas possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, "errorWhenPullingChallenges": "Une erreur s'est produite lors de l'interrogation des défis de {name}", "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", "placeholders": { "name": { "example": "PUSH1234A" @@ -390,8 +381,7 @@ } } }, - "butDiscardIt": "mais l'écarter", - "cameraPermissionPermanentlyDenied": null, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", "cameraPermissionPermanentlyDeniedButton": "Accorder l'autorisation", "decryptErrorTitle": "Erreur de décryptage", "decryptErrorContent": "Malheureusement, l'application n'a pas pu décrypter vos jetons. Cela indique que la clé de cryptage est cassée. Vous pouvez réessayer ou supprimer les données de l'application, ce qui supprimera les jetons dans l'application.", @@ -399,11 +389,11 @@ "decryptErrorButtonSendError": "Erreur d'envoi", "decryptErrorButtonRetry": "Réessayer", "decryptErrorDeleteConfirmationContent": "Êtes-vous sûr de vouloir supprimer les données de l'application ?", - "licenses": null, + "licenses": "Open Source Licenses", "@licenses": { "description": "Button to open the licenses page" }, - "appVersion": null, + "appVersion": "App Version", "@appVersion": { "description": "App version info in the About page" }, @@ -411,11 +401,11 @@ "@privacyPolicy": { "description": "Button to open the privacy policy" }, - "website": null, + "website": "Website", "@website": { "description": "Button to open the website" }, - "github": null, + "github": "GitHub", "@github": { "description": "Button to open the GitHub page" }, @@ -424,12 +414,13 @@ "authenticationRequest": "Authentification", "requestInfo": "Envoyé par {issuer} pour votre compte : \"{account}\"", "@requestInfo": { + "description": "Description of the authentication request.", "placeholders": { "issuer": { - "exemple": "eduMFA" + "example": "eduMFA" }, "account": { - "exemple": "GitHub" + "example": "GitHub" } } } diff --git a/lib/l10n/intl_he.arb b/lib/l10n/intl_he.arb new file mode 100644 index 00000000..2aecda3e --- /dev/null +++ b/lib/l10n/intl_he.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "he", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_hu.arb b/lib/l10n/intl_hu.arb new file mode 100644 index 00000000..771626c1 --- /dev/null +++ b/lib/l10n/intl_hu.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "hu", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb new file mode 100644 index 00000000..159ebf61 --- /dev/null +++ b/lib/l10n/intl_it.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "it", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb new file mode 100644 index 00000000..c2aea99e --- /dev/null +++ b/lib/l10n/intl_ja.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "ja", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_ko.arb b/lib/l10n/intl_ko.arb new file mode 100644 index 00000000..9b449d54 --- /dev/null +++ b/lib/l10n/intl_ko.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "ko", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb index 6eba9d3e..97c93a6b 100644 --- a/lib/l10n/intl_nl.arb +++ b/lib/l10n/intl_nl.arb @@ -8,7 +8,7 @@ "@decline": { "description": "Label for e.g. a button. Something gets declined by the user." }, - "editToken": null, + "editToken": "Edit Token", "@editToken": { "description": "Title of the edit token sheet." }, @@ -16,7 +16,7 @@ "@name": { "description": "Describes the field where the tokens name should be entered." }, - "nameFieldEmpty": null, + "nameFieldEmpty": "Name can't be empty", "@nameFieldEmpty": { "description": "Error message when the name field is empty." }, @@ -32,7 +32,7 @@ "@delete": { "description": "Label that describes deleting the token." }, - "saveChanges": null, + "saveChanges": "Save Changes", "@saveChanges": { "description": "Label that describes saving changes to a token." }, @@ -40,7 +40,7 @@ "@dismiss": { "description": "Text of a button that closes a dialog." }, - "next": null, + "next": "Next", "@next": { "description": "Text of a button that goes to the next page." }, @@ -48,19 +48,19 @@ "@addToken": { "description": "The button to open the screen to add tokens by hand." }, - "addTokenTitle": null, + "addTokenTitle": "Pair new Push Token", "@addTokenTitle": { "description": "The title of the token add screen." }, - "addTokenSubtitle": null, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", "@addTokenSubtitle": { "description": "The subtitle of the token add screen." }, - "or": null, + "or": "OR", "@or": { "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." }, - "uploadQrCodeButton": null, + "uploadQrCodeButton": "Upload QR Code", "@uploadQrCodeButton": { "description": "The button in the token add view to upload QR codes as an image." }, @@ -89,7 +89,7 @@ "@phonePart": { "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." }, - "tokens": null, + "tokens": "Tokens", "@tokens": { "description": "Button to open the tokens page." }, @@ -97,11 +97,11 @@ "@settings": { "description": "Button to open the settings page." }, - "noSettingsSelected": null, + "noSettingsSelected": "Select a setting", "@noSettingsSelected": { "description": "Message when no setting is selected on tablets." }, - "appearance": null, + "appearance": "Appearance", "@appearance": { "description": "Title of the setting group where the theme can be selected." }, @@ -121,7 +121,7 @@ "@darkTheme": { "description": "The dark theme." }, - "autoTheme": null, + "autoTheme": "Auto", "@autoTheme": { "description": "The automatic theme applied by the system settings." }, @@ -183,10 +183,13 @@ "@errorSynchronizationNoNetworkConnection": { "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." }, + "errorRollOutNoConnectionToServer": "Uitrollen mislukt. Geen verbinding met de server.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, "errorRollOutUnknownError": "Een onbekende fout heeft plaats gevonden. Uitrollen is niet mogelijk: {e}", "@errorRollOutUnknownError": { "description": "Tells the user that the roll-out failed because of an unknown error.", - "type": "text", "placeholders": { "e": { "example": "IllegalArgumentException on Line 5 ..." @@ -286,25 +289,25 @@ "@lock": { "description": "Description of button that locks a token." }, - "lockDescription": null, + "lockDescription": "Lock a token with biometric authentication.", "@lockDescription": { "description": "Description of the lock option when editing a token." }, - "search": null, + "search": "Search", "@search": { "description": "Placeholder text for search bar." }, "noResultTitle": "Nog geen token opgeslagen.", "@noResultTitle": { - "description": "No tokens installed yet." + "description": "No tokens stored yet." }, "noResultText1": "Tik op ", "@noResultText1": { - "description": "first noresult text" + "description": "first no result text" }, "noResultText2": " de knop om te beginnen!", "@noResultText2": { - "description": "second noresult text" + "description": "second no result text" }, "onBoardingText1": "Twee-factoren authenticatie\nmakkelijk gemaakt", "onBoardingTitle2": "Maximale Beveiliging", @@ -353,25 +356,16 @@ "@rolloutCompleted": { "description": "Message for the rollout process" }, - "errorRollOutNoConnectionToServer": "Uitrollen mislukt. Geen verbinding met de server.", - "@errorRollOutNoConnectionToServer": { - "description": "Message for the rollout process" - }, "authToAcceptPushRequest": "Authenticeer om de push aanvraag te accepteren.", - "@authToAcceptPushRequest": { - "description": "Message for the rollout process" - }, "authToDeclinePushRequest": "Authenticeer om de push aanvraag te weigeren.", - "@authToDeclinePushRequest": { - "description": "Message for the rollout process" - }, "pushRequestParseError": "Het pushverzoek kon niet worden verwerkt.", "errorRollOutSSLHandshakeFailed": "SSL-handdruk mislukt. Uitrollen niet mogelijk.", "@errorRollOutSSLHandshakeFailed": { - "description": "Message for the rollout process" + "description": "Tells the user that the roll-out failed because the SSL handshake failed." }, "errorWhenPullingChallenges": "Er is een fout opgetreden bij het zoeken naar uitdagingen van {name}", "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", "placeholders": { "name": { "example": "PUSH1234A" @@ -387,8 +381,7 @@ } } }, - "butDiscardIt": "maar verwijder", - "cameraPermissionPermanentlyDenied": null, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", "cameraPermissionPermanentlyDeniedButton": "Toestemming verlenen", "decryptErrorTitle": "Fout bij decoderen", "decryptErrorContent": "Helaas heeft de app je tokens niet kunnen decoderen. Dit geeft aan dat de coderingssleutel is verbroken. U kunt het opnieuw proberen of de app-gegevens verwijderen, waardoor de tokens in de app worden verwijderd.", @@ -396,11 +389,11 @@ "decryptErrorButtonSendError": "Fout verzenden", "decryptErrorButtonRetry": "Opnieuw proberen", "decryptErrorDeleteConfirmationContent": "Weet je zeker dat je de app-gegevens wilt verwijderen?", - "licenses": null, + "licenses": "Open Source Licenses", "@licenses": { "description": "Button to open the licenses page" }, - "appVersion": null, + "appVersion": "App Version", "@appVersion": { "description": "App version info in the About page" }, @@ -408,11 +401,11 @@ "@privacyPolicy": { "description": "Button to open the privacy policy" }, - "website": null, + "website": "Website", "@website": { "description": "Button to open the website" }, - "github": null, + "github": "GitHub", "@github": { "description": "Button to open the GitHub page" }, @@ -421,6 +414,7 @@ "authenticationRequest": "Verificatieverzoek", "requestInfo": "Verzonden door {issuer} voor uw account: \"{account}\"", "@requestInfo": { + "description": "Description of the authentication request.", "placeholders": { "issuer": { "example": "eduMFA" diff --git a/lib/l10n/intl_no.arb b/lib/l10n/intl_no.arb new file mode 100644 index 00000000..fefbe918 --- /dev/null +++ b/lib/l10n/intl_no.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "no", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index bbe08571..e74c0230 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -8,7 +8,7 @@ "@decline": { "description": "Label for e.g. a button. Something gets declined by the user." }, - "editToken": null, + "editToken": "Edit Token", "@editToken": { "description": "Title of the edit token sheet." }, @@ -16,7 +16,7 @@ "@name": { "description": "Describes the field where the tokens name should be entered." }, - "nameFieldEmpty": null, + "nameFieldEmpty": "Name can't be empty", "@nameFieldEmpty": { "description": "Error message when the name field is empty." }, @@ -32,7 +32,7 @@ "@delete": { "description": "Label that describes deleting the token." }, - "saveChanges": null, + "saveChanges": "Save Changes", "@saveChanges": { "description": "Label that describes saving changes to a token." }, @@ -40,7 +40,7 @@ "@dismiss": { "description": "Text of a button that closes a dialog." }, - "next": null, + "next": "Next", "@next": { "description": "Text of a button that goes to the next page." }, @@ -48,19 +48,19 @@ "@addToken": { "description": "The button to open the screen to add tokens by hand." }, - "addTokenTitle": null, + "addTokenTitle": "Pair new Push Token", "@addTokenTitle": { "description": "The title of the token add screen." }, - "addTokenSubtitle": null, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", "@addTokenSubtitle": { "description": "The subtitle of the token add screen." }, - "or": null, + "or": "OR", "@or": { "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." }, - "uploadQrCodeButton": null, + "uploadQrCodeButton": "Upload QR Code", "@uploadQrCodeButton": { "description": "The button in the token add view to upload QR codes as an image." }, @@ -71,7 +71,6 @@ "confirmDeletionOf": "Jesteś pewien, że chcesz usunąć token: {name}?", "@confirmDeletionOf": { "description": "Asks for confirmation on deleting a token.", - "type": "text", "placeholders": { "name": { "example": "PUSH1234" @@ -90,7 +89,7 @@ "@phonePart": { "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." }, - "tokens": null, + "tokens": "Tokens", "@tokens": { "description": "Button to open the tokens page." }, @@ -98,11 +97,11 @@ "@settings": { "description": "Button to open the settings page." }, - "noSettingsSelected": null, + "noSettingsSelected": "Select a setting", "@noSettingsSelected": { "description": "Message when no setting is selected on tablets." }, - "appearance": null, + "appearance": "Appearance", "@appearance": { "description": "Title of the setting group where the theme can be selected." }, @@ -122,7 +121,7 @@ "@darkTheme": { "description": "The dark theme." }, - "autoTheme": null, + "autoTheme": "Auto", "@autoTheme": { "description": "The automatic theme applied by the system settings." }, @@ -165,7 +164,6 @@ "errorRollOutFailed": "Wdrażanie tokenu {name} nieudane.", "@errorRollOutFailed": { "description": "Tells the user that the token could not be rolled out, because a network error occurred.", - "type": "text", "placeholders": { "name": { "example": "PUSH1234A" @@ -185,10 +183,13 @@ "@errorSynchronizationNoNetworkConnection": { "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." }, + "errorRollOutNoConnectionToServer": "Brak połączenia z serwerem", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, "errorRollOutUnknownError": "Napotkano nieznany błąd. Wdrożenie tokenu niemożliwe: {e}", "@errorRollOutUnknownError": { "description": "Tells the user that the roll-out failed because of an unknown error.", - "type": "text", "placeholders": { "e": { "example": "IllegalArgumentException on Line 5 ..." @@ -288,25 +289,25 @@ "@lock": { "description": "Description of button that locks a token." }, - "lockDescription": null, + "lockDescription": "Lock a token with biometric authentication.", "@lockDescription": { "description": "Description of the lock option when editing a token." }, - "search": null, + "search": "Search", "@search": { "description": "Placeholder text for search bar." }, "noResultTitle": "Nie zainstalowano jeszcze żadnego tokenu.", "@noResultTitle": { - "description": "No tokens installed yet." + "description": "No tokens stored yet." }, "noResultText1": "Dotknij ", "@noResultText1": { - "description": "first noresult text" + "description": "first no result text" }, "noResultText2": " przycisku, żeby zacząć!", "@noResultText2": { - "description": "second noresult text" + "description": "second no result text" }, "onBoardingText1": "Uwierzytelnianie dwuskładnikowe\nuczynione prostym", "onBoardingTitle2": "Maksymalne Bezpieczeństwo", @@ -355,19 +356,16 @@ "@rolloutCompleted": { "description": "Message for the rollout process" }, - "errorRollOutNoConnectionToServer": "Brak połączenia z serwerem", - "@errorRollOutNoConnectionToServer": { - "description": "Message for the rollout process" - }, "authToAcceptPushRequest": "Uwierzytelnij, aby zaakceptować żądanie push.", - "@authToAcceptPushRequest": { - "description": "Message for the rollout process" - }, "authToDeclinePushRequest": "Uwierzytelnij, aby odrzucić żądanie push.", "pushRequestParseError": "Żądanie push nie mogło zostać przetworzone.", "errorRollOutSSLHandshakeFailed": "Uścisk dłoni SSL nie powiódł się. Rozwijanie nie jest możliwe.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, "errorWhenPullingChallenges": "Wystąpił błąd podczas odpytywania o wyzwania {name}", "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", "placeholders": { "name": { "example": "PUSH1234A" @@ -383,20 +381,19 @@ } } }, - "butDiscardIt": "ale odrzucić go", - "cameraPermissionPermanentlyDenied": null, - "cameraPermissionPermanentlyDeniedButton": null, - "decryptErrorTitle": null, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", "decryptErrorContent": "Niestety, aplikacja nie była w stanie odszyfrować tokenów. Oznacza to, że klucz szyfrowania jest uszkodzony. Możesz spróbować ponownie lub usunąć dane aplikacji, co spowoduje usunięcie tokenów w aplikacji.", "decryptErrorButtonDelete": "Usuń", "decryptErrorButtonSendError": "Wyślij błąd", "decryptErrorButtonRetry": "Ponów próbę", "decryptErrorDeleteConfirmationContent": "Czy na pewno chcesz usunąć dane aplikacji?", - "licenses": null, + "licenses": "Open Source Licenses", "@licenses": { "description": "Button to open the licenses page" }, - "appVersion": null, + "appVersion": "App Version", "@appVersion": { "description": "App version info in the About page" }, @@ -404,11 +401,11 @@ "@privacyPolicy": { "description": "Button to open the privacy policy" }, - "website": null, + "website": "Website", "@website": { "description": "Button to open the website" }, - "github": null, + "github": "GitHub", "@github": { "description": "Button to open the GitHub page" }, @@ -417,6 +414,7 @@ "authenticationRequest": "Żądanie uwierzytelnienia", "requestInfo": "Wysłane przez {issuer} dla twojego konta: \"{account}\"", "@requestInfo": { + "description": "Description of the authentication request.", "placeholders": { "issuer": { "example": "eduMFA" diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb new file mode 100644 index 00000000..993a2ad9 --- /dev/null +++ b/lib/l10n/intl_pt.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "pt-BR", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb new file mode 100644 index 00000000..f23fd183 --- /dev/null +++ b/lib/l10n/intl_ro.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "ro", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb new file mode 100644 index 00000000..cafdd3a8 --- /dev/null +++ b/lib/l10n/intl_ru.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "ru", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_sr.arb b/lib/l10n/intl_sr.arb new file mode 100644 index 00000000..c1c9b9ae --- /dev/null +++ b/lib/l10n/intl_sr.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "sr-Cyrl", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_sv.arb b/lib/l10n/intl_sv.arb new file mode 100644 index 00000000..8d5e51bb --- /dev/null +++ b/lib/l10n/intl_sv.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "sv", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb new file mode 100644 index 00000000..9d16f3cc --- /dev/null +++ b/lib/l10n/intl_tr.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "tr", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb new file mode 100644 index 00000000..b36a8a25 --- /dev/null +++ b/lib/l10n/intl_uk.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "uk", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_vi.arb b/lib/l10n/intl_vi.arb new file mode 100644 index 00000000..0430d289 --- /dev/null +++ b/lib/l10n/intl_vi.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "vi", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb new file mode 100644 index 00000000..0e82752b --- /dev/null +++ b/lib/l10n/intl_zh.arb @@ -0,0 +1,427 @@ +{ + "@@locale": "zh-TW", + "accept": "Accept", + "@accept": { + "description": "Label for e.g. a button. Something gets accepted by the user." + }, + "decline": "Decline", + "@decline": { + "description": "Label for e.g. a button. Something gets declined by the user." + }, + "editToken": "Edit Token", + "@editToken": { + "description": "Title of the edit token sheet." + }, + "name": "Name", + "@name": { + "description": "Describes the field where the tokens name should be entered." + }, + "nameFieldEmpty": "Name can't be empty", + "@nameFieldEmpty": { + "description": "Error message when the name field is empty." + }, + "secretKey": "Secret key", + "@secretKey": { + "description": "Describes the field where the tokens secret should be entered." + }, + "cancel": "Cancel", + "@cancel": { + "description": "Button to cancel an action." + }, + "delete": "Delete", + "@delete": { + "description": "Label that describes deleting the token." + }, + "saveChanges": "Save Changes", + "@saveChanges": { + "description": "Label that describes saving changes to a token." + }, + "dismiss": "Dismiss", + "@dismiss": { + "description": "Text of a button that closes a dialog." + }, + "next": "Next", + "@next": { + "description": "Text of a button that goes to the next page." + }, + "addToken": "Add token", + "@addToken": { + "description": "The button to open the screen to add tokens by hand." + }, + "addTokenTitle": "Pair new Push Token", + "@addTokenTitle": { + "description": "The title of the token add screen." + }, + "addTokenSubtitle": "Point your camera at your screen to capture the QR code", + "@addTokenSubtitle": { + "description": "The subtitle of the token add screen." + }, + "or": "OR", + "@or": { + "description": "This is shown as a splitter between the option to add a new token by either scanning a QR code OR uploading one as a file." + }, + "uploadQrCodeButton": "Upload QR Code", + "@uploadQrCodeButton": { + "description": "The button in the token add view to upload QR codes as an image." + }, + "confirmDeletion": "Confirm deletion", + "@confirmDeletion": { + "description": "Title of the dialog where a token can be deleted." + }, + "confirmDeletionOf": "Are you sure you want to delete {name}?", + "@confirmDeletionOf": { + "description": "Asks for confirmation on deleting a token.", + "placeholders": { + "name": { + "example": "PUSH1234" + } + } + }, + "confirmTokenDeletionHint": "You may no longer be able to log in if you delete this token.\nPlease make sure that you can log in to the associated account without this token.", + "@confirmTokenDeletionHint": { + "description": "Gives the user a hint about the consequences of deleting a token." + }, + "generatingPhonePart": "Generating phone part", + "@generatingPhonePart": { + "description": "Title of a dialog telling the user that the phone part gets generated right now." + }, + "phonePart": "Phone part:", + "@phonePart": { + "description": "Title of a dialog telling the user that the phone was generated, and it is shown to the user." + }, + "tokens": "Tokens", + "@tokens": { + "description": "Button to open the tokens page." + }, + "settings": "Settings", + "@settings": { + "description": "Button to open the settings page." + }, + "noSettingsSelected": "Select a setting", + "@noSettingsSelected": { + "description": "Message when no setting is selected on tablets." + }, + "appearance": "Appearance", + "@appearance": { + "description": "Title of the setting group where the theme can be selected." + }, + "pushToken": "Push Token", + "@pushToken": { + "description": "Title for the settings block concerning the push tokens." + }, + "theme": "Theme", + "@theme": { + "description": "Title of the setting group where the theme can be selected." + }, + "lightTheme": "Light", + "@lightTheme": { + "description": "The light theme." + }, + "darkTheme": "Dark", + "@darkTheme": { + "description": "The dark theme." + }, + "autoTheme": "Auto", + "@autoTheme": { + "description": "The automatic theme applied by the system settings." + }, + "enablePolling": "Enable polling", + "@enablePolling": { + "description": "Name of the setting switch that enables polling." + }, + "requestPushChallengesPeriodically": "Request push challenges from the server periodically. Enable this if push challenges are not received normally.", + "@requestPushChallengesPeriodically": { + "description": "The description of the polling feature." + }, + "synchronizePushTokens": "Synchronize push tokens", + "@synchronizePushTokens": { + "description": "Title of synchronizing push tokens in settings." + }, + "synchronizesTokensWithServer": "Synchronizes tokens with the eduMFA server.", + "@synchronizesTokensWithServer": { + "description": "Description of synchronizing push tokens in settings." + }, + "sync": "Sync", + "@sync": { + "description": "Text of button that is used to synchronize push tokens." + }, + "synchronizingTokens": "Synchronizing tokens.", + "@synchronizingTokens": { + "description": "Title of the push synchronization dialog." + }, + "allTokensSynchronized": "All tokens are synchronized.", + "@allTokensSynchronized": { + "description": "Content of the push synchronization dialog. Signaling the user that everything worked." + }, + "synchronizationFailed": "Synchronization failed for the following tokens, please try again:", + "@synchronizationFailed": { + "description": "Headline for the list of tokens where the synchronization failed." + }, + "tokensDoNotSupportSynchronization": "The following tokens do not support synchronization and must be rolled out again:", + "@tokensDoNotSupportSynchronization": { + "description": "Informs the user that the following tokens cannot be synchronized as they do not support that." + }, + "errorRollOutFailed": "Rolling out token {name} failed.", + "@errorRollOutFailed": { + "description": "Tells the user that the token could not be rolled out, because a network error occurred.", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "statusCode": "Status code: {statusCode}", + "@statusCode": { + "description": "Tells the user the status code of the error.", + "placeholders": { + "statusCode": { + "example": "400" + } + } + }, + "errorSynchronizationNoNetworkConnection": "Synchronizing tokens failed, eduMFA server could not be reached.", + "@errorSynchronizationNoNetworkConnection": { + "description": "Tells the user that synchronizing the push tokens failed because the server could not be reached." + }, + "errorRollOutNoConnectionToServer": "Rolling out token {name} failed, the server could not be reached.", + "@errorRollOutNoConnectionToServer": { + "description": "Tells the user that the roll-out failed because the server could not be reached." + }, + "errorRollOutUnknownError": "An unknown error occurred. Roll-out not possible: {e}", + "@errorRollOutUnknownError": { + "description": "Tells the user that the roll-out failed because of an unknown error.", + "placeholders": { + "e": { + "example": "IllegalArgumentException on Line 5 ..." + } + } + }, + "rollingOut": "Rolling out", + "@rollingOut": { + "description": "Label that tells the user that the token is being rolled out." + }, + "unexpectedError": "An unexpected error occurred.", + "@unexpectedError": { + "description": "Title of page report mode." + }, + "pollingFailed": "Polling failed.", + "@pollingFailed": { + "description": "Tells the user that the polling failed." + }, + "pollingFailedFor": "Polling failed for {serial}", + "@pollingFailedFor": { + "description": "Tells the user that the polling failed.", + "placeholders": { + "serial": { + "example": "PUSH1234A" + } + } + }, + "noNetworkConnection": "No network connection.", + "@noNetworkConnection": { + "description": "Tells the user that there is no network connection." + }, + "connectionFailed": "Connection failed.", + "@connectionFailed": { + "description": "Tells the user that the connection failed." + }, + "checkYourNetwork": "Please check your network connection and try again.", + "@checkYourNetwork": { + "description": "Tells the user to check the network connection." + }, + "couldNotSignMessage": "Could not sign message.", + "@couldNotSignMessage": { + "description": "Tells the user that the message could not be signed." + }, + "language": "Language", + "@language": { + "description": "Title of language setting group." + }, + "biometricRequiredTitle": "Biometrics not setup", + "@biometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "biometricHint": "Authentication required", + "@biometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "biometricNotRecognized": "Not recognized. Try again.", + "@biometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "biometricSuccess": "Authentication successful", + "@biometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsRequiredTitle": "Device credentials not set up", + "@deviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "deviceCredentialsSetupDescription": "Setup device credentials in the device's settings", + "@deviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "signInTitle": "Authentication required", + "@signInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "goToSettingsButton": "Go to settings", + "@goToSettingsButton": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "goToSettingsDescription": "Authentication by credentials or biometrics is not set up on your device. Please set it up in the device's settings.", + "@goToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure device credentials or biometrics on their device." + }, + "lockOut": "Biometric authentication is disabled. Please lock and unlock your screen to enable it.", + "@lockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "authNotSupportedTitle": "Device credentials or biometrics required", + "@authNotSupportedTitle": { + "description": "Message shown as a dialog title that tells the user that device credentials or biometrics must be setup for this action." + }, + "authNotSupportedBody": "This action requires the device to be secured by credentials or biometrics.", + "@authNotSupportedBody": { + "description": "Message shown as a dialog body that tells the user that device credentials or biometrics must be setup for this action." + }, + "lock": "Lock", + "@lock": { + "description": "Description of button that locks a token." + }, + "lockDescription": "Lock a token with biometric authentication.", + "@lockDescription": { + "description": "Description of the lock option when editing a token." + }, + "search": "Search", + "@search": { + "description": "Placeholder text for search bar." + }, + "noResultTitle": "No tokens stored yet.", + "@noResultTitle": { + "description": "No tokens stored yet." + }, + "noResultText1": "Tap the ", + "@noResultText1": { + "description": "first no result text" + }, + "noResultText2": " button to get started!", + "@noResultText2": { + "description": "second no result text" + }, + "onBoardingText1": "Two-factor authentication\nmade easy", + "onBoardingTitle2": "Maximum Security", + "onBoardingText2": "Store tokens on your device securely\nProtected by your biometrics", + "onBoardingTitle3": "Visit us at Github", + "onBoardingText3": "This app is open source", + "send": "Send", + "sendErrorLogDescription": "A predefined email is created.\nIt contains information about the app, the error and the device.\nYou can edit the email before sending it.\nYou can see here how we use the information:", + "@sendErrorLogDescription": { + "description": "Explanation for the user what he will send." + }, + "showPrivacyPolicy": "Show privacy policy", + "errorMailBody": "The error log file is attached.\nYou can replace this text with additional information about the error.", + "@errorMailBody": { + "description": "Message for email body" + }, + "showDetails": "Show details", + "deleteLockedToken": "Please authenticate to delete the locked token.", + "editLockedToken": "Please authenticate to edit the locked token.", + "retryRollout": "Retry rollout", + "generatingRSAKeyPair": "Generating RSA key pair", + "@generatingRSAKeyPair": { + "description": "Message for the rollout process" + }, + "generatingRSAKeyPairFailed": "Generating RSA key pair failed", + "@generatingRSAKeyPairFailed": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKey": "Sending public RSA key", + "@sendingRSAPublicKey": { + "description": "Message for the rollout process" + }, + "sendingRSAPublicKeyFailed": "Sending public RSA key failed", + "@sendingRSAPublicKeyFailed": { + "description": "Message for the rollout process" + }, + "parsingResponse": "Parsing response", + "@parsingResponse": { + "description": "Message for the rollout process" + }, + "parsingResponseFailed": "Parsing response failed", + "@parsingResponseFailed": { + "description": "Message for the rollout process" + }, + "rolloutCompleted": "Rollout completed", + "@rolloutCompleted": { + "description": "Message for the rollout process" + }, + "authToAcceptPushRequest": "Please authenticate to accept the push request.", + "authToDeclinePushRequest": "Please authenticate to decline the push request.", + "pushRequestParseError": "Push request could not be parsed.", + "errorRollOutSSLHandshakeFailed": "SSL handshake failed. Roll-out not possible.", + "@errorRollOutSSLHandshakeFailed": { + "description": "Tells the user that the roll-out failed because the SSL handshake failed." + }, + "errorWhenPullingChallenges": "An error occured when polling for challenges of {name}", + "@errorWhenPullingChallenges": { + "description": "errorWhenPullingChallenges", + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "errorRollOutNotPossibleAnymore": "Rolling out this Token is not possible anymore.", + "errorTokenExpired": "The token {name} has expired.", + "@errorTokenExpired": { + "placeholders": { + "name": { + "example": "PUSH1234A" + } + } + }, + "cameraPermissionPermanentlyDenied": "Camera permission is permanently denied. Please grant camera permission in the system settings.", + "cameraPermissionPermanentlyDeniedButton": "Grant permission", + "decryptErrorTitle": "Decryption error", + "decryptErrorContent": "Unfortunately, the app was unable to decrypt your tokens. This indicates that the encryption key is broken. You can try again or delete the app data, which would delete the tokens in the app.", + "decryptErrorButtonDelete": "Delete", + "decryptErrorButtonSendError": "Send error", + "decryptErrorButtonRetry": "Retry", + "decryptErrorDeleteConfirmationContent": "Are you sure you want to delete the app data?", + "licenses": "Open Source Licenses", + "@licenses": { + "description": "Button to open the licenses page" + }, + "appVersion": "App Version", + "@appVersion": { + "description": "App version info in the About page" + }, + "privacyPolicy": "Privacy policy", + "@privacyPolicy": { + "description": "Button to open the privacy policy" + }, + "website": "Website", + "@website": { + "description": "Button to open the website" + }, + "github": "GitHub", + "@github": { + "description": "Button to open the GitHub page" + }, + "noMailAppTitle": "No mail app found", + "noMailAppDescription": "There is no e-mail app installed or initialised on this device, please try again when you are able to send an email message.", + "authenticationRequest": "Authentication request", + "requestInfo": "Sent by {issuer} for your account: \"{account}\"", + "@requestInfo": { + "description": "Description of the authentication request.", + "placeholders": { + "issuer": { + "example": "eduMFA" + }, + "account": { + "example": "GitHub" + } + } + } +} \ No newline at end of file