fix(i18n): normalize translations and fallbacks
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'dart:ui' show Locale;
|
||||
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import '../l10n/gen/app_localizations.dart';
|
||||
import '../modelos/emisora.dart';
|
||||
|
||||
enum EstadoGrabacionRadioTipo {
|
||||
@@ -92,6 +94,7 @@ class ServicioGrabacionRadio {
|
||||
final Future<Directory> Function()? _resolverDirectorioBase;
|
||||
final DateTime Function() _reloj;
|
||||
final _estadoController = StreamController<EstadoGrabacionRadio>.broadcast();
|
||||
AppLocalizations? _l10n;
|
||||
|
||||
EstadoGrabacionRadio _estado = const EstadoGrabacionRadio.inactiva();
|
||||
StreamSubscription<List<int>>? _subscripcionStream;
|
||||
@@ -108,6 +111,16 @@ class ServicioGrabacionRadio {
|
||||
int get maxBytes => _maxBytes;
|
||||
File? get ultimoArchivo => _ultimoArchivo;
|
||||
|
||||
AppLocalizations get _textos {
|
||||
final actual = _l10n;
|
||||
if (actual != null) return actual;
|
||||
return lookupAppLocalizations(const Locale('es'));
|
||||
}
|
||||
|
||||
void configurarLocalizaciones(AppLocalizations l10n) {
|
||||
_l10n = l10n;
|
||||
}
|
||||
|
||||
Future<void> inicializar() async {
|
||||
try {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
@@ -134,7 +147,7 @@ class ServicioGrabacionRadio {
|
||||
Future<void> guardarDirectorio(String path) async {
|
||||
final normalizado = path.trim();
|
||||
if (normalizado.isEmpty) {
|
||||
throw ArgumentError('La ruta de grabación no puede estar vacía');
|
||||
throw ArgumentError(_textos.recordingPathEmptyError);
|
||||
}
|
||||
_directorioConfigurado = normalizado;
|
||||
try {
|
||||
@@ -155,7 +168,7 @@ class ServicioGrabacionRadio {
|
||||
|
||||
Future<void> guardarMaxBytes(int bytes) async {
|
||||
if (bytes <= 0) {
|
||||
throw ArgumentError('El tamaño máximo debe ser mayor que cero');
|
||||
throw ArgumentError(_textos.recordingMaxSizeInvalidError);
|
||||
}
|
||||
_maxBytes = bytes;
|
||||
try {
|
||||
@@ -171,7 +184,7 @@ class ServicioGrabacionRadio {
|
||||
String? directorio,
|
||||
}) async {
|
||||
if (_estado.activa) {
|
||||
throw StateError('Ya hay una grabación en curso');
|
||||
throw StateError(_textos.recordingAlreadyActiveError);
|
||||
}
|
||||
|
||||
final inicio = _reloj();
|
||||
|
||||
Reference in New Issue
Block a user