summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Persaud <arun@nubati.net>2010-03-14 14:11:52 -0700
committerArun Persaud <arun@nubati.net>2010-03-14 14:33:31 -0700
commit83fc1a851c69e13808d14f2d5a284c3369409018 (patch)
tree67d2da7a1481269aa939b898f3fd1be4507cf869
parentc05246b378470eab9c172d8d96328a821302a273 (diff)
downloade-DoKo-83fc1a851c69e13808d14f2d5a284c3369409018.tar.gz
e-DoKo-83fc1a851c69e13808d14f2d5a284c3369409018.tar.bz2
e-DoKo-83fc1a851c69e13808d14f2d5a284c3369409018.zip
NEW FEATURE: added localization support
using gettext to add support for localization
-rw-r--r--INSTALL2
-rw-r--r--TRANSLATION23
-rw-r--r--include/db.php7
-rw-r--r--include/output.php24
-rw-r--r--include/preferences.php24
-rw-r--r--index.php33
-rw-r--r--locale/de/LC_MESSAGES/edoko.mobin0 -> 476 bytes
-rw-r--r--po/de.po21
-rw-r--r--po/messages.pot21
9 files changed, 149 insertions, 6 deletions
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()
</head>
<body onload="high_last();">
<div class="header">
-<h1> Welcome to E-Doko </h1>
+<?php
+ echo '<h1> '._('Welcome to E-Doko').' </h1>';
+?>
</div>
<?php
@@ -516,6 +518,26 @@ function output_select_timezone($name,$timezone="")
return;
}
+function output_select_language($name,$language="")
+{
+ $LOCALE = array ("English" => "en",
+ "Deutsch" => "de" );
+
+ echo " <select id=\"$name\" name=\"$name\" size=\"1\">\n";
+
+ foreach($LOCALE as $place=>$locale)
+ {
+ if($language==$locale)
+ echo " <option value=\"$locale\" selected=\"selected\">$place</option>\n";
+ else
+ echo " <option value=\"$locale\">$place</option>\n";
+ }
+ echo " </select>\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 " <tr><td>Timezone: </td><td>\n";
output_select_timezone("timezone",$timezone);
if($changed_timezone) echo "changed";
echo "</td></tr>\n";
-
+echo " <tr><td>Language: </td><td>\n";
+output_select_language("language",$PREF['language']);
+echo "</td></tr>\n";
echo " <tr><td>Password(old): </td><td>",
"<input type=\"password\" id=\"password0\" name=\"password0\" size=\"20\" maxlength=\"30\" />";
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
--- /dev/null
+++ b/locale/de/LC_MESSAGES/edoko.mo
Binary files 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 <arun@nubati.net>, 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 <arun@nubati.net>\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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\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 ""