Использование Respect / Validation на другом языке

Я хочу использовать библиотеку Respect / Validation в PHP. Я знаю, как его использовать, но в настоящее время я использую его в проекте на немецком языке и, конечно, я также хочу сообщения об ошибках на немецком языке.

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

Они говорят о переводчике, который должен обрабатывать перевод сообщений. В качестве второго параметра они дают «gettext», но я не знаю, что это должно быть и как это должно обрабатывать перевод.

Кто-нибудь может объяснить мне, как это работает?

4

Решение

Уважение / Validation не сделаю перевод для вас, вы должны использовать другой проект, библиотеку или функцию для этого. Это не оставит вас с пустыми руками, как говорится в документации.

Во-первых, вы должны попытаться понять, как работают библиотеки перевода (такие как gettext()) а затем прочитать PHP документация по Callables. Тогда это вопрос выбора библиотеки, создания переводов и вызова setParam('translator', 'callable') метод в экземпляре исключения.

Краткое введение в вашу проблему:

  • Переводы сделаны на основе source: это может быть file, database или что-то еще, в зависимости от того, какую библиотеку вы используете.
  • Уважение / Validation Сообщения об исключениях используют один и тот же шаблон: {{name}} is invalid., куда {{name}} будет заменен input дано или name если setName() был призван по этому правилу.
  • Вы можете увидеть все сообщения, которые вам нужно перевести под Respect\Validation\Exceptions Пространство имен.
  • Обычно каждая библиотека предоставляет одну функцию / метод для перевода заданной строки. Это метод / функцию, которую вы хотите установить на $exception->setParam() вызов.

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

PS: Вы могли бы также сделать этот вопрос на странице хранилища, помогло бы больше людей, и мы могли бы также улучшить способ обработки переводов библиотекой в ​​будущем.

3

Другие решения

Я просто изменяю все свойства Exception defaultTemplates, это работа для меня

class Localization
{
public function init()
{
$this->validation();
}

public function validation()
{
$prefix = '\\Respect\\Validation\\Exceptions\\';
$localize = [
'EmailException' => 'local message',
'NotEmptyException' => 'local message'
];

foreach($localize as $class => $message) {
($prefix.$class)::$defaultTemplates[
ValidationException::MODE_DEFAULT][ValidationException::STANDARD] = $message;
}
}
}
$localization = new Localization();
$localization->init();
0

По вопросам рекламы [email protected]