gettext.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. /**
  3. * SquirrelMail internal gettext functions
  4. *
  5. * Since 1.5.1 uses php-gettext classes.
  6. * Original implementation was done by Tyler Akins (fidian)
  7. *
  8. * @link http://www.php.net/gettext Original php gettext manual
  9. * @link http://savannah.nongnu.org/projects/php-gettext php-gettext classes
  10. * @copyright &copy; 1999-2006 The SquirrelMail Project Team
  11. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  12. * @version $Id$
  13. * @since 1.1.2
  14. * @package squirrelmail
  15. * @subpackage i18n
  16. */
  17. /** Almost everything requires global.php... */
  18. require_once(SM_PATH . 'functions/global.php');
  19. /** Load classes and other functions */
  20. include_once(SM_PATH . 'class/l10n.class.php');
  21. include_once(SM_PATH . 'functions/ngettext.php');
  22. /**
  23. * Alternative php gettext function (short form)
  24. *
  25. * @link http://www.php.net/function.gettext
  26. *
  27. * @param string $str English string
  28. * @return string translated string
  29. * @since 1.1.2
  30. */
  31. function _($str) {
  32. global $l10n, $gettext_domain;
  33. if (! isset($l10n[$gettext_domain]) ||
  34. ! is_object($l10n[$gettext_domain]) ||
  35. $l10n[$gettext_domain]->error==1)
  36. return $str;
  37. return $l10n[$gettext_domain]->translate($str);
  38. }
  39. /**
  40. * Alternative php bindtextdomain function
  41. *
  42. * Sets path to directory containing domain translations
  43. *
  44. * @link http://www.php.net/function.bindtextdomain
  45. * @param string $domain gettext domain name
  46. * @param string $dir directory that contains all translations
  47. * @return string path to translation directory
  48. * @since 1.1.2
  49. */
  50. function bindtextdomain($domain, $dir) {
  51. global $l10n, $sm_notAlias;
  52. if (substr($dir, -1) != '/') $dir .= '/';
  53. $mofile=$dir . $sm_notAlias . '/LC_MESSAGES/' . $domain . '.mo';
  54. $input = new FileReader($mofile);
  55. $l10n[$domain] = new gettext_reader($input);
  56. return $dir;
  57. }
  58. /**
  59. * Alternative php textdomain function
  60. *
  61. * Sets default domain name. Before 1.5.1 command required
  62. * bindtextdomain() call for each gettext domain change.
  63. *
  64. * @link http://www.php.net/function.textdomain
  65. * @param string $name gettext domain name
  66. * @return string gettext domain name
  67. * @since 1.1.2
  68. */
  69. function textdomain($name = false) {
  70. global $gettext_domain;
  71. if ($name) $gettext_domain=$name;
  72. return $gettext_domain;
  73. }
  74. /**
  75. * Safety check.
  76. * Setup where three standard gettext functions don't exist and dgettext() exists.
  77. */
  78. if (! function_exists('dgettext')) {
  79. /**
  80. * Alternative php dgettext function
  81. *
  82. * @link http://www.php.net/function.dgettext
  83. * @param string $domain Gettext domain
  84. * @param string $str English string
  85. * @return string translated string
  86. * @since 1.5.1
  87. */
  88. function dgettext($domain, $str) {
  89. global $l10n;
  90. if (! isset($l10n[$domain]) ||
  91. ! is_object($l10n[$domain]) ||
  92. $l10n[$domain]->error==1)
  93. return $str;
  94. return $l10n[$domain]->translate($str);
  95. }
  96. }
  97. ?>