Hello,

8.12.2016 17:43 Enrico <[email protected]> wrote:
> 
>  [...]
>  About your mention to "My current approach is to provide separate
> translations for
>  singular and plural, but I guess this way of doing this will never be
>  entirely ngettext-ly correct.", have you considered using the gettext
> pluiral-forms
> (https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html) ?

Yes, Matthias did. Here is an example:

#: src/gr-details-page.c:656
#, c-format
msgid "You've cooked this recipe before"
msgid_plural "You've cooked this recipe %d times"
msgstr[0] ""
msgstr[1] ""

Indeed, ngettext() and similar functions seem to be necessary
here. One shouldn't try to resolve the pluralization problems
oneself, first because they are too complex, second because
they are already resolved by gettext.

But in this particular case this pluralization will not work
as you want it in languages which don't have plural forms,
for example east Asian languages. In these languages they will
see "You've cooked this recipe 1 time" instead. Also there are
languages (e.g., Russian) which reuse a singular form for plural
numbers ending with 1 (e.g., 21, 31, 41...) so they will see:

"You've cooked this recipe 29 times"
"You've cooked this recipe 30 times"
"You've cooked this recipe before"    // 31 disappeared!
"You've cooked this recipe 32 times"
"You've cooked this recipe 33 times"

So if you really want a separate form for 1 then do it
programmatically but also leave the full pluralization support
for plurals.

2016-12-08 13:07 GMT-02:00 Matthias Clasen <[email protected]
mailto:[email protected] >:
> [...]
>    - The app also has an ingredient list and allows to search by
>    ingredients, as well as by other criteria. In those places,
>    ingredients should clearly be translated, and we need to be able to
>    map from the translated ingredient names to the language in which they
>    appear in the recipes (which may be different from recipe to recipe,
>    depending on whether the recipe is from the preinstalled set, or
>    entered by the user...)

Will these ingredients appear in the middle of sentences or only in
headers, as a list of ingredients and the body will always remain
unchanged? Will they be extracted from the body of the recipe automatically
or will an author have to provide a separate list of ingredients and
maybe tag them correctly manually? Please note that some languages
use declension: there are suffixes added to the words so the same word
may have several forms and processing it automatically is not a trivial
task. Of course there are software solutions which can deal with this
problem. At least sometimes. :-)

>    - When scaling ingredients (e.g double a recipe), we need to be able
>    to change translated ingredients and units from singular to plural
>    forms. My current approach is to provide separate translations for
>    singular and plural, but I guess this way of doing this will never be
>    entirely ngettext-ly correct.

If these ingredients are in the middle of the recipe body, inside the
sentences then changing singular to plural or one plural form to another
plural form maintaining a correct grammatical form is even more complex.

Regards,

Rafal
_______________________________________________
gnome-i18n mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gnome-i18n

Reply via email to