Как включить i18n в yii2 с помощью advanced template?


в сети я наткнулся на этот учебник https://stackoverflow.com/questions/32831288/yii2-translation-does-not-work, я следовал за ним, но во время запуска извлечения сообщений на шаге 5 я получаю эту ошибку в консоли introducir la descripción de la imagen aquí

это файл config для консоли introducir la descripción de la imagen aquí

и если это функциональный проект, в котором установлено несколько расширений, это настройка yii для выполнения из партии

introducir la descripción de la imagen aquí

Author: Comunidad, 2015-12-08

2 answers

Чтобы включить перевод и сделать его доступным для бэкэнда, а также для внешнего интерфейса, вы должны создать папку внутри папки common с именем messages, она должна выглядеть так:

common
   |
   +---> messages

Внутри папки messages вы создаете папку, которая будет содержать перевод, который вы хотите, в случае перевода на английский язык эта папка может называться 'in', до сих пор структура папок

common
   |
   +---> messages
            |
            +---->es

Уже имея эту структуру, вы должны создать файл с именем конвенция "app.php", этот файл будет содержать заданную траудцию языка следующим образом:

<?php
    return [
        'Hola' => 'Hello',
        'Mundo => 'World'
    ];

До сих пор у нас есть наши настройки, чтобы включить его в Yii, вы должны включить компонент i18n в файле common/config/main-local.php

'components' => [
    ....
    'i18n' => [
        'translations' => [
            'app*' => [
                'class' => 'yii\i18n\PhpMessageSource',
                # El archivo de traducciones se encuentra en:
                # folder/to/project/common/messages
                'basePath' => '@common/messages',
                # Para el componente la variable sourceLanguage 
                # siempre debe estar por defecto 'en-US'
                'sourceLanguage' => 'en-US',
                'fileMap' => [
                    'app' => 'app.php',
                    'app/error' => 'error.php',
                ],
            ],
        ],
    ],
    ....
]

При этом у нас уже включен перевод, чтобы установить, какой перевод приложение по умолчанию будет стабильным в mail-local.php

<?php 
    return [
        ....
        'language' => 'en' # El proyecto se inicializa con la traducción en inglés
        ....
        components => [
            ....
        ],
    ....
    ]

Уже для того, чтобы иметь переводимые тексты, в представления вы должны использовать только собственную функцию Yii:

<div>
    <label> <?= Yii::t('app', 'Hola') ?> </label>
    <label> <?= Yii::t('app', 'Mundo') ?> </label>
</div>

Вы можете продолжать добавлять больше поддержки для большего количества языков, создавая больше папок в common / messages с подпапками и архивами перевода, которые вы хотите поддерживать для приложения.

 3
Author: Ale, 2016-02-12 22:56:48

Компонент user в Yii2 по умолчанию имеет класс yii\web\User, который используется для получения информации о пользователе при входе в Yii2 из веб-браузера.

В консоли этот класс недоступен по умолчанию, и его необходимо зарегистрировать или использовать другой эквивалентный класс для консоли (либо разработанный вами, либо 3-й).

Рекомендую добавить:

'class' => 'yii\web\User',

К вашему компоненту user в конфигурации консоли или избегайте его использования, потому что он сказал компонент не предназначен для использования в консоли, по той причине, что в консоли нет аутентификации пользователей, как в интернете, или получения параметров через form, для этого есть классы, которые вы можете найти на Страница официальной документации, набрав в поисковой системе: Yii \ console.

Перечисленные в нем классы имеют свойства и методы, которые могут использоваться для создания компонентов, взаимодействующих с помощью консоль.

Более официальная информация (на английском языке) о:

Приветствия.

 3
Author: Chofoteddy, 2015-12-08 22:06:29