flutter - Flutter 在不更改上下文区域设置的情况下获取小部件中的语言字符串
问题描述
我已经能够使用开发者文档(https://flutter.dev/docs/development/accessibility-and-localization/internationalization)在 Flutter 中实现多语言支持
我想知道是否有一种方法可以访问我们在小部件中定义的语言字符串,但不更改上下文的语言环境。
这是我的用例。
我将一组书呈现为卡片网格。内容有不同的语言(例如英语和西班牙语)。现在,根据语言,我想将区域设置中的一些文本字符串仅用于网格的一张卡片。
例如,如果每本书的数据是:语言(en,es),标题(...),no_pages(x)。然后,在呈现网格时,我想将字符串中的“pages”一词用作“Pages”或“Pagina”。
怎么做?谢谢
解决方案
看看 pub.dev 中的 language_builder 包,非常好用。通过使用 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:
推荐阅读
- git - 如何在 Bitbucket.org 中有效地进行重复代码审查?
- jwt - LoopBack 4 中所有 API 的通用授权
- android - Android(Kotlin)中的父/子复选框(2级嵌套)
- c++ - Use boost::odeint with class for vectors without resizing vectors
- javascript - chaining methods inside *ngIf
- jasmine - 如何在非角度页面上识别 Protractor 中的元素?
- phpstorm - PhpStorm: How to order html tag attributes?
- vba - 如何通过 VBA 在 excel 单元格中返回 SAP 错误消息?
- java - JOOQ 和 Oracle REF CURSOR 流式传输
- postgresql - PostgreSQL:如何为具有大量插入和删除的时间序列设计数据库模式