babel icon indicating copy to clipboard operation
babel copied to clipboard

`read_mo` does not decode `msgctxt`

Open tomasr8 opened this issue 1 year ago • 0 comments

When reading an MO file, the message context is kept as bytes unlike the msgid and msgstr which are decoded to utf8. This is surprising because in order to use for example Catalog.get, one must pass the context encoded as bytes. I wonder if this is intentional or just an omission?

Example: When I read an MO file compiled from this PO file:

msgctxt "fooctxt"
msgid "foo"
msgstr "bar"

The message key is ('foo', b'fooctxt') (notice the that fooctxt is a bytes object):

>>> f = open('messages.mo', 'rb')
>>> cat = read_mo(f)
>>> cat._messages
OrderedDict({('foo', b'fooctxt'): <Message 'foo' (flags: [])>})

tomasr8 avatar Nov 09 '24 23:11 tomasr8