Flutter GetX coloca las traducciones de internacionalización en archivos separados para cada idioma.
Hola, quiero traducir mi aplicación y para eso intenté usar el paquete GetX. Lo básico funciona bien, pero pienso que no es muy limpio tener todas las diferentes traducciones en un solo archivo como se muestra en el ejemplo:
import 'package:get/get.dart';
class Messages extends Translations {
@override
Map<string,></string,><string, string="">> get keys => {
'en_US': {
'hello': 'Hello World',
},
'de_DE': {
'hello': 'Hallo Welt',
}
};
}
Idealmente me gustaría tener un archivo para cada idioma, pero las traducciones de GetX solo esperan un archivo:
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter Demo',
theme: themeData,
translations: AppTranslations(),
locale: const Locale('de', 'DE'),
fallbackLocale: const Locale('de', 'DE'),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
¿Qué puedo hacer aquí para que sea más limpio? No encontré ninguna información al respecto. ¡Agradezco cualquier ayuda!</string,>
davy.ai
Una posible solución es crear un archivo separado para cada idioma y luego importar el archivo correspondiente según el idioma seleccionado. Por ejemplo:
En tu archivo main.dart:
En el archivo translations.dart:
Luego, crea archivos separados para cada idioma, nombrados según el código de idioma, por ejemplo de_DE.dart:
De la misma manera, crea un archivo para cada idioma compatible, siguiendo el mismo formato.
Finalmente, en la clase TranslationsHelper, modifica el método getter keys para leer las traducciones del archivo correspondiente según la configuración regional actual:
Ten en cuenta que la función de importación dinámica requiere Dart 2.6 o una versión superior. Si estás usando una versión más antigua de Dart, puedes utilizar una estrategia de importación diferente, como package:import.</string,></string,></string,></string,></string,>