How can I find out which Language was used by Tran

2019-09-08 17:47发布

In my ZF2 application I want to retrieve the language that was used to translate the page. I use the ZendSkeletonApplication as basis. In the Module.php I set the Locale like this:

public function onBootstrap($e){
  $translator = $e->getApplication()->getServiceManager()->get('translator');
  $translator->setLocale(
      Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE'])
    )
    ->setFallbackLocale('en_US');
}

I can retrieve the locale and the fallbackLocale from the Zend\I18n\Translator\Translator, but then I still don't know which one was used for the translation. Since there is also no way (as far as I didn't found one) to find out which languages where actually loaded into the translator. I can't even test myself if a translation exists for the locale.

Maybe I'm missing something here. I hope someone can point that out.

2条回答
乱世女痞
2楼-- · 2019-09-08 18:10

I decided to take the most simple approach. I translate the text of the language too.

查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-09-08 18:20

One option may be retrieving cache object and checking for the existence of the primary locale by recreating the cache key. Looking at the loadMessages() method it seems the cache result would contain the list of available messages.

Otherwise it seems the translate functions simply try the first locale then the fallback.

查看更多
登录 后发表回答