Добавление нового строкового ресурса к нескольким (локализованным) файлам strings.xml файлы в приложении Android

#android #resources #localization #adt

#Android #Ресурсы #локализация #adt

Вопрос:

У меня есть приложение с поддержкой нескольких разных языков.
Теперь предположим, что я хочу добавить новую функцию, которая обычно потребует добавления новых строковых ресурсов.

Каков (или существует) способ добавления новых строковых ресурсов, которые будут автоматически добавлены ко всем файлам строк локализации? (Означает, что мне просто нужно перевести содержимое строки, а не создавать новую с тем же ключом для каждого файла локализации), потому что нет смысла копировать-вставлять ее вручную, когда у вас много файлов локализации…

Ответ №1:

Если вы следуете правилам локализации Android, нет другого способа, кроме ручного добавления на каждый язык strings.xml файл. Вы можете написать это в скрипте, но тогда вам придется написать сценарий. Итак, мое предложение — стиснуть зубы и сделать это.

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

Комментарии:

1. Я не против создавать новые string.xml файл , потому что это делается один раз для каждого языка. Но вручную добавлять новую строку в каждый файл каждый раз, когда мне нужно добавить строку, — это ужасная боль в шее.

2. Я согласен, единственное, что нужно сделать, это написать небольшой скрипт, perl, python что угодно, который примет в качестве параметра командной строки новую строку и добавит ее к заданному strings.xml файл. Должно быть выполнимо примерно через 2 часа. Удачи

Ответ №2:

То, на что вы ссылаетесь, является распространенной проблемой локализации. Это не просто strings.xml и связано с платформой Android.

Как вы могли догадаться, люди действительно нашли способы решить эту проблему. Как правило, вы отправляете переводчикам (поставщикам переводов) только файл на английском языке, и они обновляют его с помощью программного обеспечения Translation Memory.
Или, если вы независимый разработчик программного обеспечения, вы можете захотеть использовать какую-нибудь платформу краудсорсинга для своих переводов, такую как Launchpad, BabelZilla или Crowdin. Эти платформы также выполняют функцию памяти переводов, поэтому вам не придется вручную синхронизировать отдельные языковые файлы.