gettext.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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 1999-2025 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. /** Load classes and other functions */
  18. include_once(SM_PATH . 'class/l10n.class.php');
  19. include_once(SM_PATH . 'functions/ngettext.php');
  20. /**
  21. * Alternative php gettext function (short form)
  22. *
  23. * @link http://www.php.net/function.gettext
  24. *
  25. * @param string $str English string
  26. * @return string translated string
  27. * @since 1.1.2
  28. */
  29. function _($str) {
  30. global $l10n, $gettext_domain;
  31. if (! isset($l10n[$gettext_domain]) ||
  32. ! is_object($l10n[$gettext_domain]) ||
  33. $l10n[$gettext_domain]->error==1)
  34. return $str;
  35. return $l10n[$gettext_domain]->translate($str);
  36. }
  37. /**
  38. * Alternative php bindtextdomain function
  39. *
  40. * Sets path to directory containing domain translations
  41. *
  42. * @link http://www.php.net/function.bindtextdomain
  43. * @param string $domain gettext domain name
  44. * @param string $dir directory that contains all translations
  45. * @return string path to translation directory
  46. * @since 1.1.2
  47. */
  48. function bindtextdomain($domain, $dir) {
  49. global $l10n, $sm_notAlias;
  50. if (substr($dir, -1) != '/') $dir .= '/';
  51. $mofile=$dir . $sm_notAlias . '/LC_MESSAGES/' . $domain . '.mo';
  52. $input = new FileReader($mofile);
  53. $l10n[$domain] = new gettext_reader($input);
  54. return $dir;
  55. }
  56. /**
  57. * Alternative php textdomain function
  58. *
  59. * Sets default domain name. Before 1.5.1 command required
  60. * bindtextdomain() call for each gettext domain change.
  61. *
  62. * @link http://www.php.net/function.textdomain
  63. * @param string $name gettext domain name
  64. * @return string gettext domain name
  65. * @since 1.1.2
  66. */
  67. function textdomain($name = false) {
  68. global $gettext_domain;
  69. if ($name) $gettext_domain=$name;
  70. return $gettext_domain;
  71. }
  72. /**
  73. * Safety check.
  74. * Setup where three standard gettext functions don't exist and dgettext() exists.
  75. */
  76. if (! function_exists('dgettext')) {
  77. /**
  78. * Alternative php dgettext function
  79. *
  80. * @link http://www.php.net/function.dgettext
  81. * @param string $domain Gettext domain
  82. * @param string $str English string
  83. * @return string translated string
  84. * @since 1.5.1
  85. */
  86. function dgettext($domain, $str) {
  87. global $l10n;
  88. if (! isset($l10n[$domain]) ||
  89. ! is_object($l10n[$domain]) ||
  90. $l10n[$domain]->error==1)
  91. return $str;
  92. return $l10n[$domain]->translate($str);
  93. }
  94. }