$ ./test_i18n.py --help Usage: test_i18n.py --test_gettext test_i18n.py --validate-pot [pot_file1, ...] test_i18n.py --validate-po po_file1 [po_file2, ...] Options: -h, --help show this help message and exit -s, --show-strings show the offending string when an error is detected --pedantic be aggressive when validating -v, --verbose be informative --traceback print the traceback when an exception occurs Operational Mode: You must select one these modes to run in -g, --test-gettext create the test translation file(s) and exercise them -P, --validate-pot validate pot file(s) -p, --validate-po validate po file(s) Run Time Parameters: These may be used to modify the run time defaults --test-lang=TEST_LANG test po file uses this as it's basename (default=test) --lang=LANG lang used for locale, MUST be a valid lang (default=xh_ZA) --domain=DOMAIN translation domain used during test (default=ipa) --locale=LOCALE locale used during test (default=test_locale) --pot-file=POT_FILE default pot file, used when validating pot file or generating test po and mo files (default=ipa.pot) $ make test ./test_i18n.py --test-gettext Wrote: test.po Wrote: test_locale/xh_ZA/LC_MESSAGES/ipa.mo 1707 translations in 1681 messages successfully tested # Output snipped for brevity $ make validate-pot ./test_i18n.py --show-strings --validate-pot ipa.pot ================================================================================ 75 validation errors in ipa.pot -------------------------------------------------------------------------------- locations: ipalib/plugins/aci.py:256 msgid has anonymous substitution '%s', use keyword substitution instead >>> msgid <<< Group '%s' does not exist -------------------------------------------------------------------------------- locations: ipalib/plugins/aci.py:392 msgid has anonymous substitution '%s', use keyword substitution instead >>> msgid <<< ACI with name "%s" not found -------------------------------------------------------------------------------- locations: ipa-client/ipa-getkeytab.c:85 msgid has anonymous substitution '%s', use keyword substitution instead msgid has anonymous substitution '%d', use keyword substitution instead >>> msgid <<< Kerberos context initialization failed: %s (%d) ================================================================================ 75 errors in 1 files make: *** [validate_pot] Error 1 $ make validate-pot ./test_i18n.py --show-strings --validate-po as.po bn_IN.po zh_CN.po zh_TW.po nl.po fr.po de.po el.po gu.po id.po ja_JP.po ja.po kn.po fa.po pl.po pt_BR.po pt.po ru.po es.po sv.po uk.po ================================================================================ 5 validation errors in es.po -------------------------------------------------------------------------------- locations: ipalib/plugins/internal.py:270 The following substitutions are absent in msgstr: ${primary_key} ${entity} >>> msgid <<< Issue New Certificate for ${entity} ${primary_key} >>> msgstr <<< Nuevo nĂºmero de certificados de -------------------------------------------------------------------------------- locations: ipalib/plugins/internal.py:284 The following substitutions are absent in msgstr: ${primary_key} ${entity} >>> msgid <<< Restore Certificate for ${entity} ${primary_key} >>> msgstr <<< Restaurar Certificado para -------------------------------------------------------------------------------- locations: ipalib/plugins/internal.py:286 The following substitutions are absent in msgstr: ${primary_key} >>> msgid <<< Revoke Certificate for ${entity} ${primary_key} >>> msgstr <<< Revocar certificado por ${entity} ${primary_key -------------------------------------------------------------------------------- locations: ipalib/plugins/internal.py:295 The following substitutions are absent in msgstr: ${primary_key} >>> msgid <<< Certificate for ${entity} ${primary_key} >>> msgstr <<< Certificado para ${entity} ${primary_key -------------------------------------------------------------------------------- locations: ipalib/plugins/internal.py:395, ipalib/plugins/internal.py:434 The following substitutions are absent in msgstr: ${entity} >>> msgid <<< Unprovisioning ${entity} >>> msgstr <<< Unprovisioning ================================================================================ 5 errors in 21 files make: *** [validate_po] Error 1