使用另一种语言的Respect / Validation

问题描述 投票:4回答:2

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

对于语言翻译,文档中有一个section但我没有真正得到它,我还没有找到任何答案。

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

任何人都能解释一下这是如何工作的吗?

php validation translation respect-validation
2个回答
3
投票

Respect/Validation不会为你做翻译,你应该使用不同的项目,库或功能来做到这一点。据文件所述,它不会让你空手而归。

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

快速介绍您的问题:

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

如果您翻译了所有异常消息,we会喜欢将其提供给其他人。

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


0
投票

我刚刚更改了所有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();
© www.soinside.com 2019 - 2024. All rights reserved.