3

我在启动时覆盖了我的 Android 应用程序的区域设置,并允许在运行时更改区域。我正在设置这样的语言环境:

    Resources res = context.getResources();
    Configuration configuration = res.getConfiguration();
    DisplayMetrics metrics = res.getDisplayMetrics();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        configuration.setLocale(locale);
    }else{
        configuration.locale = locale;
    }
    Locale.setDefault(locale);
    res.updateConfiguration(configuration, metrics);

现在我想使用带有地区/国家条件的 Firebase-Remote-Config。例如

test_property -> fr_FR = Bonjour 
              -> de_DE = Hallo
              -> default = Hi

如果我现在将我的设备设置为 de_DE 并将我的应用设置为fr_FR我将从test_property区域de_DE( Hallo) 获取。我想要得到的是应用程序设置test_property的区域fr_FR

我尝试FirebaseApp.initializeApp(...)在应用程序中更改区域后,但 Firebase 似乎从其他地方获取该区域。

有人知道以编程方式设置/覆盖该区域的方法,以便 Firebase 将该区域用于该区域条件吗?

我不想使用 Firebase Analytics User Properties,因为它们更新得太晚了。

4

1 回答 1

0

在您的Firebase 控制台中:

a) 为语言环境设置用户属性。转到Analytics菜单并选择USER PROPERTIES选项卡。

  1. 提供用户属性名称。喜欢user_locale
  2. 添加描述、保存和发布更改。

b) 为远程配置设置条件。转到Remote Config菜单并选择CONDITIONS选项卡。

  1. 选择用户属性- user_locale
  2. 选择FOR TEXT- exactly matches
  3. 放置您需要的语言环境。就像de德语一样。
  4. translation_de为条件输入名称并选择一种颜色。
  5. 保存并发布更改。

c) 为每个远程配置参数添加条件值。

  1. 从下拉菜单中选择适当的条件,例如translation_de
  2. 更新和发布更改。

在您的代码集用户属性中更改语言环境

FirebaseAnalytics.getInstance(getContext())
    .setUserProperty("user_locale", "de");
FirebaseRemoteConfig.getInstance()
    .fetch(1)
    .addOnCompleteListener(activity, new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                FirebaseRemoteConfig.getInstance().activateFetched();
            }
        }
    });
于 2017-03-16T05:56:07.377 回答