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
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+740
View File
@@ -57,6 +57,30 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get secondsLabel => 'Seconds';
@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 => 'Save as quick access';
@@ -239,6 +263,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get stationNameLabel => 'Name *';
@override
String get unnamedStation => 'Unnamed station';
@override
String get requiredField => 'Required field';
@@ -448,4 +475,717 @@ class AppLocalizationsEn extends AppLocalizations {
String favoritesRemovedMessage(Object stationName) {
return '$stationName removed from favorites';
}
@override
String get alarmPostponedCurrentExecution =>
'Alarm postponed for this occurrence.';
@override
String get searchScreenTitle => 'Search signal';
@override
String get searchScreenSubtitle =>
'Find stations by name, country, or language with fast filters and high contrast.';
@override
String get searchFiltersLabel => 'Filters';
@override
String get searchHint => 'Radio Horizon, jazz, news...';
@override
String get searchCountryFilterLabel => 'Country';
@override
String get searchLanguageFilterLabel => 'Language';
@override
String get searchMinQualityFilterLabel => 'Minimum quality';
@override
String get searchEmptyTitle => 'Search for a station';
@override
String get searchNoResultsTitle => 'No results';
@override
String get searchEmptySubtitle =>
'Use the top bar or chips to discover stations from around the world.';
@override
String get searchNoResultsSubtitle =>
'Try removing filters or typing another name to find an active station.';
@override
String get countrySpain => 'Spain';
@override
String get countryUsa => 'USA';
@override
String get countryMexico => 'Mexico';
@override
String get countryArgentina => 'Argentina';
@override
String get countryUk => 'UK';
@override
String get countryFrance => 'France';
@override
String get countryGermany => 'Germany';
@override
String get countryItaly => 'Italy';
@override
String get countryBrazil => 'Brazil';
@override
String get countryJapan => 'Japan';
@override
String get languageNameSpanish => 'Spanish';
@override
String get languageNameEnglish => 'English';
@override
String get languageNameFrench => 'French';
@override
String get languageNameGerman => 'German';
@override
String get languageNamePortuguese => 'Portuguese';
@override
String get languageNameItalian => 'Italian';
@override
String get languageNameJapanese => 'Japanese';
@override
String get languageNameArabic => 'Arabic';
@override
String get languageNameRussian => 'Russian';
@override
String get homeScreenSubtitle =>
'Live global radio with clean signals, smart favorites, and a show-style visual experience.';
@override
String get exploreStations => 'Explore stations';
@override
String stationsCount(int count) {
return '$count stations';
}
@override
String get qualityHd => 'HD quality';
@override
String get nearYou => 'Near you';
@override
String nearYouInCountry(Object country) {
return 'Near you · $country';
}
@override
String get detectAction => 'Detect';
@override
String get liveRadar => 'Live radar';
@override
String get genresTitle => 'Genres';
@override
String get retryAction => 'Retry';
@override
String get noStationsAvailable => 'No stations available';
@override
String get noStationsAvailableSubtitle =>
'Try refreshing or choosing another genre to capture a signal again.';
@override
String get genrePop => 'Pop';
@override
String get genreRock => 'Rock';
@override
String get genreJazz => 'Jazz';
@override
String get genreClassical => 'Classical';
@override
String get genreElectronic => 'Electronic';
@override
String get genreNews => 'News';
@override
String get genreTalk => 'Talk';
@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 => 'Latin';
@override
String get alarmScreenTitle => 'Music wake-up';
@override
String get alarmScreenSubtitle =>
'Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.';
@override
String get createAlarmAction => 'Create alarm';
@override
String alarmsCount(int count) {
return '$count alarms';
}
@override
String get activeAlarmsWithoutNextTitle =>
'Active alarms without a next occurrence';
@override
String get noActiveAlarms => 'No active alarms';
@override
String get nextAlarmTitle => 'Next alarm';
@override
String activeAlarmsWithoutNextSubtitle(int count) {
return 'There are $count active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.';
}
@override
String get createAlarmHint =>
'Create an alarm and PluriWave will calculate the next occurrence automatically.';
@override
String get alarmVacationPlay => 'Plays during vacations';
@override
String get alarmVacationPause => 'Paused during vacations';
@override
String alarmFadeInLabel(int seconds) {
return 'Fade-in ${seconds}s';
}
@override
String alarmNextExecution(Object date) {
return 'Next occurrence: $date';
}
@override
String get alarmNoNextExecution => 'It has no active next occurrence.';
@override
String alarmSkippedExecution(Object date) {
return 'One occurrence was skipped: $date.';
}
@override
String get editAction => 'Edit';
@override
String get skipNextAction => 'Skip next';
@override
String get deleteTooltip => 'Delete';
@override
String get alarmSkippedNoNextSnackbar =>
'Alarm skipped. There is no next occurrence left.';
@override
String alarmSkippedReturnsSnackbar(Object date) {
return 'Alarm skipped. It will return on $date.';
}
@override
String alarmVacationPausedNoNext(Object vacationName) {
return 'It is paused for vacations ($vacationName) and has no next occurrence.';
}
@override
String alarmVacationPausedReturns(Object vacationName, Object date) {
return 'It is paused for vacations ($vacationName) and returns on $date.';
}
@override
String alarmVacationReturns(Object date) {
return 'With vacations enabled, it will ring again on $date.';
}
@override
String get defaultAlarmName => 'Music alarm';
@override
String get newAlarmTitle => 'New alarm';
@override
String get editAlarmTitle => 'Edit alarm';
@override
String get nameField => 'Name';
@override
String get timeField => 'Time';
@override
String get dateField => 'Date';
@override
String get onceOption => 'Once';
@override
String get dailyOption => 'Daily';
@override
String get weekdaysOption => 'Weekdays';
@override
String get soundAndVolumeSection => 'Sound and volume';
@override
String get alarmFadeInTitle => 'Alarm fade-in';
@override
String get alarmFadeInOff => '0 s (no transition)';
@override
String alarmFadeInSummary(int seconds) {
return '$seconds s (from 5% to the selected volume)';
}
@override
String get internalSafeSoundLabel => 'Internal safe sound';
@override
String get soundWarmSunrise => 'Warm sunrise';
@override
String get soundSoftBell => 'Soft bell';
@override
String get soundDigitalPulse => 'Digital pulse';
@override
String get favoriteStationLabel => 'Favorite station';
@override
String get noStationUseInternalSound => 'No station: use internal sound';
@override
String get saveFavoritesAlarmHint =>
'Save stations in Favorites to use them as a music alarm.';
@override
String get useCurrentStationAction => 'Use current station';
@override
String get playDuringVacations => 'Play during vacations';
@override
String get playDuringVacationsHint =>
'If you turn this off, the next occurrence will jump to the first valid day.';
@override
String get saveAlarmAction => 'Save alarm';
@override
String get chooseOneWeekdayError => 'Choose at least one weekday.';
@override
String get androidReliabilityReview => 'Review Android reliability';
@override
String get statusOk => 'OK';
@override
String get statusPending => 'pending';
@override
String androidReliabilityStatus(
Object exact,
Object notifications,
Object screen,
) {
return 'Reliability: exact $exact · notifications $notifications · screen $screen';
}
@override
String get vacationRangesTitle => 'Vacation ranges';
@override
String get addAction => 'Add';
@override
String get vacationRangesHint =>
'If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.';
@override
String get noVacationRangesLoaded => 'No ranges loaded.';
@override
String get deleteRangeTooltip => 'Delete range';
@override
String get vacationsDefaultName => 'Vacation';
@override
String get newVacationRangeTitle => 'New vacation range';
@override
String get startField => 'Start';
@override
String get endField => 'End';
@override
String get saveRangeAction => 'Save range';
@override
String get noAlarmsYetTitle => 'There are no alarms yet.';
@override
String get noAlarmsYetSubtitle =>
'Create one to design your musical wake-up.';
@override
String get ringingInternalAudioActive => 'Playing with internal safe audio.';
@override
String get ringingPreparingInternalAudio => 'Preparing internal safe audio.';
@override
String get stopAlarmAction => 'Stop alarm';
@override
String get pauseAction => 'Pause';
@override
String miniPlayerOpenLabel(Object stationName) {
return 'Open player for $stationName';
}
@override
String get playerIconLabel => 'Player';
@override
String get playbackStatusConnecting => 'Connecting...';
@override
String get playbackStatusLive => 'Live';
@override
String get playbackStatusPaused => 'Paused';
@override
String get playbackStatusConnectionError => 'Connection error';
@override
String get playbackStatusStopped => 'Stopped';
@override
String stationSemanticLabel(Object stationName) {
return 'Station $stationName';
}
@override
String get favoritesAddTooltip => 'Add to favorites';
@override
String favoritesAddedMessage(Object stationName) {
return '$stationName added to favorites';
}
@override
String get stationIconLabel => 'Station icon';
@override
String get liveNow => 'Live';
@override
String equalizerBandLabel(Object band) {
return '$band band';
}
@override
String equalizerBandValue(Object value) {
return '$value decibels';
}
@override
String get equalizerPresetFlat => 'Flat';
@override
String get equalizerPresetRock => 'Rock';
@override
String get equalizerPresetPop => 'Pop';
@override
String get equalizerPresetBassBoost => 'Bass Boost';
@override
String get equalizerPresetJazz => 'Jazz';
@override
String get equalizerPresetVoice => 'Voice';
@override
String get equalizerPresetCustom => 'Custom';
@override
String get onboardingTitle => 'Welcome to PluriWave';
@override
String get onboardingNewsTitle => 'What\'s new';
@override
String get onboardingStartAction => 'Start';
@override
String get onboardingCloseTooltip => 'Close';
@override
String radioRecordingError(Object error) {
return 'Error recording the radio: $error';
}
@override
String get radioApiConnectionError => 'No connection to the radio API';
@override
String get radioSearchError => 'Search error. Check your connection.';
@override
String get radioLoadMoreStationsError => 'Could not load more stations.';
@override
String get radioNearbyStationsError =>
'We could not detect nearby stations. Use country filters.';
@override
String radioCannotPlayStation(Object stationName) {
return 'Cannot play \"$stationName\"';
}
@override
String get recordingSelectStationFirst =>
'Select a station before recording.';
@override
String recordingStartError(Object error) {
return 'Could not start recording: $error';
}
@override
String get unsupportedConfigVersion => 'Unsupported configuration version';
@override
String get audioErrorGeneric => 'Playback error';
@override
String get audioErrorNoInternet => 'No internet connection';
@override
String get audioErrorInvalidUrl => 'The radio URL is not valid';
@override
String get audioErrorNotFound => 'The radio is not available (404 error)';
@override
String get audioErrorTimeout => 'Connection timed out';
@override
String get audioErrorCannotConnect => 'Cannot connect to the radio';
@override
String get audioErrorUnsupportedFormat => 'Unsupported stream format';
@override
String get audioErrorDecode => 'Error decoding the audio stream';
@override
String get audioErrorCleartext =>
'This radio uses unencrypted HTTP, which is not allowed';
@override
String get audioErrorSsl => 'Invalid SSL certificate on the radio';
@override
String get audioErrorCannotPlay => 'This radio cannot be played';
@override
String get audioErrorUnexpectedPlayback => 'Unexpected playback error';
@override
String get androidExactAlarmScheduleError =>
'Android could not schedule an exact alarm. Check the exact alarm permission.';
@override
String get recordingPathEmptyError => 'The recording path cannot be empty';
@override
String get recordingMaxSizeInvalidError =>
'The maximum size must be greater than zero';
@override
String get recordingAlreadyActiveError =>
'A recording is already in progress';
@override
String get alarmRingingFallbackActive => 'Playing with internal safe audio.';
@override
String get alarmRingingPreparingFallback => 'Preparing internal safe audio.';
@override
String get alarmRingingTryingStation =>
'Trying to play your station at the highest available quality.';
@override
String alarmScheduleOnce(Object date) {
return 'Once · $date';
}
@override
String alarmScheduleWeekdays(Object days) {
return 'Days: $days';
}
@override
String get androidReliabilityTitle => 'Review Android reliability';
@override
String get closeAction => 'Close';
@override
String get customOption => 'Custom';
@override
String get endLabel => 'End';
@override
String get equalizerDisable => 'Disable equalizer';
@override
String get helpTitle => 'Help and tutorial';
@override
String get helpSubtitle => 'Review PluriWave features, tips and whats new.';
@override
String get indefiniteOption => 'Indefinite';
@override
String get invalidNumber => 'Invalid number';
@override
String get nameLabel => 'Name';
@override
String get notPlaying => 'Not playing';
@override
String get oneTimeOption => 'Once';
@override
String get pausePlaybackTooltip => 'Pause playback';
@override
String qualityOriginal(Object quality) {
return 'Original quality: $quality';
}
@override
String get qualityUnknown => 'Quality not reported';
@override
String get recordAction => 'Record';
@override
String get recordDurationTitle => 'Recording duration';
@override
String get recordRadioSubtitle => 'Choose how long you want to record.';
@override
String get recordRadioTitle => 'Record radio';
@override
String get recordingActiveTitle => 'Recording radio';
@override
String get recordingDirectTitle => 'Direct recording';
@override
String get recordingsOpenFolderPlainError =>
'Could not open the recordings folder';
@override
String get recordingsOpenLatest => 'Open latest recording';
@override
String get recordingsOpenLatestError => 'Could not open the latest recording';
@override
String get startLabel => 'Start';
@override
String get startPlaybackTooltip => 'Start playback';
@override
String get stopAction => 'Stop';
@override
String get stopPlaybackTooltip => 'Stop playback';
@override
String get weekdayShortMonday => 'Mon';
@override
String get weekdayShortTuesday => 'Tue';
@override
String get weekdayShortWednesday => 'Wed';
@override
String get weekdayShortThursday => 'Thu';
@override
String get weekdayShortFriday => 'Fri';
@override
String get weekdayShortSaturday => 'Sat';
@override
String get weekdayShortSunday => 'Sun';
}
+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';
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff