wp_back/wp-content/plugins/smart-slider-3/Nextend/Framework/Localization/Localization.php
2024-05-20 15:37:46 +03:00

95 lines
2.5 KiB
PHP

<?php
namespace Nextend\Framework\Localization;
use Nextend\Framework\Filesystem\Filesystem;
use Nextend\Framework\Localization\Joomla\JoomlaLocalization;
use Nextend\Framework\Localization\WordPress\WordPressLocalization;
use Nextend\Framework\Pattern\SingletonTrait;
use Nextend\Framework\Platform\Platform;
use Nextend\Framework\Settings;
class Localization {
use SingletonTrait;
/**
* @var AbstractLocalization
*/
private static $platformLocalization;
private static $l10n = array();
private static $js = array();
protected function init() {
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Functions.php';
self::$platformLocalization = new WordPressLocalization();
}
public static function getLocale() {
return self::$platformLocalization->getLocale();
}
private static function checkMoFile($path, $locale) {
if (Filesystem::fileexists($path . '/' . $locale . '.mo')) return $locale . '.mo';
if (strpos($locale, '_')) {
$nextLangStep = implode('_', explode('_', $locale, -1));
return self::checkMoFile($path, $nextLangStep);
}
return false;
}
private static function loadTextDomain($domain, $mofile) {
$mo = self::$platformLocalization->createMo();
if (!$mo->import_from_file($mofile)) return false;
if (isset(self::$l10n[$domain])) $mo->merge_with(self::$l10n[$domain]);
self::$l10n[$domain] = &$mo;
return true;
}
public static function loadPluginTextDomain($path, $domain = 'nextend') {
if (Platform::isAdmin() && Settings::get('force-english-backend')) {
$locale = 'en_EN';
} else {
$locale = self::getLocale();
}
$mofile = self::checkMoFile($path, $locale);
if ($mofile && $loaded = self::loadTextDomain($domain, $path . '/' . $mofile)) {
return $loaded;
}
return false;
}
public static function getTranslationsForDomain($domain) {
if (!isset(self::$l10n[$domain])) {
self::$l10n[$domain] = self::$platformLocalization->createNOOP_Translations();
}
return self::$l10n[$domain];
}
public static function addJS($texts) {
foreach ((array)$texts as $text) {
self::$js[$text] = n2_($text);
}
}
public static function toJS() {
if (count(self::$js)) {
return '_N2._localization = ' . json_encode(self::$js) . ';';
}
return '';
}
}