support per-plugin locale directories
This commit is contained in:
parent
9554bc820d
commit
72fcc81919
|
@ -1,4 +1,18 @@
|
||||||
<?php
|
<?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 {
|
class PluginHost {
|
||||||
private $pdo;
|
private $pdo;
|
||||||
private $hooks = array();
|
private $hooks = array();
|
||||||
|
@ -63,6 +77,10 @@ class PluginHost {
|
||||||
const KIND_SYSTEM = 2;
|
const KIND_SYSTEM = 2;
|
||||||
const KIND_USER = 3;
|
const KIND_USER = 3;
|
||||||
|
|
||||||
|
static function object_to_domain($plugin) {
|
||||||
|
return strtolower(get_class($plugin));
|
||||||
|
}
|
||||||
|
|
||||||
function __construct() {
|
function __construct() {
|
||||||
$this->pdo = Db::pdo();
|
$this->pdo = Db::pdo();
|
||||||
|
|
||||||
|
@ -211,6 +229,11 @@ class PluginHost {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (file_exists(dirname($file) . "/locale")) {
|
||||||
|
_bindtextdomain($class, dirname($file) . "/locale");
|
||||||
|
_bind_textdomain_codeset($class, "UTF-8");
|
||||||
|
}
|
||||||
|
|
||||||
$this->last_registered = $class;
|
$this->last_registered = $class;
|
||||||
|
|
||||||
switch ($kind) {
|
switch ($kind) {
|
||||||
|
|
|
@ -141,7 +141,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
_bindtextdomain("messages", "locale");
|
_bindtextdomain("messages", "locale");
|
||||||
|
|
||||||
_textdomain("messages");
|
_textdomain("messages");
|
||||||
_bind_textdomain_codeset("messages", "UTF-8");
|
_bind_textdomain_codeset("messages", "UTF-8");
|
||||||
}
|
}
|
||||||
|
@ -2403,18 +2402,23 @@
|
||||||
return __((parseInt(n) > 1) ? msg2 : msg1);
|
return __((parseInt(n) > 1) ? msg2 : msg1);
|
||||||
}';
|
}';
|
||||||
|
|
||||||
$l10n = _get_reader();
|
global $text_domains;
|
||||||
|
|
||||||
for ($i = 0; $i < $l10n->total; $i++) {
|
foreach (array_keys($text_domains) as $domain) {
|
||||||
$orig = $l10n->get_original_string($i);
|
$l10n = _get_reader($domain);
|
||||||
if(strpos($orig, "\000") !== FALSE) { // Plural forms
|
|
||||||
$key = explode(chr(0), $orig);
|
for ($i = 0; $i < $l10n->total; $i++) {
|
||||||
print T_js_decl($key[0], _ngettext($key[0], $key[1], 1)); // Singular
|
$orig = $l10n->get_original_string($i);
|
||||||
print T_js_decl($key[1], _ngettext($key[0], $key[1], 2)); // Plural
|
if(strpos($orig, "\000") !== FALSE) { // Plural forms
|
||||||
} else {
|
$key = explode(chr(0), $orig);
|
||||||
$translation = __($orig);
|
print T_js_decl($key[0], _ngettext($key[0], $key[1], 1)); // Singular
|
||||||
print T_js_decl($orig, $translation);
|
print T_js_decl($key[1], _ngettext($key[0], $key[1], 2)); // Plural
|
||||||
|
} else {
|
||||||
|
$translation = _dgettext($domain,$orig);
|
||||||
|
print T_js_decl($orig, $translation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue