use std::env;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Language {
English,
Spanish,
}
impl Language {
pub fn detect() -> Self {
for var in &["LANG", "LC_ALL", "LC_MESSAGES"] {
if let Ok(val) = env::var(var) {
if val.to_lowercase().starts_with("es") {
return Language::Spanish;
}
}
}
Language::English
}
}
pub fn translate(key: &'static str, lang: Language) -> &'static str {
match lang {
Language::English => match key {
"Processes" => "Processes",
"Containers" => "Containers",
"Network" => "Network",
"PID" => "PID",
"Process" => "Process",
"Status" => "Status",
"CPU" => "CPU",
"Memory" => "Memory",
"RAM" => "RAM",
"Disk R" => "Disk R",
"Disk W" => "Disk W",
"Disk" => "Disk",
"Uptime" => "Uptime",
"User" => "User",
"Threads" => "Threads",
"Path" => "Path",
"Directory" => "Directory",
"Command" => "Command",
"Image" => "Image",
"State" => "State",
"Net Tot" => "Net Tot",
"Disk Tot" => "Disk Tot",
"Ports" => "Ports",
"Volumes" => "Volumes",
"Networks" => "Networks",
"Env Vars" => "Env Vars",
"Back" => "Back",
"Logs" => "Logs",
"Restart" => "Restart",
"Stop" => "Stop",
"History" => "History",
"Range" => "Range",
"Confirm" => "Confirm",
"Cancel" => "Cancel",
"running" => "running",
"sleeping" => "sleeping",
"stopped" => "stopped",
"zombie" => "zombie",
"other" => "other",
"all" => "all",
"YesNoConfirmRestart" => "Are you sure you want to restart this container?",
"YesNoConfirmStop" => "Are you sure you want to stop this container?",
"NoContainers" => "No active containers",
"NoDisks" => "No disks detected.",
"SelectDisk" => "Select disk device",
"SelectNIC" => "Select network interface",
"AllNICs" => "All",
"Summation" => "(summation)",
"Selected" => "selected",
"NicSelected" => "selected",
"SumOfNICs" => "sum of interfaces",
"Active" => "active",
"Inactive" => "inactive",
"TerminalTooSmall" => "⚠ Terminal too small (minimum 80×24)",
"Refresh" => "Refresh",
"Help" => "Help",
"General Navigation" => "General Navigation",
"Quit rtop" => "Quit rtop",
"Quit always" => "Quit (always)",
"Change tab" => "Change tab (Processes ↔ Containers)",
"Show hide help" => "Show / hide this help",
"Close modal exit detail" => "Close modal / exit detail view",
"System" => "System",
"Decrease refresh interval" => "Decrease refresh interval",
"Increase refresh interval" => "Increase refresh interval",
"Select disk" => "Select disk selector",
"Select network interface" => "Select network interface selector",
"Navigate list" => "Navigate list",
"View process detail" => "View process detail",
"View container detail" => "View container detail",
"Toggle filter by name" => "Toggle filter by name",
"Clear filter" => "Clear filter",
"Sort by CPU" => "Sort by CPU",
"Sort by Memory" => "Sort by Memory",
"Sort by disk read" => "Sort by disk read",
"Sort by disk write" => "Sort by disk write",
"View container logs" => "View container logs",
"Restart container" => "Restart container",
"Stop container" => "Stop container",
"Container logs" => "Container logs",
"Scroll logs" => "Scroll logs",
"Toggle auto-scroll" => "Toggle auto-scroll",
"Back to container detail" => "Back to container detail",
"CPU RAM" => "CPU · RAM",
"Disk Net IO" => "Disk · Net (I/O)",
"Pressure PSI" => "Pressure (PSI)",
"Help Shortcuts" => " Help — Keyboard Shortcuts [F1 / Esc to close] ",
"Version" => "Version rtop 0.1",
"Filter" => "Filter",
"PressSlashToFilter" => "filter",
"PressFToStatus" => "status",
"Navigate" => "navigate",
"EnterDetail" => "detail",
"CPU History" => "CPU History",
"Memory History" => "Memory History",
"Disk History" => "Disk History",
"Net History" => "Net History",
"Last" => "Last",
"Clean filter" => "ESC clear",
"All" => "All",
"HelpShort" => "F1 Help",
"ProcessDetailHeader" => "Process detail:",
"ContainerDetailHeader" => "Container:",
"UserLabel" => "User",
"StatusLabel" => "Status",
"ThreadsLabel" => "Threads",
"UptimeLabel" => "Uptime",
"PathLabel" => "Path (Exe)",
"DirectoryLabel" => "Directory",
"CommandLabel" => "Command",
"CPUHistory" => "CPU History",
"CPULabel" => "CPU",
"MemHistory" => "Memory History",
"MemLabel" => "Memory",
"DiskReadHistory" => "Disk Read History",
"DiskReadLabel" => "Disk Read",
"DiskWriteHistory" => "Disk Write History",
"DiskWriteLabel" => "Disk Write",
"LastLabel" => "Last",
"BackLabel" => "Back",
"HistoryLabel" => "History",
"RangeLabel" => "Range",
"PortLabel" => "Ports",
"VolumeLabel" => "Volumes",
"NetworkLabel" => "Networks",
"EnvVarsLabel" => "Environment variables",
"RestartLabel" => "restart",
"StopLabel" => "stop",
_ => key,
},
Language::Spanish => match key {
"Processes" => "Procesos",
"Containers" => "Contenedores",
"Network" => "Red",
"PID" => "PID",
"Process" => "Proceso",
"Status" => "Estado",
"CPU" => "CPU",
"Memory" => "Memoria",
"RAM" => "RAM",
"Disk R" => "Disco R",
"Disk W" => "Disco W",
"Disk" => "Disco",
"Uptime" => "Uptime",
"User" => "Usuario",
"Threads" => "Threads",
"Path" => "Ruta (Exe)",
"Directory" => "Directorio",
"Command" => "Comando",
"Image" => "Imagen",
"State" => "Estado",
"Net Tot" => "Red Tot",
"Disk Tot" => "Disk Tot",
"Ports" => "Puertos",
"Volumes" => "Volúmenes",
"Networks" => "Redes",
"Env Vars" => "Variables de entorno",
"Back" => "Volver",
"Logs" => "Logs",
"Restart" => "Reiniciar",
"Stop" => "Detener",
"History" => "Historial",
"Range" => "Rango",
"Confirm" => "Confirmar",
"Cancel" => "Cancelar",
"running" => "ejecutando",
"sleeping" => "durmiendo",
"stopped" => "parado",
"zombie" => "zombi",
"other" => "otro",
"all" => "todos",
"YesNoConfirmRestart" => "¿Seguro que quieres reiniciar este contenedor?",
"YesNoConfirmStop" => "¿Seguro que quieres detener este contenedor?",
"NoContainers" => "Sin contenedores activos",
"NoDisks" => "No se detectaron dispositivos.",
"SelectDisk" => "Seleccionar dispositivo de disco",
"SelectNIC" => "Seleccionar interfaz de red",
"AllNICs" => "Todas",
"Summation" => "(sumatoria)",
"Selected" => "seleccionado",
"NicSelected" => "seleccionada",
"SumOfNICs" => "suma de interfaces",
"Active" => "activa",
"Inactive" => "inactiva",
"TerminalTooSmall" => "⚠ Terminal muy pequeña (mínimo 80×24)",
"Refresh" => "Refresco",
"Help" => "Ayuda",
"General Navigation" => "Navegación general",
"Quit rtop" => "Salir de rtop",
"Quit always" => "Salir (siempre)",
"Change tab" => "Cambiar pestaña (Procesos ↔ Contenedores)",
"Show hide help" => "Mostrar / cerrar esta ayuda",
"Close modal exit detail" => "Cerrar modal / salir de vista de detalle",
"System" => "Sistema",
"Decrease refresh interval" => "Disminuir intervalo de refresco",
"Increase refresh interval" => "Aumentar intervalo de refresco",
"Select disk" => "Selector de disco",
"Select network interface" => "Selector de interfaz de red",
"Navigate list" => "Navegar lista",
"View process detail" => "Ver detalle del proceso",
"View container detail" => "Ver detalle del contenedor",
"Toggle filter by name" => "Activar filtro por nombre",
"Clear filter" => "Limpiar filtro",
"Sort by CPU" => "Ordenar por CPU",
"Sort by Memory" => "Ordenar por Memoria",
"Sort by disk read" => "Ordenar por Lectura de disco",
"Sort by disk write" => "Ordenar por Escritura de disco",
"View container logs" => "Ver logs del contenedor",
"Restart container" => "Reiniciar contenedor",
"Stop container" => "Parar contenedor",
"Container logs" => "Logs de contenedor",
"Scroll logs" => "Desplazar logs",
"Toggle auto-scroll" => "Activar / desactivar seguimiento automático",
"Back to container detail" => "Volver al detalle del contenedor",
"CPU RAM" => "CPU · RAM",
"Disk Net IO" => "Disco · Red (I/O)",
"Pressure PSI" => "Presión (PSI)",
"Help Shortcuts" => " Ayuda — Atajos de teclado [F1 / Esc para cerrar] ",
"Version" => "Versión rtop 0.1",
"Filter" => "Filtro",
"PressSlashToFilter" => "filtrar",
"PressFToStatus" => "estado",
"Navigate" => "navegar",
"EnterDetail" => "detalle",
"CPU History" => "CPU Historial",
"Memory History" => "Memoria Historial",
"Disk History" => "Disco Historial",
"Net History" => "Red Historial",
"Last" => "Último",
"Clean filter" => "ESC limpiar",
"All" => "Todos",
"HelpShort" => "F1 Ayuda",
"ProcessDetailHeader" => "Detalle de proceso:",
"ContainerDetailHeader" => "Contenedor:",
"UserLabel" => "Usuario",
"StatusLabel" => "Estado",
"ThreadsLabel" => "Threads",
"UptimeLabel" => "Uptime",
"PathLabel" => "Ruta (Exe)",
"DirectoryLabel" => "Directorio",
"CommandLabel" => "Comando",
"CPUHistory" => "CPU Historial",
"CPULabel" => "CPU",
"MemHistory" => "Memoria Historial",
"MemLabel" => "Memoria",
"DiskReadHistory" => "Disco Lectura Historial",
"DiskReadLabel" => "Disco Lectura",
"DiskWriteHistory" => "Disco Escritura Historial",
"DiskWriteLabel" => "Disco Escritura",
"LastLabel" => "Último",
"BackLabel" => "Volver",
"HistoryLabel" => "Historial",
"RangeLabel" => "Rango",
"PortLabel" => "Puertos",
"VolumeLabel" => "Volúmenes",
"NetworkLabel" => "Redes",
"EnvVarsLabel" => "Variables de entorno",
"RestartLabel" => "reiniciar",
"StopLabel" => "detener",
_ => key,
},
}
}