Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


PyPI Build Status

Msgcheck performs various checks on gettext files (with extension .po):

  • compilation (with command msgfmt -c)
  • for each translation:
    • number of lines in translated strings
    • whitespace at beginning/end of strings
    • trailing whitespace at end of lines inside strings
    • punctuation at end of strings
    • spelling (messages and translations).

The script requires:

  • Python ≥ 2.7
  • gettext (for the command msgfmt, used to compile PO files)
  • the python module pyenchant if spelling is checked (with option -s).


Install a released version from the Python package index with pip:

$ pip install msgcheck

Or you can install via source distribution:

$ python install



$ msgcheck [options] file.po [file.po...]


  • -h, --help: display help message and exit
  • -c, --no-compile: do not check compilation of file (with msgfmt -c)
  • -f, --fuzzy: check fuzzy strings
  • -n, --skip-noqa: do not check "noqa"-commented lines
  • -l, --no-lines: do not check number of lines
  • -p, --no-punct: do not check punctuation at end of strings
  • -s id|str, --spelling id|str: check spelling (id = source messages, str = translations)
  • -d <dicts>, --dicts <dicts>: comma-separated list of extra dictionaries to use (in addition to file language)
  • -P <file>, --pwl <file>: file(s) with personal list of words used when checking spelling (this option can be given multiple times)
  • -m, --only-misspelled: display only misspelled words (no error, line number and translation)
  • -w, --no-whitespace: do not check whitespace at beginning/end of strings
  • -W, --no-whitespace-eol: do not check whitespace at end of lines inside strings
  • -e, --extract: display all translations and exit (all checks except compilation are disabled in this mode)
  • -i, --ignore-errors: display but ignore errors (always return 0)
  • -q, --quiet: quiet mode: only display number of errors
  • -v, --version: display version and exit

The environment variable MSGCHECK_OPTIONS can be set with some default options.

The script returns exit code 0 if all files checked are OK (0 errors or option --extract given) or it returns N: number of files with errors (1 ≤ N ≤ 255).


$ msgcheck fr.po
/path/to/fr.po:242: [punct] end punctuation: ":" in translation, ":" not in string:
/path/to/fr.po:262: [lines] number of lines: 1 in string, 2 in translation:
Message filters:
Filtres de
/path/to/fr.po:336: [whitespace] spaces at beginning: 0 in string, 1 in translation:
current value
 valeur courante
/path/to/fr.po: 3 errors (almost good!)


Copyright © 2009-2021 Sébastien Helleu

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see