Jarves\Translation\Translator::loadMessages PHP Method

loadMessages() public method

public loadMessages ( string $lang = 'en', boolean $force = false ) : array | null | string
$lang string
$force boolean
return array | null | string
    public function loadMessages($lang = 'en', $force = false)
    {
        if (!$this->isValidLanguage($lang)) {
            $lang = 'en';
        }
        if ($this->messages && isset($this->messages['__lang']) && $this->messages['__lang'] == $lang && $force == false) {
            return null;
        }
        if (!$lang) {
            return null;
        }
        $code = 'core/lang/' . $lang;
        $this->messages = $this->cacher->getFastCache($code);
        $md5 = '';
        $bundles = array();
        foreach ($this->jarves->getBundles() as $bundleName => $bundle) {
            $path = $bundle->getPath();
            if ($path) {
                $path .= "/Resources/translations/{$lang}.po";
                if (file_exists($path)) {
                    $md5 .= @filemtime($path);
                    $bundles[] = $bundleName;
                }
            }
        }
        $md5 = md5($md5);
        if (!$this->messages || count($this->messages) == 0 || !isset($this->messages['__md5']) || $this->messages['__md5'] != $md5) {
            $this->messages = array('__md5' => $md5, '__plural' => $this->getPluralForm($lang), '__lang' => $lang);
            foreach ($bundles as $key) {
                $file = $this->jarves->resolvePath("@{$key}/{$lang}.po", 'Resources/translations');
                $po = $this->getLanguage($file);
                $this->messages = array_merge($this->messages, $po['translations']);
            }
            $this->cacher->setFastCache($code, $this->messages);
        }
        include_once $this->getPluralPhpFunctionFile($lang);
        return $this->messages;
    }

Usage Example

 /**
  * @ApiDoc(
  *  section="Interface i18n",
  *  description="Prints all language messages"
  * )
  *
  * @Rest\QueryParam(name="lang", requirements="[a-z]{2,3}", strict=true, description="The language code")
  * @Rest\QueryParam(name="javascript", requirements=".+", default=false, description="If it should be printed as javascript")
  *
  * @Rest\Get("/admin/ui/language")
  *
  * @param ParamFetcher $paramFetcher
  *
  * @return array|string depends on javascript param
  */
 public function getLanguageAction(ParamFetcher $paramFetcher)
 {
     $lang = $paramFetcher->get('lang');
     $javascript = $paramFetcher->get('javascript');
     if (!$this->translator->isValidLanguage($lang)) {
         $lang = 'en';
     }
     $this->pageStack->getSession()->set('admin_language', $lang);
     $messages = $this->translator->loadMessages($lang);
     if ($javascript) {
         $response = new Response();
         $response->headers->set('Content-Type', 'text/javascript');
         $content = "if( typeof(jarves)=='undefined') window.jarves = {}; jarves.lang = " . json_encode($messages, JSON_PRETTY_PRINT);
         $content .= "\nLocale.define('en-US', 'Date', " . $this->templating->render('JarvesBundle:Default:javascript-locales.js.twig') . ");";
         $response->setContent($content);
         return $response;
     } else {
         $messages['mootools'] = $this->templating->render('JarvesBundle:Default:javascript-locales.js.twig');
         return $messages;
     }
 }