【问题标题】:Flutter: Application's locale is not supported by all of its localization delegatesFlutter:并非所有本地化代表都支持应用程序的语言环境
【发布时间】:2018-11-06 18:29:02
【问题描述】:

您好,我正在尝试在 Flutter 应用程序中添加 BottomNavigationBar,但是当我运行项目时出现错误:

A MaterialLocalizations delegate that supports the ka_GE locale was not found

这是我的应用代表:

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

这是自定义本地化代理:

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;
}

是的,我知道问题是“ka”,因为 MaterialLocalizations 不支持它,但我必须解决这个问题,所以你们能帮帮我吗?

【问题讨论】:

  • 你必须为ka制作你自己的MaterializationLocalizations

标签: flutter dart localization internationalization


【解决方案1】:

您可以实现您的自定义 MaterialLocalizations 委托

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
}

【讨论】:

猜你喜欢
  • 2013-04-11
  • 1970-01-01
  • 2016-10-15
  • 2018-09-01
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
相关资源
最近更新 更多