Я хотел бы применить локализацию в своем приложении динамически, так что можно определить строки в java-файле и извлечь эти строки в наш XML-файл макета, т. Е. Мы делаем @ string/anystringname, заменяя это строками, определенными в java-файле, на наш макет файл @somestring, определенный для java-файла ????Возможно ли обновить файл string.xml во время выполнения в android?
ответ
В основном, №
Вы не можете манипулировать файл ресурсов динамически. Вам необходимо реализовать такую функциональность самостоятельно.
Вот пример:
english.json
{
"hello": "Hello"
}
french.json
{
"hello": "Bonjour"
}
public class StringManager {
private static StringManager sInstance = null;
private static String sDefaultLanguageCode = "en";
private Map<String, JSONObject> mLanguageMap = new ArrayMap<>();
private StringManager() {
}
public static StringManager getInstance() {
if (sInstance == null) {
synchronized (StringManager.class) {
if (sInstance == null)
sInstance = new StringManager();
}
}
return sInstance;
}
public static void setDefaultLanguageCode(String languageCode) {
sDefaultLanguageCode = languageCode;
}
public void addLanguage(String languageCode, JSONObject json) {
mLanguageMap.put(languageCode, json);
}
public String getString(String key) {
return mLanguageMap.get(mDefaultLanguageCode).getString(key);
}
public String getString(String languageCode, String key) {
return mLanguageMap.get(languageCode).getString(key);
}
}
public class SomeActivity extends Activity {
...
public void initStringResources() {
// assume englishJsonObject is created from english.json
StringManager.getInstance().addLanguage("en", englishJsonObject);
StringManager.getInstance().addLanguage("fr", frenchJsonObject);
StringManager.setDefaultLanguageCode("fr");
}
public void useSomeString() {
String helloString = StringManager.getInstance().getString("hello");
// helloString will be "Bonjour"
// and you can get specific language string
String englishHelloString = StringManager.getInstance().getString("en", "hello");
}
// this may be called from Button or other UI component
public void onLanguageChanged(String languageCode) {
StringManager.setDefaultLanguageCode(languageCode);
// and update UI components that display localized strings
}
}
hii..tried ur solution, но его не работает. сохраните файл в папке с ресурсами, а затем после прочтения этого файла этот файл может использоваться в макете – Shailee
Как я уже упоминал, вы не можете изменять файлы xml во время выполнения. Если вы пробовали мое решение, например, '
okay получил ваше решение .. Мне нужно сделать это программно, только создав одну общую функцию для всех и callin-строку – Shailee
<TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/tv"
/>
<string name="tv">old text</string>//old text
final TextView textView = (TextView) findViewById(R.id.rate);
textView.setText("new text");//new text
Это невозможно. Тем не менее, можно изменить язык вашего приложения во время выполнения. Это позволяет вам переключаться между strings.xml для разных языков. Библиотека, которую я использовал для этого: Android localization library Все ваши действия должны расширить LocalizationActivity, которая расширяет AppCompatActivity. Вам просто нужно позвонить setLanguage ("en"); Чтобы изменить язык приложений и использовать другие строки.xml
В this thread вы можете узнать больше возможных решений.
папка yaa throug values для разных языков возможно извлекать все строки, но как это сделать динамически без ввода всех разных языковых строк? i.e, если я создаю json для всех строк, хранящихся в db, получая значения ключей и использую эту строку в моем файле макета – Shailee
@Shailee это решение работает только при включении локализации в файле strings.xml. Библиотека позволяет вам переключать язык. Теперь используется strings.xml для другого языка. Это позволяет динамическую локализацию. Если вы хотите получить локализованные строки из базы данных. Ваш лучший вариант, вероятно, относится к подклассу TextView и добавляет пользовательский атрибут. https://developer.android.com/training/custom-views/create-view.html. В вашем текстовом представлении вы можете реализовать логику для чтения правильной строки. – Rockney
ok, так можно динамически менять языки на своей кнопке, щелкая по этой библиотеке локализации, не создавая новый файл строк для разных языков? – Shailee
- 1. Изменить string.xml во время выполнения
- 2. Выберите string.xml во время выполнения
- 3. Возможно ли создать apk во время выполнения?
- 4. Android, чтобы заменить значения String.xml во время выполнения?
- 5. Возможно ли обновить библиотеку Objective-C во время выполнения?
- 6. программно обновить конфигурационный файл во время выполнения
- 7. обновить файл app.config во время выполнения
- 8. Возможно ли обмен таблицами XML во время выполнения на Android?
- 9. Возможно ли создать новый файл PropertiesConfiguration во время выполнения?
- 10. Возможно ли получить Xaml во время выполнения?
- 11. Возможно ли отредактировать или изменить файл css во время выполнения?
- 12. Возможно ли перегрузить функцию во время выполнения?
- 13. Возможно ли отредактировать файл ресурсов embed во время выполнения?
- 14. Обновить модуль во время выполнения
- 15. Возможно ли получить файл, содержащий класс во время выполнения?
- 16. Обновить текст во время выполнения?
- 17. Возможно ли прочитать файл во время компиляции?
- 18. обновить xml-файл в jar во время выполнения
- 19. Обновить значение цвета во время выполнения в Android
- 20. Как создать/обновить/загрузить файл HTML во время выполнения
- 21. Возможно ли обновление версии сборки во время выполнения?
- 22. обновить значение кнопки во время выполнения в адаптере android
- 23. Обновить код Java во время выполнения
- 24. Возможно ли изменить каталог загрузки хром во время выполнения теста?
- 25. log4net удалить файл во время выполнения возможно C#
- 26. C#: обновить встроенный файл ресурсов во время выполнения
- 27. Как обновить данные списка во время выполнения в android
- 28. Можно ли загружать ресурсы локализации во время выполнения?
- 29. Обновить проект во время выполнения изменений файлов
- 30. Возможно ли построить такой объект во время выполнения в java?
'Можно ли ...' ** NO **. Вы не можете изменять файлы ресурсов во время выполнения. –
Но должен быть какой-то способ программно и получить идентификатор? – Shailee