ngettext.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * SquirrelMail internal ngettext functions
  4. *
  5. * Uses php-gettext classes
  6. *
  7. * @link http://www.php.net/gettext Original php gettext manual
  8. * @link http://savannah.nongnu.org/projects/php-gettext php-gettext classes
  9. * @copyright &copy; 2004-2006 The SquirrelMail Project Team
  10. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  11. * @version $Id$
  12. * @package squirrelmail
  13. * @subpackage i18n
  14. * @since 1.5.1
  15. */
  16. /**
  17. * internal ngettext wrapper.
  18. *
  19. * provides ngettext support
  20. * @since 1.5.1
  21. * @link http://www.php.net/function.ngettext
  22. * @param string $single English string, singular form
  23. * @param string $plural English string, plural form
  24. * @param integer $number number that shows used quantity
  25. * @return string translated string
  26. */
  27. function ngettext($single, $plural, $number) {
  28. global $l10n, $gettext_domain;
  29. if (! isset($l10n[$gettext_domain]) ||
  30. ! is_object($l10n[$gettext_domain]) ||
  31. $l10n[$gettext_domain]->error==1)
  32. return ($number==1 ? $single : $plural);
  33. return $l10n[$gettext_domain]->ngettext($single, $plural, $number);
  34. }
  35. /**
  36. * safety check.
  37. * freaky setup where ngettext is not available and dngettext is available.
  38. */
  39. if (! function_exists('dngettext')) {
  40. /**
  41. * internal dngettext wrapper.
  42. *
  43. * provides dngettext support
  44. * @since 1.5.1
  45. * @link http://www.php.net/function.dngettext
  46. * @param string $domain Gettext domain
  47. * @param string $single English string, singular form
  48. * @param string $plural English string, plural form
  49. * @param integer $number number that shows used quantity
  50. * @return string translated string
  51. */
  52. function dngettext($domain, $single, $plural, $number) {
  53. global $l10n;
  54. // Make sure that $number is integer
  55. $number = (int) $number;
  56. // Make sure that domain is initialized
  57. if (! isset($l10n[$domain]) ||
  58. ! is_object($l10n[$domain]) ||
  59. $l10n[$domain]->error==1)
  60. return ($number==1 ? $single : $plural);
  61. // use ngettext class function
  62. return $l10n[$domain]->ngettext($single, $plural, $number);
  63. }
  64. }