Интернационализация Flutter intl_translate

#flutter

#флаттер

Вопрос:

Я пытаюсь добавить новый язык в flutter, поскольку он не поддерживается по умолчанию.

Я добавил переведенный языковой файл material_dv.arb в flutter / packages / flutter_localizations /lib / src / l10n и выполнил код dart dev/tools/gen_localizations.dart --overwrite для генерации файла dart локализаций и локализации даты, но все равно, когда я пытаюсь изменить локализацию на недавно добавленную локализацию dv, появляется ошибка, в которой говорится, что локализация не поддерживается. Итак, что я здесь делаю не так. Или как мне добавить новый язык в flutter..

Комментарии:

1. вот хорошая статья для того же didierboelens.com/2018/04 /…

Ответ №1:

Используйте Localizations класс в сочетании с LocalizationDelegate :

    class MyLocalizations {
   MyLocalizations(this.locale);

   final Locale locale;

   static Map<String, Map<String, String>> _localizedValues = {
     'en': {
       'Title': 'App',
      },
     'ar': {
       'Title' : 'التطبيق',
      },
   };

   String translate(key) {
     return _localizedValues[locale.languageCode][key];
   }

   static String of(BuildContext context, String key) {
   return Localizations.of<MyLocalizations>(context,
    MyLocalizations).translate(key);
   }
 }
  

Затем LocalizationDelegate :

   class MyLocalizationsDelegate extends LocalizationsDelegate<MyLocalizations> {

  const MyLocalizationsDelegate();

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

  @override
  Future<MyLocalizations> load(Locale locale) {
    return SynchronousFuture<MyLocalizations> (MyLocalizations(locale));
  }

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

Полное руководство по внедрению интернационализации в вашем приложении гораздо более простым способом приведено в этой статье, из которой взят приведенный выше фрагмент кода.

Комментарии:

1. Спасибо за быстрый ответ.. Но я уже реализовал эту часть и ее работу для английского и всех других поддерживаемых в настоящее время языков с помощью flutter, но проблема в том, что мой язык еще не поддерживается. В настоящее время поддерживаются следующие языки ( github.com/flutter/flutter/tree/master/packages / … ) и эти файлы локализации предоставляют текст для копирования / вставки / отмены подобных вещей…

2. Процесс, о котором я упоминал выше, не требует никаких файлов локализации. Вам просто нужно указать ключевое слово и переводы в вышеупомянутом классе, а затем вызвать его с помощью of функции.

3. ОК. Я попробую.. Спасибо

4. Совсем нет, если что-то остановилось, нажмите в ответ.