如何在Flutter中本地化服务器数据?

问题描述 投票:0回答:1

我有一个带有Firestore的Flutter应用程序作为后端,用于存储该应用程序中显示的动态数据。如flutter_localizations所述,我正在使用here库添加对多种语言的本地化支持。

我的服务器数据是从Firestore加载的,并保存在sqlite数据库中。数据被加载到类对象并显示在Flutter小部件中。

如何重新构建类模型,数据库和逻辑,以根据应用语言环境显示正确的字符串?

到目前为止我想出的是:

Firestore:

- 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
1个回答
0
投票

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

注意:采用一个本地语言,说'en'作为默认本地语言,以便可以将其用作后备本地语言。

© www.soinside.com 2019 - 2024. All rights reserved.