/**
  * index
  *
  * @param IlluminateConfig    $config       laravel config
  * @param MenuRetrieveHandler $menuHandler  menu handler
  * @param MenuCacheHandler    $cacheHandler menu cache handler
  * @param SiteHandler         $siteHandler  site handler
  *
  * @return RendererInterface
  */
 public function index(IlluminateConfig $config, MenuRetrieveHandler $menuHandler, MenuCacheHandler $cacheHandler, SiteHandler $siteHandler)
 {
     $siteKey = $siteHandler->getCurrentSiteKey();
     $menus = $menuHandler->getAllMenu($siteKey);
     $homeMenuId = $siteHandler->getHomeInstanceId();
     $menuMaxDepth = $config->get('xe.menu.maxDepth');
     $transKey = [];
     foreach ($menus as $menu) {
         $transKey = array_merge($transKey, $cacheHandler->getMenuItemKeys($menu));
     }
     // 메뉴 어드민 트리 뷰에서 필요한 고유 다국어
     FrontEnd::translation(['xe::addItem', 'xe::goLink', 'xe::setHome']);
     // 메뉴 타이틀 user 다국어
     Frontend::translation($transKey);
     return Presenter::make('menu.index', ['siteKey' => $siteKey, 'menus' => $menus, 'home' => $homeMenuId, 'maxDepth' => $menuMaxDepth]);
 }
{{ App::setLocale('ko') }}
{{ XeLang::trans('lang::message', ['name' => '준호']) }}<br/>
{{ XeLang::transChoice('lang::bananas', 1) }}<br/>
{{ XeLang::transChoice('lang::bananas', 2) }} => 복수지만 locale이 ko라서 첫번째 문장이 선택됨<br/>
{{ XeLang::transChoice('lang::apples', 0) }} => 0<br/>
{{ XeLang::transChoice('lang::apples', 1) }} => 1<br/>
{{ XeLang::transChoice('lang::apples', 19) }} => 19<br/>
{{ XeLang::transChoice('lang::apples', 20) }} => 20<br/>
{{ App::setLocale('en') }}
<br/>

<h4>프론트엔드 다국어</h4>
<span>
<?php 
FrontEnd::translation('lang::message');
Frontend::translation('lang::bananas');
Frontend::translation('lang::next');
Frontend::translation(['lang::week.mon', 'lang::week.tue']);
Frontend::translation('lang::nothing');
?>
    <script>
        document.write(XE.Lang.trans('lang::message', {'name': '준호'}) + "<br/>");
        document.write(XE.Lang.transChoice('lang::bananas', 1) + "<br/>");
        document.write(XE.Lang.transChoice('lang::bananas', 2) + "<br/>");
        document.write(XE.Lang.trans('lang::next') + "<br/>");
        document.write(XE.Lang.trans('lang::previous') + " => 존재하는 key이지만 load를 안한경우<br/>");
        document.write(XE.Lang.trans('lang::week.mon') + "<br/>");
        document.write(XE.Lang.trans('lang::week.tue') + "<br/>");
        document.write(XE.Lang.trans('lang::nothing') + " => 존재하지 않는 key는 head의 다국어 script에 set 되지도 않게 함<br/>");
    </script>