/**
  * Display form to modify site language settings.
  * @param $args array
  * @param $request object
  */
 function languages($args, &$request)
 {
     $this->validate();
     $this->setupTemplate(true);
     $site =& $request->getSite();
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign('localeNames', Locale::getAllLocales());
     $templateMgr->assign('primaryLocale', $site->getPrimaryLocale());
     $templateMgr->assign('supportedLocales', $site->getSupportedLocales());
     $localesComplete = array();
     foreach (Locale::getAllLocales() as $key => $name) {
         $localesComplete[$key] = Locale::isLocaleComplete($key);
     }
     $templateMgr->assign('localesComplete', $localesComplete);
     $templateMgr->assign('installedLocales', $site->getInstalledLocales());
     $templateMgr->assign('uninstalledLocales', array_diff(array_keys(Locale::getAllLocales()), $site->getInstalledLocales()));
     $templateMgr->assign('helpTopicId', 'site.siteManagement');
     import('classes.i18n.LanguageAction');
     $languageAction = new LanguageAction();
     if ($languageAction->isDownloadAvailable()) {
         $templateMgr->assign('downloadAvailable', true);
         $templateMgr->assign('downloadableLocales', $languageAction->getDownloadableLocales());
     }
     $templateMgr->display('admin/languages.tpl');
 }
 /**
  * @copydoc Form::fetch()
  */
 function fetch($request)
 {
     $site = $request->getSite();
     $allLocales = AppLocale::getAllLocales();
     $installedLocales = $this->getData('installedLocales');
     $notInstalledLocales = array_diff(array_keys($allLocales), $installedLocales);
     $templateMgr = TemplateManager::getManager($request);
     $templateMgr->assign('allLocales', $allLocales);
     $templateMgr->assign('notInstalledLocales', $notInstalledLocales);
     import('classes.i18n.LanguageAction');
     $languageAction = new LanguageAction();
     if ($languageAction->isDownloadAvailable()) {
         $downloadableLocales = $languageAction->getDownloadableLocales();
         $downloadableLocaleLinks = array();
         import('lib.pkp.classes.linkAction.request.AjaxAction');
         $router = $request->getRouter();
         foreach ($downloadableLocales as $locale => $name) {
             $downloadableLocaleLinks[$locale] = new LinkAction($locale, new AjaxAction($router->url($request, null, null, 'downloadLocale', array('locale' => $locale))), $name . ' (' . $locale . ')');
         }
         $templateMgr->assign('downloadAvailable', true);
         $templateMgr->assign('downloadableLocaleLinks', $downloadableLocaleLinks);
     }
     return parent::fetch($request);
 }