使用其他语言的尊重/验证

时间:2016-04-20 08:57:41

标签: php validation translation respect-validation

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

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

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

有人可以解释一下这是如何运作的吗?

2 个答案:

答案 0 :(得分: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替换,namesetName()替换为该Respect\Validation\Exceptions。{/ li>
  • 您可以在$exception->setParam()命名空间下查看需要翻译的所有邮件。
  • 通常,每个库都提供单个函数/方法来翻译给定的字符串。这是您要在task stagingRun(type: JavaExec) { classpath = sourceSets.main.runtimeClasspath main = 'project.JavaApp' systemProperty "java.library.path", "libs/NORDIC/NativeLibraries/NatLinux64" systemProperty 'SILVERBACK_URL', 'https://myback.com/api/' systemProperty 'DATABASE_PATH', 'jdbc:h2:file:./data/backUp;AUTO_RECONNECT=TRUE' systemProperty 'BACKUP_PATH', "main/data/backup.json" } task deployRun(type: JavaExec) { classpath = sourceSets.main.runtimeClasspath main = 'project.JavaApp' systemProperty "java.library.path", "libs/NORDIC/NativeLibraries/NatWin64" systemProperty 'SILVERBACK_URL', 'https://myback.production.com/api/' systemProperty 'DATABASE_PATH', 'jdbc:h2:file:/data/backUp;AUTO_RECONNECT=TRUE' systemProperty 'BACKUP_PATH', "/data/backup.json" } 电话上设置的方法/功能。

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

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

答案 1 :(得分: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();