Files
pluriwave/lib/l10n/gen/app_localizations_es.dart
T
FreeTLab bd2b7d8e02 refactor(ajustes): split Settings AUDIO/EMISORAS into pushed detail screens
Moves the AUDIO group (Ecualizador, Salida de audio, Temporizador de
sueno) and the EMISORAS group (Grupos de favoritos, Emisora preferida,
Emisoras personalizadas, Orden de listas) out of pantalla_ajustes.dart
into 7 new lib/pantallas/ajustes/*.dart screens, each wrapped in
PluriPushScaffold. The root now reaches them through FilaAjuste rows
under two new GrupoAjustes cards (lib/pantallas/ajustes/widgets/
fila_ajuste.dart), per design ADR-3.

Verbatim-move rule applied throughout: only each section's panel header
(icon + title, sometimes a status chip) was removed, since the pushed
screen's own 56px header now carries the title. Two sections whose
header row carried a real action (Temporizador de sueno's "Add",
Grupos de favoritos' "Add list", Emisoras personalizadas' "Add") kept
that action in the body instead of dropping it.

size:exception (move-only diff, pre-recorded at design/tasks time):
34 files, ~4250 changed lines excluding the 13 auto-regenerated l10n
files (~90 more lines there) - higher than the 800-1000 estimate
because that estimate covered the 7 production screens but not the
matching 7 new test files (task 3a.2), one of which relocates ~10
pre-existing device-management test cases verbatim. Business logic is
untouched; app.dart's import of pantalla_ajustes.dart is unchanged.

Correction to tasks.md 3a.1/3a.8: those two lines describe the combined
WU3a+WU3b end state ("4 grouped nav lists", "<400 lines"), matching
design ADR-3's own aggregate blast-radius note - not a WU3a-only claim.
This commit converts only the 2 groups that are WU3a's job; the root
is 788 lines with 5 sections (Grabaciones, Musica local, Idioma,
Backup, Info) still inline, reachable, and unchanged, pending WU3b.

Two new ARB keys (settingsGroupAudioTitle, settingsGroupStationsTitle),
en/es only per the WU1 precedent - all 7 detail-screen titles reuse
existing keys. Discovered and worked around, without touching app
code: Directory.systemTemp hangs real dart:io writes in this sandbox,
and pumpAndSettle() cannot settle while a screen shows an indeterminate
CircularProgressIndicator - both are test-only concerns, documented
inline where hit.

Tests: 560 -> 579 (32 in this commit's scope, net +19 after retiring
13 relocated cases from the old combined pantalla_ajustes_test.dart).
flutter analyze: unchanged at 1 pre-existing info. git diff is empty
for navegacion_auto.dart, servicio_ecualizador.dart and
servicio_audio.dart; pantalla_alarma_sonando_dismiss_guard_test.dart
untouched.
2026-07-28 21:38:20 +02:00

1377 lines
32 KiB
Dart

// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Spanish Castilian (`es`).
class AppLocalizationsEs extends AppLocalizations {
AppLocalizationsEs([String locale = 'es']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'Escuchar';
@override
String get navSearch => 'Buscar';
@override
String get navFavorites => 'Favoritos';
@override
String get navAlarms => 'Alarmas';
@override
String get navSettings => 'Ajustes';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => 'Timer de sueño';
@override
String get sleepTimerDescription =>
'Apagado suave de la radio con cuenta atrás exacta.';
@override
String get cancelTimer => 'Cancelar timer';
@override
String get optionOther => 'Otro';
@override
String get customDurationTitle => 'Duración personalizada';
@override
String get durationGreaterThanZero => 'Elegí una duración mayor que cero.';
@override
String get hoursLabel => 'Horas';
@override
String get minutesLabel => 'Minutos';
@override
String get secondsLabel => 'Segundos';
@override
String durationHoursMinutesSeconds(
Object hours,
Object minutes,
Object seconds,
) {
return '$hours h $minutes min $seconds s';
}
@override
String durationMinutesSeconds(Object minutes, Object seconds) {
return '$minutes min $seconds s';
}
@override
String durationMinutesOnly(Object minutes) {
return '$minutes min';
}
@override
String durationSecondsOnly(Object seconds) {
return '$seconds s';
}
@override
String get saveQuickAccess => 'Guardar como acceso rápido';
@override
String get startTimer => 'Iniciar timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Omitida esta ejecución de $alarmName.';
}
@override
String get settingsTitle => 'Ajustes';
@override
String get settingsSubtitle =>
'Control fino de sonido, copias de seguridad y emisoras personalizadas.';
@override
String get settingsGroupAudioTitle => 'AUDIO';
@override
String get settingsGroupStationsTitle => 'EMISORAS';
@override
String get languageSectionTitle => 'Idioma';
@override
String get languageSectionDescription =>
'Elegí cómo se muestra el idioma de la app.';
@override
String get languageSystemDefault => 'Sistema';
@override
String get languageSpanish => 'Español';
@override
String get languageEnglish => 'Inglés';
@override
String languageUpdated(Object languageName) {
return 'Idioma actualizado: $languageName';
}
@override
String get languageUpdatedSystem => 'Idioma actualizado: Sistema';
@override
String get timerSectionTitle => 'Timer de sueño';
@override
String get timerSectionAdd => 'Añadir';
@override
String get timerSectionDescription =>
'Personalizá los accesos rápidos que aparecen al apagar la radio automáticamente.';
@override
String get timerSectionRestoreRecommended => 'Restaurar tiempos recomendados';
@override
String get newQuickAccessTitle => 'Nuevo acceso rápido';
@override
String get saveQuickAccessButton => 'Guardar acceso rápido';
@override
String get settingsSafeStatus => 'Seguro';
@override
String get recordingsSectionTitle => 'Grabaciones';
@override
String get recordingsFolderDialogTitle =>
'Selecciona la carpeta de grabaciones';
@override
String get recordingsPathUpdated => 'Ruta de grabación actualizada';
@override
String recordingsPathSaveError(Object error) {
return 'No se pudo guardar la ruta: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'Se usará la carpeta interna por defecto';
@override
String get recordingsFolderTitle => 'Carpeta de grabación';
@override
String get recordingsPathCalculating => 'Calculando ruta...';
@override
String get recordingsChangePath => 'Cambiar ruta';
@override
String get recordingsUseDefaultPath => 'Usar ruta por defecto';
@override
String get recordingsOriginalStreamHint =>
'La radio se guarda desde el stream original, sin recomprimir.';
@override
String get equalizerActive => 'Activo';
@override
String get equalizerDisabled => 'Desactivado';
@override
String get equalizerEnable => 'Activar ecualizador';
@override
String get equalizerRealtimeSubtitle =>
'Los cambios se aplican en tiempo real a la emisora actual.';
@override
String get equalizerPendingSubtitle =>
'Se guardan los cambios y se aplicarán cuando Android habilite el efecto.';
@override
String get equalizerPerStationTitle => 'Usar EQ propio para esta favorita';
@override
String equalizerPerStationActive(Object stationName) {
return 'Activo para $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Usando EQ principal para $stationName';
}
@override
String get preferredStationTitle => 'Emisora preferida';
@override
String get preferredStationDescription =>
'Se preselecciona al crear alarmas y puede iniciarse como reproducción rápida.';
@override
String get preferredStationNoStationsTitle =>
'Todavía no hay emisoras disponibles';
@override
String get preferredStationNoStationsSubtitle =>
'Guardá favoritas o cargá emisoras para elegir una preferida.';
@override
String get preferredStationAutomaticFallback => 'Fallback automático';
@override
String get preferredStationDefaultFavorite => 'Favorita por defecto';
@override
String preferredStationCurrent(Object stationName) {
return 'Preferida actual: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'Sin favoritas: usando automáticamente $stationName';
}
@override
String get preferredStationPlay => 'Reproducir preferida';
@override
String get customStationsTitle => 'Emisoras personalizadas';
@override
String get customStationsAdd => 'Añadir';
@override
String get customStationsEmpty => 'No hay emisoras personalizadas.';
@override
String get playAction => 'Reproducir';
@override
String get deleteAction => 'Eliminar';
@override
String get addStationTitle => 'Añadir emisora';
@override
String get stationNameLabel => 'Nombre *';
@override
String get unnamedStation => 'Sin nombre';
@override
String get requiredField => 'Campo obligatorio';
@override
String get streamUrlLabel => 'URL del stream *';
@override
String get invalidUrl => 'URL no válida';
@override
String get countryOptionalLabel => 'País (opcional)';
@override
String get saveStation => 'Guardar emisora';
@override
String get backupSectionTitle => 'Copia de seguridad';
@override
String get backupExportTitle => 'Exportar configuración';
@override
String get backupExportSubtitle =>
'Favoritos, emisoras custom y presets de EQ';
@override
String get backupImportTitle => 'Importar configuración';
@override
String get backupImportSubtitle =>
'Restaurar desde un fichero de copia de seguridad';
@override
String get backupShareSubject => 'PluriWave — copia de seguridad';
@override
String backupShareText(Object date) {
return 'Configuración de PluriWave exportada el $date';
}
@override
String backupExportError(Object error) {
return 'Error al exportar: $error';
}
@override
String get backupImportConfirmMessage =>
'Esto añadirá los favoritos, emisoras y presets del fichero. ¿Continuar?';
@override
String get backupImportSuccess => 'Configuración importada correctamente';
@override
String backupImportError(Object error) {
return 'Error al importar: $error';
}
@override
String get appVersionLoading => 'Cargando versión...';
@override
String appVersionSubtitle(Object version) {
return '$version - Radio mundial';
}
@override
String get savedFavoritesTitle => 'Favoritos guardados';
@override
String get stationFilterTitle => 'Filtro de emisoras';
@override
String get stationFilterSubtitle => 'Solo emisoras verificadas como activas';
@override
String get backgroundAudioTitle => 'Audio en background';
@override
String get backgroundAudioSubtitle => 'Continúa al apagar la pantalla';
@override
String get dash => '—';
@override
String get cancelAction => 'Cancelar';
@override
String get equalizerTitle => 'Ecualizador';
@override
String get recordingsOpenFolder => 'Abrir carpeta';
@override
String recordingsOpenFolderError(Object error) {
return 'No se pudo abrir la carpeta: $error';
}
@override
String get recordingsMaxSizeTitle => 'Tamaño máximo de grabación';
@override
String recordingsMaxSizeSubtitle(int size) {
return 'Límite actual: $size MB';
}
@override
String get recordingsMaxSizeDialogTitle => 'Tamaño máximo por grabación';
@override
String get recordingsMaxSizeMbLabel => 'Megabytes máximos';
@override
String recordingsMaxSizeSaved(int size) {
return 'Límite de grabación actualizado a $size MB';
}
@override
String get stationOrderTitle => 'Orden de emisoras';
@override
String get stationOrderByName => 'Por nombre';
@override
String get stationOrderByQuality => 'Por calidad';
@override
String get stationOrderScopeDescription =>
'Se aplica a favoritos, búsquedas, emisoras cercanas y listados rápidos.';
@override
String get favoriteGroupsTitle => 'Listas de favoritos';
@override
String get favoriteGroupsDescription =>
'Creá listas cortas para organizar tus emisoras guardadas.';
@override
String get favoriteGroupsAdd => 'Añadir lista';
@override
String get favoriteGroupsEdit => 'Editar lista';
@override
String get favoriteGroupsDelete => 'Eliminar lista';
@override
String get favoriteGroupsNameLabel => 'Nombre de la lista';
@override
String get favoriteGroupsNameTooLong => 'Máximo 28 caracteres.';
@override
String get favoriteGroupsUnassigned => 'Sin asignar';
@override
String get favoriteGroupsProtectedHint =>
'Lista por defecto: no se puede editar ni borrar.';
@override
String get favoriteGroupsCreated => 'Lista creada';
@override
String get favoriteGroupsUpdated => 'Lista actualizada';
@override
String get favoriteGroupsDeleted =>
'Lista eliminada; sus emisoras vuelven a Sin asignar.';
@override
String get favoriteGroupsAssign => 'Mover a lista';
@override
String favoriteGroupsAssignSubtitle(Object groupName) {
return 'Lista actual: $groupName';
}
@override
String favoriteGroupsAssigned(Object stationName, Object groupName) {
return '$stationName movida a $groupName';
}
@override
String get favoritesTitle => 'Favoritos';
@override
String get favoritesEmptyTitle => 'Sin favoritos aún';
@override
String get favoritesEmptySubtitle =>
'Tocá el corazón en cualquier emisora para guardarla en tu colección.';
@override
String get favoritesHeaderSubtitle =>
'Organizá tu colección por listas y dejá cerca las radios importantes.';
@override
String get favoritesCollection => 'Colección';
@override
String favoritesSavedCount(int count) {
return '$count guardadas';
}
@override
String get favoritesRemoveTooltip => 'Eliminar de favoritos';
@override
String favoritesRemovedMessage(Object stationName) {
return '$stationName eliminada de favoritos';
}
@override
String get alarmPostponedCurrentExecution =>
'Alarma pospuesta para esta ejecución.';
@override
String get searchScreenTitle => 'Buscar señal';
@override
String get searchScreenSubtitle =>
'Encontrá radios por nombre, país o idioma con filtros rápidos y alto contraste.';
@override
String get searchFiltersLabel => 'Filtros';
@override
String get searchHint => 'Radio Horizonte, jazz, noticias...';
@override
String get searchCountryFilterLabel => 'País';
@override
String get searchLanguageFilterLabel => 'Idioma';
@override
String get searchMinQualityFilterLabel => 'Calidad mínima';
@override
String get searchEmptyTitle => 'Buscá una emisora';
@override
String get searchNoResultsTitle => 'Sin resultados';
@override
String get searchEmptySubtitle =>
'Usá la barra superior o los chips para descubrir señales de todo el mundo.';
@override
String get searchNoResultsSubtitle =>
'Probá quitar filtros o escribir otro nombre para encontrar una señal activa.';
@override
String get countrySpain => 'España';
@override
String get countryUsa => 'EE. UU.';
@override
String get countryMexico => 'México';
@override
String get countryArgentina => 'Argentina';
@override
String get countryUk => 'Reino Unido';
@override
String get countryFrance => 'Francia';
@override
String get countryGermany => 'Alemania';
@override
String get countryItaly => 'Italia';
@override
String get countryBrazil => 'Brasil';
@override
String get countryJapan => 'Japón';
@override
String get languageNameSpanish => 'Español';
@override
String get languageNameEnglish => 'Inglés';
@override
String get languageNameFrench => 'Francés';
@override
String get languageNameGerman => 'Alemán';
@override
String get languageNamePortuguese => 'Portugués';
@override
String get languageNameItalian => 'Italiano';
@override
String get languageNameJapanese => 'Japonés';
@override
String get languageNameArabic => 'Árabe';
@override
String get languageNameRussian => 'Ruso';
@override
String get homeScreenSubtitle =>
'Radio global en vivo con señales limpias, favoritos inteligentes y una experiencia visual de concurso.';
@override
String get exploreStations => 'Explorar emisoras';
@override
String stationsCount(int count) {
return '$count radios';
}
@override
String get qualityHd => 'Calidad HD';
@override
String get nearYou => 'Cerca de vos';
@override
String nearYouInCountry(Object country) {
return 'Cerca de vos · $country';
}
@override
String get detectAction => 'Detectar';
@override
String get liveRadar => 'Radar en directo';
@override
String get genresTitle => 'Géneros';
@override
String get retryAction => 'Reintentar';
@override
String get noStationsAvailable => 'No hay emisoras disponibles';
@override
String get noStationsAvailableSubtitle =>
'Probá refrescar o elegir otro género para volver a capturar señal.';
@override
String get genrePop => 'Pop';
@override
String get genreRock => 'Rock';
@override
String get genreJazz => 'Jazz';
@override
String get genreClassical => 'Clásica';
@override
String get genreElectronic => 'Electrónica';
@override
String get genreNews => 'Noticias';
@override
String get genreTalk => 'Charlas';
@override
String get genreHipHop => 'Hip-hop';
@override
String get genreCountry => 'Country';
@override
String get genreMetal => 'Metal';
@override
String get genreReggae => 'Reggae';
@override
String get genreLatin => 'Latina';
@override
String get alarmScreenTitle => 'Despertar musical';
@override
String get alarmScreenSubtitle =>
'Alarmas con radio, sonido seguro, vacaciones inteligentes y próxima ejecución siempre visible.';
@override
String get createAlarmAction => 'Crear alarma';
@override
String alarmsCount(int count) {
return '$count alarmas';
}
@override
String get activeAlarmsWithoutNextTitle =>
'Alarmas activas sin próxima ejecución';
@override
String get noActiveAlarms => 'Sin alarmas activas';
@override
String get nextAlarmTitle => 'Próxima alarma';
@override
String activeAlarmsWithoutNextSubtitle(int count) {
return 'Hay $count alarma(s) activas, pero ahora mismo no tienen una fecha futura válida. Revisá fecha, días y vacaciones.';
}
@override
String get createAlarmHint =>
'Creá una alarma y PluriWave calculará la siguiente ejecución automáticamente.';
@override
String get alarmVacationPlay => 'Suena en vacaciones';
@override
String get alarmVacationPause => 'Pausa en vacaciones';
@override
String alarmFadeInLabel(int seconds) {
return 'Fade-in ${seconds}s';
}
@override
String alarmNextExecution(Object date) {
return 'Siguiente ejecución: $date';
}
@override
String get alarmNoNextExecution => 'No tiene próxima ejecución activa.';
@override
String alarmSkippedExecution(Object date) {
return 'Una ejecución fue omitida: $date.';
}
@override
String get editAction => 'Editar';
@override
String get skipNextAction => 'Omitir siguiente';
@override
String get deleteTooltip => 'Eliminar';
@override
String get alarmSkippedNoNextSnackbar =>
'Alarma omitida. No queda próxima ejecución.';
@override
String alarmSkippedReturnsSnackbar(Object date) {
return 'Alarma omitida. Volverá el $date.';
}
@override
String alarmVacationPausedNoNext(Object vacationName) {
return 'Está pausada por vacaciones ($vacationName) y sin próxima ejecución.';
}
@override
String alarmVacationPausedReturns(Object vacationName, Object date) {
return 'Está pausada por vacaciones ($vacationName) y vuelve el $date.';
}
@override
String alarmVacationReturns(Object date) {
return 'Con vacaciones activas, volverá a sonar el $date.';
}
@override
String get defaultAlarmName => 'Despertador musical';
@override
String get newAlarmTitle => 'Nueva alarma';
@override
String get editAlarmTitle => 'Editar alarma';
@override
String get nameField => 'Nombre';
@override
String get timeField => 'Hora';
@override
String get dateField => 'Fecha';
@override
String get onceOption => 'Una vez';
@override
String get dailyOption => 'Diaria';
@override
String get weekdaysOption => 'Días';
@override
String get soundAndVolumeSection => 'Sonido y volumen';
@override
String get alarmFadeInTitle => 'Fade-in de alarma';
@override
String get alarmFadeInOff => '0 s (sin transición)';
@override
String alarmFadeInSummary(int seconds) {
return '$seconds s (de 5% al volumen elegido)';
}
@override
String get internalSafeSoundLabel => 'Sonido seguro interno';
@override
String get soundWarmSunrise => 'Amanecer cálido';
@override
String get soundSoftBell => 'Campana suave';
@override
String get soundDigitalPulse => 'Pulso digital';
@override
String get favoriteStationLabel => 'Emisora favorita';
@override
String get noStationUseInternalSound => 'Sin emisora: usar sonido interno';
@override
String get alarmFallbackStationLabel => 'Emisora de respaldo';
@override
String get alarmStationPickerSearchHint => 'Buscá una emisora por nombre';
@override
String get alarmSnoozeDurationTitle => 'Duración de la posposición';
@override
String get snoozeAction => 'Posponer';
@override
String alarmSnoozeOptionLabel(int minutes) {
return '$minutes min';
}
@override
String get saveFavoritesAlarmHint =>
'Guardá emisoras en Favoritos para usarlas como alarma musical.';
@override
String get useCurrentStationAction => 'Usar emisora actual';
@override
String get playDuringVacations => 'Sonar durante vacaciones';
@override
String get playDuringVacationsHint =>
'Si lo apagás, la próxima ejecución saltará al primer día válido.';
@override
String get saveAlarmAction => 'Guardar alarma';
@override
String get chooseOneWeekdayError => 'Elegí al menos un día de la semana.';
@override
String get androidReliabilityReview => 'Revisar fiabilidad Android';
@override
String get statusOk => 'OK';
@override
String get statusPending => 'pendiente';
@override
String androidReliabilityStatus(
Object exact,
Object notifications,
Object screen,
) {
return 'Fiabilidad: exactas $exact · notificaciones $notifications · pantalla $screen';
}
@override
String get vacationRangesTitle => 'Rangos de vacaciones';
@override
String get addAction => 'Agregar';
@override
String get vacationRangesHint =>
'Si una alarma tiene \"Pausa en vacaciones\", se salta automáticamente estos rangos.';
@override
String get noVacationRangesLoaded => 'Sin rangos cargados.';
@override
String get deleteRangeTooltip => 'Eliminar rango';
@override
String get vacationsDefaultName => 'Vacaciones';
@override
String get newVacationRangeTitle => 'Nuevo rango de vacaciones';
@override
String get startField => 'Inicio';
@override
String get endField => 'Fin';
@override
String get saveRangeAction => 'Guardar rango';
@override
String get noAlarmsYetTitle => 'Todavía no hay alarmas.';
@override
String get noAlarmsYetSubtitle =>
'Creá una para diseñar tu despertar musical.';
@override
String get ringingInternalAudioActive => 'Sonando con audio seguro interno.';
@override
String get ringingPreparingInternalAudio =>
'Preparando audio seguro interno.';
@override
String get stopAlarmAction => 'Detener alarma';
@override
String get alarmStopFailedMessage =>
'No pudimos confirmar que la alarma se detuvo. Inténtalo de nuevo.';
@override
String get alarmForceStopAction => 'Forzar detención';
@override
String get alarmMissedNotificationTitle => 'Alarma perdida';
@override
String alarmMissedNotificationText(Object name) {
return '$name se silenció automáticamente después de 10 minutos.';
}
@override
String get pauseAction => 'Pausar';
@override
String miniPlayerOpenLabel(Object stationName) {
return 'Abrir reproductor de $stationName';
}
@override
String get playerIconLabel => 'Reproductor';
@override
String get playbackStatusConnecting => 'Conectando...';
@override
String get playbackStatusLive => 'En directo';
@override
String get playbackStatusPaused => 'Pausado';
@override
String get playbackStatusReconnecting => 'Reconectando...';
@override
String get playbackStatusConnectionError => 'Error de conexión';
@override
String get playbackStatusStopped => 'Detenido';
@override
String stationSemanticLabel(Object stationName) {
return 'Emisora $stationName';
}
@override
String get favoritesAddTooltip => 'Añadir a favoritos';
@override
String favoritesAddedMessage(Object stationName) {
return '$stationName añadida a favoritos';
}
@override
String get stationIconLabel => 'Icono de emisora';
@override
String get liveNow => 'En vivo';
@override
String equalizerBandLabel(Object band) {
return 'Banda $band';
}
@override
String equalizerBandValue(Object value) {
return '$value decibelios';
}
@override
String get equalizerPresetFlat => 'Plano';
@override
String get equalizerPresetRock => 'Rock';
@override
String get equalizerPresetPop => 'Pop';
@override
String get equalizerPresetBassBoost => 'Refuerzo de graves';
@override
String get equalizerPresetJazz => 'Jazz';
@override
String get equalizerPresetVoice => 'Voz';
@override
String get equalizerPresetCustom => 'Personalizado';
@override
String get onboardingTitle => 'Bienvenido a PluriWave';
@override
String get onboardingNewsTitle => 'Novedades';
@override
String get onboardingStartAction => 'Empezar';
@override
String get onboardingCloseTooltip => 'Cerrar';
@override
String radioRecordingError(Object error) {
return 'Error al grabar la radio: $error';
}
@override
String get radioApiConnectionError => 'Sin conexión a la API de radio';
@override
String get radioSearchError => 'Error en la búsqueda. Comprueba tu conexión.';
@override
String get radioLoadMoreStationsError =>
'No se pudieron cargar más emisoras.';
@override
String get radioNearbyStationsError =>
'No pudimos detectar emisoras cercanas. Usa filtros por país.';
@override
String radioCannotPlayStation(Object stationName) {
return 'No se puede reproducir \"$stationName\"';
}
@override
String get recordingSelectStationFirst =>
'Primero selecciona una emisora para grabar.';
@override
String recordingStartError(Object error) {
return 'No se pudo iniciar la grabación: $error';
}
@override
String get unsupportedConfigVersion =>
'Versión de configuración no compatible';
@override
String get audioErrorGeneric => 'Error de reproducción';
@override
String get audioErrorNoInternet => 'Sin conexión a internet';
@override
String get audioErrorInvalidUrl => 'La URL de la radio no es válida';
@override
String get audioErrorNotFound => 'La radio no está disponible (error 404)';
@override
String get audioErrorTimeout => 'Tiempo de espera agotado al conectar';
@override
String get audioErrorCannotConnect => 'No se puede conectar a la radio';
@override
String get audioErrorUnsupportedFormat => 'Formato de stream no compatible';
@override
String get audioErrorDecode => 'Error al decodificar el stream de audio';
@override
String get audioErrorCleartext =>
'Esta radio usa HTTP sin cifrar, y no está permitido';
@override
String get audioErrorSsl => 'Certificado SSL inválido en la radio';
@override
String get audioErrorCannotPlay => 'No se puede reproducir esta radio';
@override
String get audioErrorUnexpectedPlayback => 'Error inesperado al reproducir';
@override
String get androidExactAlarmScheduleError =>
'Android no pudo programar una alarma exacta. Revisa el permiso de alarmas exactas.';
@override
String get recordingPathEmptyError =>
'La ruta de grabación no puede estar vacía';
@override
String get recordingMaxSizeInvalidError =>
'El tamaño máximo debe ser mayor que cero';
@override
String get recordingAlreadyActiveError => 'Ya hay una grabación en curso';
@override
String get alarmRingingFallbackActive => 'Sonando con audio seguro interno.';
@override
String get alarmRingingPreparingFallback =>
'Preparando audio seguro interno.';
@override
String get alarmRingingTryingStation =>
'Intentando reproducir tu emisora con máxima calidad disponible.';
@override
String alarmScheduleOnce(Object date) {
return 'Una vez · $date';
}
@override
String alarmScheduleWeekdays(Object days) {
return 'Días: $days';
}
@override
String get androidReliabilityTitle => 'Revisar fiabilidad Android';
@override
String get closeAction => 'Cerrar';
@override
String get customOption => 'Personalizada';
@override
String get endLabel => 'Fin';
@override
String get equalizerDisable => 'Desactivar ecualizador';
@override
String get helpTitle => 'Ayuda y tutorial';
@override
String get helpSubtitle =>
'Repasá funciones, consejos y novedades de PluriWave.';
@override
String get indefiniteOption => 'Indefinida';
@override
String get invalidNumber => 'Número inválido';
@override
String get nameLabel => 'Nombre';
@override
String get notPlaying => 'No está reproduciendo';
@override
String get oneTimeOption => 'Una vez';
@override
String get pausePlaybackTooltip => 'Pausar reproducción';
@override
String qualityOriginal(Object quality) {
return 'Calidad original: $quality';
}
@override
String get qualityUnknown => 'Calidad no informada';
@override
String get recordAction => 'Grabar';
@override
String get recordDurationTitle => 'Duración de grabación';
@override
String get recordRadioSubtitle => 'Elegí cuánto tiempo querés grabar.';
@override
String get recordRadioTitle => 'Grabar radio';
@override
String get recordingActiveTitle => 'Grabando radio';
@override
String get recordingDirectTitle => 'Grabación directa';
@override
String get recordingsOpenFolderPlainError =>
'No se pudo abrir la carpeta de grabaciones';
@override
String get recordingsOpenLatest => 'Abrir última grabación';
@override
String get recordingsOpenLatestError =>
'No se pudo abrir la última grabación';
@override
String get startLabel => 'Inicio';
@override
String get startPlaybackTooltip => 'Iniciar reproducción';
@override
String get stopAction => 'Parar';
@override
String get stopPlaybackTooltip => 'Detener reproducción';
@override
String get weekdayShortMonday => 'Lun';
@override
String get weekdayShortTuesday => 'Mar';
@override
String get weekdayShortWednesday => 'Mié';
@override
String get weekdayShortThursday => 'Jue';
@override
String get weekdayShortFriday => 'Vie';
@override
String get weekdayShortSaturday => 'Sáb';
@override
String get weekdayShortSunday => 'Dom';
@override
String stationCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count emisoras',
one: '1 emisora',
);
return '$_temp0';
}
@override
String get alarmIconLabel => 'Alarma musical';
@override
String get vacationIconLabel => 'Modo vacaciones';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
@override
String get advancedEqSectionTitle => 'Opciones avanzadas de ecualización';
@override
String get advancedEqEnableToggle => 'Activar EQ por dispositivo';
@override
String get advancedEqEnableToggleSubtitle =>
'Aplica automáticamente un preset de EQ distinto al cambiar la salida de audio.';
@override
String get advancedEqKnownDevicesTitle => 'Dispositivos de audio conocidos';
@override
String get advancedEqKnownDevicesEmpty =>
'No hay dispositivos registrados. Conectá uno para empezar.';
@override
String advancedEqDevicePresetLabel(Object presetName) {
return 'Preset: $presetName';
}
@override
String preNoticeCountdown(int minutes) {
return 'Empieza en $minutes min';
}
@override
String snoozeCountdown(int minutes) {
return 'Suena en $minutes min';
}
@override
String get snoozeAgainAction => 'Posponer otra vez';
@override
String get alarmRingingNotificationTitle => 'Alarma PluriWave';
@override
String get alarmFireChannelName => 'Alarmas sonando';
@override
String get alarmFireChannelDescription =>
'Sonido y pantalla urgente cuando una alarma musical debe sonar';
@override
String get alarmPreNoticeChannelName => 'Preavisos de alarmas';
@override
String get alarmPreNoticeChannelDescription =>
'Notificaciones silenciosas antes de la alarma';
@override
String get openFolderChooserTitle => 'Abrir carpeta';
@override
String get openRecordingChooserTitle => 'Abrir grabación';
@override
String get eqDeviceEditTitle => 'Editar dispositivo';
@override
String get eqDeviceNameLabel => 'Nombre del dispositivo';
@override
String get eqDeviceNameHint => 'Ej: Altavoz del living';
@override
String get eqDeviceNameConfirm => 'Guardar';
@override
String get eqDeviceConnected => 'Conectado';
@override
String get eqDeviceActiveOutput =>
'El audio está saliendo por este dispositivo';
@override
String get eqDeviceRemove => 'Quitar dispositivo';
@override
String eqDeviceRemoved(Object device) {
return 'Se quitó $device';
}
@override
String get localMusicSectionTitle => 'Música local (Android Auto)';
@override
String get localMusicSectionDescription =>
'Elegí una carpeta de este dispositivo para explorar y reproducir sus archivos de audio desde el auto.';
@override
String get localMusicFolderNotConfigured => 'No hay carpeta seleccionada';
@override
String get localMusicFolderTitle => 'Carpeta de música local';
@override
String get localMusicChoosePath => 'Elegir carpeta';
@override
String get localMusicChangePath => 'Cambiar carpeta';
@override
String get localMusicFolderUpdated => 'Carpeta de música local actualizada';
@override
String localMusicFolderSaveError(Object error) {
return 'No se pudo guardar la carpeta: $error';
}
@override
String get localMusicFolderGenericName => 'Carpeta seleccionada';
}