Замена @ string / stringId на Android динамически - PullRequest
0 голосов
/ 03 марта 2020

Я хочу динамически извлекать переводы строк в файлах android layout xml, поэтому, в основном, где @ string / stringId используется в файлах XML, для этой строки Id должна вызываться функция java получить соответствующий перевод.

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

В XML Файл

android: text = "@ string / app_name"

Замените имя приложения на вашу строку

IN Java Файл

TextView t; t.setText (GetString (R.string.YOUR_STRING_NAME)).

0 голосов
/ 03 марта 2020

Я уверен, что это возможно, но это звучит совершенно ненужно.

Вы перечитали: https://developer.android.com/guide/topics/resources/localization

Как правило, у вас есть отдельный XML файл для каждого языка, использующий те же строковые ключи, но находящиеся в каталогах, названных по их локали.

Пример:

Предположим, что языком вашего приложения по умолчанию является английский sh. Предположим также, что вы хотите локализовать весь текст в вашем приложении на французский, а большую часть текста в вашем приложении (все, кроме названия приложения) - на японский. В этом случае вы можете создать три альтернативных strings.xml файла, каждый из которых хранится в каталоге ресурсов c, определяемом локалью:

res/values/strings.xml Содержит текст Engli sh для всех строк, которые использует приложение , включая текст для строки с названием title. res/values-fr/strings.xml Содержит текст на французском языке для всех строк, включая заголовок. res/values-ja/strings.xml Содержит японский текст для всех строк, кроме заголовка. Если ваш Java код ссылается на R.string.title, вот что происходит во время выполнения:

Если на устройстве установлен любой язык, кроме французского, Android загружает заголовок из файла res/values/strings.xml , Если устройство настроено на французский язык, Android загружает заголовок из файла res/values-fr/strings.xml.

Затем вы можете выбрать жесткий код stringId (через @string/title) в вашем xml макет файла или назначить строки программно в java через (view.setText(R.string.title))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...