Domyślnie po włączeniu komponentu zend-i18n, tłumaczenie jest dostępne w plikach widoku i formularzach. Zakładamy, że czytelnik skonfigurował prawidłowo komponent, wspierając się dokumentacją lub książką Zend Framework 3. Poradnik programisty, dlatego pominiemy konfigurację.
W pliku module.config.php dodajemy kod przedstawiony na Listingu 1. Następnie tworzymy w klasie IndexController własny kontroler i atrybut $translator (Listing 2). Przykłady zastosowania tłumaczenia zaprezentowaliśmy w metodzie indexAction(), gdzie tłumaczenie przekazujemy do wtyczki flashMessenger, odpowiedzialnej za wyświetlanie komunikatów na stronie internetowej.
Listing 1. Fragment pliku module.config.php
...
'controllers' => [
'factories' => [
Controller\IndexController::class => function($sm) {
$translator = $sm->get(\Zend\I18n\Translator\Translator::class);
return new Controller\IndexController($translator);
}
],
],
...
'service_manager' => [
'factories' => [
\Zend\I18n\Translator\Translator::class => \Zend\I18n\Translator\TranslatorServiceFactory::class,
],
],
...
Listing 2. Fragment pliku IndexController.php
...
use Zend\I18n\Translator\Translator;
...
class IndexController extends AbstractActionController {...
/**
* @var \Zend\I18n\Translator\Translator
*/
private $translator;
public function __construct(Translator $translator) {
$this->translator = $translator;
}
public function indexAction() {
// Do tłumaczenia przekazujemy zmienną
$this->flashMessenger()->addSuccessMessage(sprintf($this->translator->translate('flashMessenger_success'), $value));
// Do tłumaczenia nie przekazujemy żadnych informacji
$this->flashMessenger()->addErrorMessage($this->translator->translate('flashMessenger_error'));
}
...
}
Wybrane książki:
- Adam Omelak: Zend Framework 3. Poradnik programisty, Wydawnictwo Helion, 2017.
Wybrane strony: