Есть ли способ найти ошибки формата в локализованных строках для переведенных строк android res xml?
Я работаю над клиентским js API Crowdin, чтобы получать переведенные строки из Crowdin. Я реализовал загрузку строк из каталога res в crowdin, загрузку переведенных строк из Crowdin и обновление локализованных строк в каталоге res android.
Но проблема, которую я пытаюсь исправить, заключается в том, как найти и исправить ошибки формата строк? Для этого есть сценарий оболочки, но он работает наplurals
и еще несколько строк.
if grep -RHn "%1$ s" res/values*; then
echo "Found '%1$ s'-related error"
EXIT_STATUS=$((EXIT_STATUS + 1));
fi
if grep -RHn "%1$ d" res/values*; then
echo "Found '%1$ s'-related error"
EXIT_STATUS=$((EXIT_STATUS + 1));
fi
if grep -RHn "%1" res/values* | grep -v "%1\\$"; then
echo "Found '%1'-related error"
EXIT_STATUS=$((EXIT_STATUS + 1));
fi
if grep -RHn '%' res/values* |
sed -e 's/%/\n%/g' | # Split lines that contain several expressions
grep '%' | # Filter out lines that do not contain expressions
grep -v ' n% ' | # Lone % character, not a variable
grep -v '(n%)' | # Lone % character, not a variable
grep -v 'n%<' | # Same, at the end of the string
grep -v '>n% ' | # 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 -v '%\\n' |
then
echo "Found grep errors but if you are not on macOS they are likely false positive. Ignoring"
#EXIT_STATUS=$((EXIT_STATUS + 1))
fi
Можно ли использовать gradle lint для поиска ошибок формата в локализованных строках?