jdolieslager / fetranslator
ZF2 模块,用于翻译路由匹配和消息
v0.1.10
2013-11-21 12:34 UTC
Requires
- php: >= 5.3.3
- zendframework/zendframework: 2.*
README
ZF2 模块,用于翻译路由匹配和消息
安装
./composer.phar require jdolieslager/fetranslator- 将
FeTranslator添加到您的application.config.php
默认设置
您可以通过将 data/fe_translator.local.php.dist 添加到 config/autoload 文件夹来覆盖默认语言
添加翻译
要添加翻译,您可以将以下部分添加到您的配置中。翻译器将在给定目录中搜索 .php 文件。(示例:nl_NL.php 或 en_US.php)
<?php return array( 'fe_translator' => array( 'translations' => array( // Config below will be used to translate messages for given namespace array( 'base_dir' => __DIR__ . '/../translations/module/', 'namespace' => 'application', // Application indicates the namespace ), // Config below will be used to translate route matches array( 'base_dir' => __DIR__ . '/../translations/route_match/', 'namespace' => FeTranslator\Translator\Translator::NAMESPACE_ROUTE_MATCH, ) ), ), );
常规翻译文件示例
<?php return array( 'head' => array( 'title' => 'My application title', ), 'level1' => array( 'level2' => 'My value', ), );
路由匹配翻译文件示例
<?php return array( 'home/application' => array( 'controller' => array( 'Application\Controller\Gebruiker' => 'Application\Controller\User', ), '__CONTROLLER__' => array( 'gebruiker' => 'user', ), 'action' => array( 'inloggen' => 'login', 'uitloggen' => 'logout', ), ), );
在控制器和服务中使用翻译
您可以为快速访问翻译器服务添加一个 trait。要求是:php >= 5.4 并且该类应该有一个 getServiceLocator() 方法
<?php class Controller extends AbstractActionController { use \FeTranslator\ServiceManager\ServiceTrait; public function indexAction() { $translator = $this->getFeTranslateService(); // Translate a message defined in nl_NL.php as array('level1' => array('level2' => 'value')); // The translations are loaded in the application namespace $translation = $translator->translate('level1.level2', 'application') //Get an translated URL // Routematch is: application/home with a controller User and with the action Login $translatedUrl = $translator->translateUrl( 'application/home', array('controller' => 'user', 'action' => 'login') ); } }
在模板中使用翻译
<?php $url = $this->feTranslateUrl('application/home', array('controller' => 'User', 'action' => 'login')); ?> <html> <head> <title><?= $this->feTranslate('head.title', 'application'); ?></title> </head> <body> <a href="<?= $url; ?>"><?= $this->feTranslate('my_link'); ?></a> </body> </html>