40 lines
1.4 KiB
PHP
40 lines
1.4 KiB
PHP
<?php namespace fox;
|
|
|
|
class langPack {
|
|
public static function getAndReplace(string $key, array $values=[], $lang=null) {
|
|
return static::replaceKeys(static::get($key,$lang), $values);
|
|
}
|
|
|
|
public static function replaceKeys(string $text,array $values=[]) {
|
|
if (!array_key_exists("svcName", $values)) { $values["svcName"]=empty(config::get("svcName"))?(empty(config::get("TITLE"))?config::get("sitePrefix"):config::get("TITLE")):config::get("svcName"); }
|
|
if (!array_key_exists("sitePrefix",$values)) { $values["sitePrefix"]=config::get("sitePrefix"); }
|
|
return common::replaceMessageFromArray($text, $values);
|
|
}
|
|
|
|
public static function get($key, $lang=null) {
|
|
$ref=explode(".",$key);
|
|
if (empty($lang)) { $lang = config::get("DEFAULT_LANGUAGE"); }
|
|
if (empty($lang)) { $lang = "ru"; }
|
|
|
|
$mod=moduleInfo::getByInstance($ref[0]);
|
|
if (array_search($lang, $mod->languages) === false ) {
|
|
$lang = $mod->languages[0];
|
|
}
|
|
|
|
|
|
$langClass=$mod->namespace."\\lang\\".$lang;
|
|
if (!class_exists($langClass)) {
|
|
$langClass=$mod->namespace."\\lang_".$lang;
|
|
}
|
|
|
|
if (!class_exists($langClass)) {
|
|
throw new foxException("Class ".$langClass." not found!");
|
|
}
|
|
try {
|
|
return constant($langClass."::".$ref[1]);
|
|
} catch (\Exception $e) {
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
?>
|