fix: resolver advertencias de analisis i18n
Build & Deploy PluriWave / Análisis de código (push) Successful in 35s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m26s

This commit is contained in:
Javier Bautista Fernández
2026-06-03 14:54:50 +02:00
parent 643ba1eb45
commit 00fe49c309
6 changed files with 16 additions and 17 deletions
+3 -3
View File
@@ -783,13 +783,13 @@ extension PluriAppLocalizationsExt on AppLocalizations {
String get activeAlarmsWithoutNextTitle => _pick({'es':'Alarmas activas sin próxima ejecución','en':'Active alarms without a next occurrence','fr':'Alarmes actives sans prochaine exécution','de':'Aktive Alarme ohne nächste Ausführung','it':'Sveglie attive senza prossima esecuzione','pt':'Alarmes ativos sem próxima execução','ru':'Активные будильники без следующего запуска','ja':'次回実行のない有効なアラーム','zh':'没有下次执行的活动闹钟','ar':'منبهات نشطة بلا تشغيل تالٍ','hi':'अगली घंटी बिना सक्रिय अलार्म','bn':'পরবর্তী সময় ছাড়া সক্রিয় অ্যালার্ম','id':'Alarm aktif tanpa jadwal berikutnya'});
String get activeAlarmsNoneTitle => _pick({'es':'Sin alarmas activas','en':'No active alarms','fr':'Aucune alarme active','de':'Keine aktiven Alarme','it':'Nessuna sveglia attiva','pt':'Sem alarmes ativos','ru':'Нет активных будильников','ja':'有効なアラームはありません','zh':'没有活动闹钟','ar':'لا توجد منبهات نشطة','hi':'कोई सक्रिय अलार्म नहीं','bn':'কোনও সক্রিয় অ্যালার্ম নেই','id':'Tidak ada alarm aktif'});
String get nextAlarmTitle => _pick({'es':'Próxima alarma','en':'Next alarm','fr':'Prochaine alarme','de':'Nächster Alarm','it':'Prossima sveglia','pt':'Próximo alarme','ru':'Следующий будильник','ja':'次のアラーム','zh':'下一个闹钟','ar':'المنبه التالي','hi':'अगला अलार्म','bn':'পরবর্তী অ্যালার্ম','id':'Alarm berikutnya'});
String activeAlarmsWithoutNextSubtitle(int count) => _pick({'es':'Hay $count alarma(s) activas, pero ahora mismo no tienen una fecha futura válida. Revisá fecha, días y vacaciones.','en':'There are $count active alarm(s), but they do not currently have a valid future date. Check date, days, and vacations.','fr':'Il y a $count alarme(s) active(s), mais aucune date future valide pour le moment. Vérifiez la date, les jours et les vacances.','de':'Es gibt $count aktive(n) Alarm(e), aber aktuell kein gültiges zukünftiges Datum. Prüfe Datum, Tage und Urlaub.','it':'Ci sono $count sveglia/e attive, ma al momento senza una data futura valida. Controlla data, giorni e vacanze.','pt':'$count alarme(s) ativo(s), mas sem uma data futura válida no momento. Revise data, dias e férias.','ru':'Есть $count активных будильников, но сейчас у них нет корректной будущей даты. Проверьте дату, дни и отпуск.','ja':'有効なアラームが $count 件ありますが、現在有効な将来日時がありません。日付、曜日、休暇を確認してください。','zh':'$count 个活动闹钟,但当前没有有效的未来日期。请检查日期、星期和假期。','ar':'يوجد $count منبه نشط، لكنها لا تملك حاليًا تاريخًا مستقبليًا صالحًا. راجع التاريخ والأيام والإجازات.','hi':'$count सक्रिय अलार्म हैं, लेकिन अभी इनके पास मान्य भविष्य की तारीख नहीं है। तारीख, दिन और छुट्टियाँ जाँचें।','bn':'$countটি সক্রিয় অ্যালার্ম আছে, কিন্তু এখন কোনও বৈধ ভবিষ্যৎ তারিখ নেই। তারিখ, দিন ও ছুটি দেখুন।','id':'Ada $count alarm aktif, tetapi saat ini tidak memiliki tanggal mendatang yang valid. Periksa tanggal, hari, dan liburan.'});
String activeAlarmsWithoutNextSubtitle(int count) => _pick({'es':'Hay $count alarma(s) activas, pero ahora mismo no tienen una fecha futura válida. Revisá fecha, días y vacaciones.','en':'There are $count active alarm(s), but they do not currently have a valid future date. Check date, days, and vacations.','fr':'Il y a $count alarme(s) active(s), mais aucune date future valide pour le moment. Vérifiez la date, les jours et les vacances.','de':'Es gibt $count aktive(n) Alarm(e), aber aktuell kein gültiges zukünftiges Datum. Prüfe Datum, Tage und Urlaub.','it':'Ci sono $count sveglia/e attive, ma al momento senza una data futura valida. Controlla data, giorni e vacanze.','pt':'$count alarme(s) ativo(s), mas sem uma data futura válida no momento. Revise data, dias e férias.','ru':'Есть $count активных будильников, но сейчас у них нет корректной будущей даты. Проверьте дату, дни и отпуск.','ja':'有効なアラームが $count 件ありますが、現在有効な将来日時がありません。日付、曜日、休暇を確認してください。','zh':'$count 个活动闹钟,但当前没有有效的未来日期。请检查日期、星期和假期。','ar':'يوجد $count منبه نشط، لكنها لا تملك حاليًا تاريخًا مستقبليًا صالحًا. راجع التاريخ والأيام والإجازات.','hi':'$count सक्रिय अलार्म हैं, लेकिन अभी इनके पास मान्य भविष्य की तारीख नहीं है। तारीख, दिन और छुट्टियाँ जाँचें।','bn':'$countি সক্রিয় অ্যালার্ম আছে, কিন্তু এখন কোনও বৈধ ভবিষ্যৎ তারিখ নেই। তারিখ, দিন ও ছুটি দেখুন।','id':'Ada $count alarm aktif, tetapi saat ini tidak memiliki tanggal mendatang yang valid. Periksa tanggal, hari, dan liburan.'});
String get createAlarmHint => _pick({'es':'Creá una alarma y PluriWave calculará la siguiente ejecución automáticamente.','en':'Create an alarm and PluriWave will calculate the next occurrence automatically.','fr':'Créez une alarme et PluriWave calculera automatiquement la prochaine exécution.','de':'Erstelle einen Alarm und PluriWave berechnet die nächste Ausführung automatisch.','it':'Crea una sveglia e PluriWave calcolerà automaticamente la prossima esecuzione.','pt':'Crie um alarme e o PluriWave calculará automaticamente a próxima execução.','ru':'Создайте будильник, и PluriWave автоматически рассчитает следующий запуск.','ja':'アラームを作成すると、PluriWave が次回実行を自動計算します。','zh':'创建闹钟后,PluriWave 会自动计算下次执行时间。','ar':'أنشئ منبهًا وسيحسب PluriWave التشغيل التالي تلقائيًا.','hi':'अलार्म बनाएँ और PluriWave अगली घंटी अपने-आप गणना करेगा।','bn':'একটি অ্যালার্ম তৈরি করুন, PluriWave স্বয়ংক্রিয়ভাবে পরবর্তী সময় হিসাব করবে।','id':'Buat alarm dan PluriWave akan menghitung jadwal berikutnya secara otomatis.'});
String alarmNextSummary(String name, String date) => '$name · $date';
String get alarmVacationPlay => _pick({'es':'Suena en vacaciones','en':'Plays during vacations','fr':'Sonne pendant les vacances','de':'Klingelt im Urlaub','it':'Suona durante le vacanze','pt':'Toca durante as férias','ru':'Срабатывает во время отпуска','ja':'休暇中も鳴らす','zh':'假期中响铃','ar':'يعمل أثناء الإجازات','hi':'छुट्टियों में बजेगा','bn':'ছুটির সময় বাজবে','id':'Berbunyi saat liburan'});
String get alarmVacationPause => _pick({'es':'Pausa en vacaciones','en':'Pause during vacations','fr':'Pause pendant les vacances','de':'Im Urlaub pausieren','it':'Pausa durante le vacanze','pt':'Pausar durante as férias','ru':'Пауза во время отпуска','ja':'休暇中は一時停止','zh':'假期中暂停','ar':'إيقاف أثناء الإجازات','hi':'छुट्टियों में विराम','bn':'ছুটির সময় বিরতি','id':'Jeda saat liburan'});
String fadeInSeconds(int seconds) => _pick({'es':'Fade-in ${seconds}s','en':'Fade-in ${seconds}s','fr':'Fondu entrant ${seconds}s','de':'Fade-in ${seconds}s','it':'Fade-in ${seconds}s','pt':'Fade-in ${seconds}s','ru':'Плавное начало ${seconds} с','ja':'フェードイン ${seconds}','zh':'淡入 ${seconds}','ar':'تدرّج صوتي ${seconds} ث','hi':'फ़ेड-इन ${seconds} सेकंड','bn':'ফেড-ইন ${seconds} সেকেন্ড','id':'Fade-in ${seconds} dtk'});
String fadeInSeconds(int seconds) => _pick({'es':'Fade-in $seconds s','en':'Fade-in $seconds s','fr':'Fondu entrant $seconds s','de':'Fade-in $seconds s','it':'Fade-in $seconds s','pt':'Fade-in $seconds s','ru':'Плавное начало $seconds с','ja':'フェードイン $seconds ','zh':'淡入 $seconds','ar':'تدرّج صوتي $seconds ث','hi':'फ़ेड-इन $seconds सेकंड','bn':'ফেড-ইন $seconds সেকেন্ড','id':'Fade-in $seconds dtk'});
String alarmNextExecution(String date) => _pick({'es':'Siguiente ejecución: $date','en':'Next occurrence: $date','fr':'Prochaine exécution : $date','de':'Nächste Ausführung: $date','it':'Prossima esecuzione: $date','pt':'Próxima execução: $date','ru':'Следующий запуск: $date','ja':'次回実行: $date','zh':'下次执行:$date','ar':'التشغيل التالي: $date','hi':'अगली घंटी: $date','bn':'পরবর্তী সময়: $date','id':'Jadwal berikutnya: $date'});
String get alarmNoNextExecution => _pick({'es':'No tiene próxima ejecución activa.','en':'No active next occurrence.','fr':'Aucune prochaine exécution active.','de':'Keine aktive nächste Ausführung.','it':'Nessuna prossima esecuzione attiva.','pt':'Não há próxima execução ativa.','ru':'Нет активного следующего запуска.','ja':'有効な次回実行はありません。','zh':'没有活动的下次执行。','ar':'لا يوجد تشغيل تالٍ نشط.','hi':'कोई सक्रिय अगली घंटी नहीं है।','bn':'কোনও সক্রিয় পরবর্তী সময় নেই।','id':'Tidak ada jadwal berikutnya yang aktif.'});
String alarmSkippedExecution(String date) => _pick({'es':'Una ejecución fue omitida: $date.','en':'One occurrence was skipped: $date.','fr':'Une exécution a été ignorée : $date.','de':'Eine Ausführung wurde übersprungen: $date.','it':'Unesecuzione è stata saltata: $date.','pt':'Uma execução foi ignorada: $date.','ru':'Один запуск был пропущен: $date.','ja':'1回の実行をスキップしました: $date','zh':'已跳过一次执行:$date','ar':'تم تخطي تشغيل واحد: $date.','hi':'एक घंटी छोड़ी गई: $date','bn':'একটি সময় বাদ দেওয়া হয়েছে: $date','id':'Satu jadwal dilewati: $date.'});
@@ -814,7 +814,7 @@ extension PluriAppLocalizationsExt on AppLocalizations {
String get soundAndVolumeTitle => _pick({'es':'Sonido y volumen','en':'Sound and volume','fr':'Son et volume','de':'Ton und Lautstärke','it':'Suono e volume','pt':'Som e volume','ru':'Звук и громкость','ja':'サウンドと音量','zh':'声音和音量','ar':'الصوت ومستوى الصوت','hi':'ध्वनि और वॉल्यूम','bn':'শব্দ ও ভলিউম','id':'Suara dan volume'});
String get alarmFadeInTitle => _pick({'es':'Fade-in de alarma','en':'Alarm fade-in','fr':'Fondu entrant de lalarme','de':'Alarm-Fade-in','it':'Fade-in della sveglia','pt':'Fade-in do alarme','ru':'Плавное начало будильника','ja':'アラームのフェードイン','zh':'闹钟淡入','ar':'تدرّج صوت المنبه','hi':'अलार्म फ़ेड-इन','bn':'অ্যালার্ম ফেড-ইন','id':'Fade-in alarm'});
String get alarmFadeInOff => _pick({'es':'0 s (sin transición)','en':'0 s (no transition)','fr':'0 s (sans transition)','de':'0 s (ohne Übergang)','it':'0 s (senza transizione)','pt':'0 s (sem transição)','ru':'0 с (без перехода)','ja':'0秒(遷移なし)','zh':'0 秒(无过渡)','ar':'0 ث (بلا انتقال)','hi':'0 सेकंड (कोई बदलाव नहीं)','bn':'0 সেকেন্ড (কোনও ট্রানজিশন নেই)','id':'0 dtk (tanpa transisi)'});
String alarmFadeInProgress(int seconds) => _pick({'es':'$seconds s (de 5% al volumen elegido)','en':'$seconds s (from 5% to the chosen volume)','fr':'$seconds s (de 5 % au volume choisi)','de':'$seconds s (von 5 % zur gewählten Lautstärke)','it':'$seconds s (dal 5% al volume scelto)','pt':'$seconds s (de 5% até o volume escolhido)','ru':'$seconds с (от 5% до выбранной громкости)','ja':'$seconds秒5%から選択した音量へ)','zh':'$seconds 秒(从 5% 到所选音量)','ar':'$seconds ث (من 5% إلى المستوى المختار)','hi':'$seconds सेकंड (5% से चुने हुए वॉल्यूम तक)','bn':'$seconds সেকেন্ড (5% থেকে নির্বাচিত ভলিউমে)','id':'$seconds dtk (dari 5% ke volume pilihan)'});
String alarmFadeInProgress(int seconds) => _pick({'es':'$seconds s (de 5% al volumen elegido)','en':'$seconds s (from 5% to the chosen volume)','fr':'$seconds s (de 5 % au volume choisi)','de':'$seconds s (von 5 % zur gewählten Lautstärke)','it':'$seconds s (dal 5% al volume scelto)','pt':'$seconds s (de 5% até o volume escolhido)','ru':'$seconds с (от 5% до выбранной громкости)','ja':'$seconds5%から選択した音量へ)','zh':'$seconds 秒(从 5% 到所选音量)','ar':'$seconds ث (من 5% إلى المستوى المختار)','hi':'$seconds सेकंड (5% से चुने हुए वॉल्यूम तक)','bn':'$seconds সেকেন্ড (5% থেকে নির্বাচিত ভলিউমে)','id':'$seconds dtk (dari 5% ke volume pilihan)'});
String get soundInternalSafe => _pick({'es':'Sonido seguro interno','en':'Internal safe sound','fr':'Son interne sécurisé','de':'Interner Sicherheitston','it':'Suono interno sicuro','pt':'Som interno seguro','ru':'Внутренний безопасный звук','ja':'内部セーフサウンド','zh':'内部安全声音','ar':'صوت داخلي آمن','hi':'आंतरिक सुरक्षित ध्वनि','bn':'অভ্যন্তরীণ নিরাপদ শব্দ','id':'Suara internal aman'});
String get soundWarmSunrise => _pick({'es':'Amanecer cálido','en':'Warm sunrise','fr':'Aube chaleureuse','de':'Warmer Sonnenaufgang','it':'Alba calda','pt':'Amanhecer quente','ru':'Тёплый рассвет','ja':'暖かな日の出','zh':'温暖日出','ar':'شروق دافئ','hi':'गर्म सूर्योदय','bn':'উষ্ণ সূর্যোদয়','id':'Fajar hangat'});
String get soundSoftBell => _pick({'es':'Campana suave','en':'Soft bell','fr':'Cloche douce','de':'Sanfte Glocke','it':'Campana leggera','pt':'Sino suave','ru':'Мягкий колокол','ja':'やさしいベル','zh':'柔和铃声','ar':'جرس هادئ','hi':'मृदु घंटी','bn':'নরম ঘণ্টা','id':'Lonceng lembut'});
+2 -2
View File
@@ -159,8 +159,8 @@ class AlarmaMusical {
sonarEnVacaciones: json['sonarEnVacaciones'] as bool? ?? true,
snoozeMinutos: json['snoozeMinutos'] as int? ?? 5,
volumen: (json['volumen'] as num?)?.toDouble() ?? 0.85,
fadeInSegundos: ((json['fadeInSegundos'] as int? ?? 0).clamp(0, 60))
as int,
fadeInSegundos:
(json['fadeInSegundos'] as int? ?? 0).clamp(0, 60).toInt(),
sonidoInterno: _enumFromName(
SonidoInternoAlarma.values,
json['sonidoInterno'] as String?,
+7 -7
View File
@@ -1161,6 +1161,7 @@ class _SeccionBackup extends StatelessWidget {
const _SeccionBackup();
Future<void> _exportar(BuildContext context) async {
final l10n = AppLocalizations.of(context);
try {
final estado = context.read<EstadoRadio>();
final config = await estado.exportarConfig();
@@ -1172,17 +1173,15 @@ class _SeccionBackup extends StatelessWidget {
await Share.shareXFiles(
[XFile(file.path)],
subject: AppLocalizations.of(context).backupShareSubject,
text: AppLocalizations.of(
context,
).backupShareText(DateTime.now().toLocal()),
subject: l10n.backupShareSubject,
text: l10n.backupShareText(DateTime.now().toLocal()),
);
} catch (e) {
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
AppLocalizations.of(context).backupExportError(e.toString()),
l10n.backupExportError(e.toString()),
),
),
);
@@ -1191,6 +1190,7 @@ class _SeccionBackup extends StatelessWidget {
}
Future<void> _importar(BuildContext context) async {
final l10n = AppLocalizations.of(context);
try {
final result = await FilePicker.platform.pickFiles(
type: FileType.custom,
@@ -1230,7 +1230,7 @@ class _SeccionBackup extends StatelessWidget {
await estado.importarConfig(json);
messenger.showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context).backupImportSuccess),
content: Text(l10n.backupImportSuccess),
),
);
}
@@ -1240,7 +1240,7 @@ class _SeccionBackup extends StatelessWidget {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
AppLocalizations.of(context).backupImportError(e.toString()),
l10n.backupImportError(e.toString()),
),
),
);
+2 -2
View File
@@ -367,7 +367,7 @@ class _EditorAlarmaSheetState extends State<_EditorAlarmaSheet> {
_tipo = alarma?.tipoProgramacion ?? TipoProgramacionAlarma.unica;
_diasSemana = {...alarma?.diasSemana ?? const <int>[]};
_volumen = alarma?.volumen ?? 0.85;
_fadeInSegundos = ((alarma?.fadeInSegundos ?? 0).clamp(0, 60)) as int;
_fadeInSegundos = (alarma?.fadeInSegundos ?? 0).clamp(0, 60).toInt();
_sonarEnVacaciones = alarma?.sonarEnVacaciones ?? true;
_sonidoInterno = alarma?.sonidoInterno ?? SonidoInternoAlarma.amanecer;
_emisora = alarma?.emisora ?? context.read<EstadoRadio>().emisoraPreferida;
@@ -681,7 +681,7 @@ class _EditorAlarmaSheetState extends State<_EditorAlarmaSheet> {
sonarEnVacaciones: _sonarEnVacaciones,
snoozeMinutos: existente?.snoozeMinutos ?? 5,
volumen: _volumen,
fadeInSegundos: _fadeInSegundos.clamp(0, 60),
fadeInSegundos: _fadeInSegundos.clamp(0, 60).toInt(),
sonidoInterno: _sonidoInterno,
activa: true,
);
-1
View File
@@ -3,7 +3,6 @@ import 'package:flutter_animate/flutter_animate.dart';
import 'package:provider/provider.dart';
import '../estado/estado_radio.dart';
import '../l10n/app_localizations_ext.dart';
import '../l10n/gen/app_localizations.dart';
import '../widgets/pluri_glass_surface.dart';
import '../widgets/pluri_icon.dart';
+2 -2
View File
@@ -553,7 +553,7 @@ class _GrabacionWidget extends StatelessWidget {
actions: [
TextButton(
onPressed: () => Navigator.pop(ctx),
child: Text(AppLocalizations.of(ctx).cancelAction),
child: Text(AppLocalizations.of(context).cancelAction),
),
FilledButton(
onPressed: () {
@@ -803,7 +803,7 @@ class _TimerWidget extends StatelessWidget {
visualDensity: VisualDensity.compact,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
),
child: Text(AppLocalizations.of(ctx).cancelAction),
child: Text(AppLocalizations.of(context).cancelAction),
),
],
);