我的应用程序几乎准备就绪,但有一个问题,我不知道如何处理,这是我的应用程序支持阿拉伯语和英语.英语是应用程序的主要语言,用户可以在应用程序设置中更改它.我的应用程序提供的服务名称,价格,和描述是在英语.我想做的是当用户更改应用程序语言时,阿拉伯语数据会被检索到,所以如果我添加了另一个阿拉伯语版本的名称,价格和描述文档.能得到数据吗我将分享一个截图和一些代码. 注意:我正在使用Java

为了从Firebase获取服务数据并将其加载到Recylerview中,我有一个适配器和一个型号,其中包含名称、价格和描述.

Query query = db.collection("ServiceInfo");
    FirestoreRecyclerOptions<ServiceModel> options = new FirestoreRecyclerOptions.Builder<ServiceModel>()
            .setQuery(query, ServiceModel.class).build();
    adapter = new ServiceAdapter(options);

this is how my database is structured enter image description here

enter image description here

谢谢

推荐答案

如果你想配置你的Firebase应用程序以支持多种语言,这意味着根据用户 Select 的首选语言来显示数据,那么你必须稍微改变文档的 struct .

这意味着,如果应用程序配置为英语,则应以英语显示数据;如果应用程序配置为阿拉伯语,则应以阿拉伯语显示数据,以此类推.要实现这种功能,文档应包含翻译成所有可用语言的数据.因此,文档架构应如下所示:

db
|
--- ServiceInfo (collection)
     |
     --- $docId (document)
          |
          --- name: "Advice"
          |
          --- price: 5
          |
          --- description (map)
               |
               --- en: "text in English"
               |
               --- fr: "text in French"
               |
               --- de: "text in German"

如您所见,description不是字符串类型的字段,而是map类型的字段.这意味着当您显示数据时,您必须首先判断用户 Select 了哪种语言,然后深入 map 字段以获取与所选语言相对应的数据.

Java相关问答推荐

javafx getHostServices(). showDocument()调出Chrome而不是默认浏览器(Linux)

try Dockerize Maven应用程序,但发布版本21不支持"

日食IDE 2024-03在Ubuntu下崩溃,导致hr_err_pid.log

将Nimbus设置为计算机上运行的所有Java应用程序的默认外观

Java Streams在矩阵遍历中的性能影响

如何在Docker容器中使用wireock—Webhooks阻止请求?

Java .类参数不通过构造函数传递

XPages-在第二次点击按钮之前延迟

无法处理批处理侦听器中的反序列化异常

内存中的H2修剪尾随空格

更新GWT 2.5.1到2.11.0和sencha GXT 3.1.1到4.1时出现错误

如何从日志(log)行中删除包名称?

为了安全起见,有必要复制一份 list 吗?

如何从命令行编译包中的所有类?

在Eclipse中可以使用外部字体吗?

接受类及其接口的Java类型(矛盾)

在WHILE()循环初始化部分中声明和初始化变量的Java语法?

获取401未经授权,即使在标头中设置了浏览器名称和cookie

在JPanel上使用GridBagLayout并将JButton放在里面时出现问题

对于 Hangman 游戏,索引 0 超出长度 0 的范围