Просмотр исходного кода

Add sq_change_text_domain for plugins to use when switching text domains

pdontthink 18 лет назад
Родитель
Сommit
c21b5c21fd
1 измененных файлов с 49 добавлено и 0 удалено
  1. 49 0
      include/languages.php

+ 49 - 0
include/languages.php

@@ -22,6 +22,55 @@
  */
  */
 
 
 
 
+/**
+ * Wrapper for textdomain(), bindtextdomain() and
+ * bind_textdomain_codeset() primarily intended for
+ * plugins when changing into their own text domain 
+ * and back again.
+ *
+ * Note that plugins using this function must have
+ * their translation files located in the SquirrelMail
+ * locale directory.
+ *
+ * @param string $domain_name The name of the text domain 
+ *                            (usually the plugin name, or 
+ *                            "squirrelmail") being switched to.                 
+ *
+ * @return void
+ *
+ * @since 1.5.2 and 1.4.10 
+ */
+function sq_change_text_domain($domain_name) {
+
+    global $languages, $sm_notAlias;
+    static $domains_already_seen = array();
+
+    // only need to call bindtextdomain() once 
+    //
+    if (in_array($domain_name, $domains_already_seen)) {
+        sq_textdomain($domain_name);
+        return;
+    }
+
+    $domains_already_seen[] = $domain_name;
+
+    sq_bindtextdomain($domain_name, SM_PATH . 'locale/');
+    sq_textdomain($domain_name);
+
+    // set codeset in order to avoid gettext charset conversions
+    if (function_exists('bind_textdomain_codeset') 
+     && isset($languages[$sm_notAlias]['CHARSET'])) {
+
+        // Japanese translation uses different internal charset
+        if ($sm_notAlias == 'ja_JP') {
+            bind_textdomain_codeset ($domain_name, 'EUC-JP');
+        } else {
+            bind_textdomain_codeset ($domain_name, $languages[$sm_notAlias]['CHARSET']);
+        }
+
+    }
+}
+
 /**
 /**
  * Gettext bindtextdomain wrapper.
  * Gettext bindtextdomain wrapper.
  *
  *