Search code examples
flutterdartlocalizationinternationalization

Flutter: Application's locale is not supported by all of its localization delegates


Hello I am trying add BottomNavigationBar in flutter app but when i run project error occures :

A MaterialLocalizations delegate that supports the ka_GE locale was not found

This is my app delegates:

  supportedLocales: [
    const Locale('en', 'US'),
    const Locale('ka', 'GE'),
    const Locale('ru', 'RU'),
  ],
  localizationsDelegates: [
    const InfosLocalizationsDelegate(),
    GlobalMaterialLocalizations.delegate,
    GlobalWidgetsLocalizations.delegate
  ],
  locale: Locale('ka')

This is Custom LocalizationsDelegate:

class CLocalizationsDelegate
    extends LocalizationsDelegate<CLocalizations> {
  const CLocalizationsDelegate();

  @override
  bool isSupported(Locale locale) =>
      ['en', 'ka', 'ru'].contains(locale.languageCode);

  @override
  Future<CLocalizations> load(Locale locale) async {
    CLocalizations localizations = new CLocalizations(locale);
    await localizations.load();
    print("Load ${locale.languageCode}");
    return localizations;
  }

  @override
  bool shouldReload(CLocalizationsDelegate old) => false;
}

Yeah I know that the problem is 'ka' because MaterialLocalizations doesn't not supports it but I have to solve that problem, so guys can you help me out?


Solution

  • You can implement your custom MaterialLocalizations delegate

    class MaterialLocalizationKaDelegate extends LocalizationsDelegate<MaterialLocalizations> {
      @override
      bool isSupported(Locale locale) {
        return locale.countryCode == "GE" && locale.languageCode == "ka";
      }
    
      @override
      Future<MaterialLocalizations> load(Locale locale) async {
        return MaterialLocalizationKa();
      }
    
      @override
      bool shouldReload(Foo old) {
        return false;
      }
    }
    
    class MaterialLocalizationKa extends MaterialLocalizations {
      // TODO: implement KA localization yourself
    }