3

Androidアプリケーションにローカリゼーションを実装しましたが、小さな問題があります。デフォルトのstrings.xmlファイルから文字列のデフォルト値を取得できません。たとえば。中身 project/res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
        <string name="distance">distance</string>
</resources>

と中project/res/values-nl/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

  <string name="distance">afstand</string>
</resources>

私の要件は、現在使用されているロケールに関係なく、project / res / values/strings.xmlファイルから「distance」変数の値を取得することです。

4

1 に答える 1

0

コンテキスト構成でそれを行うことができ、API +17 から次のように機能します。

public static String getDefaultString(Context context, @StringRes int stringId){
        Resources resources = context.getResources();
        Configuration configuration = new Configuration(resources.getConfiguration());
        Locale defaultLocale = new Locale("en"); // default locale
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            LocaleList localeList = new LocaleList(defaultLocale);
            configuration.setLocales(localeList);
            return context.createConfigurationContext(configuration).getString(stringId);
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){
            configuration.setLocale(defaultLocale);
            return context.createConfigurationContext(configuration).getString(stringId);
        }
        return context.getString(stringId);
    }

以前のバージョンの Android では、次のようなものを使用できます。

public static String getDefaultString(Context context, @StringRes int stringId){
  Resources resources = context.getResources();
  Locale defaultLocale = new Locale("en");// default locale
  configuration.locale = newLocale;
  resources.updateConfiguration(configuration, res.getDisplayMetrics());
  return resources.getString();
}

しかし、アプリの現在のコンテキストを変更できると思います。また、アプリでデフォルトの言語を使用しない場合、ローカライズに問題が発生します。

于 2017-12-15T13:44:49.270 に答える