Рейтинг:2

Может ли Drush отображать переведенные сообщения для пользователей?

флаг in

Я работаю над модулем, который расширил DrushCommands для создания пользовательских команд Drush. Сопровождающий хочет, чтобы эти пользовательские команды отображали переводимые пользовательские сообщения (предупреждения, ошибки) при использовании.

(Как) это может быть достигнуто?

Рейтинг:0
флаг in

После некоторых исследований я смог добиться этого, используя метод регистратора Drush вместе с методом t().

$this->logger()->error($this->t('сообщение с @arg', ['@arg' => $arg]));

Также определил константу ERRORCODE = 0 и вернул self::ERRORCODE; чтобы регистратор не отправлял полную трассировку стека на экран и гарантировал, что при возникновении ошибки возвращается правильный код ошибки.

Я благодарю вас всех за вашу помощь, и я надеюсь, что это может быть полезно для кого-то в будущем: D

leymannx avatar
флаг ne
И все, что вы хотели, это просто отображать эти строки в командной строке на языке сайта по умолчанию?
Bruno Branco Bicudo avatar
флаг in
Да, это было очень просто, но как новичок я действительно боролся с этим y.y Теперь у меня есть строки, доступные для перевода на сайте, и они также отображаются в командной строке, как того хотел сопровождающий. Большое спасибо за вашу помощь. Я нашел логгер, когда искал dt()
Рейтинг:-1
флаг ne

в мимо существовала система, которая дт() будет просто печатать переведенные строки, которые были переведены в Drupal, если вы установили язык по умолчанию в файле drushrc.php.

Modern Drush теперь делает то же самое, просто следуя языку вашего сайта по умолчанию. Но больше нет способа переопределить это из drush.yml. Хотя это не должно быть слишком сложно реализовать.

Цитируя основного сопровождающего Drush Моше Вайцмана, я спросил об этом на drupal.slack.com в канале #drush:

Не планируется добавлять перевод в drush output. У приложений Symfony Console есть стандарт, но вы должны отделить свои строки от своего кода, и это плохой DX IMO.

Я полагаю, что единственная возможная дорога сейчас — это создать проблему повторно реализовать возможность переопределения язык_по умолчанию из drush.yml и предоставьте это в красивом мерж-реквесте.


Тем не менее вам нужно найти способ каким-то образом передать основные строки Drush в базу данных. Может быть, из хорошего нового модуля contrib, который анализирует все дт() strings и добавляет их в базу данных, чтобы вы могли найти их позже на странице перевода интерфейса.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.