// 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 AppL10nEn extends AppL10n {
  AppL10nEn([String locale = 'en']) : super(locale);

  @override
  String get appTitle => 'Chanora';

  @override
  String get homeNotProductionReadyBanner =>
      'Beta build — voice in/out wired; not production ready.';

  @override
  String get fieldServerHost => 'Server address';

  @override
  String get fieldNickname => 'Nickname';

  @override
  String get fieldServerPassword => 'Server password';

  @override
  String get fieldServerPasswordHelp =>
      'Leave blank if the server does not require one.';

  @override
  String get fieldPassword => 'Password';

  @override
  String get fieldDisplayName => 'Display name';

  @override
  String get connectAction => 'Connect';

  @override
  String get disconnectAction => 'Leave server';

  @override
  String get disconnectConfirmTitle => 'Leave server?';

  @override
  String get disconnectConfirmBody =>
      'You will disconnect from the current server.';

  @override
  String get disconnectConfirmCancel => 'Stay';

  @override
  String get disconnectConfirmAction => 'Leave';

  @override
  String get refreshAction => 'Refresh';

  @override
  String get diagnosticsAction => 'Diagnostics';

  @override
  String get diagnosticsSaveAction => 'Save export';

  @override
  String get diagnosticsLiveUpdating => 'Live updating';

  @override
  String get shareAction => 'Share';

  @override
  String diagnosticsSaved(String path) {
    return 'Diagnostic export saved to $path';
  }

  @override
  String get aboutAction => 'About';

  @override
  String aboutVersion(String version) {
    return 'Version $version';
  }

  @override
  String get aboutAuthor => 'Author: Edison Jwa';

  @override
  String get aboutNonAffiliation =>
      'Chanora is independent and is not affiliated with, endorsed by, sponsored by, or officially associated with TeamSpeak.';

  @override
  String get aboutLicenseHeading => 'License';

  @override
  String get aboutLicenseBody =>
      'Chanora is dual-licensed under the Apache License, Version 2.0 or the MIT License, at your option. The full license texts ship as LICENSE-APACHE and LICENSE-MIT at the repository root.';

  @override
  String get aboutThirdPartyHeading => 'Third-party software';

  @override
  String get aboutThirdPartyBody =>
      'Chanora is built on tsclientlib, flutter_rust_bridge, platform-native audio backends, rusqlite, and the Flutter framework, among others. See the NOTICE file at the repository root for the current attribution list.';

  @override
  String get copyAction => 'Copy';

  @override
  String get closeAction => 'Close';

  @override
  String get openAction => 'Open';

  @override
  String get cancelAction => 'Cancel';

  @override
  String get retryAction => 'Retry';

  @override
  String get chatAction => 'Chat';

  @override
  String get chatCloseAction => 'Close chat';

  @override
  String get chatNewPrivateAction => 'New private chat';

  @override
  String get chatSearchClientsHint => 'Search clients...';

  @override
  String get chatDirectMessageAction => 'Private message';

  @override
  String get chatPokeAction => 'Poke';

  @override
  String get clientInfoAction => 'Info';

  @override
  String get startAudioAction => 'Start audio';

  @override
  String get pttHoldToTalk => 'Hold to talk';

  @override
  String get pttTransmitting => 'Transmitting…';

  @override
  String get pttHoldToTalkSemanticsHint =>
      'Press and hold to transmit voice; release to stop.';

  @override
  String pttCapabilityBadge(String level, String backend) {
    return 'PTT: $level ($backend)';
  }

  @override
  String pttCapabilityBoundKey(String key) {
    return 'Key: $key';
  }

  @override
  String get pttCapabilityExplainTitle => 'Push-to-Talk capability';

  @override
  String get pttCapabilityExplainFocusedHeading => 'Focused PTT';

  @override
  String get pttCapabilityExplainFocusedBody =>
      'Chanora is currently using Focused Push-to-Talk: the binding only fires while the Chanora window is focused. This is the universal fallback used on every platform when a global capture path is not available.';

  @override
  String get pttCapabilityExplainGoGlobalWindows =>
      'On Windows, Global PTT is engaged automatically once you bind a key. No additional permission is required.';

  @override
  String get pttCapabilityExplainGoGlobalMacos =>
      'On macOS, Global PTT requires Input Monitoring permission. Open System Settings → Privacy & Security → Input Monitoring, allow Chanora, then re-bind the key.';

  @override
  String get pttCapabilityExplainGoGlobalLinux =>
      'On Linux, Global PTT requires a GNOME-Wayland desktop with the GlobalShortcuts portal. Re-bind the key and accept the desktop\'s shortcut dialog when it appears.';

  @override
  String get pttCapabilityExplainGoGlobalIos =>
      'On iOS, Apple does not expose global hotkeys to apps. Chanora uses the on-screen Push-to-Talk button and only transmits while the app is in the foreground.';

  @override
  String get pttCapabilityExplainGoGlobalGeneric =>
      'Global PTT is not available in this environment. Focused PTT will keep working while the Chanora window has focus.';

  @override
  String get pttConfigureAction => 'Configure';

  @override
  String get pttConfigureTitle => 'Configure Push-to-Talk binding';

  @override
  String get pttConfigurePrompt =>
      'Press the key or mouse side button you want to use for Push-to-Talk.';

  @override
  String get pttConfigureWaiting => '(waiting for input…)';

  @override
  String get pttConfigureCaptured => 'Captured';

  @override
  String get pttConfigurePrivacyNote =>
      'Chanora never logs the actual key value. Only the input class (keyboard / mouse-side-button) and a platform-neutral label leave this dialog.';

  @override
  String get pttConfigureSaveAction => 'Save';

  @override
  String get pttConfigurePortalRedirect =>
      'Your desktop environment will open its own shortcut dialog. Pick the key you want to use for Push-to-Talk.';

  @override
  String get inputMuteAction => 'Mute mic';

  @override
  String get inputUnmuteAction => 'Unmute mic';

  @override
  String get outputMuteAction => 'Mute speaker';

  @override
  String get outputUnmuteAction => 'Unmute speaker';

  @override
  String get joinChannelAction => 'Join channel';

  @override
  String get leaveChannelAction => 'Leave channel';

  @override
  String get channelPasswordTitle => 'Channel password';

  @override
  String get bookmarksHeading => 'Bookmarks';

  @override
  String get bookmarksEmpty =>
      'No bookmarks yet. Enter a server above and tap \"Save bookmark\".';

  @override
  String get bookmarkAddAction => 'Save bookmark';

  @override
  String get bookmarkAddTitle => 'Save bookmark';

  @override
  String get bookmarkDeleteAction => 'Delete bookmark';

  @override
  String get statusIdle => 'Not connected';

  @override
  String get statusConnecting => 'Connecting…';

  @override
  String statusConnected(String server) {
    return 'Connected to $server';
  }

  @override
  String statusError(String message) {
    return 'Error: $message';
  }

  @override
  String statusReconnecting(int attempt, int delay) {
    return 'Reconnecting… attempt $attempt, in ${delay}s';
  }

  @override
  String statusConnectionLost(String reason) {
    return 'Connection lost: $reason';
  }

  @override
  String audioStatsLine(int sent, int received, String ptt) {
    return 'TX $sent frames • RX $received frames • Mic $ptt';
  }

  @override
  String get channelsHeading => 'Channels';

  @override
  String get clientsHeading => 'Online clients';

  @override
  String get serverWelcomeHeading => 'Server welcome message';

  @override
  String countChannelsAndClients(int channels, int clients) {
    return '$channels channels • $clients online';
  }

  @override
  String get voiceModePtt => 'PTT';

  @override
  String get voiceModeContinuous => 'Continuous';

  @override
  String get voiceModeVoiceActivity => 'Voice activity';

  @override
  String get voiceModeComingSoon => 'Coming soon';

  @override
  String get voiceModeLabel => 'Transmit mode';

  @override
  String get voiceReleaseTailLabel => 'Release tail';

  @override
  String get voiceReleaseTailHint => 'ms';

  @override
  String get voiceLeaveAction => 'Leave voice';

  @override
  String get voiceHardMuteLabel => 'Mute microphone';

  @override
  String get voiceOutputMuteLabel => 'Mute speakers';

  @override
  String get voiceSettingsTitle => 'Voice settings';

  @override
  String get voiceBindKeyAction => 'Bind PTT key';

  @override
  String get voiceBoundKeyLabel => 'Bound key';

  @override
  String get voicePttHoldHint => 'Hold the button';

  @override
  String get voiceMicOn => 'on';

  @override
  String get voiceMicOff => 'off';

  @override
  String get voiceSheetTitle => 'Voice';

  @override
  String get audioOutputLabel => 'Audio output';

  @override
  String get audioRouteSpeaker => 'Speaker';

  @override
  String get audioRouteReceiver => 'iPhone receiver';

  @override
  String get audioRouteBluetooth => 'Bluetooth';

  @override
  String get audioRouteWiredHeadset => 'Wired headset';

  @override
  String get audioRouteCarAudio => 'Car audio';

  @override
  String get audioRouteAirplay => 'AirPlay';

  @override
  String get audioRouteUnknown => 'Unknown';

  @override
  String get channelJoinAlreadyIn => 'Already in this channel.';

  @override
  String get channelJoinFailedPermission =>
      'Insufficient permission to join this channel.';

  @override
  String get channelJoinFailedPassword => 'Wrong channel password.';

  @override
  String get channelJoinFailedFull => 'Channel is full.';

  @override
  String get channelJoinFailedFamilyFull => 'Channel family limit reached.';

  @override
  String get channelJoinFailedPrivate => 'This channel is private.';

  @override
  String get channelJoinFailedTimeout =>
      'Could not join channel: the server didn\'t respond in time.';

  @override
  String get channelJoinFailedFlooding =>
      'Too many channel switches. Please wait a moment.';

  @override
  String channelJoinFailedGeneric(String message) {
    return 'Could not join channel: $message';
  }

  @override
  String get networkPermissionTitle => 'Network Permission Required';

  @override
  String get networkPermissionBody =>
      'Chanora needs permission to access the network. On macOS, go to System Settings → Privacy & Security → Local Network and enable Chanora, then try again.';

  @override
  String get networkPermissionOpenSettings => 'Open System Settings';

  @override
  String get microphonePermissionTitle => 'Microphone Permission Required';

  @override
  String get microphonePermissionBody =>
      'Chanora needs permission to access the microphone. On macOS, go to System Settings → Privacy & Security → Microphone and enable Chanora.';

  @override
  String get microphonePermissionRequiredForVoice =>
      'Microphone permission is required for voice transmission.';

  @override
  String get permissionGrantAction => 'Grant';

  @override
  String get startupPermissionsTitle => 'Permissions';

  @override
  String get startupPermissionsBody =>
      'Chanora requests microphone, Bluetooth headset, and notification permissions at startup so voice, headset routing, and the foreground session work correctly.';

  @override
  String get startupPermissionsNotNow => 'Not now';

  @override
  String get startupPermissionsAllow => 'Allow';

  @override
  String get audioRouteSystemDefault => 'System default';

  @override
  String get audioRouteEarpiece => 'Earpiece';

  @override
  String get audioRouteUsbHeadset => 'USB headset';

  @override
  String get audioRouteOtherDevice => 'Other device';

  @override
  String get audioRouteRefreshDevices => 'Refresh audio devices';

  @override
  String get audioRouteCannotSelect => 'This output cannot be selected.';

  @override
  String get audioRouteChangeFailed => 'Could not change audio output.';

  @override
  String get iosAudioInterrupted => 'Audio interrupted by system (phone call)';

  @override
  String get iosAudioResuming => 'Audio resuming';

  @override
  String get linkTrustTitle => 'Open external link?';

  @override
  String linkTrustBody(String domain) {
    return 'You are about to open a link to:\n\n$domain';
  }

  @override
  String get linkTrustRememberDomain => 'Trust all links from this domain';

  @override
  String get clientInfoFetchingProfile => 'Fetching TeamSpeak profile';

  @override
  String get clientInfoLoadingProfile => 'Loading profile...';

  @override
  String get clientInfoProfileUnavailable => 'Profile unavailable';

  @override
  String get clientInfoProfileUnavailableBody =>
      'The server did not return profile details for this client.';

  @override
  String get clientInfoIdentitySection => 'Identity';

  @override
  String get clientInfoMembershipSection => 'Membership';

  @override
  String get clientInfoConnectionSection => 'Connection';

  @override
  String get clientInfoHistorySection => 'History';

  @override
  String get clientInfoTransferSection => 'Transfer';

  @override
  String get clientInfoClientId => 'Client ID';

  @override
  String get clientInfoDatabaseId => 'Database ID';

  @override
  String get clientInfoUniqueId => 'Unique ID';

  @override
  String get clientInfoDescription => 'Description';

  @override
  String get clientInfoAvatar => 'Avatar';

  @override
  String get clientInfoServerGroups => 'Server groups';

  @override
  String get clientInfoChannelGroup => 'Channel group';

  @override
  String get clientInfoChannelId => 'Channel ID';

  @override
  String get clientInfoOnline => 'Online';

  @override
  String get clientInfoIdle => 'Idle';

  @override
  String get clientInfoPing => 'Ping';

  @override
  String get clientInfoPingDeviation => 'Ping deviation';

  @override
  String get clientInfoAddress => 'Address';

  @override
  String get clientInfoPacketLossClientToServer => 'Packet loss C->S';

  @override
  String get clientInfoPacketLossServerToClient => 'Packet loss S->C';

  @override
  String get clientInfoFirstConnected => 'First connected';

  @override
  String get clientInfoLastConnected => 'Last connected';

  @override
  String get clientInfoConnections => 'Connections';

  @override
  String get clientInfoDownloadedMonth => 'Downloaded this month';

  @override
  String get clientInfoUploadedMonth => 'Uploaded this month';

  @override
  String get clientInfoDownloadedTotal => 'Downloaded total';

  @override
  String get clientInfoUploadedTotal => 'Uploaded total';

  @override
  String get clientInfoUnknown => 'Unknown';

  @override
  String get clientInfoHidden => 'Hidden';

  @override
  String get clientInfoNone => 'None';

  @override
  String get pokeSnackBarClearAction => 'Clear';

  @override
  String get pokeSnackBarMoreIndicator => '...';

  @override
  String pokeSnackBarIncomingNoMessage(String sender) {
    return '$sender pokes you';
  }

  @override
  String pokeSnackBarIncomingWithMessage(String sender, String message) {
    return '$sender pokes you: $message';
  }

  @override
  String pokeHistorySelfNoMessage(String time, String target) {
    return '<$time> You poked \"$target\".';
  }

  @override
  String pokeHistorySelfWithMessage(
    String time,
    String target,
    String message,
  ) {
    return '<$time> You poked \"$target\" with message: $message';
  }

  @override
  String pokeHistoryIncomingNoMessage(String time, String sender) {
    return '<$time> \"$sender\" pokes you';
  }

  @override
  String pokeHistoryIncomingWithMessage(
    String time,
    String sender,
    String message,
  ) {
    return '<$time> \"$sender\" pokes you: $message';
  }

  @override
  String get clientVolumeAction => 'User Volume';

  @override
  String clientVolumeTitle(String name) {
    return '$name — volume';
  }

  @override
  String clientVolumeLabel(int percent) {
    return '$percent%';
  }

  @override
  String get clientVolumeMuteAction => 'Mute user';

  @override
  String get clientVolumeUnmuteAction => 'Unmute user';

  @override
  String get clientVolumeResetAction => 'Reset to default';

  @override
  String get permissionDenied => 'Permission Denied';

  @override
  String get voiceTalkPowerBlocked =>
      'Insufficient talk power to speak in this channel';
}
