изменении Locale - пересобирается MaterialApp, но дочерние виджеты (которые уже переведены) естественно не переводятся (сейчас перевод реализован как "Text(context.translate('profile.sign_out'))". Напрашивается 2 варианта - 1) каждый виджет, что требует перевода завернуть в специальный Translatable виджет и слушать изменение локали, 2) Завернуть нужные страницы целиком, и ребилдить при изменении локали. Какой вариант лучше, может есть другие способы ?
А чем не устраивает базовая локализация?
https://docs.flutter.dev/ui/accessibility-and-internationalization/internationalization
это не сурьйозно, хоть вопрос прочитай внимательно
Вполне серьезно и работает из коробки.
почему дочерние не переводятся?
они уже переведены - (Localization.of(context) уже отработало, ) и повторный ребилд не выполняется
так должен работать повторный ребилд, так как контейнер перебилдился
МатериалЭпп ребилдится, а чайлды нет
если зайти в настройки девайса и поменять там язык - то будет полная пересборка всего приложения, и вроде полный перевод заново. Но если не заходить - пересобирает только материал эпп - дети нет
ты почти понял вопрос ))) можно еще раз прочитать - нужны советы
вопрос стоит так: у меня не работает дефолтное поведение. Какой костыль лучше: Костыль1 или Костыль2, может есть более удобные костыли?
return const MaterialApp( title: 'Localizations Sample App', localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: [ Locale('en'), // English Locale('es'), // Spanish ], home: MyHomePage(), ); У меня простой вопрос. А через делегаты не? В локализации. Обрати внимание на список
Слишком многословно Text(AppLocalizations.of(context)!.helloWorld),
я объявлял короткую переменную в виджете
Я делал extension на context и было context.appLocalizations.helloWorld
Тоже не мало текста easylocal слышал типа ругают, я юзаю удобно
Короче не получится, локализация зависит от контекста, иначе ребилда не будет
Обсуждают сегодня