Compare commits

..

4 Commits

Author SHA1 Message Date
Clemens Schwaighofer
43b51895f0 Bug fixes in ACL\Login and DB\IO\Extended 2022-04-22 15:32:06 +09:00
Clemens Schwaighofer
d0e294ecf5 Fix Language encoding move documentation 2022-04-18 17:57:04 +09:00
Clemens Schwaighofer
3c35341e8b Bug fix in smarty block.t plugin
Equal instead of assign for plural text translate calls.

Update smarty tests with more detail checks of translations
2022-04-18 10:52:37 +09:00
Clemens Schwaighofer
daf1f9263c Change all function L10n calls to one underscore, test updates
That change is done to be compatible with the phpmyadmin translator
class so this can be a drop in replacement or other way around.

Update smarty block.t to only check for _* functions and not any pre
loaded language class
2022-04-18 10:33:45 +09:00
13 changed files with 183 additions and 121 deletions

View File

@@ -2709,7 +2709,8 @@ final class CoreLibsDBIOTest extends TestCase
// comarep all, except timestamp that is a regex // comarep all, except timestamp that is a regex
foreach ($expected_history as $key => $value) { foreach ($expected_history as $key => $value) {
// check if starts with / because this is regex (timestamp) // check if starts with / because this is regex (timestamp)
if (strpos($value, "/") === 0) { // if (substr($expected_2, 0, 1) == '/) {
if (strpos($value, '/') === 0) {
// this is regex // this is regex
$this->assertMatchesRegularExpression( $this->assertMatchesRegularExpression(
$value, $value,

View File

@@ -90,11 +90,16 @@ final class CoreLibsGetSystemTest extends TestCase
public function getPageNameProvider(): array public function getPageNameProvider(): array
{ {
return [ return [
// 0: input
// 1: expected default/WITH_EXTENSION
// 2: expected NO_EXTENSION
// 3: expected FULL_PATH, if first and last character are / use regex
'original set' => [ 'original set' => [
0 => null, // input 0 => null,
1 => 'phpunit', 1 => 'phpunit',
2 => 'phpunit', 2 => 'phpunit',
3 => 'www/vendor/bin/phpunit', // NOTE: this can change // NOTE: this can change, so it is a regex check
3 => "/^(\/?.*\/?)?www\/vendor\/bin\/phpunit$/",
], ],
'some path with extension' => [ 'some path with extension' => [
0 => '/some/path/to/file.txt', 0 => '/some/path/to/file.txt',
@@ -147,11 +152,13 @@ final class CoreLibsGetSystemTest extends TestCase
list ($host, $port) = \CoreLibs\Get\System::getHostName(); list ($host, $port) = \CoreLibs\Get\System::getHostName();
$this->assertEquals( $this->assertEquals(
$expected_host, $expected_host,
$host $host,
'failed expected host assert'
); );
$this->assertEquals( $this->assertEquals(
$expected_port, $expected_port,
$port $port,
'faile expected port assert'
); );
} }
@@ -176,20 +183,38 @@ final class CoreLibsGetSystemTest extends TestCase
// default 0, // default 0,
$this->assertEquals( $this->assertEquals(
$expected_0, $expected_0,
\CoreLibs\Get\System::getPageName() \CoreLibs\Get\System::getPageName(),
'failed default assert'
); );
$this->assertEquals( $this->assertEquals(
$expected_0, $expected_0,
\CoreLibs\Get\System::getPageName(\CoreLibs\Get\System::WITH_EXTENSION) \CoreLibs\Get\System::getPageName(\CoreLibs\Get\System::WITH_EXTENSION),
'failed WITH_EXTESION assert'
); );
$this->assertEquals( $this->assertEquals(
$expected_1, $expected_1,
\CoreLibs\Get\System::getPageName(\CoreLibs\Get\System::NO_EXTENSION) \CoreLibs\Get\System::getPageName(\CoreLibs\Get\System::NO_EXTENSION),
); 'failed NO_EXTENSION assert'
$this->assertEquals(
$expected_2,
\CoreLibs\Get\System::getPageName(\CoreLibs\Get\System::FULL_PATH)
); );
// FULL PATH check can be equals or regex
$page_name_full_path = \CoreLibs\Get\System::getPageName(\CoreLibs\Get\System::FULL_PATH);
if (
substr($expected_2, 0, 1) == '/' &&
substr($expected_2, -1, 1) == '/'
) {
// this is regex
$this->assertMatchesRegularExpression(
$expected_2,
$page_name_full_path,
'failed FULL_PATH assert regex'
);
} else {
$this->assertEquals(
$expected_2,
$page_name_full_path,
'failed FULL_PATH assert equals'
);
}
} }
} }

View File

@@ -994,10 +994,10 @@ final class CoreLibsLanguageL10nTest extends TestCase
string $translated string $translated
): void { ): void {
\CoreLibs\Language\L10n::loadFunctions(); \CoreLibs\Language\L10n::loadFunctions();
__setlocale(LC_MESSAGES, $locale); _setlocale(LC_MESSAGES, $locale);
__textdomain($domain); _textdomain($domain);
__bindtextdomain($domain, $path); _bindtextdomain($domain, $path);
__bind_textdomain_codeset($domain, $encoding); _bind_textdomain_codeset($domain, $encoding);
$this->assertEquals( $this->assertEquals(
$translated, $translated,
__($original), __($original),
@@ -1005,7 +1005,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
); );
$this->assertEquals( $this->assertEquals(
$translated, $translated,
__gettext($original), _gettext($original),
'function gettext assert failed' 'function gettext assert failed'
); );
} }

View File

@@ -138,6 +138,7 @@ echo "LOAD ERROR: " . $l->getLoadError() . "<br>";
echo "INPUT TEST: " . $string . " => " . $l->__($string) . "<br>"; echo "INPUT TEST: " . $string . " => " . $l->__($string) . "<br>";
echo "TROUGH LOAD: " . $l->getTranslatorClass()->gettext($string) . "<br>"; echo "TROUGH LOAD: " . $l->getTranslatorClass()->gettext($string) . "<br>";
$lang = 'en';
$domain = 'admin'; $domain = 'admin';
echo "<br><b>STATIC TYPE TEST</b><br>"; echo "<br><b>STATIC TYPE TEST</b><br>";
// static tests from l10n_load // static tests from l10n_load
@@ -154,18 +155,30 @@ echo "<br><b>FUNCTIONS</b><br>";
// real statisc test // real statisc test
L10n::loadFunctions(); L10n::loadFunctions();
$locale = 'ja'; $locale = 'ja';
__setlocale(LC_MESSAGES, $locale); _setlocale(LC_MESSAGES, $locale);
__textdomain($domain); _textdomain($domain);
__bindtextdomain($domain, $path); _bindtextdomain($domain, $path);
__bind_textdomain_codeset($domain, $encoding); _bind_textdomain_codeset($domain, $encoding);
echo "INPUT TEST $locale: " . $string . " => " . __($string) . "<br>"; echo "INPUT TEST $locale: " . $string . " => " . __($string) . "<br>";
$single_string = 'single';
$multi_string = 'multi';
for ($n = 0; $n <= 3; $n++) {
echo "MULTI TEST $n: " . $single_string . "/" . $multi_string . " => "
. _ngettext($single_string, $multi_string, $n) . "<br>";
}
$locale = 'en_US.UTF-8'; $locale = 'en_US.UTF-8';
__setlocale(LC_MESSAGES, $locale); _setlocale(LC_MESSAGES, $locale);
__textdomain($domain); _textdomain($domain);
__bindtextdomain($domain, $path); _bindtextdomain($domain, $path);
__bind_textdomain_codeset($domain, $encoding); _bind_textdomain_codeset($domain, $encoding);
echo "INPUT TEST $locale: " . $string . " => " . __($string) . "<br>"; echo "INPUT TEST $locale: " . $string . " => " . __($string) . "<br>";
$single_string = 'single';
$multi_string = 'multi';
for ($n = 0; $n <= 3; $n++) {
echo "MULTI TEST $n: " . $single_string . "/" . $multi_string . " => "
. _ngettext($single_string, $multi_string, $n) . "<br>";
}
print "</body></html>"; print "</body></html>";

View File

@@ -74,7 +74,7 @@ $smarty->setSmartyPaths();
// smarty test // smarty test
$smarty->DATA['SMARTY_TEST'] = 'Test Data'; $smarty->DATA['SMARTY_TEST'] = 'Test Data';
$smarty->DATA['TRANSLATE_TEST'] = $l10n->__('Are we translated?'); $smarty->DATA['TRANSLATE_TEST'] = $l10n->__('Are we translated?');
$smarty->DATA['TRANSLATE_TEST_FUNCTION'] = __gettext('Are we translated?'); $smarty->DATA['TRANSLATE_TEST_FUNCTION'] = _gettext('Are we translated?');
$smarty->DATA['TRANSLATE_TEST_SMARTY'] = $smarty->l10n->__('Are we translated?'); $smarty->DATA['TRANSLATE_TEST_SMARTY'] = $smarty->l10n->__('Are we translated?');
$smarty->DATA['replace'] = 'Replaced'; $smarty->DATA['replace'] = 'Replaced';
// variable variables // variable variables

View File

@@ -14,7 +14,12 @@
<b>Translate Test with replace:</b><br> <b>Translate Test with replace:</b><br>
ORIGINAL: Original with string: %1 ({$replace})<br> ORIGINAL: Original with string: %1 ({$replace})<br>
TRANSLATED: {t 1=$replace}Original with string: %1{/t}<br> TRANSLATED: {t 1=$replace}Original with string: %1{/t}<br>
TRANSLATED (escape): {t escape=on 1=$replace}Original with string: %1{/t} TRANSLATED (escape): {t escape=on 1=$replace}Original with string: %1{/t}<br>
{capture assign="extra_title"}{t}INPUT TEST{/t}{/capture}
Capture test: {$extra_title}<br>
{section name=plural_test start=0 loop=3}
Plural test {$smarty.section.plural_test.index}: {t count=$smarty.section.plural_test.index plural="multi"}single{/t}<br>
{/section}
</div> </div>
<div> <div>
<b>Variable variables:</b><br> <b>Variable variables:</b><br>

View File

@@ -885,13 +885,13 @@ class Login
$this->acl['show_ea_extra'] = false; $this->acl['show_ea_extra'] = false;
} }
// set the default edit access // set the default edit access
$this->acl['default_edit_access'] = $_SESSION['UNIT_DEFAULT']; $this->acl['default_edit_access'] = $_SESSION['UNIT_DEFAULT'] ?? null;
// integrate the type acl list, but only for the keyword -> level // integrate the type acl list, but only for the keyword -> level
foreach ($this->default_acl_list as $level => $data) { foreach ($this->default_acl_list as $level => $data) {
$this->acl['min'][$data['type']] = $level; $this->acl['min'][$data['type']] = $level;
} }
// set the full acl list too // set the full acl list too
$this->acl['acl_list'] = $_SESSION['DEFAULT_ACL_LIST']; $this->acl['acl_list'] = $_SESSION['DEFAULT_ACL_LIST'] ?? [];
// debug // debug
// $this->debug('ACL', $this->print_ar($this->acl)); // $this->debug('ACL', $this->print_ar($this->acl));
} }
@@ -1453,7 +1453,8 @@ EOM;
* checks that the given edit access id is valid for this user * checks that the given edit access id is valid for this user
* @param int|null $edit_access_id edit access id to check * @param int|null $edit_access_id edit access id to check
* @return int|null same edit access id if ok * @return int|null same edit access id if ok
* or the default edit access id if given one is not valid * or the default edit access id
* if given one is not valid
*/ */
public function loginCheckEditAccessId(?int $edit_access_id): ?int public function loginCheckEditAccessId(?int $edit_access_id): ?int
{ {
@@ -1463,7 +1464,7 @@ EOM;
is_array($_SESSION['UNIT']) && is_array($_SESSION['UNIT']) &&
!array_key_exists($edit_access_id, $_SESSION['UNIT']) !array_key_exists($edit_access_id, $_SESSION['UNIT'])
) { ) {
return (int)$_SESSION['UNIT_DEFAULT']; return $_SESSION['UNIT_DEFAULT'] ?? null;
} else { } else {
return $edit_access_id; return $edit_access_id;
} }

View File

@@ -503,7 +503,7 @@ class ArrayIO extends \CoreLibs\DB\IO
// max id, falls INSERT // max id, falls INSERT
$q = 'SELECT MAX(' . $this->pk_name . ') + 1 AS pk_id FROM ' . $this->table_name; $q = 'SELECT MAX(' . $this->pk_name . ') + 1 AS pk_id FROM ' . $this->table_name;
if (is_array($res = $this->dbReturnRow($q))) { if (is_array($res = $this->dbReturnRow($q))) {
$pk_id = $res['pkd_id']; $pk_id = $res['pk_id'];
} else { } else {
$pk_id = 1; $pk_id = 1;
} }

View File

@@ -5,7 +5,7 @@
* Language\Encoding::__mbMimeEncode -> Convert\MimeEncode::__mbMimeEncode * Language\Encoding::__mbMimeEncode -> Convert\MimeEncode::__mbMimeEncode
* Langauge\Encoding::checkConvertEncoding -> Check\Encoding::checkConvertEncoding * Langauge\Encoding::checkConvertEncoding -> Check\Encoding::checkConvertEncoding
* Langauge\Encoding::setErrorChar -> Check\Encoding::setErrorChar * Langauge\Encoding::setErrorChar -> Check\Encoding::setErrorChar
* Langauge\Encoding::getErrorChar -> Encoding::getErrorChar * Langauge\Encoding::getErrorChar -> Check\Encoding::getErrorChar
* Langauge\Encoding::convertEncoding -> Convert\Encoding::convertEncoding * Langauge\Encoding::convertEncoding -> Convert\Encoding::convertEncoding
*/ */

View File

@@ -14,7 +14,7 @@
* __ : returns string (translated or original if not found) * __ : returns string (translated or original if not found)
* __n : plural string * __n : plural string
* __p : string with context * __p : string with context
* __pb: string with context and plural * __np: string with context and plural
* *
* HISTORY: * HISTORY:
* 2022/4/15 (cs) drop all old folder layout support, new folder base * 2022/4/15 (cs) drop all old folder layout support, new folder base

View File

@@ -1,8 +1,16 @@
<?php <?php
/*********************************************************************
* Original: https://github.com/phpmyadmin/motranslator
* Has the same function names, but uses a different base system
* setlocale -> setLocale
* bindtextdomain -> setTextDomain
* textdomain -> setDomain
*********************************************************************/
declare(strict_types=1); declare(strict_types=1);
use CoreLibs\Language\L10n; use CoreLibs\Language\L10n as Loader;
/** /**
* Sets a requested locale. * Sets a requested locale.
@@ -12,9 +20,9 @@ use CoreLibs\Language\L10n;
* *
* @return string Set or current locale * @return string Set or current locale
*/ */
function __setlocale(int $category, string $locale): string function _setlocale(int $category, string $locale): string
{ {
return L10n::getInstance()->setLocale($locale); return Loader::getInstance()->setLocale($locale);
} }
/** /**
@@ -23,9 +31,9 @@ function __setlocale(int $category, string $locale): string
* @param string $domain Domain name * @param string $domain Domain name
* @param string $path Path where to find locales * @param string $path Path where to find locales
*/ */
function __bindtextdomain(string $domain, string $path): void function _bindtextdomain(string $domain, string $path): void
{ {
L10n::getInstance()->setTextDomain($domain, $path); Loader::getInstance()->setTextDomain($domain, $path);
} }
/** /**
@@ -39,7 +47,7 @@ function __bindtextdomain(string $domain, string $path): void
* @param string $domain Domain where to set character set * @param string $domain Domain where to set character set
* @param string $codeset Character set to set * @param string $codeset Character set to set
*/ */
function __bind_textdomain_codeset(string $domain, string $codeset): void function _bind_textdomain_codeset(string $domain, string $codeset): void
{ {
} }
@@ -48,9 +56,9 @@ function __bind_textdomain_codeset(string $domain, string $codeset): void
* *
* @param string $domain Domain name * @param string $domain Domain name
*/ */
function __textdomain(string $domain): void function _textdomain(string $domain): void
{ {
L10n::getInstance()->setDomain($domain); Loader::getInstance()->setDomain($domain);
} }
/** /**
@@ -60,9 +68,9 @@ function __textdomain(string $domain): void
* *
* @return string translated string (or original, if not found) * @return string translated string (or original, if not found)
*/ */
function __gettext(string $msgid): string function _gettext(string $msgid): string
{ {
return L10n::getInstance()->getTranslator()->gettext( return Loader::getInstance()->getTranslator()->gettext(
$msgid $msgid
); );
} }
@@ -76,7 +84,7 @@ function __gettext(string $msgid): string
*/ */
function __(string $msgid): string function __(string $msgid): string
{ {
return L10n::getInstance()->getTranslator()->gettext( return Loader::getInstance()->getTranslator()->gettext(
$msgid $msgid
); );
} }
@@ -90,9 +98,9 @@ function __(string $msgid): string
* *
* @return string translated plural form * @return string translated plural form
*/ */
function __ngettext(string $msgid, string $msgidPlural, int $number): string function _ngettext(string $msgid, string $msgidPlural, int $number): string
{ {
return L10n::getInstance()->getTranslator()->ngettext( return Loader::getInstance()->getTranslator()->ngettext(
$msgid, $msgid,
$msgidPlural, $msgidPlural,
$number $number
@@ -107,9 +115,9 @@ function __ngettext(string $msgid, string $msgidPlural, int $number): string
* *
* @return string translated plural form * @return string translated plural form
*/ */
function __pgettext(string $msgctxt, string $msgid): string function _pgettext(string $msgctxt, string $msgid): string
{ {
return L10n::getInstance()->getTranslator()->pgettext( return Loader::getInstance()->getTranslator()->pgettext(
$msgctxt, $msgctxt,
$msgid $msgid
); );
@@ -125,9 +133,9 @@ function __pgettext(string $msgctxt, string $msgid): string
* *
* @return string translated plural form * @return string translated plural form
*/ */
function __npgettext(string $msgctxt, string $msgid, string $msgidPlural, int $number): string function _npgettext(string $msgctxt, string $msgid, string $msgidPlural, int $number): string
{ {
return L10n::getInstance()->getTranslator()->npgettext( return Loader::getInstance()->getTranslator()->npgettext(
$msgctxt, $msgctxt,
$msgid, $msgid,
$msgidPlural, $msgidPlural,
@@ -143,9 +151,9 @@ function __npgettext(string $msgctxt, string $msgid, string $msgidPlural, int $n
* *
* @return string translated string (or original, if not found) * @return string translated string (or original, if not found)
*/ */
function __dgettext(string $domain, string $msgid): string function _dgettext(string $domain, string $msgid): string
{ {
return L10n::getInstance()->getTranslator('', '', $domain)->gettext( return Loader::getInstance()->getTranslator('', '', $domain)->gettext(
$msgid $msgid
); );
} }
@@ -160,9 +168,9 @@ function __dgettext(string $domain, string $msgid): string
* *
* @return string translated plural form * @return string translated plural form
*/ */
function __dngettext(string $domain, string $msgid, string $msgidPlural, int $number): string function _dngettext(string $domain, string $msgid, string $msgidPlural, int $number): string
{ {
return L10n::getInstance()->getTranslator('', '', $domain)->ngettext( return Loader::getInstance()->getTranslator('', '', $domain)->ngettext(
$msgid, $msgid,
$msgidPlural, $msgidPlural,
$number $number
@@ -178,9 +186,9 @@ function __dngettext(string $domain, string $msgid, string $msgidPlural, int $nu
* *
* @return string translated plural form * @return string translated plural form
*/ */
function __dpgettext(string $domain, string $msgctxt, string $msgid): string function _dpgettext(string $domain, string $msgctxt, string $msgid): string
{ {
return L10n::getInstance()->getTranslator('', '', $domain)->pgettext( return Loader::getInstance()->getTranslator('', '', $domain)->pgettext(
$msgctxt, $msgctxt,
$msgid $msgid
); );
@@ -197,9 +205,9 @@ function __dpgettext(string $domain, string $msgctxt, string $msgid): string
* *
* @return string translated plural form * @return string translated plural form
*/ */
function __dnpgettext(string $domain, string $msgctxt, string $msgid, string $msgidPlural, int $number): string function _dnpgettext(string $domain, string $msgctxt, string $msgid, string $msgidPlural, int $number): string
{ {
return L10n::getInstance()->getTranslator('', '', $domain)->npgettext( return Loader::getInstance()->getTranslator('', '', $domain)->npgettext(
$msgctxt, $msgctxt,
$msgid, $msgid,
$msgidPlural, $msgidPlural,

View File

@@ -173,11 +173,11 @@ class SmartyExtend extends \Smarty
$this->lang_dir = $this->l10n->getBaseLocalePath(); $this->lang_dir = $this->l10n->getBaseLocalePath();
// opt load functions so we can use legacy init for smarty run perhaps // opt load functions so we can use legacy init for smarty run perhaps
$this->l10n->loadFunctions(); \CoreLibs\Language\L10n::loadFunctions();
__setlocale(LC_MESSAGES, $locale['locale']); _setlocale(LC_MESSAGES, $locale['locale']);
__textdomain($this->domain); _textdomain($this->domain);
__bindtextdomain($this->domain, $this->lang_dir); _bindtextdomain($this->domain, $this->lang_dir);
__bind_textdomain_codeset($this->domain, $this->encoding); _bind_textdomain_codeset($this->domain, $this->encoding);
// register smarty variable // register smarty variable
$this->registerPlugin('modifier', 'getvar', [&$this, 'getTemplateVars']); $this->registerPlugin('modifier', 'getvar', [&$this, 'getTemplateVars']);

View File

@@ -3,30 +3,19 @@
/** /**
* smarty-gettext.php - Gettext support for smarty * smarty-gettext.php - Gettext support for smarty
* *
* ------------------------------------------------------------------------- *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public *
* License as published by the Free Software Foundation; either *
* version 2.1 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this library; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
* ------------------------------------------------------------------------- *
*
* To register as a smarty block function named 't', use: * To register as a smarty block function named 't', use:
* $smarty->register_block('t', 'smarty_translate'); * $smarty->register_block('t', 'smarty_translate');
* *
* NOTE: native php support for conext sensitive does not exist
* Those jumps are disabled
*
* @package smarty-gettext * @package smarty-gettext
* @version $Id: block.t.php 4738 2022-05-06 01:28:48Z clemens $ * @version $Id: block.t.php 4738 2022-05-06 01:28:48Z clemens $
* @link http://smarty-gettext.sf.net/ * @link http://smarty-gettext.sf.net/
* @author Sagi Bashari <sagi@boom.org.il> * @author Sagi Bashari <sagi@boom.org.il>
* @copyright 2004 Sagi Bashari * @copyright 2004 Sagi Bashari
* @copyright Elan Ruusamäe
* @copyright Clemens Schwaighofer
*/ */
/** /**
@@ -39,7 +28,7 @@
*/ */
function smarty_gettext_strarg($str/*, $varargs... */) function smarty_gettext_strarg($str/*, $varargs... */)
{ {
$tr = array(); $tr = [];
$p = 0; $p = 0;
$nargs = func_num_args(); $nargs = func_num_args();
@@ -68,14 +57,18 @@ function smarty_gettext_strarg($str/*, $varargs... */)
* - escape - sets escape mode: * - escape - sets escape mode:
* - 'html' for HTML escaping, this is the default. * - 'html' for HTML escaping, this is the default.
* - 'js' for javascript escaping. * - 'js' for javascript escaping.
* - 'url' for url escaping.
* - 'no'/'off'/0 - turns off escaping * - 'no'/'off'/0 - turns off escaping
* - plural - The plural version of the text (2nd parameter of ngettext()) * - plural - The plural version of the text (2nd parameter of ngettext())
* - count - The item count for plural mode (3rd parameter of ngettext()) * - count - The item count for plural mode (3rd parameter of ngettext())
* - domain - Textdomain to be used, default if skipped (dgettext() instead of gettext())
* - context - gettext context. reserved for future use.
*
*/ */
// cs modified: __ calls instead of direct gettext calls // cs modified: __ calls instead of direct gettext calls
function smarty_block_t($params, $text, $template, &$repeat) function smarty_block_t($params, $text)
{ {
if (!isset($text)) { if (!isset($text)) {
return $text; return $text;
@@ -120,55 +113,54 @@ function smarty_block_t($params, $text, $template, &$repeat)
// use plural if required parameters are set // use plural if required parameters are set
if (isset($count) && isset($plural)) { if (isset($count) && isset($plural)) {
if (isset($domain) && isset($context)) { if (isset($domain) && isset($context)) {
if (is_callable('__dnpgettext')) { if (is_callable('_dnpgettext')) {
$text = __dnpgettext($domain, $context, $text, $plural, $count); $text = _dnpgettext($domain, $context, $text, $plural, $count);
} }/* elseif (is_callable('dnpgettext')) {
$text = dnpgettext($domain, $context, $text, $plural, $count);
} */
} elseif (isset($domain)) { } elseif (isset($domain)) {
if (is_callable('__dngettext')) { if (is_callable('_dngettext')) {
$text = __dngettext($domain, $text, $plural, $count); $text = _dngettext($domain, $text, $plural, $count);
} elseif (is_callable('dngettext')) {
$text = dngettext($domain, $text, $plural, $count);
} }
} elseif (isset($context)) { } elseif (isset($context)) {
if (is_callable('__npgettext')) { if (is_callable('_npgettext')) {
$text == __npgettext($context, $text, $plural, $count); $text = _npgettext($context, $text, $plural, $count);
} elseif ( }/* elseif (is_callable('npgettext')) {
$template->l10n instanceof \CoreLibs\Language\L10n && $text = npgettext($context, $text, $plural, $count);
method_exists($template->l10n, '__pn') } */
) { } else {
$text = $template->l10n->__pn($text, $plural, $count); if (is_callable('_ngettext')) {
$text = _ngettext($text, $plural, $count);
} elseif (is_callable('ngettext')) {
$text = ngettext($text, $plural, $count);
} }
} elseif (
$template->l10n instanceof \CoreLibs\Language\L10n &&
method_exists($template->l10n, '__n')
) {
$text = $template->l10n->__n($text, $plural, $count);
// $text == __ngettext($text, $plural, $count);
} }
} else { // use normal } else { // use normal
if (isset($domain) && isset($context)) { if (isset($domain) && isset($context)) {
if (is_callable('__dpgettext')) { if (is_callable('_dpgettext')) {
$text = __dpgettext($domain, $context, $text); $text = _dpgettext($domain, $context, $text);
} }/* elseif (is_callable('dpgettext')) {
$text = dpgettext($domain, $context, $text);
} */
} elseif (isset($domain)) { } elseif (isset($domain)) {
if (is_callable('__dgettext')) { if (is_callable('_dgettext')) {
$text = __dgettext($domain, $text); $text = _dgettext($domain, $text);
} elseif (is_callable('dpgettext')) {
$text = dgettext($domain, $text);
} }
} elseif (isset($context)) { } elseif (isset($context)) {
if (is_callable('__pgettext')) { if (is_callable('_pgettext')) {
$text = __pgettext($context, $text); $text = _pgettext($context, $text);
} elseif ( }/* elseif (is_callable('pgettext')) {
$template->l10n instanceof \CoreLibs\Language\L10n && $text = pgettext($context, $text);
method_exists($template->l10n, '__p') } */
) {
$text = $template->l10n->__p($context, $text);
}
} else { } else {
if (is_callable('__gettext')) { if (is_callable('_gettext')) {
$text = __gettext($text); $text = _gettext($text);
} elseif ( } elseif (is_callable('gettext')) {
$template->l10n instanceof \CoreLibs\Language\L10n && $text = gettext($text);
method_exists($template->l10n, '__')
) {
$text = $template->l10n->__($text);
} }
} }
} }
@@ -180,6 +172,7 @@ function smarty_block_t($params, $text, $template, &$repeat)
switch ($escape) { switch ($escape) {
case 'html': case 'html':
// default
$text = nl2br(htmlspecialchars($text)); $text = nl2br(htmlspecialchars($text));
break; break;
case 'javascript': case 'javascript':
@@ -187,13 +180,29 @@ function smarty_block_t($params, $text, $template, &$repeat)
// javascript escape // javascript escape
$text = strtr( $text = strtr(
$text, $text,
array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n', '</' => '<\/') [
'\\' => '\\\\',
"'" => "\\'",
'"' => '\\"',
"\r" => '\\r',
"\n" => '\\n',
'</' => '<\/'
]
); );
break; break;
case 'url': case 'url':
// url escape // url escape
$text = urlencode($text); $text = urlencode($text);
break; break;
// below is a list for explicit OFF
case 'no':
case 'off':
case 'false':
case '0':
case 0:
// explicit OFF
default:
break;
} }
return $text; return $text;