From: Tomas K. <to...@us...> - 2006-12-11 21:34:54
|
> Axel Hecht wrote: >> To quote >> http://www.gnu.org/software/gettext/manual/html_node/gettext_150.html: > > This is a bit outdated. The manual in the current gettext release has more > to say on this topic: > > " You might now ask, `ngettext' handles only numbers N of type > `unsigned long'. What about larger integer types? What about negative > numbers? What about floating-point numbers? > > ... > > Negative and floating-point values usually represent physical > entities for which singular and plural don't clearly apply. In such > cases, there is no need to use `ngettext'; a simple `gettext' call with > a form suitable for all values will do. For example: > > printf (gettext ("Time elapsed: %.3f seconds"), > num_milliseconds * 0.001); > > Even if NUM_MILLISECONDS happens to be a multiple of 1000, the output > Time elapsed: 1.000 seconds > is acceptable in English, and similarly for other languages. > " plural forms apply to negative numbers in Lithuanian. Simple gettext call does not work, because language uses three different forms with numbers. I suspect that my application will use only positive numbers and I won't have issues with negative numbers or floats. I've noticed invalid forms only because I had to test gettext library and php-gettext classes and ran tests with numbers from -200 to +200. PHP does not support unsigned integers. I've solved issue by using absolute value in ngettext call and signed value in sprintf call. -- Tomas |