Улучшение строковых ресурсов Android с помощью XLIFF

Я видел некоторые приложения Google и образцы кода, используя теги XLIFF для переноса переменных. Я вижу некоторые большие преимущества при этом, особенно для замены аргументов без описательного формата, таких как %1$s.

К сожалению, XLIFF, похоже, не интегрируется в ADT. Возьмите следующий строковый ресурс, например:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
 <string name="share_with_application">
 Share your score of <xliff:g id="score" example="1337">%1$s</xliff:g>
 with <xliff:g id="application_name" example="Bluetooth">%2$s</xliff:g>! 
 </string>
</resources>

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

Поделитесь своим счетом 1337 с помощью Bluetooth!

Есть ли какие-либо преимущества для использования тегов XLIFF в моих ресурсах строк?

3 ответа

Мы только что добавили поддержку этого в Android Studio, для версии 0.3: https://android-review.googlesource.com/#/c/67724/


Чтобы быть понятным, использование тегов XLIFF в строковых ресурсах Android полностью задокументировано на

https://developer.android.com/distribute/tools/localization-checklist.html#manage-strings

Такие строки прекрасно работают даже в сборках Eclipse (поддержка находится в инструменте aapt, который создает приложения).

Однако, как показано в вопросе, графические средства компоновки, содержащиеся в ADT, не учитывают тег xliff, просто обрезая строку после первой такой помеченной подстроки.

Графические инструменты в Android Studio хорошо справляются с такими строками, знают и используют разметку xliff.

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

<resources xmlns:x="urn:oasis:names:tc:xliff:document:1.2">
 <string name="greeting">Hello <x:g id="name">%1$s</x:g>!</string>
</resources>


Теперь, когда мои руки были грязны при создании AOSP из исходного кода, CommonsWare верна: этот процесс сборки полностью отличается, и многие приложения AOSP содержат теги XLIFF. Это слишком плохо, что это не интегрируется с ADT, но это так, как есть.

licensed under cc by-sa 3.0 with attribution.