From 96a263f7129fbcf01ef644c531cdcc0a0be59085 Mon Sep 17 00:00:00 2001 From: Philip Häusler Date: Mon, 25 Nov 2013 19:12:19 +0100 Subject: initial gettext integration --- includes/helper/internationalization_helper.php | 43 +++++++++++++++++++ includes/pages/guest_login.php | 2 +- includes/sys_menu.php | 54 ++++++++++-------------- locale/de_DE.UTF-8/LC_MESSAGES/default.mo | Bin 0 -> 648 bytes locale/de_DE.UTF-8/LC_MESSAGES/default.po | 25 +++++++++++ public/css/style2.css | 1 + public/index.php | 15 ++++--- public/pic/flag/de.png | Bin 545 -> 0 bytes public/pic/flag/de_DE.UTF-8.png | Bin 0 -> 545 bytes public/pic/flag/en.png | Bin 599 -> 0 bytes public/pic/flag/en_US.UTF-8.png | Bin 0 -> 599 bytes 11 files changed, 101 insertions(+), 39 deletions(-) create mode 100644 includes/helper/internationalization_helper.php create mode 100644 locale/de_DE.UTF-8/LC_MESSAGES/default.mo create mode 100644 locale/de_DE.UTF-8/LC_MESSAGES/default.po delete mode 100644 public/pic/flag/de.png create mode 100644 public/pic/flag/de_DE.UTF-8.png delete mode 100644 public/pic/flag/en.png create mode 100644 public/pic/flag/en_US.UTF-8.png diff --git a/includes/helper/internationalization_helper.php b/includes/helper/internationalization_helper.php new file mode 100644 index 00000000..ae88eb21 --- /dev/null +++ b/includes/helper/internationalization_helper.php @@ -0,0 +1,43 @@ + "Deutsch", + 'en_US.UTF-8' => "English" +); + +$default_locale = 'en_US.UTF-8'; + +/** + * Initializes gettext for internationalization and updates the sessions locale to use for translation. + */ +function gettext_init() { + global $locales, $default_locale; + + if (isset($_REQUEST['set_locale']) && in_array($_REQUEST['set_locale'], array_keys($locales))) + $_SESSION['locale'] = $_REQUEST['set_locale']; + elseif (! isset($_SESSION['locale'])) + $_SESSION['locale'] = $default_locale; + + putenv('LC_ALL=' . $_SESSION['locale']); + setlocale(LC_ALL, $_SESSION['locale']); + bindtextdomain('default', '../locale'); + bind_textdomain_codeset('default', 'UTF-8'); + textdomain('default'); +} + +/** + * Renders language selection. + * + * @return string + */ +function make_langselect() { + global $locales; + $URL = $_SERVER["REQUEST_URI"] . (strpos($_SERVER["REQUEST_URI"], "?") > 0 ? '&' : '?') . "set_locale="; + + $html = '

'; + foreach ($locales as $locale => $name) + $html .= '' . $name . ''; + $html .= '

'; + return ''; +} + +?> \ No newline at end of file diff --git a/includes/pages/guest_login.php b/includes/pages/guest_login.php index bdd98d33..8c77cce0 100644 --- a/includes/pages/guest_login.php +++ b/includes/pages/guest_login.php @@ -9,7 +9,7 @@ function guest_register() { $nick = ""; $lastname = ""; $prename = ""; - $age = 23; + $age = ""; $tel = ""; $dect = ""; $mobile = ""; diff --git a/includes/sys_menu.php b/includes/sys_menu.php index f2611397..805888e2 100644 --- a/includes/sys_menu.php +++ b/includes/sys_menu.php @@ -13,24 +13,24 @@ function page_link_to_absolute($page) { */ function header_toolbar() { global $p, $privileges, $user; - + $toolbar_items = array(); - - if(in_array('register', $privileges)) + + if (in_array('register', $privileges)) $toolbar_items[] = toolbar_item_link(page_link_to('register'), 'register', "Register", $p == 'register'); - - if(in_array('user_myshifts', $privileges)) + + if (in_array('user_myshifts', $privileges)) $toolbar_items[] = toolbar_item_link(page_link_to('user_myshifts'), 'engel', $user['Nick'], $p == 'user_myshifts'); - - if(in_array('user_settings', $privileges)) + + if (in_array('user_settings', $privileges)) $toolbar_items[] = toolbar_item_link(page_link_to('user_settings'), 'settings', "Settings", $p == 'user_settings'); - - if(in_array('login', $privileges)) + + if (in_array('login', $privileges)) $toolbar_items[] = toolbar_item_link(page_link_to('login'), 'login', "Login", $p == 'login'); - - if(in_array('logout', $privileges)) + + if (in_array('logout', $privileges)) $toolbar_items[] = toolbar_item_link(page_link_to('logout'), 'logout', "Logout", $p == 'logout'); - + return toolbar($toolbar_items); } @@ -38,11 +38,11 @@ function make_navigation() { global $p; global $privileges; $menu = ""; - + $specials = array( - "faq" + "faq" ); - + $pages = array( "news", "user_meetings", @@ -65,28 +65,28 @@ function make_navigation() { "admin_faq", "admin_language", "admin_import", - "admin_log" + "admin_log" ); - + foreach ($pages as $page) if (in_array($page, $privileges) || in_array($page, $specials)) $menu .= '' . Get_Text($page) . ''; - + return ''; } function make_navigation_for($name, $pages) { global $privileges, $p; - + $specials = array( - "faq" + "faq" ); - + $menu = ""; foreach ($pages as $page) if (in_array($page, $privileges) || in_array($page, $specials)) $menu .= '' . Get_Text($page) . ''; - + if ($menu != "") $menu = ''; return $menu; @@ -96,14 +96,4 @@ function make_menu() { return make_navigation() . make_langselect(); } -function make_langselect() { - if (strpos($_SERVER["REQUEST_URI"], "?") > 0) - $URL = $_SERVER["REQUEST_URI"] . "&SetLanguage="; - else - $URL = $_SERVER["REQUEST_URI"] . "?SetLanguage="; - - $html = '

DE'; - $html .= 'EN

'; - return ''; -} ?> diff --git a/locale/de_DE.UTF-8/LC_MESSAGES/default.mo b/locale/de_DE.UTF-8/LC_MESSAGES/default.mo new file mode 100644 index 00000000..741be3fb Binary files /dev/null and b/locale/de_DE.UTF-8/LC_MESSAGES/default.mo differ diff --git a/locale/de_DE.UTF-8/LC_MESSAGES/default.po b/locale/de_DE.UTF-8/LC_MESSAGES/default.po new file mode 100644 index 00000000..aae53868 --- /dev/null +++ b/locale/de_DE.UTF-8/LC_MESSAGES/default.po @@ -0,0 +1,25 @@ +msgid "" +msgstr "" +"Project-Id-Version: Engelsystem 2.0\n" +"POT-Creation-Date: 2013-11-25 19:11+0100\n" +"PO-Revision-Date: 2013-11-25 19:11+0100\n" +"Last-Translator: msquare \n" +"Language-Team: \n" +"Language: de_DE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.7\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" +"X-Poedit-Basepath: .\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: /Users/msquare/workspace/projects/engelsystem\n" +"X-Poedit-SearchPath-1: .\n" + +#: /Users/msquare/workspace/projects/engelsystem/includes/helper/internationalization_helper.php:40 +msgid "Language" +msgstr "Sprache" + +#~ msgid "asdf" +#~ msgstr "fdsa" diff --git a/public/css/style2.css b/public/css/style2.css index 30d6d748..d7cec284 100644 --- a/public/css/style2.css +++ b/public/css/style2.css @@ -33,6 +33,7 @@ a { } .error,.success,.info { + color: #fff; background-color: #333; } diff --git a/public/index.php b/public/index.php index fb4c3c7f..ddb727f8 100644 --- a/public/index.php +++ b/public/index.php @@ -18,6 +18,7 @@ require_once ('includes/view/Shifts_view.php'); require_once ('includes/view/Sprache_view.php'); require_once ('includes/view/User_view.php'); +require_once ('includes/helper/internationalization_helper.php'); require_once ('includes/helper/message_helper.php'); require_once ('includes/helper/error_helper.php'); @@ -30,6 +31,8 @@ require_once ('includes/pages/user_messages.php'); session_start(); +gettext_init(); + sql_connect($config['host'], $config['user'], $config['pw'], $config['db']); load_auth(); @@ -37,7 +40,7 @@ load_auth(); // JSON Authorisierung gewünscht? if (isset($_REQUEST['auth'])) json_auth_service(); - + // Gewünschte Seite/Funktion $p = isset($user) ? "news" : "login"; if (isset($_REQUEST['p']) && preg_match("/^[a-z0-9_]*$/i", $_REQUEST['p']) && ($_REQUEST['p'] == 'stats' || (sql_num_query("SELECT * FROM `Privileges` WHERE `name`='" . sql_escape($_REQUEST['p']) . "' LIMIT 1") > 0))) @@ -163,26 +166,26 @@ elseif (in_array($p, $privileges)) { // Hinweis für ungelesene Nachrichten if (isset($user) && $p != "user_messages") $content = user_unread_messages() . $content; - + // Hinweis für Engel, die noch nicht angekommen sind if (isset($user) && $user['Gekommen'] == 0) $content = error("You are not marked as arrived. Please go to heaven's desk, get your angel badge and/or tell them that you arrived already.", true) . $content; - + // Erzengel Hinweis für unbeantwortete Fragen if (isset($user) && $p != "admin_questions") $content = admin_new_questions() . $content; - + // Erzengel Hinweis für freizuschaltende Engeltypen if (isset($user) && $p != "admin_user_angeltypes") $content = admin_new_user_angeltypes() . $content; -echo template_render('../templates/layout.html', array ( +echo template_render('../templates/layout.html', array( 'theme' => isset($user) ? $user['color'] : $default_theme, 'title' => $title, 'atom_link' => ($p == 'news' || $p == 'user_meetings') ? '' : '', 'menu' => make_menu(), 'content' => $content, - 'header_toolbar' => header_toolbar() + 'header_toolbar' => header_toolbar() )); counter(); diff --git a/public/pic/flag/de.png b/public/pic/flag/de.png deleted file mode 100644 index ac4a9773..00000000 Binary files a/public/pic/flag/de.png and /dev/null differ diff --git a/public/pic/flag/de_DE.UTF-8.png b/public/pic/flag/de_DE.UTF-8.png new file mode 100644 index 00000000..ac4a9773 Binary files /dev/null and b/public/pic/flag/de_DE.UTF-8.png differ diff --git a/public/pic/flag/en.png b/public/pic/flag/en.png deleted file mode 100644 index ff701e19..00000000 Binary files a/public/pic/flag/en.png and /dev/null differ diff --git a/public/pic/flag/en_US.UTF-8.png b/public/pic/flag/en_US.UTF-8.png new file mode 100644 index 00000000..ff701e19 Binary files /dev/null and b/public/pic/flag/en_US.UTF-8.png differ -- cgit v1.2.3-54-g00ecf