%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/components/i18n/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/components/i18n/ModuleMessageSource.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2019 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\components\i18n;
use humhub\components\Module;
use humhub\libs\I18NHelper;
use Yii;
use yii\base\InvalidConfigException;
/**
* ModuleMessageSource
*
* @since 1.4
* @package humhub\components\i18n
*/
class ModuleMessageSource extends PhpMessageSource
{
/**
* @var string the id of the module
*/
public $moduleId;
/**
* @var Module the module
*/
public $module;
/**
* @inheritDoc
* @throws InvalidConfigException
* @throws \yii\base\Exception
*/
public function init()
{
parent::init();
if ($this->module === null && !empty($this->moduleId)) {
$this->module = Yii::$app->moduleManager->getModule($this->moduleId);
}
if ($this->module === null) {
throw new InvalidConfigException("Module cannot be null!");
}
$this->basePath = $this->module->getBasePath() . '/messages';
}
/**
* @inheritDoc
*/
public function translate($category, $message, $language)
{
$category = str_replace(I18NHelper::getModuleTranslationCategory($this->module->id), '', $category);
return parent::translate($category, $message, $language);
}
/**
* @inheritDoc
*/
protected function loadMessages($category, $language)
{
$messages = parent::loadMessages($category, $language);
// Merge message overwrites specified in configuration folder
$configMessages = parent::loadMessagesFromFile($this->getConfigMessageFilePath($category, $language));
if ($configMessages !== null) {
$messages = array_merge($messages, $configMessages);
}
return $messages;
}
/**
* Returns the message file for messages overrides via configuration
*
* @param $category
* @param $language
* @return string
*/
private function getConfigMessageFilePath($category, $language)
{
return Yii::getAlias(Yii::$app->i18n->messageOverwritePath . "/$language/" . I18NHelper::getModuleTranslationCategory($this->module->id) . $category . '.php');
}
}