fix(i18n): normalize translations and fallbacks
Build & Deploy PluriWave / Análisis de código (push) Successful in 38s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m34s

This commit is contained in:
2026-06-03 21:20:08 +02:00
parent a5475ce118
commit 089b8b4227
46 changed files with 17720 additions and 4869 deletions
+746
View File
@@ -57,6 +57,30 @@ class AppLocalizationsEs extends AppLocalizations {
@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';
@@ -241,6 +265,9 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get stationNameLabel => 'Nombre *';
@override
String get unnamedStation => 'Sin nombre';
@override
String get requiredField => 'Campo obligatorio';
@@ -451,4 +478,723 @@ class AppLocalizationsEs extends AppLocalizations {
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 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 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 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';
}