Add local set to L10n class and use it in Smarty Extended
The actual locale name of the folder where the mo file is located can be queried with getLocaleSet() This is used in smarty extended to set the smarty translation template for javascript strings
This commit is contained in:
@@ -109,10 +109,11 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
// 2: encoding
|
||||
// 3: path
|
||||
// 4: locale expected
|
||||
// 5: domain exepcted
|
||||
// 6: context (null for none)
|
||||
// 7: test string in
|
||||
// 8: test translated
|
||||
// 5: locale set expected
|
||||
// 6: domain exepcted
|
||||
// 7: context (null for none)
|
||||
// 8: test string in
|
||||
// 9: test translated
|
||||
// new style load
|
||||
'gettext load en' => [
|
||||
'en_US.UTF-8',
|
||||
@@ -120,6 +121,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
__DIR__ . 'includes/locale/',
|
||||
//
|
||||
'en_US.UTF-8',
|
||||
'en_US',
|
||||
'frontend',
|
||||
null,
|
||||
'Original',
|
||||
@@ -131,6 +133,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
__DIR__ . 'includes/locale/',
|
||||
//
|
||||
'en_US.UTF-8',
|
||||
'en_US',
|
||||
'frontend',
|
||||
'context',
|
||||
'Original',
|
||||
@@ -142,6 +145,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
__DIR__ . 'includes/locale/',
|
||||
//
|
||||
'ja_JP.UTF-8',
|
||||
'ja_JP',
|
||||
'admin',
|
||||
null,
|
||||
'Original',
|
||||
@@ -154,6 +158,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
'frontend',
|
||||
//
|
||||
'en_US.UTF-8',
|
||||
'en_US',
|
||||
'frontend',
|
||||
'context',
|
||||
'Original',
|
||||
@@ -167,6 +172,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
//
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
null,
|
||||
'Original',
|
||||
'Original',
|
||||
@@ -185,6 +191,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
* @param string|null $domain
|
||||
* @param string|null $path
|
||||
* @param string $locale_expected
|
||||
* @param string $locale_set_expected
|
||||
* @param string $domain_expected
|
||||
* @param ?string $context
|
||||
* @param string $original
|
||||
@@ -196,6 +203,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
?string $domain,
|
||||
?string $path,
|
||||
string $locale_expected,
|
||||
string $locale_set_expected,
|
||||
string $domain_expected,
|
||||
?string $context,
|
||||
string $original,
|
||||
@@ -217,6 +225,11 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
$l10n->getLocale(),
|
||||
'Locale assert failed'
|
||||
);
|
||||
$this->assertEquals(
|
||||
$locale_set_expected,
|
||||
$l10n->getLocaleSet(),
|
||||
'Locale set assert failed'
|
||||
);
|
||||
$this->assertEquals(
|
||||
$domain_expected,
|
||||
$l10n->getDomain(),
|
||||
@@ -255,15 +268,17 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
// 3: load error
|
||||
// 4: input string to translated
|
||||
// 5: expected locale
|
||||
// 6: expected domain
|
||||
// 7: expected translation
|
||||
// 8: change locale
|
||||
// 9: change domain
|
||||
// 10: change path
|
||||
// 11: change load error
|
||||
// 12: expected locale
|
||||
// 13: expected domain
|
||||
// 14: expected translation
|
||||
// 6: expected locale set
|
||||
// 7: expected domain
|
||||
// 8: expected translation
|
||||
// 9: change locale
|
||||
// 10: change domain
|
||||
// 11: change path
|
||||
// 12: change load error
|
||||
// 13: expected locale
|
||||
// 14: expected locale set
|
||||
// 15: expected domain
|
||||
// 16: expected translation
|
||||
'load and change (en->ja)' => [
|
||||
// set 0-2
|
||||
'en_US.UTF-8',
|
||||
@@ -275,6 +290,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
'Original',
|
||||
// check setter 5-7
|
||||
'en_US.UTF-8',
|
||||
'en_US',
|
||||
'frontend',
|
||||
'Translated frontend en_US',
|
||||
// set new 8-10
|
||||
@@ -285,6 +301,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
false,
|
||||
// check new setter 12-14
|
||||
'ja_JP.UTF-8',
|
||||
'ja_JP',
|
||||
'frontend',
|
||||
'Translated frontend ja_JP',
|
||||
],
|
||||
@@ -300,6 +317,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
// check setter 5-7
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'Original',
|
||||
// set new 8-10
|
||||
'en_US.UTF-8',
|
||||
@@ -309,6 +327,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
false,
|
||||
// check new setter 12-14
|
||||
'en_US.UTF-8',
|
||||
'en_US',
|
||||
'frontend',
|
||||
'Translated frontend en_US',
|
||||
]
|
||||
@@ -329,12 +348,14 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
* @param bool $load_error
|
||||
* @param string $original
|
||||
* @param string $locale_expected_a
|
||||
* @param string $locale_set_expected_a
|
||||
* @param string $domain_expected_a
|
||||
* @param string $translated_a
|
||||
* @param string|null $locale_new
|
||||
* @param string|null $domain_new
|
||||
* @param string|null $path_new
|
||||
* @param bool $load_error_new
|
||||
* @param string $locale_set_expected_b
|
||||
* @param string $locale_expected_b
|
||||
* @param string $domain_expected_b
|
||||
* @param string $translated_b
|
||||
@@ -351,6 +372,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
string $original,
|
||||
// 5-7
|
||||
string $locale_expected_a,
|
||||
string $locale_set_expected_a,
|
||||
string $domain_expected_a,
|
||||
string $translated_a,
|
||||
// 8-10
|
||||
@@ -361,6 +383,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
bool $load_error_new,
|
||||
// 12-14
|
||||
string $locale_expected_b,
|
||||
string $locale_set_expected_b,
|
||||
string $domain_expected_b,
|
||||
string $translated_b,
|
||||
): void {
|
||||
@@ -384,6 +407,10 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
$locale_expected_a,
|
||||
$l10n->getLocale(),
|
||||
'Locale init assert failed'
|
||||
);$this->assertEquals(
|
||||
$locale_set_expected_a,
|
||||
$l10n->getLocaleSet(),
|
||||
'Locale Set init assert failed'
|
||||
);
|
||||
$this->assertEquals(
|
||||
$domain_expected_a,
|
||||
@@ -435,6 +462,11 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
$l10n->getLocale(),
|
||||
'Locale change assert failed'
|
||||
);
|
||||
$this->assertEquals(
|
||||
$locale_set_expected_b,
|
||||
$l10n->getLocaleSet(),
|
||||
'Locale Set change assert failed'
|
||||
);
|
||||
$this->assertEquals(
|
||||
$domain_expected_b,
|
||||
$l10n->getDomain(),
|
||||
|
||||
@@ -34,6 +34,8 @@ class L10n
|
||||
{
|
||||
/** @var string the current locale */
|
||||
private $locale = '';
|
||||
/** @var string the SET locale as WHERE the domain file is */
|
||||
private $locale_set = '';
|
||||
/** @var string the default selected/active domain */
|
||||
private $domain = '';
|
||||
/** @var array<string,array<string,GetTextReader>> locale > domain = translator */
|
||||
@@ -141,6 +143,7 @@ class L10n
|
||||
// store old settings
|
||||
$old_mofile = $this->mofile;
|
||||
$old_lang = $this->locale;
|
||||
$old_lang_set = $this->locale_set;
|
||||
$old_domain = $this->domain;
|
||||
$old_base_locale_path = $this->base_locale_path;
|
||||
$old_base_content_path = $this->base_content_path;
|
||||
@@ -172,6 +175,7 @@ class L10n
|
||||
. $this->base_content_path
|
||||
. $domain . '.mo';
|
||||
if (file_exists($this->mofile)) {
|
||||
$this->locale_set = $_locale;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -202,6 +206,7 @@ class L10n
|
||||
// else fall back to the old ones
|
||||
$this->mofile = $old_mofile;
|
||||
$this->locale = $old_lang;
|
||||
$this->locale_set = $old_lang_set;
|
||||
$this->domain = $old_domain;
|
||||
$this->base_locale_path = $old_base_locale_path;
|
||||
$this->base_content_path = $old_base_content_path;
|
||||
@@ -454,7 +459,7 @@ class L10n
|
||||
}
|
||||
|
||||
/**
|
||||
* get current set locale
|
||||
* get current set locale (want locale)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
@@ -463,6 +468,16 @@ class L10n
|
||||
return $this->locale;
|
||||
}
|
||||
|
||||
/**
|
||||
* current set locale where mo file is located
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getLocaleSet(): string
|
||||
{
|
||||
return $this->locale_set;
|
||||
}
|
||||
|
||||
/**
|
||||
* get current set language
|
||||
*
|
||||
|
||||
@@ -32,6 +32,8 @@ class SmartyExtend extends \Smarty
|
||||
/** @var string */
|
||||
public $lang;
|
||||
/** @var string */
|
||||
public $locale_set;
|
||||
/** @var string */
|
||||
public $lang_short;
|
||||
/** @var string */
|
||||
public $domain;
|
||||
@@ -170,6 +172,7 @@ class SmartyExtend extends \Smarty
|
||||
// get first part from lang
|
||||
$this->lang_short = explode('_', $locale['lang'])[0];
|
||||
$this->domain = $this->l10n->getDomain();
|
||||
$this->locale_set = $this->l10n->getLocaleSet();
|
||||
$this->lang_dir = $this->l10n->getBaseLocalePath();
|
||||
|
||||
// opt load functions so we can use legacy init for smarty run perhaps
|
||||
@@ -312,7 +315,9 @@ class SmartyExtend extends \Smarty
|
||||
}
|
||||
// javascript translate data as template for auto translate
|
||||
if (empty($this->TEMPLATE_TRANSLATE)) {
|
||||
$this->TEMPLATE_TRANSLATE = 'jsTranslate_' . $this->lang . '.tpl';
|
||||
$this->TEMPLATE_TRANSLATE = 'jsTranslate_'
|
||||
. $this->locale_set . '.' . $this->encoding
|
||||
. '.tpl';
|
||||
} else {
|
||||
// we assume we have some fixed set
|
||||
// we must add _<$this->lang>
|
||||
@@ -321,12 +326,12 @@ class SmartyExtend extends \Smarty
|
||||
if (strpos($this->TEMPLATE_TRANSLATE, '.tpl')) {
|
||||
$this->TEMPLATE_TRANSLATE = str_replace(
|
||||
'.tpl',
|
||||
'-' . $this->lang . '.' . $this->encoding . '.tpl',
|
||||
'-' . $this->locale_set . '.' . $this->encoding . '.tpl',
|
||||
$this->TEMPLATE_TRANSLATE
|
||||
);
|
||||
} else {
|
||||
$this->TEMPLATE_TRANSLATE .= '_'
|
||||
. $this->lang . '.' . $this->encoding
|
||||
. $this->locale_set . '.' . $this->encoding
|
||||
. '.tpl';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user