首页 > 解决方案 > 为远程配置设置本地化默认值

问题描述

我正在我的应用程序中实现远程配置。这个想法是能够对显示给用户的一些消息进行 A/B 测试。

我可能只想对英语消息进行一些实验,我正在尝试找出最好(或最实用)的方法。

  1. 一种方法是在 res/xml- 目录中为每种语言创建一个带有默认值的 xml 文件。我看到的主要缺点是这很难维护,因为每个值都需要复制到所有 xml 文件中(一些实验可能与语言无关,例如布局颜色)。
  2. 第二种方法是将依赖于语言的值设置为空字符串,然后如果远程配置提供的值为空,则执行一些逻辑以在 R.strings 中查找正确的字符串。对于我想要完成的事情来说,这似乎是太多的开销。

使用 A/B 测试和远程配置仅针对特定语言运行实验的推荐方法是什么?

标签: androidfirebasefirebase-remote-configfirebase-ab-testing

解决方案


  1. 提供本地化字符串资源是 android 中的默认方式。很难维护,但有一项服务可以帮助您https://phraseapp.com/。它们有很多不错的功能,例如手动翻译、跨平台应用程序和 ide 插件,可以将新字符串替换/添加/附加/删除到您的 xml 本地化文件,也适用于 ios。

  2. 您可以将字符串资源名称保留在远程配置中,并由一些反射的孩子加载。这是一个很好的答案如何获取具有已知资源名称的资源 ID?. 这是您的案例的示例:

      int resourceId = context.getResources().getIdentifier(nameFromRemoteConfig, "string", context.getPackageName())
    

就时间和维护而言,本地化是一个非常静态的逻辑、无聊且昂贵的过程。从我的角度来看,更好的解决方案是开发自己的本地化的最大抽象机制,并在所有项目中重用它。例如,一个后端服务或库,它将以您自己的格式提供本地化数据,以及一个用于反序列化该数据的客户端库。因此,您将获得用于未来项目的生产就绪 api。


推荐阅读