Как изменить основной файл локализации во Flutter intl

Изначально основным файлом локализации является intl_en.arb Как и где поменять основной файл локализации на другой, например intl_ru.arb

1 ответ

можете добавить languageCode на locale

      MaterialApp(
  .
  .
  .
  locale : Locale.fromSubtags(languageCode: 'ru')
);

полный пример:

       String lang = '';

  _getLang() async {
    try {
      String data = await getLang();
      setState(() {
        lang = data;
      });
    } catch (e) {
      print(e);
    }
  }

  @override
  void initState() {
    super.initState();
    _getLang();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      onGenerateRoute: RouteGenerator.generateRoute,
      localizationsDelegates: [
        S.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: S.delegate.supportedLocales,
      locale: lang == 'English'
          ? Locale.fromSubtags(languageCode: 'en')
          : Locale.fromSubtags(languageCode: 'ru'),
    );
  }

  Future<String> getLang() async {
    Future<SharedPreferences> _langPrefs = SharedPreferences.getInstance();
    SharedPreferences prefs = await _langPrefs;
    var lang = prefs.getString("lang");
    if (lang == null) {
      return null;
    }
    return lang;
  }
Другие вопросы по тегам