【问题标题】:Using Respect/Validation in another language以另一种语言使用尊重/验证
【发布时间】:2016-08-12 19:53:45
【问题描述】:

我想在 PHP 中使用 Respect/Validation 库。我知道如何使用它,但目前我在一个德语项目中使用它,当然,我也想要德语的错误消息。

对于语言翻译,文档中有section,但我不太明白,也没有找到任何答案。

他们在谈论应该处理消息翻译的翻译。作为第二个参数,他们给出了“gettext”,但我不知道这应该是什么以及它应该如何处理翻译。

谁能解释一下这是如何工作的?

【问题讨论】:

标签: php validation translation respect-validation


【解决方案1】:

Respect/Validation 不会为你做翻译,你应该使用不同的项目、库或函数来做。正如文档所述,它不会让您空手而归。

首先,您应该尝试了解translation libraries work (such as gettext()) 的原理,然后阅读PHP documentation on Callables。然后是选择库、创建翻译并在异常实例上调用setParam('translator', 'callable') 方法的问题。

快速介绍您的问题:

  • 翻译是基于 source 完成的:它可以是 filedatabase 或其他内容,具体取决于您使用的库。
  • Respect/Validation 异常消息使用相同的模式:{{name}} is invalid.。如果在该规则上调用了 setName(),则 {{name}} 将替换为给定的 inputname
  • 您可以在Respect\Validation\Exceptions 命名空间下查看所有需要翻译的消息。
  • 通常,每个库都提供一个函数/方法来翻译给定的字符串。这是您要在 $exception->setParam() 调用中设置的方法/函数。

如果您曾经翻译所有异常消息,we 很乐意将它们提供给其他所有人。

PS:您也可以提出这个问题on the repository page,更多人会提供帮助,我们也可以在未来改进图书馆处理翻译的方式。

【讨论】:

    【解决方案2】:

    我刚刚更改了所有 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2014-11-04
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多