Я использую пакет easy_localization
для локализации своего приложения. Я могу получить строковое значение из файлов ресурсов json, но удобнее делать это с файлами XML, поэтому я также использую пакет easy_localization_loader
. Это мой pubspec.yaml
файл:
dependencies:
easy_localization: ^2.3.2
easy_localization_loader: ^0.0.2
Это XML файл (расположен на assets/translations
)
<?xml version="1.0" encoding="utf-8"?>
<he>
<title>מנהל משימות</title>
<hello>שלום</hello>
<login>התחברות</login>
<shareApp>שתפו אפליקציה</shareApp>
</he>
Основная функция моего приложения:
void main() async {
runApp(EasyLocalization(
supportedLocales: [Locale('en'), Locale('he')],
path: 'resources/langs', // <-- change patch to your
fallbackLocale: Locale('en'),
assetLoader: XmlAssetLoader(),
child: MyApp()));
}
И вот как я загружаю переведенную строку в код (например, заголовок): 'title'.tr()
Я знаю, что он загружает файл XML, потому что у меня нет сообщения об ошибке (если я изменю значение пути, он говорит мне, что не может загрузить файл XML, поэтому я знаю, что в этом случае у него есть сообщение об ошибке), и он также работает для файла sh xml на английском языке. Но в моем приложении вместо отображения строкового значения отображается имя строки (например, вместо «מנהל משימות» отображается «title»). Если локальное устройство - Engli sh, значит, оно работает. Но это не работает для местного жителя иврита (он).
Что я делаю не так?