use super::Strings;
use crate::providers::ProviderId;
pub const STRINGS: Strings = Strings {
search: "Buscar",
downloads: "Descargas",
settings: "Ajustes",
library: "Biblioteca",
nothing_saved_yet: "Aún no hay nada guardado",
new_playlist_name: "Nombre de la nueva lista",
queue: "Cola",
recently_played: "Reproducido recientemente",
now_playing_from: "Reproduciendo desde",
now_playing: "Reproduciendo",
up_next: "A continuación",
no_track_playing: "No se está reproduciendo ninguna pista",
no_more_tracks_in_queue: "No hay más pistas en la cola",
no_recently_played_tracks: "No hay pistas reproducidas recientemente",
not_playing: "No se está reproduciendo",
no_tracks_found: "No se encontraron pistas",
searching: "Buscando…",
loading: "Cargando…",
load_more: "Cargar más",
no_results_found: "No se encontraron resultados",
no_recent_searches: "No hay búsquedas recientes",
generating_radio: "Generando radio…",
not_an_artist_page: "No es una página de artista",
provided_by: "Ofrecido por",
retry: "Reintentar",
nothing_here: "No hay nada aquí",
most_popular_songs: "Canciones más populares",
albums: "Álbumes",
playlists: "Listas de reproducción",
fans_also_like: "A los fans también les gusta",
looking_up_lyrics: "Buscando la letra…",
play_a_track_for_lyrics: "Reproduce una pista para ver su letra.",
lyrics_selectable: "Seleccionable",
lyrics_synced: "Sincronizada",
lyrics_plain: "Simple",
playlist_not_found: "Lista de reproducción no encontrada",
add_local: "Añadir local",
downloaded_tracks: "Pistas descargadas",
no_downloaded_tracks: "No hay pistas descargadas",
ctx_play: "Reproducir",
ctx_play_local: "Reproducir local",
ctx_edit: "Editar",
ctx_go_to_artist: "Ir al artista",
ctx_add_to_playlist: "Añadir a la lista",
ctx_download: "Descargar",
ctx_song_radio: "Radio de la canción",
ctx_artist_radio: "Radio del artista",
ctx_remove_from_queue: "Quitar de la cola",
ctx_remove_from_playlist: "Quitar de la lista",
sub_play_via: "Reproducir vía",
sub_download_from: "Descargar desde",
sub_via: "Vía",
sub_on: "En",
via_search_suffix: "(búsqueda)",
current: "(actual)",
select: "seleccionar",
find: "Buscar",
finding: "Buscando…",
found_on: |p| format!("Encontrado en {p}"),
not_linked: "Sin enlazar",
providers: "Proveedores",
no_provider_data: "Esta pista no tiene datos de proveedor.",
save: "Guardar",
cancel: "Cancelar",
edit_track: "Editar pista",
lbl_title: "Título",
lbl_artist: "Artista",
ph_track_title: "Título de la pista",
ph_track_artist: "Artista de la pista",
delete: "Eliminar",
delete_playlist_q: "¿Eliminar la lista?",
tracks_wont_be_deleted: "Las pistas no se eliminarán.",
lbl_id: "Id",
lbl_url: "Url",
lbl_artist_id: "Id del artista",
lbl_duration_secs: "Duración (en segundos)",
lbl_thumbnail: "Miniatura",
lbl_album: "Álbum",
sec_playback: "Reproducción",
sec_storage: "Almacenamiento",
sec_history: "Historial",
sec_appearance: "Apariencia",
sec_dependencies: "Dependencias",
theme_lbl: "Tema",
language_lbl: "Idioma",
default_provider_lbl: "Proveedor predeterminado de streaming y descarga",
normalize_volume_lbl: "Normalizar el volumen entre pistas",
download_dir_lbl: "Directorio de descargas",
cache_size_lbl: "Tamaño máximo de caché de streaming (MB)",
hist_rows_lbl: "Filas del historial de búsqueda mostradas",
hist_entries_lbl: "Entradas del historial de búsqueda guardadas",
recent_kept_lbl: "Pistas reproducidas recientemente guardadas",
reset_defaults: "Restablecer valores",
find_in_list: "Buscar en la lista…",
scope_songs: "Canciones",
scope_videos: "Vídeos",
scope_artists: "Artistas",
scope_albums: "Álbumes",
scope_playlists: "Listas de reproducción",
radio_word_song: "canción",
radio_word_artist: "artista",
lyrics_copied: "Letra copiada al portapapeles",
saved_to_library: "Guardado en la biblioteca",
removed_from_library: "Eliminado de la biblioteca",
no_lyrics_found: "No se encontró la letra de esta pista.",
select_playlist_drop: "Selecciona una lista para soltar las pistas",
reordered_playlist: "Lista reordenada",
n_saved: |n| format!("{n} guardado{}", if n == 1 { "" } else { "s" }),
n_plays: |n| format!("{} reproducciones", crate::util::format_count(n)),
search_placeholder: |p| match p {
ProviderId::YouTube => "Buscar en YouTube Music…".into(),
ProviderId::Local => "Buscar…".into(),
other => format!("Buscar en {}…", other.label()),
},
added: |n| format!("Añadidas {}", es_tracks(n)),
added_to: |n, to| format!("Añadidas {} a {to}", es_tracks(n)),
removed_n: |n| format!("Eliminadas {}", es_tracks(n)),
removed_from: |n, from| format!("Eliminadas {} de {from}", es_tracks(n)),
pasted_into: |n, into| format!("Pegadas {} en {into}", es_tracks(n)),
saved_title: |t| format!("Guardada \"{t}\" en la biblioteca"),
playlist_created: |n| format!("Lista \"{n}\" creada"),
added_local: |n| format!("Añadidas {} (selecciona una lista para organizar)", es_tracks(n)),
downloading_n: |n| format!("Descargando {}…", es_tracks(n)),
resolving_on: |title, p| format!("Resolviendo \"{title}\" en {p}…"),
provider_no_radio: |p| format!("{p} no admite radio"),
generating_radio_for: |w, name| format!("Generando radio para {w}: {name}…"),
could_not_find_on: |name, p| format!("No se pudo encontrar \"{name}\" en {p}"),
opening: |l| format!("Abriendo: {l}…"),
opening_artist: |name| format!("Abriendo artista: {name}…"),
download_complete: |path| format!("¡Descarga completa! Guardada en {path}"),
failed_resolve_on: |title, p, e| format!("Error al resolver \"{title}\" en {p}: {e}"),
couldnt_load: |e| format!("No se pudo cargar: {e}"),
couldnt_load_lyrics: |e| format!("No se pudo cargar la letra: {e}"),
search_failed: |e| format!("Error en la búsqueda: {e}"),
radio_label: |w, name| format!("Radio ({w}): {name}"),
ctx_add_to_playlist_n: |n| format!("Añadir {} a la lista", es_tracks(n)),
ctx_download_n: |n| format!("Descargar {}", es_tracks(n)),
ctx_remove_from_queue_n: |n| format!("Quitar {} de la cola", es_tracks(n)),
ctx_remove_from_playlist_n: |n| format!("Quitar {} de la lista", es_tracks(n)),
import_playlist: "Importar lista",
import_method_native: "Nativo",
import_method_filelist: "Lista de archivos",
import_method_csv: "CSV",
import_native_hint: "Importa listas desde un archivo playlists.json.",
import_csv_name_col: "Columna de nombre",
import_csv_artist_col: "Columna de artista",
import_csv_album_col: "Columna de álbum",
import_csv_preset: "Ajuste preestablecido",
import_csv_preset_default: "Predeterminado",
import_csv_preset_exportify: "Exportify",
import_csv_exportify_note: "Admite listas de Spotify exportadas desde https://exportify.net/.",
import_pattern_lbl: "Patrón de nombre de archivo",
import_playlist_name: "Nombre de la lista",
import_add_pattern: "Añadir patrón",
import_select_file: "Seleccionar archivo",
import_select_folder: "Seleccionar carpeta",
import_pattern_conflict: |a, b| {
format!(
"Los patrones \"{a}\" y \"{b}\" pueden coincidir con el mismo archivo con campos en conflicto. Elimina o corrige uno."
)
},
import_playlists_imported: |n| format!("Importadas {}", es_tracks(n)),
import_imported_into: |n, into| format!("Importadas {} en {}", es_tracks(n), into),
import_no_tracks: "No se encontraron pistas para importar.",
import_no_match: "Ningún archivo coincide con los patrones.",
import_bad_file: "No se pudo leer el archivo seleccionado.",
deps_title: "Faltan dependencias",
deps_intro: "Faltan algunas herramientas que usa la aplicación. Selecciona cuáles instalar o descarta para continuar (la búsqueda y el streaming podrían no funcionar hasta que estén presentes).",
deps_install: "Instalar",
deps_install_selected: "Instalar seleccionadas",
deps_discard: "Descartar",
deps_installing: "Instalando…",
deps_installed: "Instalado",
deps_failed: "Error",
deps_installed_toast: "Dependencias seleccionadas instaladas.",
deps_yt_dlp_desc: "Transmite y descarga audio (requerido)",
deps_ytmusicapi_desc: "Búsqueda en YouTube Music (opcional, usa yt-dlp como respaldo)",
deps_python3_desc: "Requerido por ytmusicapi (búsqueda en YouTube Music)",
deps_ytmusicapi_requires_python: "Requiere Python 3 (instálalo primero)",
deps_play_requires_yt_dlp: "La reproducción necesita yt-dlp; instálalo desde el diálogo de inicio para reproducir esto.",
deps_source_not_playable: "Esta fuente no se puede reproducir.",
deps_found_section_title: "Encontradas en tu sistema",
deps_found_section_intro: "Estas ya están disponibles. Marca alguna para instalar una copia gestionada por la aplicación (la copia de la app tiene prioridad sobre la del sistema).",
deps_found_on_system: "Encontradas en tu sistema",
deps_managed_by_app: "Instaladas (gestionadas por la app)",
deps_not_installed: "No instaladas",
deps_delete: "Eliminar",
deps_deleting: "Eliminando…",
deps_deleted: "Eliminadas",
deps_delete_failed: "Error al eliminar",
sec_updates: "Actualizaciones",
check_for_updates: "Buscar actualizaciones",
checking_for_updates: "Buscando actualizaciones…",
up_to_date: "Actualizado",
current_version: |v| format!("Versión {v}"),
update_available: |v| format!("Versión {v} disponible. Ve a Configuración para actualizar."),
update_now: "Actualizar ahora",
updating: "Actualizando…",
update_applied: |v| format!("Actualizado a {v}. Reiniciando…"),
package_managed: "No se puede actualizar automáticamente (sin permiso de escritura en el directorio de la aplicación). Si está instalado mediante un gestor de paquetes, úselo para actualizar.",
update_failed: |e| format!("La actualización falló: {e}"),
};
fn es_tracks(n: usize) -> String {
if n == 1 {
"1 pista".into()
} else {
format!("{n} pistas")
}
}