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