Update copyrights to 2010
[squirrelmail.git] / functions / gettext.php
index 4295a68bcd48aca48ebc252118bbddfd40dd8b9e..0b84bba58b4c98074f7e967ee506c49610da4aaa 100644 (file)
@@ -1,19 +1,21 @@
 <?php
+
 /**
  * SquirrelMail internal gettext functions
  *
- * Uses php-gettext classes
- * @copyright (c) 1999-2004 The SquirrelMail Project Team
- * @license http://opensource.org/licenses/gpl-license.php GNU Public Licens
+ * Since 1.5.1 uses php-gettext classes.
+ * Original implementation was done by Tyler Akins (fidian)
+ *
  * @link http://www.php.net/gettext Original php gettext manual
  * @link http://savannah.nongnu.org/projects/php-gettext php-gettext classes
+ * @copyright 1999-2010 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
+ * @since 1.1.2
  * @package squirrelmail
  * @subpackage i18n
  */
 
-/** Almost everything requires global.php... */
-require_once(SM_PATH . 'functions/global.php');
 
 /** Load classes and other functions */
 include_once(SM_PATH . 'class/l10n.class.php');
@@ -26,10 +28,14 @@ include_once(SM_PATH . 'functions/ngettext.php');
  *
  * @param string $str English string
  * @return string translated string
+ * @since 1.1.2
  */
 function _($str) {
     global $l10n, $gettext_domain;
-    if ($l10n[$gettext_domain]->error==1) return $str;
+    if (! isset($l10n[$gettext_domain]) ||
+        ! is_object($l10n[$gettext_domain]) ||
+        $l10n[$gettext_domain]->error==1)
+        return $str;
     return $l10n[$gettext_domain]->translate($str);
 }
 
@@ -42,6 +48,7 @@ function _($str) {
  * @param string $domain gettext domain name
  * @param string $dir directory that contains all translations
  * @return string path to translation directory
+ * @since 1.1.2
  */
 function bindtextdomain($domain, $dir) {
     global $l10n, $sm_notAlias;
@@ -57,15 +64,40 @@ function bindtextdomain($domain, $dir) {
 /**
  * Alternative php textdomain function
  *
- * Sets default domain name
+ * Sets default domain name. Before 1.5.1 command required
+ * bindtextdomain() call for each gettext domain change.
  *
  * @link http://www.php.net/function.textdomain
  * @param string $name gettext domain name
  * @return string gettext domain name
+ * @since 1.1.2
  */
 function textdomain($name = false) {
     global $gettext_domain;
     if ($name) $gettext_domain=$name;
     return $gettext_domain;
 }
-?>
\ No newline at end of file
+
+/**
+ * Safety check.
+ * Setup where three standard gettext functions don't exist and dgettext() exists.
+ */
+if (! function_exists('dgettext')) {
+    /**
+     * Alternative php dgettext function
+     *
+     * @link http://www.php.net/function.dgettext
+     * @param string $domain Gettext domain
+     * @param string $str English string
+     * @return string translated string
+     * @since 1.5.1
+     */
+    function dgettext($domain, $str) {
+        global $l10n;
+        if (! isset($l10n[$domain]) ||
+            ! is_object($l10n[$domain]) ||
+            $l10n[$domain]->error==1)
+            return $str;
+        return $l10n[$domain]->translate($str);
+    }
+}