adding information about ngettext
[squirrelmail.git] / doc / i18n.txt
index f3c36f0e42ce54fffa738f37de1eb650ca395035..fff433bf437f6cf9c3b410ace26de686471dc670 100644 (file)
@@ -8,6 +8,7 @@ provide information about some aspects of implementation.
 3. XTRA_CODE functions
 4. Display of different charsets
 5. IMAP folder names
+6. Plural forms
 
 -------------------------------
 1. Supported languages
@@ -180,5 +181,33 @@ intensive functions.
 IMAP folder names use UTF7-IMAP charset. Folder names that are stored in
 conf.pl must be encoded in UTF7-IMAP charset. SquirrelMail uses internal
 functions that convert folder names from/to utf7-imap charset. By default those
-functions work with iso-8859-1 charset. Other iso-8859-x and utf-8 charsets are
-supported only when php installation contains mbstring support.
+functions work with iso-8859-1 charset. Other charsets are supported only 
+when php mbstring extension supports them.
+
+TODO: write independent implementation of charset to utf7-imap conversion.
+
+---------------
+6. Plural forms
+---------------
+From v.1.5.1 SquirrelMail includes support of plural forms. It allows to use
+correct translation forms with numbers. For example. "We have %s squirrel on
+the roof." and "We have %s squirrels on the roof." can be written in one 
+function call without checking actual number for squirrels. Gettext functions
+also deal with non English languages that might use different word forms for
+two, five, ten or more units.
+
+Support is provided by ngettext functions that exist in php gettext extension 
+from php 4.2.0 and by ngettext function replacements from php-gettext classes 
+(http://savannah.nongnu.org/projects/php-gettext). In order to use it correctly
+when php gettext extension does not have ngettext support, SquirrelMail uses
+bindtextdomain and textdomain wrappers that load missing functions.
+
+If plugins want to use ngettext functions without increasing php requirements
+to 4.2.0 with gettext support, they should require SquirrelMail 1.5.1, use 
+sq_bindtextdomain function instead of bindtextdomain and use sq_textdomain 
+function instead of text domain function. If SquirrelMail wrapper functions 
+are used, there is no need to issue sq_bindtextdomain when plugins reverts to
+SquirrelMail domain.
+
+More information about ngettext and plural forms can be found at:
+http://www.gnu.org/software/gettext/manual/html_chapter/gettext_10.html#SEC150