feat(i18n): expand supported languages
Build & Deploy Pluriwave / Build APK + AAB release (push) Has been cancelled
Build & Deploy Pluriwave / Análisis de código (push) Successful in 23s

This commit is contained in:
2026-05-22 14:37:30 +02:00
parent 4e22bd4e98
commit 3b0efb641c
25 changed files with 5402 additions and 26 deletions
+3 -1
View File
@@ -8,6 +8,8 @@
- [ ] Repasar absolutamente todos los literales de la aplicación en todas las pantallas, componentes, servicios con mensajes visibles y notificaciones. - [ ] Repasar absolutamente todos los literales de la aplicación en todas las pantallas, componentes, servicios con mensajes visibles y notificaciones.
- [ ] Soportar formatos locales de fecha, hora, números y duración usando helpers centralizados. - [ ] Soportar formatos locales de fecha, hora, números y duración usando helpers centralizados.
- [ ] Resolver correctamente singular/plural y variantes por cantidad, por ejemplo `1 emisora` vs `2 emisoras`. - [ ] Resolver correctamente singular/plural y variantes por cantidad, por ejemplo `1 emisora` vs `2 emisoras`.
- [ ] Preparar traducciones para la mayoría de idiomas más usados del planeta. - [x] Añadir soporte inicial para un conjunto amplio de idiomas muy hablados: inglés, español, chino, hindi, árabe, portugués, francés, ruso, alemán, japonés, indonesio, bengalí e italiano.
- [ ] Revisar profesionalmente todas las traducciones nuevas con hablantes nativos o servicio especializado antes de considerarlas definitivas.
- [ ] Preparar traducciones adicionales si se decide ampliar más allá del conjunto inicial.
- [ ] Revisar la aplicación de Farolero como referencia para detectar el conjunto de idiomas que nos interesa mantener. - [ ] Revisar la aplicación de Farolero como referencia para detectar el conjunto de idiomas que nos interesa mantener.
- [ ] Verificar que no queda ningún literal hardcodeado fuera del sistema de traducciones. - [ ] Verificar que no queda ningún literal hardcodeado fuera del sistema de traducciones.
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "ar",
"appTitle": "PluriWave",
"navHome": "????????",
"navSearch": "???",
"navFavorites": "???????",
"navAlarms": "????????",
"navSettings": "?????????",
"actionOk": "?????",
"sleepTimer": "???? ?????",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "?????????",
"settingsSubtitle": "???? ???? ?? ????? ?????? ????????? ???????? ???????.",
"languageSectionTitle": "?????",
"languageSectionDescription": "???? ??? ??? ???????.",
"languageSystemDefault": "??????",
"languageSpanish": "?????????",
"languageEnglish": "??????????",
"languageUpdated": "?? ????? ?????: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "?? ????? ?????: ??????",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "?????",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "bn",
"appTitle": "PluriWave",
"navHome": "???",
"navSearch": "????",
"navFavorites": "??????",
"navAlarms": "?????????",
"navSettings": "??????",
"actionOk": "??? ???",
"sleepTimer": "????? ??????",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "??????",
"settingsSubtitle": "????, ??????? ??? ?????? ???????? ??????? ???????????",
"languageSectionTitle": "????",
"languageSectionDescription": "??????? ???????? ???? ???? ????",
"languageSystemDefault": "???????",
"languageSpanish": "?????????",
"languageEnglish": "??????",
"languageUpdated": "???? ????? ??????: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "???? ????? ??????: ???????",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "?????",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "de",
"appTitle": "PluriWave",
"navHome": "Start",
"navSearch": "Suche",
"navFavorites": "Favoriten",
"navAlarms": "Alarme",
"navSettings": "Einstellungen",
"actionOk": "OK",
"sleepTimer": "Sleep-Timer",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "Einstellungen",
"settingsSubtitle": "Feinsteuerung f?r Sound, Backups und eigene Sender.",
"languageSectionTitle": "Sprache",
"languageSectionDescription": "W?hle die Anzeigesprache der App.",
"languageSystemDefault": "System",
"languageSpanish": "Spanisch",
"languageEnglish": "Englisch",
"languageUpdated": "Sprache aktualisiert: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "Sprache aktualisiert: System",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "Abbrechen",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "fr",
"appTitle": "PluriWave",
"navHome": "Accueil",
"navSearch": "Recherche",
"navFavorites": "Favoris",
"navAlarms": "Alarmes",
"navSettings": "R?glages",
"actionOk": "OK",
"sleepTimer": "Minuteur de sommeil",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "R?glages",
"settingsSubtitle": "Contr?le fin du son, sauvegardes et stations personnalis?es.",
"languageSectionTitle": "Langue",
"languageSectionDescription": "Choisissez la langue d?affichage de l?application.",
"languageSystemDefault": "Syst?me",
"languageSpanish": "Espagnol",
"languageEnglish": "Anglais",
"languageUpdated": "Langue mise ? jour : {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "Langue mise ? jour : Syst?me",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "Annuler",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "hi",
"appTitle": "PluriWave",
"navHome": "???",
"navSearch": "???",
"navFavorites": "???????",
"navAlarms": "??????",
"navSettings": "????????",
"actionOk": "???",
"sleepTimer": "????? ?????",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "????????",
"settingsSubtitle": "?????, ????? ?? ????? ???????? ?? ??????? ?????????",
"languageSectionTitle": "????",
"languageSectionDescription": "?? ?? ???? ??????",
"languageSystemDefault": "??????",
"languageSpanish": "??????",
"languageEnglish": "?????????",
"languageUpdated": "???? ???? ??: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "???? ???? ??: ??????",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "???? ????",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "id",
"appTitle": "PluriWave",
"navHome": "Beranda",
"navSearch": "Cari",
"navFavorites": "Favorit",
"navAlarms": "Alarm",
"navSettings": "Pengaturan",
"actionOk": "OK",
"sleepTimer": "Timer tidur",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "Pengaturan",
"settingsSubtitle": "Kontrol suara, cadangan, dan stasiun khusus secara detail.",
"languageSectionTitle": "Bahasa",
"languageSectionDescription": "Pilih bahasa tampilan aplikasi.",
"languageSystemDefault": "Sistem",
"languageSpanish": "Spanyol",
"languageEnglish": "Inggris",
"languageUpdated": "Bahasa diperbarui: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "Bahasa diperbarui: Sistem",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "Batal",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "it",
"appTitle": "PluriWave",
"navHome": "Home",
"navSearch": "Cerca",
"navFavorites": "Preferiti",
"navAlarms": "Sveglie",
"navSettings": "Impostazioni",
"actionOk": "OK",
"sleepTimer": "Timer sonno",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "Impostazioni",
"settingsSubtitle": "Controllo fine del suono, backup e stazioni personalizzate.",
"languageSectionTitle": "Lingua",
"languageSectionDescription": "Scegli la lingua di visualizzazione dell?app.",
"languageSystemDefault": "Sistema",
"languageSpanish": "Spagnolo",
"languageEnglish": "Inglese",
"languageUpdated": "Lingua aggiornata: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "Lingua aggiornata: Sistema",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "Annulla",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "ja",
"appTitle": "PluriWave",
"navHome": "???",
"navSearch": "??",
"navFavorites": "?????",
"navAlarms": "????",
"navSettings": "??",
"actionOk": "OK",
"sleepTimer": "????????",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "??",
"settingsSubtitle": "?????????????????????????",
"languageSectionTitle": "??",
"languageSectionDescription": "???????????????",
"languageSystemDefault": "????",
"languageSpanish": "?????",
"languageEnglish": "??",
"languageUpdated": "?????????: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "?????????: ????",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "?????",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "pt",
"appTitle": "PluriWave",
"navHome": "In?cio",
"navSearch": "Buscar",
"navFavorites": "Favoritos",
"navAlarms": "Alarmes",
"navSettings": "Defini??es",
"actionOk": "OK",
"sleepTimer": "Timer de sono",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "Defini??es",
"settingsSubtitle": "Controle fino de som, backups e esta??es personalizadas.",
"languageSectionTitle": "Idioma",
"languageSectionDescription": "Escolha como o idioma do app ? exibido.",
"languageSystemDefault": "Sistema",
"languageSpanish": "Espanhol",
"languageEnglish": "Ingl?s",
"languageUpdated": "Idioma atualizado: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "Idioma atualizado: Sistema",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "Cancelar",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "ru",
"appTitle": "PluriWave",
"navHome": "???????",
"navSearch": "?????",
"navFavorites": "?????????",
"navAlarms": "??????????",
"navSettings": "?????????",
"actionOk": "OK",
"sleepTimer": "?????? ???",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "?????????",
"settingsSubtitle": "?????? ????????? ?????, ????????? ????? ? ???????????????? ???????.",
"languageSectionTitle": "????",
"languageSectionDescription": "???????? ???? ?????????? ??????????.",
"languageSystemDefault": "???????",
"languageSpanish": "?????????",
"languageEnglish": "??????????",
"languageUpdated": "???? ????????: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "???? ????????: ???????",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "??????",
"equalizerTitle": "Equalizer"
}
+153
View File
@@ -0,0 +1,153 @@
{
"@@locale": "zh",
"appTitle": "PluriWave",
"navHome": "??",
"navSearch": "??",
"navFavorites": "??",
"navAlarms": "??",
"navSettings": "??",
"actionOk": "??",
"sleepTimer": "?????",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "??",
"settingsSubtitle": "?????????????????",
"languageSectionTitle": "??",
"languageSectionDescription": "?????????",
"languageSystemDefault": "??",
"languageSpanish": "????",
"languageEnglish": "??",
"languageUpdated": "??????{languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "????????",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave ? backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"dash": "?",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "??",
"equalizerTitle": "Equalizer"
}
+59 -2
View File
@@ -5,8 +5,19 @@ import 'package:flutter/widgets.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart' as intl; import 'package:intl/intl.dart' as intl;
import 'app_localizations_ar.dart';
import 'app_localizations_bn.dart';
import 'app_localizations_de.dart';
import 'app_localizations_en.dart'; import 'app_localizations_en.dart';
import 'app_localizations_es.dart'; import 'app_localizations_es.dart';
import 'app_localizations_fr.dart';
import 'app_localizations_hi.dart';
import 'app_localizations_id.dart';
import 'app_localizations_it.dart';
import 'app_localizations_ja.dart';
import 'app_localizations_pt.dart';
import 'app_localizations_ru.dart';
import 'app_localizations_zh.dart';
// ignore_for_file: type=lint // ignore_for_file: type=lint
@@ -94,8 +105,19 @@ abstract class AppLocalizations {
/// A list of this localizations delegate's supported locales. /// A list of this localizations delegate's supported locales.
static const List<Locale> supportedLocales = <Locale>[ static const List<Locale> supportedLocales = <Locale>[
Locale('ar'),
Locale('bn'),
Locale('de'),
Locale('en'), Locale('en'),
Locale('es'), Locale('es'),
Locale('fr'),
Locale('hi'),
Locale('id'),
Locale('it'),
Locale('ja'),
Locale('pt'),
Locale('ru'),
Locale('zh'),
]; ];
/// No description provided for @appTitle. /// No description provided for @appTitle.
@@ -679,8 +701,21 @@ class _AppLocalizationsDelegate
} }
@override @override
bool isSupported(Locale locale) => bool isSupported(Locale locale) => <String>[
<String>['en', 'es'].contains(locale.languageCode); 'ar',
'bn',
'de',
'en',
'es',
'fr',
'hi',
'id',
'it',
'ja',
'pt',
'ru',
'zh',
].contains(locale.languageCode);
@override @override
bool shouldReload(_AppLocalizationsDelegate old) => false; bool shouldReload(_AppLocalizationsDelegate old) => false;
@@ -689,10 +724,32 @@ class _AppLocalizationsDelegate
AppLocalizations lookupAppLocalizations(Locale locale) { AppLocalizations lookupAppLocalizations(Locale locale) {
// Lookup logic when only language code is specified. // Lookup logic when only language code is specified.
switch (locale.languageCode) { switch (locale.languageCode) {
case 'ar':
return AppLocalizationsAr();
case 'bn':
return AppLocalizationsBn();
case 'de':
return AppLocalizationsDe();
case 'en': case 'en':
return AppLocalizationsEn(); return AppLocalizationsEn();
case 'es': case 'es':
return AppLocalizationsEs(); return AppLocalizationsEs();
case 'fr':
return AppLocalizationsFr();
case 'hi':
return AppLocalizationsHi();
case 'id':
return AppLocalizationsId();
case 'it':
return AppLocalizationsIt();
case 'ja':
return AppLocalizationsJa();
case 'pt':
return AppLocalizationsPt();
case 'ru':
return AppLocalizationsRu();
case 'zh':
return AppLocalizationsZh();
} }
throw FlutterError( throw FlutterError(
+328
View File
@@ -0,0 +1,328 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Arabic (`ar`).
class AppLocalizationsAr extends AppLocalizations {
AppLocalizationsAr([String locale = 'ar']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => '????????';
@override
String get navSearch => '???';
@override
String get navFavorites => '???????';
@override
String get navAlarms => '????????';
@override
String get navSettings => '?????????';
@override
String get actionOk => '?????';
@override
String get sleepTimer => '???? ?????';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => '?????????';
@override
String get settingsSubtitle =>
'???? ???? ?? ????? ?????? ????????? ???????? ???????.';
@override
String get languageSectionTitle => '?????';
@override
String get languageSectionDescription => '???? ??? ??? ???????.';
@override
String get languageSystemDefault => '??????';
@override
String get languageSpanish => '?????????';
@override
String get languageEnglish => '??????????';
@override
String languageUpdated(Object languageName) {
return '?? ????? ?????: $languageName';
}
@override
String get languageUpdatedSystem => '?? ????? ?????: ??????';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => '?????';
@override
String get equalizerTitle => 'Equalizer';
}
+328
View File
@@ -0,0 +1,328 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Bengali Bangla (`bn`).
class AppLocalizationsBn extends AppLocalizations {
AppLocalizationsBn([String locale = 'bn']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => '???';
@override
String get navSearch => '????';
@override
String get navFavorites => '??????';
@override
String get navAlarms => '?????????';
@override
String get navSettings => '??????';
@override
String get actionOk => '??? ???';
@override
String get sleepTimer => '????? ??????';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => '??????';
@override
String get settingsSubtitle =>
'????, ??????? ??? ?????? ???????? ??????? ???????????';
@override
String get languageSectionTitle => '????';
@override
String get languageSectionDescription => '??????? ???????? ???? ???? ????';
@override
String get languageSystemDefault => '???????';
@override
String get languageSpanish => '?????????';
@override
String get languageEnglish => '??????';
@override
String languageUpdated(Object languageName) {
return '???? ????? ??????: $languageName';
}
@override
String get languageUpdatedSystem => '???? ????? ??????: ???????';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => '?????';
@override
String get equalizerTitle => 'Equalizer';
}
+328
View File
@@ -0,0 +1,328 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for German (`de`).
class AppLocalizationsDe extends AppLocalizations {
AppLocalizationsDe([String locale = 'de']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'Start';
@override
String get navSearch => 'Suche';
@override
String get navFavorites => 'Favoriten';
@override
String get navAlarms => 'Alarme';
@override
String get navSettings => 'Einstellungen';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => 'Sleep-Timer';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => 'Einstellungen';
@override
String get settingsSubtitle =>
'Feinsteuerung f?r Sound, Backups und eigene Sender.';
@override
String get languageSectionTitle => 'Sprache';
@override
String get languageSectionDescription => 'W?hle die Anzeigesprache der App.';
@override
String get languageSystemDefault => 'System';
@override
String get languageSpanish => 'Spanisch';
@override
String get languageEnglish => 'Englisch';
@override
String languageUpdated(Object languageName) {
return 'Sprache aktualisiert: $languageName';
}
@override
String get languageUpdatedSystem => 'Sprache aktualisiert: System';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => 'Abbrechen';
@override
String get equalizerTitle => 'Equalizer';
}
+329
View File
@@ -0,0 +1,329 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for French (`fr`).
class AppLocalizationsFr extends AppLocalizations {
AppLocalizationsFr([String locale = 'fr']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'Accueil';
@override
String get navSearch => 'Recherche';
@override
String get navFavorites => 'Favoris';
@override
String get navAlarms => 'Alarmes';
@override
String get navSettings => 'R?glages';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => 'Minuteur de sommeil';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => 'R?glages';
@override
String get settingsSubtitle =>
'Contr?le fin du son, sauvegardes et stations personnalis?es.';
@override
String get languageSectionTitle => 'Langue';
@override
String get languageSectionDescription =>
'Choisissez la langue d?affichage de l?application.';
@override
String get languageSystemDefault => 'Syst?me';
@override
String get languageSpanish => 'Espagnol';
@override
String get languageEnglish => 'Anglais';
@override
String languageUpdated(Object languageName) {
return 'Langue mise ? jour : $languageName';
}
@override
String get languageUpdatedSystem => 'Langue mise ? jour : Syst?me';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => 'Annuler';
@override
String get equalizerTitle => 'Equalizer';
}
+328
View File
@@ -0,0 +1,328 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Hindi (`hi`).
class AppLocalizationsHi extends AppLocalizations {
AppLocalizationsHi([String locale = 'hi']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => '???';
@override
String get navSearch => '???';
@override
String get navFavorites => '???????';
@override
String get navAlarms => '??????';
@override
String get navSettings => '????????';
@override
String get actionOk => '???';
@override
String get sleepTimer => '????? ?????';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => '????????';
@override
String get settingsSubtitle =>
'?????, ????? ?? ????? ???????? ?? ??????? ?????????';
@override
String get languageSectionTitle => '????';
@override
String get languageSectionDescription => '?? ?? ???? ??????';
@override
String get languageSystemDefault => '??????';
@override
String get languageSpanish => '??????';
@override
String get languageEnglish => '?????????';
@override
String languageUpdated(Object languageName) {
return '???? ???? ??: $languageName';
}
@override
String get languageUpdatedSystem => '???? ???? ??: ??????';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => '???? ????';
@override
String get equalizerTitle => 'Equalizer';
}
+328
View File
@@ -0,0 +1,328 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Indonesian (`id`).
class AppLocalizationsId extends AppLocalizations {
AppLocalizationsId([String locale = 'id']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'Beranda';
@override
String get navSearch => 'Cari';
@override
String get navFavorites => 'Favorit';
@override
String get navAlarms => 'Alarm';
@override
String get navSettings => 'Pengaturan';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => 'Timer tidur';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => 'Pengaturan';
@override
String get settingsSubtitle =>
'Kontrol suara, cadangan, dan stasiun khusus secara detail.';
@override
String get languageSectionTitle => 'Bahasa';
@override
String get languageSectionDescription => 'Pilih bahasa tampilan aplikasi.';
@override
String get languageSystemDefault => 'Sistem';
@override
String get languageSpanish => 'Spanyol';
@override
String get languageEnglish => 'Inggris';
@override
String languageUpdated(Object languageName) {
return 'Bahasa diperbarui: $languageName';
}
@override
String get languageUpdatedSystem => 'Bahasa diperbarui: Sistem';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => 'Batal';
@override
String get equalizerTitle => 'Equalizer';
}
+329
View File
@@ -0,0 +1,329 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Italian (`it`).
class AppLocalizationsIt extends AppLocalizations {
AppLocalizationsIt([String locale = 'it']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'Home';
@override
String get navSearch => 'Cerca';
@override
String get navFavorites => 'Preferiti';
@override
String get navAlarms => 'Sveglie';
@override
String get navSettings => 'Impostazioni';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => 'Timer sonno';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => 'Impostazioni';
@override
String get settingsSubtitle =>
'Controllo fine del suono, backup e stazioni personalizzate.';
@override
String get languageSectionTitle => 'Lingua';
@override
String get languageSectionDescription =>
'Scegli la lingua di visualizzazione dell?app.';
@override
String get languageSystemDefault => 'Sistema';
@override
String get languageSpanish => 'Spagnolo';
@override
String get languageEnglish => 'Inglese';
@override
String languageUpdated(Object languageName) {
return 'Lingua aggiornata: $languageName';
}
@override
String get languageUpdatedSystem => 'Lingua aggiornata: Sistema';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => 'Annulla';
@override
String get equalizerTitle => 'Equalizer';
}
+327
View File
@@ -0,0 +1,327 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Japanese (`ja`).
class AppLocalizationsJa extends AppLocalizations {
AppLocalizationsJa([String locale = 'ja']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => '???';
@override
String get navSearch => '??';
@override
String get navFavorites => '?????';
@override
String get navAlarms => '????';
@override
String get navSettings => '??';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => '????????';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => '??';
@override
String get settingsSubtitle => '?????????????????????????';
@override
String get languageSectionTitle => '??';
@override
String get languageSectionDescription => '???????????????';
@override
String get languageSystemDefault => '????';
@override
String get languageSpanish => '?????';
@override
String get languageEnglish => '??';
@override
String languageUpdated(Object languageName) {
return '?????????: $languageName';
}
@override
String get languageUpdatedSystem => '?????????: ????';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => '?????';
@override
String get equalizerTitle => 'Equalizer';
}
+329
View File
@@ -0,0 +1,329 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Portuguese (`pt`).
class AppLocalizationsPt extends AppLocalizations {
AppLocalizationsPt([String locale = 'pt']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'In?cio';
@override
String get navSearch => 'Buscar';
@override
String get navFavorites => 'Favoritos';
@override
String get navAlarms => 'Alarmes';
@override
String get navSettings => 'Defini??es';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => 'Timer de sono';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => 'Defini??es';
@override
String get settingsSubtitle =>
'Controle fino de som, backups e esta??es personalizadas.';
@override
String get languageSectionTitle => 'Idioma';
@override
String get languageSectionDescription =>
'Escolha como o idioma do app ? exibido.';
@override
String get languageSystemDefault => 'Sistema';
@override
String get languageSpanish => 'Espanhol';
@override
String get languageEnglish => 'Ingl?s';
@override
String languageUpdated(Object languageName) {
return 'Idioma atualizado: $languageName';
}
@override
String get languageUpdatedSystem => 'Idioma atualizado: Sistema';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => 'Cancelar';
@override
String get equalizerTitle => 'Equalizer';
}
+329
View File
@@ -0,0 +1,329 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Russian (`ru`).
class AppLocalizationsRu extends AppLocalizations {
AppLocalizationsRu([String locale = 'ru']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => '???????';
@override
String get navSearch => '?????';
@override
String get navFavorites => '?????????';
@override
String get navAlarms => '??????????';
@override
String get navSettings => '?????????';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => '?????? ???';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => '?????????';
@override
String get settingsSubtitle =>
'?????? ????????? ?????, ????????? ????? ? ???????????????? ???????.';
@override
String get languageSectionTitle => '????';
@override
String get languageSectionDescription =>
'???????? ???? ?????????? ??????????.';
@override
String get languageSystemDefault => '???????';
@override
String get languageSpanish => '?????????';
@override
String get languageEnglish => '??????????';
@override
String languageUpdated(Object languageName) {
return '???? ????????: $languageName';
}
@override
String get languageUpdatedSystem => '???? ????????: ???????';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => '??????';
@override
String get equalizerTitle => 'Equalizer';
}
+327
View File
@@ -0,0 +1,327 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Chinese (`zh`).
class AppLocalizationsZh extends AppLocalizations {
AppLocalizationsZh([String locale = 'zh']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => '??';
@override
String get navSearch => '??';
@override
String get navFavorites => '??';
@override
String get navAlarms => '??';
@override
String get navSettings => '??';
@override
String get actionOk => '??';
@override
String get sleepTimer => '?????';
@override
String get sleepTimerDescription =>
'Smooth radio shutdown with an exact countdown.';
@override
String get cancelTimer => 'Cancel timer';
@override
String get optionOther => 'Other';
@override
String get customDurationTitle => 'Custom duration';
@override
String get durationGreaterThanZero => 'Choose a duration greater than zero.';
@override
String get hoursLabel => 'Hours';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Seconds';
@override
String get saveQuickAccess => 'Save as quick access';
@override
String get startTimer => 'Start timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Skipped this execution of $alarmName.';
}
@override
String get settingsTitle => '??';
@override
String get settingsSubtitle => '?????????????????';
@override
String get languageSectionTitle => '??';
@override
String get languageSectionDescription => '?????????';
@override
String get languageSystemDefault => '??';
@override
String get languageSpanish => '????';
@override
String get languageEnglish => '??';
@override
String languageUpdated(Object languageName) {
return '??????$languageName';
}
@override
String get languageUpdatedSystem => '????????';
@override
String get timerSectionTitle => 'Sleep timer';
@override
String get timerSectionAdd => 'Add';
@override
String get timerSectionDescription =>
'Customize the quick presets shown when automatically stopping the radio.';
@override
String get timerSectionRestoreRecommended => 'Restore recommended times';
@override
String get newQuickAccessTitle => 'New quick access';
@override
String get saveQuickAccessButton => 'Save quick access';
@override
String get settingsSafeStatus => 'Safe';
@override
String get recordingsSectionTitle => 'Recordings';
@override
String get recordingsFolderDialogTitle => 'Select recordings folder';
@override
String get recordingsPathUpdated => 'Recording path updated';
@override
String recordingsPathSaveError(Object error) {
return 'Could not save the path: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'The internal default folder will be used';
@override
String get recordingsFolderTitle => 'Recordings folder';
@override
String get recordingsPathCalculating => 'Calculating path...';
@override
String get recordingsChangePath => 'Change path';
@override
String get recordingsUseDefaultPath => 'Use default path';
@override
String get recordingsOriginalStreamHint =>
'The radio is saved from the original stream, without recompressing.';
@override
String get equalizerActive => 'Active';
@override
String get equalizerDisabled => 'Disabled';
@override
String get equalizerEnable => 'Enable equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Changes are applied in real time to the current station.';
@override
String get equalizerPendingSubtitle =>
'Changes are saved and will apply when Android enables the effect.';
@override
String get equalizerPerStationTitle => 'Use custom EQ for this favorite';
@override
String equalizerPerStationActive(Object stationName) {
return 'Active for $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Using main EQ for $stationName';
}
@override
String get preferredStationTitle => 'Preferred station';
@override
String get preferredStationDescription =>
'Preselected for new alarms and available for quick playback.';
@override
String get preferredStationNoStationsTitle => 'No stations available yet';
@override
String get preferredStationNoStationsSubtitle =>
'Save favorites or load stations to choose a preferred one.';
@override
String get preferredStationAutomaticFallback => 'Automatic fallback';
@override
String get preferredStationDefaultFavorite => 'Default favorite';
@override
String preferredStationCurrent(Object stationName) {
return 'Current preferred: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'No favorites: automatically using $stationName';
}
@override
String get preferredStationPlay => 'Play preferred';
@override
String get customStationsTitle => 'Custom stations';
@override
String get customStationsAdd => 'Add';
@override
String get customStationsEmpty => 'No custom stations.';
@override
String get playAction => 'Play';
@override
String get deleteAction => 'Delete';
@override
String get addStationTitle => 'Add station';
@override
String get stationNameLabel => 'Name *';
@override
String get requiredField => 'Required field';
@override
String get streamUrlLabel => 'Stream URL *';
@override
String get invalidUrl => 'Invalid URL';
@override
String get countryOptionalLabel => 'Country (optional)';
@override
String get saveStation => 'Save station';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Export configuration';
@override
String get backupExportSubtitle =>
'Favorites, custom stations, and EQ presets';
@override
String get backupImportTitle => 'Import configuration';
@override
String get backupImportSubtitle => 'Restore from a backup file';
@override
String get backupShareSubject => 'PluriWave ? backup';
@override
String backupShareText(Object date) {
return 'PluriWave configuration exported on $date';
}
@override
String backupExportError(Object error) {
return 'Export error: $error';
}
@override
String get backupImportConfirmMessage =>
'This will add favorites, stations, and presets from the file. Continue?';
@override
String get backupImportSuccess => 'Configuration imported successfully';
@override
String backupImportError(Object error) {
return 'Import error: $error';
}
@override
String get appVersionLoading => 'Loading version...';
@override
String appVersionSubtitle(Object version) {
return '$version - World radio';
}
@override
String get savedFavoritesTitle => 'Saved favorites';
@override
String get stationFilterTitle => 'Station filter';
@override
String get stationFilterSubtitle => 'Only stations verified as active';
@override
String get backgroundAudioTitle => 'Background audio';
@override
String get backgroundAudioSubtitle => 'Continues when the screen turns off';
@override
String get dash => '?';
@override
String get cancelAction => '??';
@override
String get equalizerTitle => 'Equalizer';
}
+45 -21
View File
@@ -261,19 +261,29 @@ class _SeccionIdioma extends StatelessWidget {
const _SeccionIdioma(); const _SeccionIdioma();
static const _codigoSistema = 'system'; static const _codigoSistema = 'system';
static const _codigoEspanol = 'es'; static const _idiomas = [
static const _codigoIngles = 'en'; _IdiomaDisponible(Locale('en'), 'English'),
_IdiomaDisponible(Locale('es'), 'Español'),
_IdiomaDisponible(Locale('zh'), '中文'),
_IdiomaDisponible(Locale('hi'), 'हिन्दी'),
_IdiomaDisponible(Locale('ar'), 'العربية'),
_IdiomaDisponible(Locale('pt'), 'Português'),
_IdiomaDisponible(Locale('fr'), 'Français'),
_IdiomaDisponible(Locale('ru'), 'Русский'),
_IdiomaDisponible(Locale('de'), 'Deutsch'),
_IdiomaDisponible(Locale('ja'), '日本語'),
_IdiomaDisponible(Locale('id'), 'Bahasa Indonesia'),
_IdiomaDisponible(Locale('bn'), 'বাংলা'),
_IdiomaDisponible(Locale('it'), 'Italiano'),
];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context); final l10n = AppLocalizations.of(context);
final estadoIdioma = context.watch<EstadoIdioma>(); final estadoIdioma = context.watch<EstadoIdioma>();
final locale = estadoIdioma.localeSeleccionado; final locale = estadoIdioma.localeSeleccionado;
final valorActual = switch (locale?.languageCode) { final valorActual =
_codigoEspanol => _codigoEspanol, locale == null ? _codigoSistema : _codigoLocale(locale);
_codigoIngles => _codigoIngles,
_ => _codigoSistema,
};
return PluriGlassSurface( return PluriGlassSurface(
child: Column( child: Column(
@@ -306,13 +316,10 @@ class _SeccionIdioma extends StatelessWidget {
value: _codigoSistema, value: _codigoSistema,
child: Text(l10n.languageSystemDefault), child: Text(l10n.languageSystemDefault),
), ),
for (final idioma in _idiomas)
DropdownMenuItem( DropdownMenuItem(
value: _codigoEspanol, value: _codigoLocale(idioma.locale),
child: Text(l10n.languageSpanish), child: Text(idioma.nombreNativo),
),
DropdownMenuItem(
value: _codigoIngles,
child: Text(l10n.languageEnglish),
), ),
], ],
onChanged: (codigo) async { onChanged: (codigo) async {
@@ -326,17 +333,19 @@ class _SeccionIdioma extends StatelessWidget {
return; return;
} }
final locale = Locale(codigo); final idioma = _idiomas.firstWhere(
await context.read<EstadoIdioma>().seleccionarLocale(locale); (item) => _codigoLocale(item.locale) == codigo,
orElse: () => _idiomas.first,
);
await context.read<EstadoIdioma>().seleccionarLocale(
idioma.locale,
);
if (!context.mounted) return; if (!context.mounted) return;
final nombre = switch (codigo) {
_codigoEspanol => l10n.languageSpanish,
_codigoIngles => l10n.languageEnglish,
_ => l10n.languageSystemDefault,
};
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(l10n.languageUpdated(nombre))), SnackBar(
content: Text(l10n.languageUpdated(idioma.nombreNativo)),
),
); );
}, },
), ),
@@ -344,6 +353,21 @@ class _SeccionIdioma extends StatelessWidget {
), ),
); );
} }
static String _codigoLocale(Locale locale) {
final countryCode = locale.countryCode;
if (countryCode == null || countryCode.isEmpty) {
return locale.languageCode;
}
return '${locale.languageCode}_$countryCode';
}
}
class _IdiomaDisponible {
const _IdiomaDisponible(this.locale, this.nombreNativo);
final Locale locale;
final String nombreNativo;
} }
class _FormularioDuracionTimer extends StatefulWidget { class _FormularioDuracionTimer extends StatefulWidget {