Теоретически реализация мультикультуры хранится в удаленной БД.
В Android у нас есть следующее:
<TextView
android:id="@+id/loginlabel"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textStyle="bold"
android:layout_marginTop="5dp"
android:text="@string/login" />
И text
использует значение свойства login
из файла string.xml
.
Теперь мой вопрос: в xml активности в свойстве android:text
есть ли способ для меня вызвать функцию / метод (это может быть даже из статического класса)?
Место, которое имеет некоторую бизнес-логику и все еще возвращает строку.
Я знаю, что могу легко использовать следующий тип кода в Java-файле активности:
TextView loginlabel = (TextView) findViewById(R.id.loginlabel);
loginlabel.setText( GetMyText(R.id.loginlabel) );
Но я стараюсь не писать это «миллион раз», поскольку у меня есть несколько действий и сотни значений в моем strings.xml.
Для получения дополнительной информации моя цель заключается в следующем:
- При запуске приложения я читаю все string.xml и подключаюсь к своему удаленному серверу (на котором есть БД) и проверяю, вставлены ли все строки в эту БД.
- Вставьте отсутствующие поля со значением этого свойства по умолчанию в string.xml.
- Теперь в другой удаленной системе клиент может динамически создавать новые культуры и переводы этих свойств.
- Возвращаясь к андроиду, я загружаю список текущих доступных нам культур, а также загружаю значения (переводы) из БД. Единственное, чего не хватает, это «внедрить» их в то место, где я использую значение «string».