Переводы для виджетов сторонних разработчиков.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
AMARIAL
Сообщения: 9
Зарегистрирован: 2020.02.25, 20:07

Переводы для виджетов сторонних разработчиков.

Сообщение AMARIAL »

Добрый день, специалисты.
Допустим есть сторонний виджет, который ставится из композера.
Как перевести его сообщения на языки, которые не предусмотрены по умолчанию в этом виджете?

Например, есть виджет kartik-v/yii2-widget-select2, мне нужно перевести его сообщения:
'Select all' => 'Выбрать все',
'Unselect all' => 'Отменить выбор',

На язык, которого нет в списке его переводов, но есть на самом сайте.

Руководство не помогло ответить на вопрос. так что прибегаю к форуму в крайнем случае.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Переводы для виджетов сторонних разработчиков.

Сообщение unknownby »

Посмотрев 5 минут Select2 находим такой комментарий

Код: Выделить всё

    /**
     * @var array the toggle all button settings for selecting/unselecting all the options. This is applicable only for
     * multiple select. The following array key properties can be set:
     * - `selectLabel`: _string_, the markup to be shown to select all records. Defaults to:
     *   `<i class="glyphicon glyphicon-unchecked"></i> Select all`.
     * - `unselectLabel`: _string_, the markup to be shown to unselect all records. Defaults to:
     *   `<i class="glyphicon glyphicon-checked"></i> Unselect all`.
     * - `selectOptions`: _array_, the HTML attributes for the container wrapping the select label. Defaults to `[]`.
     * - `unselectOptions`: _array_, the HTML attributes for the container wrapping the unselect label. Defaults to `[]`.
     * - `options`: _array_, the HTML attributes for the toggle button container. Defaults to:
     *   `['class' => 's2-togall-button']`.
     */
Как использовать? :D

Код: Выделить всё

<?= $form->field($model, 'field_name')->widget(Select2::classname(), [
            'theme'         => Select2::THEME_KRAJEE,
            'model'         => $model,
            'data'          => $MyArray,
            'options' => [
                'multiple' => true,
            ],
            'toggleAllSettings' => [
                'selectLabel' => 'YOUR_TRANSLATE',
                'unselectLabel' => 'YOUR_TRANSLATE',
            ],
        ]) ?>
Обязательно нужно учитывать что только для 'multiple' => true
AMARIAL
Сообщения: 9
Зарегистрирован: 2020.02.25, 20:07

Re: Переводы для виджетов сторонних разработчиков.

Сообщение AMARIAL »

Интересный подход, спасибо за совет. Переводы сработали, но ошибка не пропала. Всё равно выдает:

[127.0.0.1][1000][-][error][yii\i18n\PhpMessageSource::loadFallbackMessages]
The message file for category 'kvselect' does not exist:
\vendor\kartik-v\yii2-widget-select2\src/messages/abk/kvselect.php
Fallback file does not exist as well:
\vendor\kartik-v\yii2-widget-select2\src/messages/ab/kvselect.php
in
\vendor\kartik-v\yii2-widget-select2\src\Select2.php:260
in
\vendor\kartik-v\yii2-widget-select2\src\Select2.php:239
in
\vendor\kartik-v\yii2-widget-select2\src\Select2.php:197
2020-02-26 16:53:09 [127.0.0.1][1000][-][info][application] $_GET = [
'language' => 'abk'
]

Нету универсального решения для таких проблем? Например для несущетвующих переводов чтоб система в базу обращалась или в другую папку с переводами?
AMARIAL
Сообщения: 9
Зарегистрирован: 2020.02.25, 20:07

Re: Переводы для виджетов сторонних разработчиков.

Сообщение AMARIAL »

Решил следующим путем:
В common/config/main.php
добавил:
'i18n' => [
'translations' => [
'kvselect' => [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => 'ru',
'basePath' => '@common/messages'
]

А в common/messages/abk/kvselect.php внес переводы
AMARIAL
Сообщения: 9
Зарегистрирован: 2020.02.25, 20:07

Re: Переводы для виджетов сторонних разработчиков.

Сообщение AMARIAL »

'sourceLanguage' => en' - правильнее. Так как изначально слова на англ.

Спасибо, unknownby, за оригинальный подход. В след раз буду читать комменты в классах.
YurikVD
Сообщения: 16
Зарегистрирован: 2018.08.09, 12:52

Re: Переводы для виджетов сторонних разработчиков.

Сообщение YurikVD »

Попробуй добавить строку

Код: Выделить всё

  
use kartik\select2\Select2;
...
->widget(Select2::class, [
    ...
    'options' => [...],
    'language' => Yii::$app->language, // добавить
    ...
[\code]
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Переводы для виджетов сторонних разработчиков.

Сообщение yiiliveext »

Если нужна возможность добавлять/переопределять (файловые) переводы к сторонним пакетам без копирования переводов с оригинального пакета, то пишите, могу сделать PR, будет возможность задавать дополнительные/кастомные переводы.
Ответить