diff --git a/lib/app.dart b/lib/app.dart index 0e522c5..280601c 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -257,7 +257,7 @@ class _PaginaPrincipalState extends State<_PaginaPrincipal> { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - 'Alarma pospuesta para esta ejecución.', + AppLocalizations.of(context).alarmPostponedCurrentExecution, ), ), ); diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index 99d78a5..9293839 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_bn.arb b/lib/l10n/app_bn.arb index 071d36c..1a40298 100644 --- a/lib/l10n/app_bn.arb +++ b/lib/l10n/app_bn.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 0baa926..68192fd 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 0a755bc..f99ddfb 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 76c9f73..35779dd 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarma pospuesta para esta ejecuci?n.", + "searchScreenTitle": "Buscar se?al", + "searchScreenSubtitle": "Encontr? radios por nombre, pa?s o idioma con filtros r?pidos y alto contraste.", + "searchFiltersLabel": "Filtros", + "searchHint": "Radio Horizonte, jazz, noticias...", + "searchCountryFilterLabel": "Pa?s", + "searchLanguageFilterLabel": "Idioma", + "searchMinQualityFilterLabel": "Calidad m?nima", + "searchEmptyTitle": "Busc? una emisora", + "searchNoResultsTitle": "Sin resultados", + "searchEmptySubtitle": "Us? la barra superior o los chips para descubrir se?ales de todo el mundo.", + "searchNoResultsSubtitle": "Prob? quitar filtros o escribir otro nombre para encontrar una se?al activa.", + "countrySpain": "Espa?a", + "countryUsa": "EE. UU.", + "countryMexico": "M?xico", + "countryArgentina": "Argentina", + "countryUk": "Reino Unido", + "countryFrance": "Francia", + "countryGermany": "Alemania", + "countryItaly": "Italia", + "countryBrazil": "Brasil", + "countryJapan": "Jap?n", + "languageNameSpanish": "Espa?ol", + "languageNameEnglish": "Ingl?s", + "languageNameFrench": "Franc?s", + "languageNameGerman": "Alem?n", + "languageNamePortuguese": "Portugu?s", + "languageNameItalian": "Italiano", + "languageNameJapanese": "Japon?s", + "languageNameArabic": "?rabe", + "languageNameRussian": "Ruso", + "homeScreenSubtitle": "Radio global en vivo con se?ales limpias, favoritos inteligentes y una experiencia visual de concurso.", + "exploreStations": "Explorar emisoras", + "stationsCount": "{count} radios", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "Calidad HD", + "nearYou": "Cerca de vos", + "nearYouInCountry": "Cerca de vos ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detectar", + "liveRadar": "Radar en directo", + "genresTitle": "G?neros", + "retryAction": "Reintentar", + "noStationsAvailable": "No hay emisoras disponibles", + "noStationsAvailableSubtitle": "Prob? refrescar o elegir otro g?nero para volver a capturar se?al.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Cl?sica", + "genreElectronic": "Electr?nica", + "genreNews": "Noticias", + "genreTalk": "Charlas", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latina", + "alarmScreenTitle": "Despertar musical", + "alarmScreenSubtitle": "Alarmas con radio, sonido seguro, vacaciones inteligentes y pr?xima ejecuci?n siempre visible.", + "createAlarmAction": "Crear alarma", + "alarmsCount": "{count} alarmas", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Alarmas activas sin pr?xima ejecuci?n", + "noActiveAlarms": "Sin alarmas activas", + "nextAlarmTitle": "Pr?xima alarma", + "activeAlarmsWithoutNextSubtitle": "Hay {count} alarma(s) activas, pero ahora mismo no tienen una fecha futura v?lida. Revis? fecha, d?as y vacaciones.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Cre? una alarma y PluriWave calcular? la siguiente ejecuci?n autom?ticamente.", + "alarmVacationPlay": "Suena en vacaciones", + "alarmVacationPause": "Pausa en vacaciones", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Siguiente ejecuci?n: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "No tiene pr?xima ejecuci?n activa.", + "alarmSkippedExecution": "Una ejecuci?n fue omitida: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Editar", + "skipNextAction": "Omitir siguiente", + "deleteTooltip": "Eliminar", + "alarmSkippedNoNextSnackbar": "Alarma omitida. No queda pr?xima ejecuci?n.", + "alarmSkippedReturnsSnackbar": "Alarma omitida. Volver? el {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "Est? pausada por vacaciones ({vacationName}) y sin pr?xima ejecuci?n.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "Est? pausada por vacaciones ({vacationName}) y vuelve el {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "Con vacaciones activas, volver? a sonar el {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Despertador musical", + "newAlarmTitle": "Nueva alarma", + "editAlarmTitle": "Editar alarma", + "nameField": "Nombre", + "timeField": "Hora", + "dateField": "Fecha", + "onceOption": "Una vez", + "dailyOption": "Diaria", + "weekdaysOption": "D?as", + "soundAndVolumeSection": "Sonido y volumen", + "alarmFadeInTitle": "Fade-in de alarma", + "alarmFadeInOff": "0 s (sin transici?n)", + "alarmFadeInSummary": "{seconds} s (de 5% al volumen elegido)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Sonido seguro interno", + "soundWarmSunrise": "Amanecer c?lido", + "soundSoftBell": "Campana suave", + "soundDigitalPulse": "Pulso digital", + "favoriteStationLabel": "Emisora favorita", + "noStationUseInternalSound": "Sin emisora: usar sonido interno", + "saveFavoritesAlarmHint": "Guard? emisoras en Favoritos para usarlas como alarma musical.", + "useCurrentStationAction": "Usar emisora actual", + "playDuringVacations": "Sonar durante vacaciones", + "playDuringVacationsHint": "Si lo apag?s, la pr?xima ejecuci?n saltar? al primer d?a v?lido.", + "saveAlarmAction": "Guardar alarma", + "chooseOneWeekdayError": "Eleg? al menos un d?a de la semana.", + "androidReliabilityReview": "Revisar fiabilidad Android", + "statusOk": "OK", + "statusPending": "pendiente", + "androidReliabilityStatus": "Fiabilidad: exactas {exact} ? notificaciones {notifications} ? pantalla {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Rangos de vacaciones", + "addAction": "Agregar", + "vacationRangesHint": "Si una alarma tiene \"Pausa en vacaciones\", se salta autom?ticamente estos rangos.", + "noVacationRangesLoaded": "Sin rangos cargados.", + "deleteRangeTooltip": "Eliminar rango", + "vacationsDefaultName": "Vacaciones", + "newVacationRangeTitle": "Nuevo rango de vacaciones", + "startField": "Inicio", + "endField": "Fin", + "saveRangeAction": "Guardar rango", + "noAlarmsYetTitle": "Todav?a no hay alarmas.", + "noAlarmsYetSubtitle": "Cre? una para dise?ar tu despertar musical.", + "ringingInternalAudioActive": "Sonando con audio seguro interno.", + "ringingPreparingInternalAudio": "Preparando audio seguro interno.", + "stopAlarmAction": "Detener alarma" } diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 113b25f..eb0aaf5 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb index e1a83ce..afc1c59 100644 --- a/lib/l10n/app_hi.arb +++ b/lib/l10n/app_hi.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index d514079..b6bcd0d 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 9908ebc..87955b2 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index 55d8411..d42c32e 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index eb37984..133c1b7 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 3ef1a3f..ab44e1b 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 60f3536..3e6aa9c 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -225,5 +225,205 @@ "placeholders": { "stationName": {} } - } + }, + "alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.", + "searchScreenTitle": "Search signal", + "searchScreenSubtitle": "Find stations by name, country, or language with fast filters and high contrast.", + "searchFiltersLabel": "Filters", + "searchHint": "Radio Horizon, jazz, news...", + "searchCountryFilterLabel": "Country", + "searchLanguageFilterLabel": "Language", + "searchMinQualityFilterLabel": "Minimum quality", + "searchEmptyTitle": "Search for a station", + "searchNoResultsTitle": "No results", + "searchEmptySubtitle": "Use the top bar or chips to discover stations from around the world.", + "searchNoResultsSubtitle": "Try removing filters or typing another name to find an active station.", + "countrySpain": "Spain", + "countryUsa": "USA", + "countryMexico": "Mexico", + "countryArgentina": "Argentina", + "countryUk": "UK", + "countryFrance": "France", + "countryGermany": "Germany", + "countryItaly": "Italy", + "countryBrazil": "Brazil", + "countryJapan": "Japan", + "languageNameSpanish": "Spanish", + "languageNameEnglish": "English", + "languageNameFrench": "French", + "languageNameGerman": "German", + "languageNamePortuguese": "Portuguese", + "languageNameItalian": "Italian", + "languageNameJapanese": "Japanese", + "languageNameArabic": "Arabic", + "languageNameRussian": "Russian", + "homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.", + "exploreStations": "Explore stations", + "stationsCount": "{count} stations", + "@stationsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityHd": "HD quality", + "nearYou": "Near you", + "nearYouInCountry": "Near you ? {country}", + "@nearYouInCountry": { + "placeholders": { + "country": {} + } + }, + "detectAction": "Detect", + "liveRadar": "Live radar", + "genresTitle": "Genres", + "retryAction": "Retry", + "noStationsAvailable": "No stations available", + "noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.", + "genrePop": "Pop", + "genreRock": "Rock", + "genreJazz": "Jazz", + "genreClassical": "Classical", + "genreElectronic": "Electronic", + "genreNews": "News", + "genreTalk": "Talk", + "genreHipHop": "Hip-hop", + "genreCountry": "Country", + "genreMetal": "Metal", + "genreReggae": "Reggae", + "genreLatin": "Latin", + "alarmScreenTitle": "Music wake-up", + "alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.", + "createAlarmAction": "Create alarm", + "alarmsCount": "{count} alarms", + "@alarmsCount": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence", + "noActiveAlarms": "No active alarms", + "nextAlarmTitle": "Next alarm", + "activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.", + "@activeAlarmsWithoutNextSubtitle": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.", + "alarmVacationPlay": "Plays during vacations", + "alarmVacationPause": "Paused during vacations", + "alarmFadeInLabel": "Fade-in {seconds}s", + "@alarmFadeInLabel": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "alarmNextExecution": "Next occurrence: {date}", + "@alarmNextExecution": { + "placeholders": { + "date": {} + } + }, + "alarmNoNextExecution": "It has no active next occurrence.", + "alarmSkippedExecution": "One occurrence was skipped: {date}.", + "@alarmSkippedExecution": { + "placeholders": { + "date": {} + } + }, + "editAction": "Edit", + "skipNextAction": "Skip next", + "deleteTooltip": "Delete", + "alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.", + "alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.", + "@alarmSkippedReturnsSnackbar": { + "placeholders": { + "date": {} + } + }, + "alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.", + "@alarmVacationPausedNoNext": { + "placeholders": { + "vacationName": {} + } + }, + "alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.", + "@alarmVacationPausedReturns": { + "placeholders": { + "vacationName": {}, + "date": {} + } + }, + "alarmVacationReturns": "With vacations enabled, it will ring again on {date}.", + "@alarmVacationReturns": { + "placeholders": { + "date": {} + } + }, + "defaultAlarmName": "Music alarm", + "newAlarmTitle": "New alarm", + "editAlarmTitle": "Edit alarm", + "nameField": "Name", + "timeField": "Time", + "dateField": "Date", + "onceOption": "Once", + "dailyOption": "Daily", + "weekdaysOption": "Weekdays", + "soundAndVolumeSection": "Sound and volume", + "alarmFadeInTitle": "Alarm fade-in", + "alarmFadeInOff": "0 s (no transition)", + "alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)", + "@alarmFadeInSummary": { + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "internalSafeSoundLabel": "Internal safe sound", + "soundWarmSunrise": "Warm sunrise", + "soundSoftBell": "Soft bell", + "soundDigitalPulse": "Digital pulse", + "favoriteStationLabel": "Favorite station", + "noStationUseInternalSound": "No station: use internal sound", + "saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.", + "useCurrentStationAction": "Use current station", + "playDuringVacations": "Play during vacations", + "playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.", + "saveAlarmAction": "Save alarm", + "chooseOneWeekdayError": "Choose at least one weekday.", + "androidReliabilityReview": "Review Android reliability", + "statusOk": "OK", + "statusPending": "pending", + "androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}", + "@androidReliabilityStatus": { + "placeholders": { + "exact": {}, + "notifications": {}, + "screen": {} + } + }, + "vacationRangesTitle": "Vacation ranges", + "addAction": "Add", + "vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.", + "noVacationRangesLoaded": "No ranges loaded.", + "deleteRangeTooltip": "Delete range", + "vacationsDefaultName": "Vacation", + "newVacationRangeTitle": "New vacation range", + "startField": "Start", + "endField": "End", + "saveRangeAction": "Save range", + "noAlarmsYetTitle": "There are no alarms yet.", + "noAlarmsYetSubtitle": "Create one to design your musical wake-up.", + "ringingInternalAudioActive": "Playing with internal safe audio.", + "ringingPreparingInternalAudio": "Preparing internal safe audio.", + "stopAlarmAction": "Stop alarm" } diff --git a/lib/pantallas/pantalla_alarma_sonando.dart b/lib/pantallas/pantalla_alarma_sonando.dart index febe057..d06ad67 100644 --- a/lib/pantallas/pantalla_alarma_sonando.dart +++ b/lib/pantallas/pantalla_alarma_sonando.dart @@ -5,6 +5,7 @@ import 'package:just_audio/just_audio.dart'; import 'package:provider/provider.dart'; import '../estado/estado_alarmas.dart'; +import '../l10n/gen/app_localizations.dart'; import '../estado/estado_radio.dart'; import '../modelos/alarma_musical.dart'; import '../servicios/servicio_audio.dart'; @@ -152,6 +153,7 @@ class _PantallaAlarmaSonandoState extends State { @override Widget build(BuildContext context) { final alarma = widget.alarma; + final l10n = AppLocalizations.of(context); return Scaffold( backgroundColor: const Color(0xFF061722), body: SafeArea( @@ -197,7 +199,7 @@ class _PantallaAlarmaSonandoState extends State { FilledButton.icon( onPressed: _detener, icon: const Icon(Icons.stop_rounded), - label: const Text('Detener alarma'), + label: Text(l10n.stopAlarmAction), ), ], ), diff --git a/lib/pantallas/pantalla_buscar.dart b/lib/pantallas/pantalla_buscar.dart index c6ed31a..4132bb5 100644 --- a/lib/pantallas/pantalla_buscar.dart +++ b/lib/pantallas/pantalla_buscar.dart @@ -3,6 +3,7 @@ import 'package:flutter_animate/flutter_animate.dart'; import 'package:provider/provider.dart'; import '../estado/estado_radio.dart'; +import '../l10n/gen/app_localizations.dart'; import '../widgets/pluri_glass_surface.dart'; import '../widgets/pluri_icon.dart'; import '../widgets/pluri_layout.dart'; @@ -12,28 +13,28 @@ import 'package:pluriwave/widgets/tarjeta_emisora.dart'; import 'reproducir_minimizado.dart'; const _paises = [ - ('Espana', 'ES'), - ('USA', 'US'), - ('Mexico', 'MX'), - ('Argentina', 'AR'), - ('UK', 'GB'), - ('Francia', 'FR'), - ('Alemania', 'DE'), - ('Italia', 'IT'), - ('Brasil', 'BR'), - ('Japon', 'JP'), + ('countrySpain', 'ES'), + ('countryUsa', 'US'), + ('countryMexico', 'MX'), + ('countryArgentina', 'AR'), + ('countryUk', 'GB'), + ('countryFrance', 'FR'), + ('countryGermany', 'DE'), + ('countryItaly', 'IT'), + ('countryBrazil', 'BR'), + ('countryJapan', 'JP'), ]; const _idiomas = [ - 'spanish', - 'english', - 'french', - 'german', - 'portuguese', - 'italian', - 'japanese', - 'arabic', - 'russian', + ('spanish', 'languageNameSpanish'), + ('english', 'languageNameEnglish'), + ('french', 'languageNameFrench'), + ('german', 'languageNameGerman'), + ('portuguese', 'languageNamePortuguese'), + ('italian', 'languageNameItalian'), + ('japanese', 'languageNameJapanese'), + ('arabic', 'languageNameArabic'), + ('russian', 'languageNameRussian'), ]; class PantallaBuscar extends StatefulWidget { @@ -69,17 +70,18 @@ class _PantallaBuscarState extends State { Widget build(BuildContext context) { final estado = context.watch(); final theme = Theme.of(context); + final l10n = AppLocalizations.of(context); return ListView( padding: PluriLayout.pageListPadding, children: [ PluriScreenHeader( - title: 'Buscar senal', - subtitle: 'Encontra radios por nombre, pais o idioma con filtros rapidos y alto contraste.', + title: l10n.searchScreenTitle, + subtitle: l10n.searchScreenSubtitle, glyph: PluriIconGlyph.search, - trailing: const PluriStatusPill( + trailing: PluriStatusPill( icon: Icons.tune_rounded, - label: 'Filtros', + label: l10n.searchFiltersLabel, ), ), Padding( @@ -89,7 +91,7 @@ class _PantallaBuscarState extends State { borderRadius: BorderRadius.circular(999), child: SearchBar( controller: _controller, - hintText: 'Radio Horizonte, jazz, noticias...', + hintText: l10n.searchHint, leading: const PluriIcon( glyph: PluriIconGlyph.search, variant: PluriIconVariant.filled, @@ -111,8 +113,8 @@ class _PantallaBuscarState extends State { ), ), _seccionFiltro( - 'Pais', - _paises.map((p) => (p.$1, p.$2)).toList(), + l10n.searchCountryFilterLabel, + _paises.map((p) => (_countryLabel(l10n, p.$1), p.$2)).toList(), _paisSeleccionado, (v) { setState(() => _paisSeleccionado = v); @@ -120,8 +122,8 @@ class _PantallaBuscarState extends State { }, ), _seccionFiltro( - 'Idioma', - _idiomas.map((i) => (i, i)).toList(), + l10n.searchLanguageFilterLabel, + _idiomas.map((i) => (_languageLabel(l10n, i.$2), i.$1)).toList(), _idiomaSeleccionado, (v) { setState(() => _idiomaSeleccionado = v); @@ -129,7 +131,7 @@ class _PantallaBuscarState extends State { }, ), _seccionFiltroInt( - 'Calidad m?nima', + l10n.searchMinQualityFilterLabel, const [('64 kbps', 64), ('96 kbps', 96), ('128 kbps', 128), ('192 kbps', 192), ('320 kbps', 320)], _calidadMinima, (v) { @@ -234,6 +236,7 @@ class _PantallaBuscarState extends State { } Widget _resultados(EstadoRadio estado, ThemeData theme) { + final l10n = AppLocalizations.of(context); if (estado.cargandoBusqueda) { return const SizedBox( height: 220, @@ -252,10 +255,12 @@ class _PantallaBuscarState extends State { height: 260, child: PluriEmptyState( glyph: PluriIconGlyph.search, - title: sinFiltros ? 'Busca una emisora' : 'Sin resultados', - subtitle: sinFiltros - ? 'Usa la barra superior o los chips para descubrir senales de todo el mundo.' - : 'Proba quitar filtros o escribir otro nombre para encontrar una senal activa.', + title: + sinFiltros ? l10n.searchEmptyTitle : l10n.searchNoResultsTitle, + subtitle: + sinFiltros + ? l10n.searchEmptySubtitle + : l10n.searchNoResultsSubtitle, ), ); } @@ -288,4 +293,31 @@ class _PantallaBuscarState extends State { }, ); } + + String _countryLabel(AppLocalizations l10n, String key) => switch (key) { + 'countrySpain' => l10n.countrySpain, + 'countryUsa' => l10n.countryUsa, + 'countryMexico' => l10n.countryMexico, + 'countryArgentina' => l10n.countryArgentina, + 'countryUk' => l10n.countryUk, + 'countryFrance' => l10n.countryFrance, + 'countryGermany' => l10n.countryGermany, + 'countryItaly' => l10n.countryItaly, + 'countryBrazil' => l10n.countryBrazil, + 'countryJapan' => l10n.countryJapan, + _ => key, + }; + + String _languageLabel(AppLocalizations l10n, String key) => switch (key) { + 'languageNameSpanish' => l10n.languageNameSpanish, + 'languageNameEnglish' => l10n.languageNameEnglish, + 'languageNameFrench' => l10n.languageNameFrench, + 'languageNameGerman' => l10n.languageNameGerman, + 'languageNamePortuguese' => l10n.languageNamePortuguese, + 'languageNameItalian' => l10n.languageNameItalian, + 'languageNameJapanese' => l10n.languageNameJapanese, + 'languageNameArabic' => l10n.languageNameArabic, + 'languageNameRussian' => l10n.languageNameRussian, + _ => key, + }; }