// ignore: unused_import import 'package:intl/intl.dart' as intl; import 'app_localizations.dart'; // ignore_for_file: type=lint /// The translations for English (`en`). class AppLocalizationsEn extends AppLocalizations { AppLocalizationsEn([String locale = 'en']) : super(locale); @override String get servers => 'Servers'; @override String get terminal => 'Terminal'; @override String get files => 'Files'; @override String get monitor => 'Monitor'; @override String get diagnostics => 'Diagnostics'; @override String get settings => 'Settings'; @override String get addServer => 'Add server'; @override String get editServer => 'Edit server'; @override String get name => 'Name'; @override String get host => 'Hostname / IP address'; @override String get username => 'SSH username'; @override String get port => 'SSH port'; @override String get password => 'Password'; @override String get privateKey => 'Private key'; @override String get passphrase => 'Key passphrase (never saved)'; @override String get savePassword => 'Save SSH password in Vault'; @override String get chooseKey => 'Choose private key'; @override String get keyStored => 'Private key stored securely'; @override String get connect => 'Connect'; @override String get disconnect => 'Disconnect'; @override String get connecting => 'Connecting…'; @override String get connected => 'Connected'; @override String get disconnected => 'Disconnected'; @override String get reconnect => 'Reconnect'; @override String get search => 'Search servers'; @override String get emptyServers => 'Add your first server. Profiles stay on this device.'; @override String get selectServer => 'Connect to a server from Servers.'; @override String get save => 'Save'; @override String get cancel => 'Cancel'; @override String get delete => 'Delete'; @override String get duplicate => 'Duplicate'; @override String get edit => 'Edit'; @override String get confirmDelete => 'Delete this item? This action cannot be undone.'; @override String get confirmRename => 'Rename the selected remote item?'; @override String get hostTrustTitle => 'Verify server identity'; @override String get hostTrustBody => 'Compare this SHA-256 fingerprint through a separate trusted channel before trusting this server.'; @override String get trust => 'Trust this key'; @override String get hostChanged => 'SECURITY: The saved SSH host key has changed. Connection blocked. Verify the server independently.'; @override String get hostRejected => 'The SSH host key was not trusted.'; @override String get language => 'Language'; @override String get system => 'System'; @override String get light => 'Light'; @override String get dark => 'Dark'; @override String get theme => 'Appearance'; @override String get welcome => 'Welcome to SM Mobile'; @override String get localOnly => 'Direct SSH / SFTP. No account, cloud or telemetry.'; @override String get guidance => 'Operational safety and backups'; @override String get continueAction => 'Continue'; @override String get license => 'Software license'; @override String get consent => 'I accept CH-J Proprietary Software License 1.14. I acknowledge the risk of data loss or corruption and the need for appropriate backups before risky operations. The app does not guarantee that backups exist or are recoverable.'; @override String get accept => 'Accept and continue'; @override String get decline => 'Decline'; @override String get licenseDeclined => 'The license was declined. Server functions remain locked.'; @override String get vault => 'Local Vault'; @override String get createVault => 'Create secure Vault'; @override String get masterPassword => 'Master password'; @override String get confirmPassword => 'Confirm password'; @override String get vaultAdvice => 'Use 4–64 characters: a PIN, a word or a long passphrase. Longer passwords are much harder to guess. This password cannot be recovered; store it safely.'; @override String get unlock => 'Unlock'; @override String get lock => 'Lock Vault'; @override String get biometric => 'Biometric unlock (Face ID, Touch ID, fingerprint)'; @override String get unlockBiometric => 'Unlock with device security'; @override String get biometricReason => 'Unlock the SM Mobile Vault'; @override String get lockBackground => 'Lock when leaving the app'; @override String get idleTimeout => 'Auto-lock after inactivity (minutes)'; @override String get weakPassword => 'Use a master password with 4–64 characters.'; @override String get passwordMismatch => 'Passwords do not match.'; @override String get locked => 'Vault locked. Unlock it to continue.'; @override String get unlockFailed => 'Unable to unlock. Check your password or use the master-password fallback.'; @override String get storageError => 'Secure storage is unavailable or damaged. Your stored data was not reset.'; @override String get invalidProfile => 'Check the name, hostname/IP, username and port (1–65535).'; @override String get invalidImport => 'Invalid profile file. Use CH-J JSON format version 1, up to 5 MiB and 10,000 profiles.'; @override String get networkError => 'Network connection failed. Check the address, VPN and local-network permission.'; @override String get authFailed => 'SSH authentication failed. Check the username, password or private key.'; @override String get invalidKey => 'Invalid private key or passphrase.'; @override String get timeout => 'The operation timed out.'; @override String get operationFailed => 'Operation failed. Check the connection and permissions.'; @override String get permissionDenied => 'The server denied file access.'; @override String get fileError => 'SFTP operation failed. The item may be missing, the directory nonempty, or access denied.'; @override String get fileExists => 'The destination already exists. Choose another name.'; @override String get unsafePath => 'Unsafe path, unsupported file type or symbolic link. Symbolic links are not followed.'; @override String get cancelled => 'Transfer cancelled.'; @override String get upload => 'Upload file'; @override String get download => 'Download and save / share'; @override String get rename => 'Rename'; @override String get newFolder => 'New folder'; @override String get refresh => 'Refresh'; @override String get parent => 'Parent directory'; @override String get size => 'Size'; @override String get modified => 'Modified'; @override String get symlink => 'Symbolic link (blocked)'; @override String get emptyDirectory => 'This directory is empty.'; @override String get importProfiles => 'Import profiles'; @override String get exportProfiles => 'Export profiles'; @override String get profileTransfer => 'Import and export profiles'; @override String get importPreview => 'Review imported profiles'; @override String get importAdvice => 'Only connection details are imported. Assign authentication before connecting. Duplicate matching uses host, port and username.'; @override String get skipDuplicates => 'Skip duplicates'; @override String get updateDuplicates => 'Update duplicates (clear saved credentials)'; @override String get createDuplicates => 'Create separate copies'; @override String get importAction => 'Import reviewed profiles'; @override String get done => 'Done'; @override String get copy => 'Copy selection'; @override String get paste => 'Paste'; @override String get keyboard => 'Show keyboard'; @override String get hideKeyboard => 'Hide keyboard'; @override String get monitorInterval => 'Refresh interval (seconds)'; @override String get cpu => 'CPU'; @override String get ram => 'RAM'; @override String get disk => 'Root filesystem'; @override String get uptime => 'Uptime'; @override String get load => 'Load average (1 / 5 / 15 min)'; @override String get release => 'OS version'; @override String get rtt => 'SSH command response time'; @override String get handshake => 'SSH connection and authentication'; @override String get unsupportedSystem => 'Monitoring requires a Linux server with /proc and standard POSIX utilities.'; @override String get runDiagnostics => 'Run test'; @override String get icmpNote => 'Ping and traceroute send real ICMP / ICMPv6 echo packets directly from this device, without a server or cloud. TCP connect measures connection setup to the selected port and is not a ping.'; @override String get dnsResults => 'DNS addresses (not saved to profiles)'; @override String get tcpConnect => 'TCP connection time'; @override String get backgroundNote => 'Monitoring stops outside this screen and while the app is inactive. The OS may suspend SSH sessions in the background.'; @override String get componentLicenses => 'Third-party licenses'; @override String get clearPassword => 'Remove saved password'; @override String get biometricUnavailable => 'Biometrics are not available. Enroll Face ID, Touch ID or a strong fingerprint/face biometric first.'; @override String get licenseError => 'License or guidance could not be loaded. Application access is blocked.'; @override String get loadNote => 'Load average is the average number of waiting processes, not a CPU percentage.'; @override String get addressFamily => 'IP version'; @override String get automatic => 'Automatic'; @override String get testType => 'Test'; @override String get target => 'Target'; @override String get duration => 'Duration'; @override String get resultOk => 'Succeeded'; @override String get resultFailed => 'Failed'; @override String get dnsLookup => 'DNS lookup'; @override String get tcpConnectTest => 'TCP connect'; @override String get notTested => 'Not run'; @override String get commandRtt => 'SSH command response'; @override String get sshLatency => 'SSH response times'; @override String uptimeDays(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: '$count days', one: '1 day', ); return '$_temp0'; } @override String uptimeHours(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: '$count hours', one: '1 hour', ); return '$_temp0'; } @override String uptimeMinutes(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: '$count minutes', one: '1 minute', ); return '$_temp0'; } @override String usedOf(String used, String total) { return '$used of $total'; } @override String autoRefresh(String seconds) { return 'Automatically every $seconds s'; } @override String updatedAt(String time) { return 'Updated $time'; } @override String get ping => 'Ping (ICMP)'; @override String get traceroute => 'Traceroute'; @override String get packetCount => 'Packet count'; @override String get intervalSeconds => 'Interval (s)'; @override String get timeoutSeconds => 'Timeout (s)'; @override String get payloadBytes => 'Payload size (B)'; @override String get maxHops => 'Max hops'; @override String get probesPerHop => 'Probes per hop'; @override String get testOptions => 'Test options'; @override String get stop => 'Stop'; @override String get packetsSent => 'Sent'; @override String get packetsReceived => 'Received'; @override String get packetLoss => 'Loss'; @override String get rttStats => 'min / avg / max'; @override String get hop => 'Hop'; @override String get traceReached => 'Destination reached'; @override String get traceUnreachable => 'Destination unreachable (ICMP error, see the code)'; @override String get traceLimit => 'Hop limit reached without a reply from the destination'; @override String get stoppedByUser => 'Stopped by user'; @override String get timeoutStar => '* = no reply within the timeout. It does not mean the node does not exist; many routers do not answer ICMP.'; @override String get icmpNotPermitted => 'The system does not allow an unprivileged ICMP socket, so ping and traceroute cannot run.'; @override String get icmpUnsupported => 'ICMP is not available on this device.'; @override String get invalidSetting => 'Invalid value in the test options.'; @override String get replyFrom => 'Reply'; @override String get probeTimeout => 'No reply'; @override String get probeUnreachable => 'Unreachable'; @override String get probeSendFailed => 'Send failed'; @override String get protocolUsed => 'Protocol'; @override String get resolvedAddress => 'Address used'; @override String get passwordLength => 'The master password must have 4–64 characters.'; @override String get biometricNote => 'Only enrolled biometrics release the Vault key. The device passcode cannot open the Vault; without biometrics use the master password.'; @override String get usePassword => 'Use master password'; @override String get showPassword => 'Show password'; @override String get hidePassword => 'Hide password'; @override String get strength0 => 'Very weak'; @override String get strength1 => 'Weak'; @override String get strength2 => 'Fair'; @override String get strength3 => 'Good'; @override String get strength4 => 'Strong'; @override String get passwordStrength => 'Password strength'; @override String get shortPasswordWarning => 'Short passwords and PINs are allowed but easier to guess if someone obtains a copy of this device\'s data. Encryption is not weakened.'; @override String get changePassword => 'Change Vault password'; @override String get currentPassword => 'Current master password'; @override String get newPassword => 'New master password'; @override String get confirmNewPassword => 'Confirm new password'; @override String get passwordChanged => 'The Vault password was changed. All servers, credentials and keys are still available.'; @override String get passwordChangedBiometricOff => 'The password was changed, but biometric unlock could not be renewed and was turned off. Turn it on again in Settings.'; @override String get wrongCurrentPassword => 'The current password is not correct.'; @override String get samePassword => 'The new password is the same as the current one.'; @override String get biometricCancelled => 'Biometric check cancelled. Enter the master password or try again.'; @override String get biometricFailed => 'Biometric check failed. Enter the master password.'; @override String get biometricLockout => 'Biometrics are temporarily locked by the system after too many attempts. Enter the master password.'; @override String get biometricInvalid => 'The biometric key is no longer valid (biometrics on this device changed). Unlock with the master password and turn biometric unlock on again.'; @override String get biometricUpgrade => 'Biometric unlock was improved and no longer accepts the device passcode. Unlock once with the master password to renew it.'; @override String get biometricReenable => 'Biometric unlock is off. Turn it on again in Settings.'; @override String get tryBiometricAgain => 'Try biometrics again'; @override String get securitySection => 'Security'; @override String get kdfInfo => 'Key derivation'; @override String get tcpPing => 'TCP ping'; @override String get icmpPing => 'ICMP ping'; @override String get tcpPort => 'TCP port'; @override String get tcpNote => 'TCP ping measures how long the TCP connection setup (SYN → SYN-ACK) to a port takes. It is not an ICMP echo: a closed port answers with a reset (refused), a filtered one usually not at all (timeout).'; @override String get icmpPingNote => 'Real ICMP / ICMPv6 echo request and reply sent directly from this device, without a server or cloud. Many hosts and firewalls do not answer ICMP.'; @override String get traceNote => 'Traceroute sends probes with increasing TTL / hop limit directly from this device. Routers that do not answer are shown as * and the trace continues.'; @override String get attemptCount => 'Number of attempts'; @override String get customCount => 'Custom number'; @override String get customValue => 'Custom…'; @override String get continuous => 'Continuous until stopped'; @override String get ttlHopLimit => 'TTL / hop limit'; @override String get systemDefault => 'System default'; @override String get dontFragment => 'Don\'t fragment (DF)'; @override String get traceMethod => 'Probe method'; @override String get tcpTraceUnsupported => 'Not available on Android: without root privileges the system does not tell apps which router answered a TCP probe.'; @override String get firstTtl => 'First TTL / hop limit'; @override String get probeInterval => 'Pause between probes (s)'; @override String get tracePort => 'Destination port'; @override String get repetitions => 'Repetitions'; @override String get reverseDns => 'Reverse DNS (host names)'; @override String get resolveAddresses => 'Find addresses and choose one'; @override String get noAddressFamily => 'No address of this IP version (no A / AAAA record).'; @override String get literalOtherFamily => 'The target is an address of the other IP version.'; @override String get dnsFailed => 'DNS lookup failed. Check the name and the network.'; @override String get outcomeOk => 'OK'; @override String get outcomeTimeout => 'Timeout'; @override String get outcomeRefused => 'Refused (TCP reset)'; @override String get outcomeUnreachable => 'Unreachable'; @override String get outcomeTtlExceeded => 'TTL exceeded'; @override String get outcomeError => 'Network error'; @override String get attempts => 'Attempts'; @override String get successful => 'Successful'; @override String get failedCount => 'Failed'; @override String get successRate => 'Success'; @override String get rttMin => 'Min'; @override String get rttMax => 'Max'; @override String get rttAvg => 'Average'; @override String get rttMedian => 'Median'; @override String get rttStddev => 'Std. deviation'; @override String get jitter => 'Jitter'; @override String get elapsedTime => 'Duration'; @override String get statsNote => 'RTT statistics use successful attempts only; failures are counted separately. Std. deviation: population. Jitter: mean absolute difference between consecutive successful RTTs. Median and P95: nearest rank; P95 from 20 successful samples. Very long runs keep the newest 5000 attempts in the list and compute median/P95 from the newest 10000.'; @override String get chartTitle => 'RTT over time'; @override String get chartFailures => 'Failed attempt'; @override String get olderOmitted => 'Older attempts not shown (statistics still include them)'; @override String get copyResults => 'Copy'; @override String get exportResults => 'Export'; @override String get clearResults => 'Clear'; @override String get copied => 'Copied to the clipboard.'; @override String get saveToDevice => 'Save to device'; @override String get shareFile => 'Share'; @override String get savedToDevice => 'Saved.'; @override String get combinedSummary => 'IPv4 and IPv6 overview'; @override String get statusColumn => 'Status'; @override String get statusRunning => 'Running…'; @override String get statusFinished => 'Finished'; @override String get compareRuns => 'Compare with the previous measurement'; @override String get previousRun => 'Previous'; @override String get pathChanged => 'Route changed'; @override String get tcpOpenNote => 'Port open: the destination answered with SYN-ACK.'; @override String get tcpRefusedNote => 'Port closed: the destination answered with a reset; it was reached.'; @override String get answeredOtherAddress => 'The final answer came from another address than the target (anycast or a filtering device).'; @override String get icmpCodeLegend => '!N network, !H host, !P protocol, !F fragmentation needed, !X administratively prohibited (ICMP destination unreachable).'; @override String get messageTooLong => 'Packet too large to send without fragmentation.'; @override String get ttlUnsupported => 'The system did not accept this TTL / hop limit.'; @override String get dontFragmentUnsupported => 'This platform does not allow setting Don\'t Fragment for ICMP.'; @override String get unsupportedPlatform => 'Not available on this platform.'; @override String get archiveDamaged => 'The archive is damaged or not in a supported format.'; @override String get archiveListOnly => 'Contents are only listed; nothing is extracted or run.'; @override String get archiveTooLarge => 'The archive is too large to list on this device.'; @override String get archiveUnsupported => 'Listing this archive format is not supported'; @override String get atomicNotPossible => 'A temporary file cannot be created in this folder, so the file cannot be replaced safely in one step.'; @override String get ownerWouldChange => 'Saving through a temporary file would change the owner of this file on the server.'; @override String get inPlaceAdvice => 'You can overwrite the file directly instead. Owner and permissions stay, but if the connection drops during the write, the file may be left incomplete.'; @override String get binaryFile => 'This looks like a binary file.'; @override String get chooseEncodingAdvice => 'The encoding could not be detected. Choose the one the file was written in; nothing is converted until you save.'; @override String get unknownEncoding => 'Unknown text encoding'; @override String get wrongEncoding => 'The file is not valid in the chosen encoding.'; @override String get reopenEncoding => 'Reopen with encoding…'; @override String get saveEncoding => 'Save with encoding'; @override String get openAsTextWith => 'Open as text with encoding…'; @override String get unencodableTitle => 'Characters cannot be saved in this encoding'; @override String get unencodableBody => 'Some characters do not exist in the file\'s encoding. Continue to save as UTF-8 instead; Cancel keeps the text unsaved.'; @override String get mixedLineBreaks => 'This file mixes line endings (LF/CRLF/CR). On save they all become the shown type; change it in the status bar.'; @override String get notExactRoundTrip => 'This file would not be saved byte-for-byte as it was read. Check the encoding before saving.'; @override String get close => 'Close'; @override String get line => 'Line'; @override String get column => 'Column'; @override String get lineShort => 'Ln'; @override String get columnShort => 'Col'; @override String get conflictAdvice => 'The file was changed elsewhere after you opened it. Overwrite replaces that change with your text.'; @override String get remoteChanged => 'The file on the server has changed'; @override String get remoteDeleted => 'The file on the server no longer exists'; @override String get documentChanged => 'The file on the device has changed'; @override String get connectToOpen => 'Connect to that server first to open this file.'; @override String get connectToSave => 'Not connected to the file\'s server. Your text stays here.'; @override String get offlineAdvice => 'Nothing was lost. Reconnect and save again, or keep a copy on this device now.'; @override String get saveCopyToDevice => 'Save a copy on the device'; @override String get cryptoNote => 'Basic information only. Private key material is never displayed or exported here.'; @override String get cryptoUnreadable => 'No certificate or key could be read.'; @override String get privateKeyHidden => 'Contains a private key. Keep this file secret.'; @override String get remoteFiles => 'Server (SFTP)'; @override String get deviceFiles => 'Device'; @override String get recentFiles => 'Recent'; @override String get favoriteFiles => 'Favorites'; @override String get deviceFilesNote => 'Files are opened through the system file picker (Files / storage providers). SM Mobile only accesses what you choose.'; @override String get openFiles => 'Open files'; @override String get openFolder => 'Open folder'; @override String get openedFiles => 'Opened files'; @override String get newFile => 'New file'; @override String get open => 'Open'; @override String get openAsText => 'Open as text'; @override String get openInSystemViewer => 'Open in system viewer'; @override String get systemViewerTitle => 'Shown by the system viewer'; @override String get systemViewerIos => 'Quick Look shows this file inside SM Mobile from a private temporary copy. It cannot be edited here.'; @override String get systemViewerAndroid => 'An app on this device that you choose opens a private temporary copy. It cannot be edited here.'; @override String get noViewer => 'No app on this device can show this file.'; @override String get draftsRecovered => 'Unsaved changes were kept when the Vault locked'; @override String get discardDrafts => 'Discard all recovered drafts?'; @override String get discard => 'Discard'; @override String get discardChanges => 'Discard unsaved changes?'; @override String get unsavedChanges => 'Unsaved changes'; @override String get editorSettings => 'Editor settings'; @override String get fontSize => 'Font size'; @override String get wordWrap => 'Wrap lines'; @override String get lineNumbers => 'Line numbers and folding'; @override String get indentWithTabs => 'Indent with tabs'; @override String get indentWidth => 'Indent width'; @override String get syntaxHighlight => 'Syntax highlighting'; @override String get largeFileHighlight => 'Off by default for files over 1 MB to keep editing smooth.'; @override String get syntax => 'Syntax'; @override String get noGrammar => 'No highlighting grammar available (plain text)'; @override String get tabs => 'Tabs'; @override String get spaces => 'Spaces'; @override String get readOnly => 'Read-only'; @override String get readOnlyDevice => 'This file can only be read here (the storage provider does not allow writing). Use Save as to keep your changes.'; @override String get readOnlyRemote => 'This file is read-only.'; @override String get modifiedState => 'Modified'; @override String get findHint => 'Find'; @override String get replaceHint => 'Replace with'; @override String get invalidRegex => 'Invalid regular expression'; @override String get matchCase => 'Match case'; @override String get regularExpression => 'Regular expression'; @override String get previousMatch => 'Previous match'; @override String get nextMatch => 'Next match'; @override String get replace => 'Replace'; @override String get replaceAll => 'Replace all'; @override String get goToLine => 'Go to line'; @override String get lineBreaks => 'Line endings'; @override String get undo => 'Undo'; @override String get redo => 'Redo'; @override String get selectAll => 'Select all'; @override String get reload => 'Reload from source'; @override String get reloadDiscard => 'Reload (discard mine)'; @override String get overwrite => 'Overwrite'; @override String get overwriteExisting => 'A file with this name exists. Overwrite it?'; @override String get saveAs => 'Save as…'; @override String get saveAsRequired => 'Choose where to save this new file.'; @override String get saveToServer => 'Save to the server'; @override String get remotePath => 'Path on the server'; @override String get saved => 'Saved.'; @override String get validate => 'Check syntax'; @override String get validOk => 'No syntax errors found.'; @override String get validationProblem => 'Syntax error'; @override String get formatDocument => 'Format document'; @override String get formatAdvice => 'Rewrites indentation and layout (JSON numbers may be written differently). The change can be undone.'; @override String get formatFailed => 'The document cannot be formatted until its syntax errors are fixed.'; @override String get fileTooLarge => 'The file is too large to open here.'; @override String get filesCount => 'files'; @override String get uncompressed => 'unpacked'; @override String get imageUnsupported => 'This image format cannot be shown on this device.'; @override String get svgSafe => 'SVG is drawn as a static picture: scripts, links and external resources are not used.'; @override String get notebookUnreadable => 'The notebook cannot be read; open it as JSON.'; @override String get uploadToServer => 'Copy to the server'; @override String get uploadedTo => 'Copied to'; @override String get addFavorite => 'Add to favorites'; @override String get removeFavorite => 'Remove from favorites'; @override String get removeFromList => 'Remove from list'; @override String get noFavorites => 'No favorite files yet.'; @override String get noRecentFiles => 'No recently opened files.'; @override String get documentStale => 'Access to this file has expired. Open it again from the file picker.'; @override String get fileNotFound => 'The file was not found.'; @override String get noSpace => 'Not enough free storage space.'; @override String get readOnlyError => 'Writing is not allowed here.'; }