РЕДАКТИРОВАТЬ
Я портирую свое приложение на арабский язык. У меня есть некоторые getString() с параметрами, такими как:
getString(R.string.distance, distance)
где <string name="distance">%1d km</string>
Требование заключается в том, что по-арабски я должен показать это так: "2.3 كم".
Если в качестве локали я выберу Саудовскую Аравию (страна = "sa") или ОАЭ (страна = "ae"), то число будет отображаться на восточно-арабском, но мой клиент хочет, чтобы они были на западно-арабском.
Решение здесь состоит в том, чтобы использовать Египет как страну в данном регионе, но это невозможно для меня.
Я старался:
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void setAppContextLocale(Locale savedLocale) {
Locale.Builder builder = new Locale.Builder();
builder.setLocale(savedLocale).setExtension(Locale.UNICODE_LOCALE_EXTENSION, "nu-latn");
Locale locale = builder.build();
Configuration config = new Configuration();
config.locale = locale;
config.setLayoutDirection(new Locale(savedLocale.getLanguage()));
mAppContext.getResources().updateConfiguration(config, mContext.getResources().getDisplayMetrics());
}
как предложено в этом вопросе, но после этого страна игнорируется, поэтому локали SA и AE используют строки в файле по умолчанию.