Привет. Занимаюсь интернализацией проекта на Yii2. Появилась необходимость переводить даты и время. Для интернализации использую
Yii2 Locale URLs, а для работы с датами
Carbon.
Раньше, когда язык был только русский, делал таким образом (
web/index.php):
<?php
use Carbon\Carbon;
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
$config = require __DIR__ . '/../config/web.php';
Carbon::setLocale('ru');
(new yii\web\Application($config))->run();
Решение еще тогда казалось мне достаточно костыльным. А сейчас оно и вовсе не будет работать, т.к. я хочу передать в функцию
setLocale значение
Yii::$app->language, а оно еще не будет сформировано.
Попробовал создать компонент, который будет устанавливать язык перевода. Для этого в конфиге прописал следующее:
'as afterRequest' => [
'class' => 'app\components\CarbonLang',
],
А в компоненте CarbonLang:
class CarbonLang extends \yii\base\Behavior
{
public function events()
{
return [
Application::EVENT_AFTER_REQUEST => 'setCarbonLocale'
];
}
public function setCarbonLocale($event)
{
Carbon::setLocale(Yii::$app->language);
}
}
В
Yii::$app->language хранится верное значение языка (ru). При переключении языка оно также меняется. Но переводы не работают, отображаются всегда на английском.
Пожалуйста подскажите в каком направлении двигаться, чтобы решить данную задачу. Спасибо!