[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug-gettext] msguniq fails on a duplicate empty msgid

From: Miguel Ángel Arruga Vivas
Subject: Re: [bug-gettext] msguniq fails on a duplicate empty msgid
Date: Tue, 12 Mar 2013 13:19:53 +0100

Raphaël wrote: 
> On Tue, Mar 12, 2013 at 11:30:38AM +0900, Daiki Ueno wrote:
> > Raphaël writes:
> > >> /tmp/a.po: warning: Charset missing in header.
> > >>                     Message conversion to user's charset will not work.
> > >> /tmp/a.po:13: duplicate message definition...
> > >> /tmp/a.po:2: ...this is the location of the first definition
> > >> msguniq: found 1 fatal error
> > >
> > > IHMO this is a bug.
> > 
> > Although the error message is not too intuitive, I suppose it is an
> > intended behavior that msguniq treats the empty msgid specially.
> [...]
> > (As you know, the empty msgid is kind of reserved for PO file headers.)
> ok, thank you for the information.
> Is there a reference somewhere where is written that "applications must
> not generate entries for the empty string"; so that I have a chance the
> po-generator get fixed in the future ?

You can read at
the empty string in a PO file GNU gettext is usually translated into
some system information attached to that particular MO file

Also, from Debian's 'man 3 gettext' page:
When an empty string is used for msgid, the functions may return a
nonempty string.

But maybe should be clearly documented that empty string is reserved
because it represents the header, but I do not see why any program want
to translate an empty string and I think this is the reason to not
document it. However, I can write a new paragraph in the documentation
to clarify that the empty string is reserved. Something like this
(comments are welcome) at "3 The Format of PO Files":
as PO mode takes care of them for her.

+ The entry with the empty string as msgid is a reserved entry called
+ "the header"*. Tools based on libgettextpo rely on its contents to
+ process the po file.

A simple entry can look like this:
(*) Is a link to

Best regards,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]