Tôi đang sử dụng khung công tác zend 2 và tôi muốn thay đổi ngôn ngữ ứng dụng bằng cách nhấp vào liên kết ví dụ.ZF2-Tự động thay đổi ngôn ngữ ứng dụng trên Zend Framework 2
đây là cấu hình định tuyến của tôi:
'route' => '/[:lang[/:controller[/:action[/:id]]]][[/page/:page]]',
và tôi đã định nghĩa en ngôn ngữ mặc định:
'defaults' => array(
'lang' => 'en',
),
trên module.php tôi:
public function onBootstrap ($e) {
$eventManager= $e->getApplication()->getEventManager();
$routeCallback = function ($e) {
$availableLanguages = array ('fr', 'en');
$defaultLanguage = 'en';
$language = "";
$fromRoute = false;
//see if language could be find in url
if ($e->getRouteMatch()->getParam('lang')) {
$language = $e->getRouteMatch()->getParam('lang');
$fromRoute = true;
//or use language from http accept
} else {
$headers = $e->getApplication()->getRequest()->getHeaders();
if ($headers->has('Accept-Language')) {
$headerLocale = $headers->get('Accept-Language')->getPrioritized();
$language = substr($headerLocale[0]->getLanguage(), 0,2);
}
}
if(!in_array($language, $availableLanguages)) {
$language = $defaultLanguage;
}
$e->getApplication()->getServiceManager()->get('translator')->setLocale($language);
};
$eventManager->attach(\Zend\Mvc\MvcEvent::EVENT_ROUTE, $routeCallback);
}
Bây giờ công trình này hoàn toàn, nhưng tôi muốn cho phép người dùng thay đổi ngôn ngữ chỉ bằng cách nhấp vào liên kết chẳng hạn.
Bất kỳ đề xuất nào ??
Cảm ơn bạn đã trợ giúp!
'tdutrion' trong #zftalk kênh IRC giới thiệu: https://github.com/juriansluiman/SlmLocale để định tuyến bằng vistor web từ các vị trí và ngôn ngữ khác nhau. –
dòng này tiết kiệm cho tôi, '$ e-> getApplication() -> getServiceManager() -> get ('translator') -> setLocale ($ language);' nhưng sử dụng zf3 tôi chỉ thay đổi thành '$ e-> getApplication () -> getServiceManager() -> get ('MvcTranslator') -> setLocale ($ language); 'File: Module.php. Cảm ơn. – rafaelphp