0

我有一个使用 ZF2 编写的小型学习应用程序(基于 ZF2 用户指南:http ://framework.zend.com/manual/2.2/en/user-guide/skeleton-application.html ),现在我想添加国际化到我的应用程序,它几乎完成了,但我被困在翻译表格上。当我想$this->translate在表单类中使用时,我收到错误说方法 translate 不存在。有没有关于 ZF2 国际化的好例子或教程?

4

1 回答 1

2

我将在这里引用我提供的答案。我不会过多地编辑文本,所以不要在意一些句子,但本质很重要,会对你有很大帮助。

让表单翻译工作的第一件事是将文件添加到translator

在您的配置中添加新的翻译器时,不要使用默认的翻译器文本域。语法如下:

$translator->addTranslationFile(
    $type,
    $resource,
    $textDomain, //<-- this is the important one
    $lang
);

在您的示例中,您已将文件添加到默认文本域。可悲的是,这带来了很多麻烦,因为它不会总是按预期工作。每当您添加翻译文件时,请将它们添加到您自己的文本域中!

之后,您需要做的就是分配Zend\Form\View\Helper您的文本域。这是通过以下方式完成的:

// For Labels
$this->formLabel()->setTranslatorTextDomain('your-textdomain');

// For Buttons (input type submit)
$this->formButton()->setTranslatorTextDomain('your-textdomain');

// For Error-Messages
$this->formElementErrors()->setTranslatorTextDomain('your-textdomain');

关于翻译器本身

另一件需要注意的是:只要有一个 Translator-Service 附加到您的配置中,名称为translator,它将自动附加到表单作为默认翻译器。这是我经常在我的模块中使用的示例配置:

'translator' => array(
    'locale' => 'de_DE',
    'translation_file_patterns' => array(
        array(
            'type'     => 'phparray',
            'base_dir' => __DIR__ . '/lang',
            'pattern'  => '%s.php',
            'text_domain' => __NAMESPACE__,
        ),
    ),
),
于 2013-05-28T14:52:05.003 回答