Как изменить текстовое значение, используя строки. xml - AndroidX - PullRequest
0 голосов
/ 08 февраля 2020

Я создал приложение индекса массы тела, в этом приложении, в каком-то тексте написано: Пожалуйста, введите ваш рост et c.

Я установил его с помощью Strings.xml, в моем случае Я хочу иметь возможность переключать язык с текста Пожалуйста, введите свой рост на другом языке, Любое решение?

Ответы [ 2 ]

2 голосов
/ 08 февраля 2020

хорошая вещь со строкой. xml в том, что если вы создаете новое значение папки - «нужный вам язык», такой как этот, в вашей папке res enter image description here

Это похоже на то, что в этом примере язык приложения будет установлен на английский sh или французский в моем случае, основываясь на использовании языка на мобильном телефоне, вам просто нужно иметь то же имя строки, и вы можете изменить значение чтобы вы захотели:)

enter image description here

enter image description here

1 голос
/ 08 февраля 2020

Сначала создайте по одному объекту Resources для каждой локали, которая вам нужна. Затем извлеките строки из локализованного объекта Resources.

Вы можете написать метод, например:

@NonNull Resources getLocalizedResources(Context context, Locale myLocale) {
    Configuration conf = context.getResources().getConfiguration();
    conf = new Configuration(conf);
    conf.setLocale(myLocale);
    Context localizedContext = context.createConfigurationContext(conf);
    return localizedContext.getResources();
}

Вы можете вызвать метод как:

Locale filipinoLocale = new Locale("fil");
Resources filipinoResource = getLocalizedResources(context, filipinoLocale);

Locale russianLocale = new Locale("ru");
Resources russianResource = getLocalizedResources(context, russianLocale);

Locale chineseLocale = new Locale("zh");
Resources chineseResource = getLocalizedResources(context, chineseLocale);

String filipinoString = filipinoResource.getString(R.string.mystring);
String russianString = russianResource.getString(R.string.mystring);
String chineseString = chineseResource.getString(R.string.mystring);
...