From: Arun Persaud Date: Sun, 14 Mar 2010 21:11:52 +0000 (-0700) Subject: NEW FEATURE: added localization support X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83fc1a851c69e13808d14f2d5a284c3369409018;p=e-DoKo.git NEW FEATURE: added localization support using gettext to add support for localization --- diff --git a/INSTALL b/INSTALL index 0fada71..1929213 100644 --- a/INSTALL +++ b/INSTALL @@ -3,7 +3,7 @@ Installation ------------ -1) What you need - all you need is PHP and MYSQL + all you need is PHP and MYSQL. PHP has to include gettext support. 0) Get files diff --git a/TRANSLATION b/TRANSLATION new file mode 100644 index 0000000..38bbaaa --- /dev/null +++ b/TRANSLATION @@ -0,0 +1,23 @@ +Translation: + +to update the pot file run: + +xgettext -L PHP -n --package-name=edoko --msgid-bugs-address=arun@nubati.net *php */*php +mv messages.po po/messages.pot + + +To start a new translation use something like (here shown to create de.po): + +cd po +msginit -i messages.pot -o de.po + +To update a po file run: + +cd po +msgmerge de.po messages.pot + +Start editing and then after updating a po run: + +msgconv -t ISO-8859-1 de.po > de.po.new && mv de.po.new de.po +msgfmt -cv -o de.mo de.po +mv de.mo ../locale/de/LC_MESSAGES/edoko.mo \ No newline at end of file diff --git a/include/db.php b/include/db.php index 2a927f5..ad6c6f0 100644 --- a/include/db.php +++ b/include/db.php @@ -772,6 +772,7 @@ function DB_get_PREF($myid) $PREF['vacation_start'] = NULL; $PREF['vacation_stop'] = NULL; $PREF['vacation_comment'] = ''; + $PREF['language'] = 'en'; /* get all preferences */ $r = DB_query('SELECT pref_key, value FROM User_Prefs'. @@ -825,8 +826,14 @@ function DB_get_PREF($myid) if($pref[1]) $PREF['vacation_comment'] = $pref[1]; break; + + case 'language': + if($pref[1]) + $PREF['language'] = $pref[1]; + break; } } + $_SESSION['language'] = $PREF['language']; return $PREF; } diff --git a/include/output.php b/include/output.php index 135fe13..79e42c2 100644 --- a/include/output.php +++ b/include/output.php @@ -394,7 +394,9 @@ function output_header()
-

Welcome to E-Doko

+ '._('Welcome to E-Doko').' '; +?>
"en", + "Deutsch" => "de" ); + + echo " \n"; + + return; +} + + function output_password_recovery($email,$password) { ?> diff --git a/include/preferences.php b/include/preferences.php index 6648b99..3904899 100644 --- a/include/preferences.php +++ b/include/preferences.php @@ -43,6 +43,7 @@ $changed_openforgames = 0; $changed_vacation = 0; $changed_openid = 0; $changed_digest = 0; +$changed_language = 0; display_user_menu($myid); @@ -297,6 +298,25 @@ if(myisset("openid_url") && $_REQUEST['openid_url']!='') DB_AttachOpenID($openid_url, $myid); } +if(myisset("language")) + { + $language = $_REQUEST['language']; + if($language != $PREF['language']) + { + /* check if we already have an entry for the user, if so change it, if not create new one */ + $result = DB_query("SELECT * from User_Prefs". + " WHERE user_id='$myid' AND pref_key='language'" ); + if( DB_fetch_array($result)) + $result = DB_query("UPDATE User_Prefs SET value=".DB_quote_smart($language). + " WHERE user_id='$myid' AND pref_key='language'" ); + else + $result = DB_query("INSERT INTO User_Prefs VALUES(NULL,'$myid','language',". + DB_quote_smart($language).")"); + $changed_language = 1; + } + } + + /* get infos again in case they have changed */ $PREF = DB_get_PREF($myid); $timezone = DB_get_user_timezone($myid); @@ -461,7 +481,9 @@ echo " Timezone: \n"; output_select_timezone("timezone",$timezone); if($changed_timezone) echo "changed"; echo "\n"; - +echo " Language: \n"; +output_select_language("language",$PREF['language']); +echo "\n"; echo " Password(old): ", ""; switch($changed_password) diff --git a/index.php b/index.php index 54efdcb..61b0e3f 100644 --- a/index.php +++ b/index.php @@ -51,7 +51,36 @@ if($DBopen<0) exit(); } -/* done major error checking, output5B header of HTML page */ +/* localization */ +/* needs to be in front of output_header, but we don't know the users preferences at this time, + * so we go by the session variable or if language is set + */ +if(myisset('language') || isset($_SESSION['language'])) + { + $language = 'en'; + if(isset($_SESSION['language'])) + $language = $_SESSION['language']; + if(myisset('language')) + { + $language = $_REQUEST['language']; + $_SESSION['language'] = $language; /* overrule preferences */ + } + switch($language) + { + case 'de': + putenv("LC_ALL=de_DE"); + setlocale(LC_ALL, "de_DE"); + // Specify location of translation tables + bindtextdomain("edoko", "./locale"); + // Choose domain + textdomain("edoko"); + break; + default: + /* do nothing */ + } + } + +/* done major error checking, output header of HTML page */ output_header(); /* The rest of the file consists of handling user input. @@ -120,5 +149,3 @@ DB_close(); *End: */ ?> - - diff --git a/locale/de/LC_MESSAGES/edoko.mo b/locale/de/LC_MESSAGES/edoko.mo new file mode 100644 index 0000000..e72f5ab Binary files /dev/null and b/locale/de/LC_MESSAGES/edoko.mo differ diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..9d27938 --- /dev/null +++ b/po/de.po @@ -0,0 +1,21 @@ +# English translations for PACKAGE package. +# Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Arun Persaud , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: edoko\n" +"Report-Msgid-Bugs-To: arun@nubati.net\n" +"POT-Creation-Date: 2010-03-14 11:35-0700\n" +"PO-Revision-Date: 2010-03-14 12:01-0700\n" +"Last-Translator: Arun Persaud \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: include/output.php:398 +msgid "Welcome to E-Doko" +msgstr "Willkommen bei E-Doko" diff --git a/po/messages.pot b/po/messages.pot new file mode 100644 index 0000000..08d1463 --- /dev/null +++ b/po/messages.pot @@ -0,0 +1,21 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: edoko\n" +"Report-Msgid-Bugs-To: arun@nubati.net\n" +"POT-Creation-Date: 2010-03-14 11:35-0700\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: include/output.php:398 +msgid "Welcome to E-Doko" +msgstr ""