has('set_locale') && isset($locales[$request->input('set_locale')])) { $_SESSION['locale'] = $request->input('set_locale'); } elseif (!isset($_SESSION['locale'])) { $_SESSION['locale'] = config('default_locale'); } gettext_locale(); bindtextdomain('default', realpath(__DIR__ . '/../../locale')); bind_textdomain_codeset('default', 'UTF-8'); textdomain('default'); } /** * Swich gettext locale. * * @param string $locale */ function gettext_locale($locale = null) { if ($locale == null) { $locale = $_SESSION['locale']; } putenv('LC_ALL=' . $locale); setlocale(LC_ALL, $locale); } /** * Renders language selection. * * @return array */ function make_langselect() { $request = Request::getInstance(); $items = []; foreach (config('locales') as $locale => $name) { $url = url($request->getPathInfo(), ['set_locale' => $locale]); $items[] = toolbar_item_link( htmlspecialchars($url), '', sprintf( '%s %2$s', url('pic/flag/' . $locale . '.png'), $name ) ); } return $items; }