/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/helpers/LanguageHelper.php
154 строки
4 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\helpers; use common\components\LanguageSelector; use common\kdf\KLanguage; use common\kdf\SLanguageCode; use common\kdf\SLanguageDirection; use Yii; /** * Вспомогательный класс для работы с системным языком - в связке с классификатором - "Языки" * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2021 */ class LanguageHelper { const DEFAULT_LANGUAGE = KLanguage::ENGLISH; /** * Переменная отвечает за активность хелпера * @var bool */ static protected $enable = true; /** * Установить переменную активности * @param $value */ public static function setEnabled($value) { self::$enable = $value; } /** * Получить ID языка * @return int */ public static function getLanguageId() { if (!self::$enable) { return -1; } $langId = array_search( Yii::$app->language, self::getLanguageList() ); if ($langId === false) { return -1; } return (int)$langId; } /** * Получить список языков, на котором отображается сайт * * @param string $exclude * @return mixed */ public static function getLanguageList($exclude = null) { $supportedLanguages = [ KLanguage::ENGLISH => 'en', KLanguage::GERMAN => 'de' ]; $supportedLanguages[KLanguage::RUSSIAN] = 'ru'; if ($exclude) { ArrayHelper::remove($supportedLanguages, $exclude); } return $supportedLanguages; } /** * Текущий язык совпадает с основным * @return bool */ public static function isOriginal() { return static::getLanguageId() == self::DEFAULT_LANGUAGE; } /** * Текущий язык не совпадает с основным * @return bool */ public static function isForeign() { return static::getLanguageId() != self::DEFAULT_LANGUAGE; } /** * Текущий язык - русский язык * @return bool */ public static function isRus() { return static::getLanguageId() == KLanguage::RUSSIAN; } /** * Получить идентификатор языка переводческой системы * * @param $language_id * @param $system_id * @return false|int|string|null * @throws \yii\base\InvalidConfigException */ public static function getLanguageCode($language_id, $system_id) { if ($language_id) { return SLanguageCode::find() ->select('code') ->andWhere([ 'system_id' => $system_id, 'language_id' => $language_id ]) ->cache(DateHelper::HOUR) ->scalar() ?: null; } return null; } /** * Получить идентификатор языка * * @param $language_code * @param $system_id * @return false|int|string|null * @throws \yii\base\InvalidConfigException */ public static function getLanguageCodeId($language_code, $system_id) { if ($language_code) { return SLanguageCode::find() ->select('language_id') ->andWhere([ 'system_id' => $system_id, 'u_code' => Utf8Helper::strtolower($language_code) ]) ->cache(DateHelper::HOUR) ->scalar() ?: null; } return null; } }