[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: .:: Question about msgcat ::.
From: |
Patrick Frenette |
Subject: |
RE: .:: Question about msgcat ::. |
Date: |
Wed, 19 Oct 2022 20:33:48 +0000 |
Hi Bruno,
I will use one of your suggested fix.
Thanks for the quick reply.
-----Original Message-----
From: Bruno Haible <bruno@clisp.org>
Sent: October 19, 2022 4:23 PM
To: bug-gettext@gnu.org
Cc: Patrick Frenette <Patrick.Frenette@ezmax.ca>
Subject: Re: .:: Question about msgcat ::.
Patrick Frenette wrote:
> I did the same test with these two files:
> singular.po:
> msgid "child"
> msgstr ""
>
> plural.po:
> msgid "child"
> msgid_plural "children"
> msgstr[0] ""
> msgstr[1] ""
The documentation was recently updated [1] to clarify that
msgid "child"
and
msgid "child"
msgid_plural "children"
designate the same message.
If the message has msgid_plural, you need to access it through [d[c]]ngettext
always. That is, it is wrong to use it with the plain 1-argument gettext.
That is because it is the translator and the plural formula which decide which
of the plural forms to store in msgstr[0].
> #1 Running msgcat singular.po plural.po we have:
> #, fuzzy
> msgid "child"
> msgstr ""
> "#-#-#-#-# singular.po #-#-#-#-#\n"
> "#-#-#-#-# plural.po #-#-#-#-#\n"
>
> #2 Running msgcat plural.po singular.po we have:
> #, fuzzy
> msgid "child"
> msgid_plural "children"
> msgstr[0] ""
> "#-#-#-#-# plural.po #-#-#-#-#\n"
> "#-#-#-#-# singular.po #-#-#-#-#\n"
> msgstr[1] "#-#-#-#-# plural.po #-#-#-#-#\n"
This is as desired. The two .po files conflict, and msgcat makes it clear that
there is a conflict. (There is no error, though, because msgcat is primarily
made for translators, and it's the translator who is supposed to review and
handle the conflict.)
> I use Javascript project that return a .json for the translation. Because of
> this beavior when I use in a template vuejs {{ $ngettext('child','
> children', 4) }} it's always child showing up because when a merge all my
> files with msgcat, it always take the first msgid.
There are two ways to resolve the conflict:
- You could use a different msgid in one of the messages.
- Or you could add an msgctxt to one of the messages. [2]
Bruno
[1]
https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commitdiff;h=805b7597fe5d59c38584fe670d6daa1484ddbfee
[2] https://www.gnu.org/software/gettext/manual/html_node/Contexts.html