4ef3d29 Replace broken i18n shell test with Python test

4 files Authored by jdennis 12 years ago, Committed by rcritten 12 years ago,
    Replace broken i18n shell test with Python test
    
    We had been using shell scripts and sed to test our translations. But
    trying to edit pot and po files with sed is nearly impossible because
    the file format can vary significantly and the sed editing was failing
    and gettext tools were complaining about our test strategy.  We had
    been using a Python script (test_i18n.py) to perform the actual test
    after using shell, sed, and gettext tools to create the files. There
    is a Python library (polib) which can read/write/edit pot/po/mo files
    (used internally by Transifex, our translation portal). The strategy
    now is to do everything in Python (in test_i18n.py). This is easier,
    more robust and allows us to do more things.
    
    * add python-polib to BuildRequires
    
    * Remove the logic for creating the test lang from Makefile.in and
      replace it with calls to test_i18n.py
    
    * add argument parsing, usage, configuration parameters, etc. to
      test_i18n.py to make it easier to use and configurable.
    
    * add function to generate a test po and mo file. It also
      writes the files and creates the test directory structure.
    
    * Took the existing validate code and refactored it into validation
      function. It used to just pick one string and test it, now it
      iterates over all strings and all plural forms.
    
    * Validate anonymous Python format substitutions in pot file
    
    * added support for plural forms.
    
    * Add pot po file validation for variable substitution
    
    * In install/po subdir you can now do:
      $ make test
      $ make validate-pot
      $ make validate-po
    
    * The options for running test_i18n.py are:
    
    $ ./test_i18n.py --help
    Usage:
    
    test_i18n.py --test-gettext
    test_i18n.py --create-test
    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
        -c, --create-test   create the test translation file(s)
        -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)
    
    https://fedorahosted.org/freeipa/ticket/2044
    
        
file modified
+2 -0
file modified
+1 -0
file modified
+10 -12
file modified
+563 -56