#flutter
Вопрос:
Я смог реализовать поддержку нескольких языков в Flutter, используя документы разработчика (https://flutter.dev/docs/development/accessibility-and-localization/internationalization )
Мне было интересно, есть ли способ получить доступ к языковым строкам, которые мы определяем в виджете, но не изменяя языковой стандарт контекста.
Вот мой пример использования.
Я представляю набор книг в виде сетки карточек. Содержимое на разных языках (например, на английском и испанском). Теперь, в зависимости от языка, я хотел бы использовать некоторые текстовые строки из локали только для одной карты сетки.
Например, если данные каждой книги: language (en, es), title (…), no_pages (x). Затем, при представлении сетки, я хотел бы использовать слово «страницы» из строки либо как «Страницы», либо как «Страница».
Как это сделать? Спасибо
Ответ №1:
Взгляните на пакет language_builder в pub.dev, он очень прост в использовании. Обернув корневой виджет с помощью LanguageBuilder, вы можете настроить язык своего приложения. Попросите ваше приложение использовать язык телефонов или измените его вручную из приложения.
void main() {
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Language Builder Example',
home: LanguageBuilder(
useDeviceLanguage: false,
defaultLanguage: 'en',
languagesMap: Languages.languages,
child: MainPage(),
//splash: Container(),
),
),
);
}
class Languages {
static Map<String, String> languages = {
"tr": """{
"main_page": {
"title": "Ana Sayfa",
"second_page": "İkinci Sayfa"
},
"second_page": {
"title": "İkinci Sayfa",
"main_page": "Ana Sayfa",
"message":"Bu sayfa 2. sayfadır."
}
}""",
"en": """{
"main_page": {
"title": "Main Page",
"second_page": "Second Page"
},
"second_page": {
"title": "Second Page",
"main_page": "Main Page",
"message":"This is 2nd page."
}
}""",
"de": """{
"main_page": {
"title": "Hauptseite",
"second_page": "Zweite Seite"
},
"second_page": {
"title": "Zweite Seite",
"main_page": "Hauptseite",
"message":"Dies ist die 2. Seite."
}
}"""
};
}
//MainPage
Scaffold(
appBar: AppBar(
title: Text(
LanguageBuilder.texts['main_page']['title'],
),
),
),
Вы можете настроить приведенный выше пример для вашего случая. Для получения дополнительной информации взгляните на language_builder:
Комментарии:
1. Спасибо @aedemirsen. Позвольте мне попробовать это в ближайшее время