#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. Совсем нет, если что-то остановилось, нажмите в ответ.