summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xclasses/pluginhost.php23
-rwxr-xr-xinclude/functions.php26
2 files changed, 38 insertions, 11 deletions
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index 96b1ce499..2ad9ae11d 100755
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -1,4 +1,18 @@
<?php
+/* gettext helpers for plugins */
+
+function P__($plugin, $msgid) {
+ return P_gettext($plugin, $msgid);
+}
+
+function P_gettext($plugin, $msgid) {
+ return _dgettext(PLuginHost::object_to_domain($plugin), $msgid);
+}
+
+function P_ngettext($plugin, $singular, $plural, $number) {
+ return _dngettext(PLuginHost::object_to_domain($plugin), $singular, $plural, $number);
+}
+
class PluginHost {
private $pdo;
private $hooks = array();
@@ -63,6 +77,10 @@ class PluginHost {
const KIND_SYSTEM = 2;
const KIND_USER = 3;
+ static function object_to_domain($plugin) {
+ return strtolower(get_class($plugin));
+ }
+
function __construct() {
$this->pdo = Db::pdo();
@@ -211,6 +229,11 @@ class PluginHost {
continue;
}
+ if (file_exists(dirname($file) . "/locale")) {
+ _bindtextdomain($class, dirname($file) . "/locale");
+ _bind_textdomain_codeset($class, "UTF-8");
+ }
+
$this->last_registered = $class;
switch ($kind) {
diff --git a/include/functions.php b/include/functions.php
index 6a612115e..8c0654f3c 100755
--- a/include/functions.php
+++ b/include/functions.php
@@ -141,7 +141,6 @@
}
_bindtextdomain("messages", "locale");
-
_textdomain("messages");
_bind_textdomain_codeset("messages", "UTF-8");
}
@@ -2403,18 +2402,23 @@
return __((parseInt(n) > 1) ? msg2 : msg1);
}';
- $l10n = _get_reader();
+ global $text_domains;
- for ($i = 0; $i < $l10n->total; $i++) {
- $orig = $l10n->get_original_string($i);
- if(strpos($orig, "\000") !== FALSE) { // Plural forms
- $key = explode(chr(0), $orig);
- print T_js_decl($key[0], _ngettext($key[0], $key[1], 1)); // Singular
- print T_js_decl($key[1], _ngettext($key[0], $key[1], 2)); // Plural
- } else {
- $translation = __($orig);
- print T_js_decl($orig, $translation);
+ foreach (array_keys($text_domains) as $domain) {
+ $l10n = _get_reader($domain);
+
+ for ($i = 0; $i < $l10n->total; $i++) {
+ $orig = $l10n->get_original_string($i);
+ if(strpos($orig, "\000") !== FALSE) { // Plural forms
+ $key = explode(chr(0), $orig);
+ print T_js_decl($key[0], _ngettext($key[0], $key[1], 1)); // Singular
+ print T_js_decl($key[1], _ngettext($key[0], $key[1], 2)); // Plural
+ } else {
+ $translation = _dgettext($domain,$orig);
+ print T_js_decl($orig, $translation);
+ }
}
+
}
}