Есть ли способ найти ошибки формата в локализованных строках для переведенных строк 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 для поиска ошибок формата в локализованных строках?

0 ответов

Другие вопросы по тегам