Matthias Tylkowski
Matthias Tylkowski

Reputation: 517

How can I find out which Language was used by Translator in ZF2?

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.

Upvotes: 0

Views: 1107

Answers (2)

Matthias Tylkowski
Matthias Tylkowski

Reputation: 517

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

Upvotes: 0

DrBeza
DrBeza

Reputation: 2251

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.

Upvotes: 2

Related Questions