### 6.25.2.2 The `GNUTranslations` class

The `gettext` module provides one additional class derived from `NullTranslations`: `GNUTranslations`. This class overrides `_parse()` to enable reading GNU gettext format .mo files in both big-endian and little-endian format.

It also parses optional meta-data out of the translation catalog. It is convention with GNU gettext to include meta-data as the translation for the empty string. This meta-data is in RFC 822-style `key: value` pairs. If the key `Content-Type` is found, then the `charset` property is used to initialize the ``protected'' `_charset` instance variable. The entire set of key/value pairs are placed into a dictionary and set as the ``protected'' `_info` instance variable.

If the .mo file's magic number is invalid, or if other problems occur while reading the file, instantiating a `GNUTranslations` class can raise `IOError`.

The other usefully overridden method is `ugettext()`, which returns a Unicode string by passing both the translated message string and the value of the ``protected'' `_charset` variable to the builtin `unicode()` function.