|
1 | 1 | import 'package:flutter/material.dart'; |
2 | | - |
3 | | -import 'app.dart'; |
| 2 | +import 'package:flutter_localizations/flutter_localizations.dart'; |
| 3 | +import 'package:gettext_i18n/gettext_i18n.dart'; |
4 | 4 |
|
5 | 5 | void main() { |
6 | 6 | runApp(const MyApp()); |
7 | 7 | } |
| 8 | + |
| 9 | +class MyApp extends StatelessWidget { |
| 10 | + const MyApp({Key? key}) : super(key: key); |
| 11 | + |
| 12 | + @override |
| 13 | + Widget build(BuildContext context) { |
| 14 | + return MaterialApp( |
| 15 | + home: const HomePage(), |
| 16 | + supportedLocales: ['en', 'fr', 'fr_CH'].map((l) => Locale(l)), |
| 17 | + localizationsDelegates: [ |
| 18 | + GettextLocalizationsDelegate(defaultLanguage: 'en'), |
| 19 | + GlobalMaterialLocalizations.delegate, |
| 20 | + GlobalWidgetsLocalizations.delegate, |
| 21 | + ], |
| 22 | + localeListResolutionCallback: (locales, supportedLocales) { |
| 23 | + if (locales != null) { |
| 24 | + for (var locale in locales) { |
| 25 | + var supportedLocale = supportedLocales.where((element) => |
| 26 | + element.languageCode == locale.languageCode && |
| 27 | + element.countryCode == locale.countryCode); |
| 28 | + if (supportedLocale.isNotEmpty) { |
| 29 | + return supportedLocale.first; |
| 30 | + } |
| 31 | + supportedLocale = supportedLocales.where( |
| 32 | + (element) => element.languageCode == locale.languageCode); |
| 33 | + if (supportedLocale.isNotEmpty) { |
| 34 | + return supportedLocale.first; |
| 35 | + } |
| 36 | + } |
| 37 | + } |
| 38 | + return null; |
| 39 | + }, |
| 40 | + ); |
| 41 | + } |
| 42 | +} |
| 43 | + |
| 44 | +class HomePage extends StatelessWidget { |
| 45 | + const HomePage({Key? key}) : super(key: key); |
| 46 | + |
| 47 | + @override |
| 48 | + Widget build(BuildContext context) { |
| 49 | + return Center( |
| 50 | + child: Text(context.t('Hello, world !')), |
| 51 | + ); |
| 52 | + } |
| 53 | +} |
0 commit comments