Простая опечатка в переменной локализации Android (например, %1d
вместо %1$d
в strings.xml
) может привести к краху .
Мы не можем позволить себе исчерпывающее тестирование (многие экраны, некоторые очень редко показываются, десятки языков, очень частые выпуски, нет дохода), поэтому мы должны найти более разумный способ. Эти ошибки не отображаются в Eclipse, и на самом деле я ищу невизуальный инструмент, чтобы он мог быть вызван нашим инструментом автоматического выпуска.
Я написал следующий скрипт для проверки файлов локализации:
#! /bin/sh
# Spot malformed string replacement patterns in Android localization files.
grep -R "%1$ s" values*
grep -R "%1$ d" values*
grep -R '%' values* |
sed -e 's/%/\n%/g' | # Split lines that contain several expressions
grep '%' | # Filter out lines that do not contain expressions
grep -v ' % ' | # Lone % character, not a variable
grep -v '%<' | # Same, at the end of the string
grep -v '% ' | # Same, at the beginning of the string
grep -v '%で' | # Same, no spaces in Japanese
grep -v '%s' | # Single string variable
grep -v '%d' | # Single decimal variable
grep -v '%[0-9][0-9]\?$s' | # Multiple string variable
grep -v '%[0-9][0-9]\?$d' | # Multiple decimal variable
grep -v '%1$.1f' | # ?
grep -v '%.1f'
grep -R '%' values*
ПРОБЛЕМА: не может обнаружить ошибки в файлах арабской локализации.
ВОПРОС: вместо того, чтобы заново изобретать колесо, уже существует такой инструмент проверки? (не Затмение)
Если нет: какие чеки я забыл?
Примечание: этот скрипт с открытым исходным кодом