flutter - 如何在 Flutter 中本地化服务器数据?
问题描述
我有一个以 Firestore 作为后端的 Flutter 应用程序,用于存储应用程序中显示的动态数据。我正在使用这里flutter_localizations
提到的库添加对多种语言的本地化支持。
我的服务器数据从 Firestore 加载并保存在 sqlite 数据库中。数据被加载到类对象并显示在 Flutter 小部件中。
如何重构我的类模型、数据库和逻辑以根据应用程序区域设置显示正确的字符串?
到目前为止我想出了什么:
火库:
- songs (collection)
-- QWSAWERFCUT (id)
-- title: Smells Like Teen Spirit
-- title_hi: स्मेल्स लाइक टीन स्पिरिट
-- title_mr: स्मेल्स लाइक टीन स्पिरिट
-- ....
sqflite 数据库:
db.execute(
"CREATE TABLE $activityTable("
"$colId TEXT PRIMARY KEY , "
"$colTitle TEXT, "
"$colTitle_hi TEXT, "
"$colTitle_mr TEXT, "
....
)
飞镖类:
class Activity {
String id;
String title;
String title_hi;
String title_mr;
...
// Function to get locale-specific data for each field
String getTitle(Locale locale){
if(locale==Locale('hi')) {
return title_hi;
}
else if(locale==Locale('mr')) {
return title_mr;
}
else{
return title;
}
}
}
我是否需要将多种语言的每个字段添加到我的 Firestore、数据库、类对象和每个字段的特殊函数中以获取特定于区域设置的数据,或者是否有更有效的方法来执行此操作?
解决方案
向每个表添加一列,以识别每个行条目使用哪个本地。当您通过 API 调用从客户端设备请求数据时,传递所需的本地名称,例如:en。
注意:取一个本地,说“en”作为默认本地,以便您可以将其用作后备本地。
推荐阅读
- php - 在 Ubuntu 18.0.4 上出现错误“您的 php 安装似乎缺少 wordpress 所需的 mysql 扩展”。和 PHP 7.2
- javascript - 通过索引修改数组内的相同对象
- tinkerpop - 如何判断图是否支持事务?
- python - 使用其他数据框和系列快速替换熊猫数据框的信息
- java - 弹簧初始化程序阻止弹簧安全登录
- react-final-form - 在 React 最终形式上停止装饰器
- android - 在 android 5 (api 21) 上设置 ImageView colorFilter
- c# - WPF / XAML:用户控件的数据绑定
- javascript - 通过展开另一个数组来对数组进行分组
- sparql - PHP EasyRDF:无法从构造查询中获取图形