首页 > 解决方案 > 如何在 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、数据库、类对象和每个字段的特殊函数中以获取特定于区域设置的数据,或者是否有更有效的方法来执行此操作?

标签: flutter

解决方案


向每个表添加一列,以识别每个行条目使用哪个本地。当您通过 API 调用从客户端设备请求数据时,传递所需的本地名称,例如:en。

注意:取一个本地,说“en”作为默认本地,以便您可以将其用作后备本地。


推荐阅读