diff --git a/config/db.php b/config/db.php
new file mode 100755
index 0000000..a0be03a
--- /dev/null
+++ b/config/db.php
@@ -0,0 +1,6 @@
+
diff --git a/include/Database.c.php b/include/Database.c.php
new file mode 100755
index 0000000..7ad8b68
--- /dev/null
+++ b/include/Database.c.php
@@ -0,0 +1,399 @@
+host = $dbms_server;
+ $this->user = $dbms_user;
+ $this->pw = $dbms_password;
+ $this->db = $dbms_db;
+ $this->port = $dbms_port;
+
+ $this->auto_slashes = true;
+
+ self::connect();
+ }
+
+ /**
+ * Singleton multiplo del costruttore della classe Database. Ritorna un istanza della classe.
+ * $db può essere: ot, dns, db, ftp. Default: ot
+ *
+ * @param string $db
+ * @return Mysqli_link $m_pInstance
+ */
+ public static function getInstance($db='ot'){
+ if (!isset(self::$m_pInstance[$db])){
+ self::$m_pInstance[$db] = new Database($db);
+ }
+
+ return self::$m_pInstance[$db];
+ }
+
+ /**
+ * Esegue la connect al dbms.
+ * I parametri, se configurato il costruttore correttamente, sono opzionali. Ritorna un mysqli_link.
+ *
+ * Solleva un eccezione se ci sono problemi di connessione.
+ *
+ * @param url $host
+ * @param string $user
+ * @param string $pw
+ * @param string $db
+ * @param int $port
+ * @throws DbErrException
+ * @return Mysqli_link $db_link
+ *
+ */
+ function connect($host='', $user='', $pw='', $db='', $port='') {
+ if (!empty($host)) $this->host = $host;
+ if (!empty($user)) $this->user = $user;
+ if (!empty($pw)) $this->pw = $pw;
+ if (!empty($pw)) $this->port = $port;
+
+ $this->db_link = mysqli_init();
+ mysqli_real_connect($this->db_link , $this->host, $this->user, $this->pw, $this->db, $this->port);
+ if (!$this->db_link)
+ $this->callException(_("Database connection problem"),E_DB_ERR);
+
+ return $this->db_link;
+ }
+
+ private function setDebugErr($msg){
+ $err['text']=$msg;
+ $err['code']=0;
+
+ if($this->debug){
+ $err['text'].="\n".$this->last_query;
+ $err['code']=mysqli_errno($this->db_link);
+ }
+
+ return $err;
+ }
+
+ private function callException($msg,$e_type){
+ $err=$this->setDebugErr($msg);
+ if($e_type == ERR_DB_RES)
+ throw new DbResException($err['text'],$err['code']);
+ elseif($e_type == ERR_DB_ERR)
+ throw new DbErrException($err['text'],$err['code']);
+ else {
+ die(_("what shit!"));
+ exit;
+ }
+ }
+
+ /**
+ * Selezioziona il database ritorna TRUE se selezionato correttamente.
+ * Solleva una Exception in caso di fallimento.
+ *
+ * @param string $db
+ * @throws DbErrException
+ * @return boolean
+ */
+ function selectDb($db='') {
+ if (!empty($db)) $this->db = $db;
+
+ if (!mysqli_select_db($this->db_link,$this->db))
+ $this->callException(_("Database selection problem"),E_DB_ERR);
+
+ return true;
+ }
+
+ /**
+ * Esegue una SELECT espressa con una SqlQuery.
+ * Utile quando non si conosce in numero di righe o colonne che potrebbero tornare.
+ * Ritorna un oggetto mysqli_result. Solleva una eccezione sul fallimento.
+ *
+ * @param SqlQuery $sql
+ * @throws DbErrException
+ * @return mixed
+ */
+ function select($sql) {
+ $this->last_query = $sql;
+
+ $r = mysqli_query($this->db_link,$sql);
+ if (!$r)
+ $this->callException(_("Query select error"),E_DB_ERR);
+
+ $this->row_count = mysqli_num_rows($r);
+
+ return $r;
+ }
+
+ /**
+ * Esegue una SELECT il cui risultato deve essere 1 sola riga.
+ * Ritorna la riga. Solleva un eccezzione DbResException altrimenti.
+ *
+ * @param SqlQuery $sql
+ * @param [String cMsg] : customMessage
+ * @throws DbResException
+ * @return mixed
+ */
+ function selectOneRow($sql,$cMsg=NULL) {
+ $msg=$sMsg=NULL;
+
+ $r = self::select($sql);
+ if ($this->row_count > 1)
+ $sMsg=_(" more than one result.");
+ elseif ($this->row_count < 1)
+ $sMsg=_(" query returned less than one result.");
+
+ if($sMsg!=NULL && $cMsg==NULL)
+ $msg=_("Your query returned").$sMsg;
+ elseif ($sMsg!=NULL && $cMsg != NULL)
+ $msg=$cMsg;
+
+ if($msg!=NULL)
+ $this->callException($msg,ERR_DB_RES);
+
+ return mysqli_fetch_row($r);
+ }
+
+ /**
+ * Esegue una SELECT il cui risultato deve essere 1 sola cella.
+ * Ritorna la cella. Solleva un eccezzione DbResException altrimenti.
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return mixed
+ */
+ function selectFirstRowFirstCell($sql) {
+ $r = $this->select($sql);
+
+ if ($this->row_count > 1 or $this->row_count < 1)
+ $this->callException(_("Your query returned more or less that one result."),ERR_DB_RES);
+
+ $ret = mysqli_fetch_row($r);
+
+ if ($this->auto_slashes)
+ return stripslashes($ret[0]);
+ else
+ return $ret[0];
+ }
+
+ /**
+ * Esegue una select il cui risultato deve essere un array composto da
+ * una sola cella per riga. Solleva un eccezzione DbResException altrimenti.
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return array
+ */
+ function selectArrayOneElem($sql) {
+ $arr=array();
+
+ $r= $this->select($sql);
+ for ($i=0; $i<$this->row_count;$i++){
+ $row=mysqli_fetch_row($r);
+ if (isset($row[1]))
+ $this->callException(_("Your query return more than 1 element for row."),ERR_DB_RES);
+
+ $arr[$i]=$row[0];
+ }
+
+ return $arr;
+ }
+
+ /**
+ * Esegue una select il cui risultato deve essere un array composto da
+ * una $n celle per riga. Solleva un eccezzione DbResException altrimenti.
+ * Se $n non è specificato non viene effettuato nessun controllo sul
+ * numero di elementi per riga.
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return array
+ */
+ function selectArrayNElem($sql,$n=NULL) {
+ $arr=array();
+
+ $r= $this->select($sql);
+ for ($i=0; $i<$this->row_count;$i++){
+ $row=mysqli_fetch_row($r);
+ if($n!=NULL){
+ if (isset($row[$n]))
+ $this->callException(sprintf(_("Your query return more than %s element for row."),$n),ERR_RES);
+ }
+ $arr[$i]=$row;
+ }
+
+ return $arr;
+ }
+
+ /**
+ * Torna il numero di righe affette dalla query.
+ * Da utilizzare con INSERT DELETE e UPDATE
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return int
+ */
+ function execQuery($sql) {
+ $this->last_query = $sql;
+
+ $r = mysqli_query($this->db_link,$sql);
+ if (!$r)
+ $this->callException(_("Query error"),ERR_DB_ERR);
+
+ return $this->row_count = mysqli_affected_rows($this->db_link);
+ }
+
+ /**
+ * Eseque una SqlQuery il cui risultato deve aver avuto effetto su 1 sola riga.
+ * Ritorna TRUE o solleva una eccezione altrimenti.
+ *
+ * @param SqlQuery $sql
+ * @param [String cMsg] : customMessage
+ * @throws DbResException
+ * @return boolean
+ */
+ function execQueryOneRow($sql,$cMsg=NULL) {
+ $msg=$sMsg=NULL;
+
+ self::execQuery($sql);
+ if ($this->row_count == 0)
+ $sMsg=_("No row affected");
+ elseif($this->row_count > 1)
+ $sMsg=_("More than 1 row are affected");
+
+ if($sMsg!=NULL && $cMsg==NULL)
+ $msg=$sMsg;
+ elseif ($sMsg!=NULL && $cMsg != NULL)
+ $msg=$cMsg;
+
+ if($msg!=NULL)
+ $this->callException($msg,ERR_DB_RES);
+ }
+
+ /**
+ * Eseque una execQueryOneRow e ritorna l'ID della riga inserita.
+ * Ottenuto tramite AUTOINCREMENT; comoda per le INSERT.
+ *
+ * @param SqlQuery $sql
+ */
+ function execQueryRetId($sql) {
+ $this->execQueryOneRow($sql);
+
+ return mysqli_insert_id($this->db_link);
+ }
+
+ /**
+ * Esegue una SELECT con $sql per verificare la presenza di un "id", se non esiste torna FALSE.
+ * Altrimenti torna l'ID cercato con la select.
+ * Se ritornano più risultati solleva un DbResException.
+ *
+ * @param SelectSqlQuery $sql
+ * @return mixed
+ */
+ function isThereAlready($sql){
+ $id=FALSE;
+
+ $res=self::select($sql);
+ if($this->row_count == 1){
+ $row=mysqli_fetch_row($res);
+ $id=$row[0];
+ } elseif($this->row_count > 1 ) {
+ $this->callException(_("Are present more than 1 row"),ERR_DB_RES);
+ }
+
+ return $id;
+ }
+
+ function escapeString($string){
+ return mysqli_real_escape_string($this->db_link,$string);
+ }
+
+ /**
+ * Esegue un flush dei privilegi degli utenti mysql.
+ * Serve per assicurare che le operazioni effettuate con altre funzioni,
+ * come la creazione o la eliminazione di un utente, siano attive.
+ */
+ function flushPrivileges(){
+ self::execQuery("FLUSH PRIVILEGES");
+ }
+ /**
+ * Se $debug è TRUE stampa la query $sql altrimenti tramite reflection esegue il metodo $action sulla query.
+ *
+ * @param boolean $debug TRUE|FALSE
+ * @param String $action Metodi della Classe Database
+ * @param SqlQuery $sql
+ */
+ function sqlOrDebug($debug,$action,$sql){
+ if (! $debug)
+ self::$action($sql);
+ else
+ echo "DEBUG:OR: ".str_replace(array("\n","\r","\t","/\s\s+/"),"",$sql)."\n";
+ }
+ /**
+ * Se $debug è FALSE esegue tramite reflection il metodo $action sulla query $sql, altrimenti stampa anche la query.
+ *
+ * @param boolean $debug TRUE|FALSE
+ * @param String $action Metodi della Classe Database
+ * @param SqlQuery $sql
+ */
+ function sqlAndDebug($debug,$action,$sql){
+ if ($debug)
+ echo "DEBUG:AND: ".str_replace(array("\n","\r","\t","/\s\s+/"),"",$sql)."\n";
+
+ return self::$action($sql);
+ }
+
+ /**
+ * Ritorna l'ultimo errore ottenuto durante le azioni precedenti sul database.
+ */
+ public function getLastError() {
+ return $this->last_error;
+ }
+
+ /**
+ * Ritorna l'ultima query effettuata
+ */
+ public function getLastQuery() {
+ return $this->last_query;
+ }
+}
+?>
diff --git a/include/Database.php b/include/Database.php
new file mode 100755
index 0000000..c9c38c6
--- /dev/null
+++ b/include/Database.php
@@ -0,0 +1,381 @@
+host = $dbms_server;
+ $this->user = $dbms_user;
+ $this->pw = $dbms_password;
+ $this->db = $dbms_db;
+ $this->port = $dbms_port;
+
+ $this->auto_slashes = true;
+
+ self::connect();
+ }
+
+ /**
+ * Singleton multiplo del costruttore della classe Database. Ritorna un istanza della classe.
+ * $db può essere: ot, dns, db, ftp. Default: ot
+ *
+ * @param string $db
+ * @return Mysqli_link $m_pInstance
+ */
+ public static function getInstance($db='ot'){
+ if (!isset(self::$m_pInstance[$db])){
+ self::$m_pInstance[$db] = new Database($db);
+ }
+
+ return self::$m_pInstance[$db];
+ }
+
+ /**
+ * Esegue la connect al dbms.
+ * I parametri, se configurato il costruttore correttamente, sono opzionali. Ritorna un mysqli_link.
+ *
+ * Solleva un eccezione se ci sono problemi di connessione.
+ *
+ * @param url $host
+ * @param string $user
+ * @param string $pw
+ * @param string $db
+ * @param int $port
+ * @throws DbErrException
+ * @return Mysqli_link $db_link
+ *
+ */
+ function connect($host='', $user='', $pw='', $db='', $port='') {
+ if (!empty($host)) $this->host = $host;
+ if (!empty($user)) $this->user = $user;
+ if (!empty($pw)) $this->pw = $pw;
+ if (!empty($pw)) $this->port = $port;
+
+ $this->db_link = mysqli_init();
+ mysqli_real_connect($this->db_link , $this->host, $this->user, $this->pw, $this->db, $this->port);
+ if (!$this->db_link)
+ $this->callException(_("Database connection problem."),E_DB_ERR);
+ return $this->db_link;
+ }
+
+ private function setDebugErr($msg){
+ $err['text']=$msg;
+ $err['code']=0;
+
+ if($this->debug){
+ $err['text'].="\n".$this->last_query;
+ $err['code']=mysqli_errno($this->db_link);
+ }
+
+ return $err;
+ }
+
+ private function callException($msg,$e_type){
+ $err=$this->setDebugErr($msg);
+ if($e_type == E_DB_RES)
+ throw new DbResException($err['text'],$err['code']);
+ elseif($e_type == E_DB_ERR)
+ throw new DbErrException($err['text'],$err['code']);
+ else {
+ die(_("what shit?!"));
+ exit;
+ }
+ }
+
+ /**
+ * Selezioziona il database ritorna TRUE se selezionato correttamente.
+ * Solleva una Exception in caso di fallimento.
+ *
+ * @param string $db
+ * @throws DbErrException
+ * @return boolean
+ */
+ function selectDb($db='') {
+ if (!empty($db)) $this->db = $db;
+
+ if (!mysqli_select_db($this->db_link,$this->db))
+ $this->callException(_("Database selection problem."),E_DB_ERR);
+
+ return true;
+ }
+
+ /**
+ * Esegue una SELECT espressa con una SqlQuery.
+ * Utile quando non si conosce in numero di righe o colonne che potrebbero tornare.
+ * Ritorna un oggetto mysqli_result. Solleva una eccezione sul fallimento.
+ *
+ * @param SqlQuery $sql
+ * @throws DbErrException
+ * @return mixed
+ */
+ function select($sql) {
+ $this->last_query = $sql;
+
+ $r = mysqli_query($this->db_link,$sql);
+ if (!$r)
+ $this->callException(_("Query select error."),E_DB_ERR);
+
+ $this->row_count = mysqli_num_rows($r);
+
+ return $r;
+ }
+
+ /**
+ * Esegue una SELECT il cui risultato deve essere 1 sola riga.
+ * Ritorna la riga. Solleva un eccezzione DbResException altrimenti.
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return mixed
+ */
+ function selectOneRow($sql) {
+ $oi=_("Your query returned ");
+ $r = self::select($sql);
+
+ if ($this->row_count > 1)
+ $this->callException($oi._("more than one result."),ERR_DB_RES);
+ elseif ($this->row_count < 1)
+ $this->callException($oi._("less than one result."),ERR_DB_RES);
+
+ return mysqli_fetch_row($r);
+ }
+
+ /**
+ * Esegue una SELECT il cui risultato deve essere 1 sola cella.
+ * Ritorna la cella. Solleva un eccezzione DbResException altrimenti.
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return mixed
+ */
+ function selectFirstRowFirstCell($sql) {
+ $r = $this->select($sql);
+
+ if ($this->row_count > 1 or $this->row_count < 1)
+ $this->callException(_("Your query returned more or less that one result."),ERR_DB_RES);
+
+ $ret = mysqli_fetch_row($r);
+
+ if ($this->auto_slashes)
+ return stripslashes($ret[0]);
+ else
+ return $ret[0];
+ }
+
+ /**
+ * Esegue una select il cui risultato deve essere un array composto da
+ * una sola cella per riga. Solleva un eccezzione DbResException altrimenti.
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return array
+ */
+ function selectArrayOneElem($sql) {
+ $arr=array();
+
+ $r= $this->select($sql);
+ for ($i=0; $i<$this->row_count;$i++){
+ $row=mysqli_fetch_row($r);
+ if (isset($row[1]))
+ $this->callException(_("Your query return more than 1 element for row."),ERR_DB_RES);
+
+ $arr[$i]=$row[0];
+ }
+
+ return $arr;
+ }
+
+ /**
+ * Esegue una select il cui risultato deve essere un array composto da
+ * una $n celle per riga. Solleva un eccezzione DbResException altrimenti.
+ * Se $n non è specificato non viene effettuato nessun controllo sul
+ * numero di elementi per riga.
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return array
+ */
+ function selectArrayNElem($sql,$n=NULL) {
+ $arr=array();
+
+ $r= $this->select($sql);
+ for ($i=0; $i<$this->row_count;$i++){
+ $row=mysqli_fetch_row($r);
+ if($n!=NULL){
+ if (isset($row[$n]))
+ $this->callException(sprintf(_("Your query return more than %s element for row."),$n),ERR_RES);
+ }
+ $arr[$i]=$row;
+ }
+
+ return $arr;
+ }
+
+ /**
+ * Torna il numero di righe affette dalla query.
+ * Da utilizzare con INSERT DELETE e UPDATE
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return int
+ */
+ function execQuery($sql) {
+ $this->last_query = $sql;
+
+ $r = mysqli_query($this->db_link,$sql);
+ if (!$r)
+ $this->callException(_("Query error."),E_DB_ERR);
+
+ return $this->row_count = mysqli_affected_rows($this->db_link);
+ }
+
+ /**
+ * Eseque una SqlQuery il cui risultato deve aver avuto effetto su 1 sola riga.
+ * Ritorna TRUE o solleva una eccezione altrimenti.
+ *
+ * @param SqlQuery $sql
+ * @throws DbResException
+ * @return boolean
+ */
+ function execQueryOneRow($sql) {
+ self::execQuery($sql);
+ if ($this->row_count == 0)
+ $this->callException(_("No row affected."),ERR_RES);
+ elseif($this->row_count > 1)
+ $this->callException(_("More than 1 row are affected."),ERR_DB_RES);
+ }
+
+ /**
+ * Eseque una execQueryOneRow e ritorna l'ID della riga inserita.
+ * Ottenuto tramite AUTOINCREMENT; comoda per le INSERT.
+ *
+ * @param SqlQuery $sql
+ */
+ function execQueryRetId($sql) {
+ $this->execQueryOneRow($sql);
+
+ return mysqli_insert_id($this->db_link);
+ }
+
+ /**
+ * Esegue una SELECT con $sql per verificare la presenza di un "id", se non esiste torna FALSE.
+ * Altrimenti torna l'ID cercato con la select.
+ * Se ritornano più risultati solleva un DbResException.
+ *
+ * @param SelectSqlQuery $sql
+ * @return mixed
+ */
+ function isThereAlready($sql){
+ $id=FALSE;
+
+ $res=self::select($sql);
+ if($this->row_count == 1){
+ $row=mysqli_fetch_row($res);
+ $id=$row[0];
+ } elseif($this->row_count > 1 ) {
+ $this->callException(_("Are present more than 1 row."),ERR_DB_RES);
+ }
+
+ return $id;
+ }
+
+ function escapeString($string){
+ return mysqli_real_escape_string($this->db_link,$string);
+ }
+
+ /**
+ * Esegue un flush dei privilegi degli utenti mysql.
+ * Serve per assicurare che le operazioni effettuate con altre funzioni,
+ * come la creazione o la eliminazione di un utente, siano attive.
+ */
+ function flushPrivileges(){
+ self::execQuery("FLUSH PRIVILEGES");
+ }
+ /**
+ * Se $debug è TRUE stampa la query $sql altrimenti tramite reflection esegue il metodo $action sulla query.
+ *
+ * @param boolean $debug TRUE|FALSE
+ * @param String $action Metodi della Classe Database
+ * @param SqlQuery $sql
+ */
+ function sqlOrDebug($debug,$action,$sql){
+ $debug=true;
+ if (! $debug)
+ return self::$action($sql);
+ else
+ echo "DEBUG:OR: ".str_replace(array("\n","\r","\t","/\s\s+/"),"",$sql)."\n";
+ }
+ /**
+ * Se $debug è FALSE esegue tramite reflection il metodo $action sulla query $sql, altrimenti stampa anche la query.
+ *
+ * @param boolean $debug TRUE|FALSE
+ * @param String $action Metodi della Classe Database
+ * @param SqlQuery $sql
+ */
+ function sqlAndDebug($debug,$action,$sql){
+ $debug=true;
+ if ($debug)
+ echo "DEBUG:AND: ".str_replace(array("\n","\r","\t","/\s\s+/"),"",$sql)."\n";
+
+ return self::$action($sql);
+ }
+
+ /**
+ * Ritorna l'ultimo errore ottenuto durante le azioni precedenti sul database.
+ */
+ public function getLastError() {
+ return $this->last_error;
+ }
+
+ /**
+ * Ritorna l'ultima query effettuata
+ */
+ public function getLastQuery() {
+ return $this->last_query;
+ }
+}
+?>
diff --git a/include/OExceptions.php b/include/OExceptions.php
new file mode 100755
index 0000000..1c23a14
--- /dev/null
+++ b/include/OExceptions.php
@@ -0,0 +1,79 @@
+message;
+ if($this->code!=0)
+ $err= get_class($this).
+ " '{$this->message}' in {$this->file}({$this->line})\n".
+ "{$this->getTraceAsString()}";
+
+ return $err;
+ }
+}
+
+class DbErrException extends CustomException{};
+
+class DbResException extends DbErrException{};
+
+class UsageException extends CustomException{
+ public function __construct($message = null, $code = 0)
+ {
+ if (!$message and $code == 0) {
+ throw new $this('Unknown '. get_class($this));
+ } elseif ($message != null and $code > 0) {
+ $argv="Err: ".$message."\n";
+ $message="Bad arg: ".$argv." is not a valid command, with ".$code." arguments\n";
+ $code=0;
+ }
+
+ parent::__construct($message, $code);
+ }
+
+ public function __toString() {
+ return $this->message;
+ }
+
+}
+
+class OtConfException extends CustomException{};
+
+class FileException extends CustomException{
+ public function __toString() {
+ return $this->message;
+ }
+};
+
+?>
\ No newline at end of file
diff --git a/include/apteryx_text.php b/include/apteryx_text.php
new file mode 100755
index 0000000..0e2a263
--- /dev/null
+++ b/include/apteryx_text.php
@@ -0,0 +1,11 @@
+
diff --git a/include/localization.php b/include/localization.php
new file mode 100755
index 0000000..90545bd
--- /dev/null
+++ b/include/localization.php
@@ -0,0 +1,112 @@
+";
+ foreach ($langarray as $l) {
+ $label=split("_",$l);
+ $class="";
+ if ($l == $lang)
+ $class="class='it'";
+
+ echo "
".$label[0]."";
+ }
+ $foo = getenv("HTTP_ACCEPT_LANGUAGE");
+ echo "\n";
+}
+
+/**
+ * Sets a new text domain after recording the current one
+ * so it can be restored later with restore_textdomain().
+ *
+ * It's possible to nest calls to these two functions.
+ * @param string the new text domain to set
+ */
+function set_textdomain($td)
+{
+ global $_td_stack;
+
+ $old_td = textdomain(NULL);
+
+ if ($old_td) {
+ if (!strcmp($old_td, $td))
+ array_push($_td_stack, false);
+ else
+ array_push($_td_stack, $old_td);
+ }
+
+ textdomain($td);
+}
+
+/**
+ * Restore the text domain active before the last call to
+ * set_textdomain().
+ */
+function restore_textdomain()
+{
+ global $_td_stack;
+
+ $old_td = array_pop($_td_stack);
+
+ if ($old_td)
+ textdomain($old_td);
+}
+?>
diff --git a/include/randomimg.php b/include/randomimg.php
new file mode 100755
index 0000000..1a70c5c
--- /dev/null
+++ b/include/randomimg.php
@@ -0,0 +1,64 @@
+ 0) {
+ $imageNumber = time() % count($fileList);
+ $img = $folder.$fileList[$imageNumber];
+ }
+}
+
+if ($img!=null) {
+ $imageInfo = pathinfo($img);
+ $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
+ header ($contentType);
+ readfile($img);
+} else {
+ if ( function_exists('imagecreate') ) {
+ header ("Content-type: image/png");
+ $im = @imagecreate (100, 100)
+ or die ("Cannot initialize new GD image stream");
+ $background_color = imagecolorallocate ($im, 255, 255, 255);
+ $text_color = imagecolorallocate ($im, 0,0,0);
+ imagestring ($im, 2, 5, 5, "IMAGE ERROR", $text_color);
+ imagepng ($im);
+ imagedestroy($im);
+ }
+}
+?>
diff --git a/include/template.php b/include/template.php
new file mode 100755
index 0000000..5eb9836
--- /dev/null
+++ b/include/template.php
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ';
+else
+ echo '
';
+
+?>
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/include/util.php b/include/util.php
new file mode 100755
index 0000000..af65dae
--- /dev/null
+++ b/include/util.php
@@ -0,0 +1,85 @@
+ 64) {
+ $isValid = FALSE;
+ //l'user incomincia o termina con un . o a 2 .. consecutivi
+ } elseif ($local[0] == '.' || $local[$localLen-1] == '.' || consecutive_dot($local)) {
+ $isValid = FALSE;
+ } elseif (! isValidDomain($domain)) {
+ $isValid = FALSE;
+ } elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local))) {
+ // character not valid in local part unless
+ // local part is quoted
+ if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local))) {
+ $isValid = FALSE;
+ }
+ }
+ }
+
+ return $isValid;
+}
+
+function isValidDomain($domain) {
+ $isValid=true;
+ $domainLen = strlen($domain);
+
+ if ($domainLen < 4 || $domainLen > 255) {
+ $isValid = FALSE;
+ //l'user incomincia o termina con un . o a 2 .. consecutivi
+ } elseif (consecutive_dot($domain) || $domain[0] == '.' || $domain[$domainLen-1] == '.' ) {
+ $isValid = FALSE;
+ } elseif (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
+ $isValid = FALSE;
+ //ha almeno un punto
+ } elseif (! strpos($domain, ".")) {
+ $isValid = FALSE;
+ } else {
+ //il dominio di primo livello è almeno 2 caratteri
+ $arr=explode(".", $domain);
+ if(strlen($arr[count($arr)-1])<2)
+ $isValid = FALSE;
+ }
+
+ return $isValid;
+}
+
+function consecutive_dot($string) {
+ $ret=false;
+
+ if(preg_match('/\\.\\./',$string))
+ $ret=true;
+
+ return $ret;
+}
+
+/**
+ * estrae dominio di secondo livello
+ */
+function dom($name){
+ $zon=explode(".",$name);
+ return implode(".",array_slice($zon,-3));
+}
+
+/* gets the data from a URL */
+function get_data($url) {
+ $ch = curl_init();
+ $timeout = 5;
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
+ $data = curl_exec($ch);
+ curl_close($ch);
+
+ return $data;
+}
+?>
diff --git a/index.php b/index.php
new file mode 100755
index 0000000..cb8be22
--- /dev/null
+++ b/index.php
@@ -0,0 +1,111 @@
+escapeString($goto_email_noescape);
+ if (email_check($goto_email)) {
+ //solo l'email alias deve non essere presente.
+ do {
+ $alias_nic = preg_replace('/\s+/', '', get_data($rasplice_url));
+ if($alias_nic===FALSE)
+ $alias_nic="email_".rand(10000,99999);
+ $alias_dom = substr($indivia24hdomain,1);
+ $alias_email = $alias_nic.$indivia24hdomain;
+ $alias_dom2lvl = dom($alias_dom);
+ $alias_tab = str_replace(".","_",$alias_dom2lvl);
+ $res = $db->isThereAlready(getSqlNumOfAlias($alias_tab,$alias_nic));
+ } while ($res != FALSE);
+
+ $timo=time();
+ $ret=$db->execQuery(getSqlCreateAlias($alias_tab,$alias_nic,$alias_dom,$goto_email,$timo));
+ if ($ret == 1) {
+ header("location: index.php?ph=2&email=".$goto_email."&lang=".$lang);
+ } else {
+ $type=1;
+ $err=$msgAliasErr;
+ }
+ } else {
+ $type=1;
+ $err=$msgEmailValidErr;
+ }
+} elseif (isset($_GET["ph"]) AND
+ $_GET['ph'] == 2 AND
+ isset($_GET['email'])) {
+
+ $goto_email_noescape = $_GET['email'];
+ $goto_email = $db->escapeString($goto_email_noescape);
+ $rows = $db->select(getSqlAliasInfo($goto_email));
+ $row = mysqli_fetch_row($rows);
+ if ($row[0] != "") {
+ $type=2;
+ $user=$row[0];
+ $email=$goto_email;
+ } else {
+ $type=1;
+ $err=$msgNoEmailFoundErr;
+ }
+} else {
+ $type=0;
+}
+
+if($type>-1) {
+ printHead($type);
+ printLangSelector();
+ printTitle($title);
+ switch ($type) {
+ case 0:
+ printForm($form_goto_email, $lang);
+ break;
+ case 1:
+ printMessage($err);
+ break;
+ case 2:
+ printMessage($msgAliasDonePart1).
+ printBold($user.$indivia24hdomain).
+ printMessage($msgAliasDonePart2).
+ printBold($email);
+ break;
+ }
+}
+
+?>
diff --git a/res/css/apteryx.css b/res/css/apteryx.css
new file mode 100644
index 0000000..c81226d
--- /dev/null
+++ b/res/css/apteryx.css
@@ -0,0 +1,15 @@
+#apteryx-box{
+ margin: 0 auto;
+ padding-bottom:8px;
+ width:38em;
+ min-height:105px;
+}
+
+div.random {
+ margin-left:auto;
+ margin-right:auto;
+ margin-bottom:2em;
+ width: 400px;
+ height: 350px;
+ background: url(../../include/randomimg.php) no-repeat center;
+}
diff --git a/res/file/CHANGELOG b/res/file/CHANGELOG
new file mode 100644
index 0000000..34e8e90
--- /dev/null
+++ b/res/file/CHANGELOG
@@ -0,0 +1,10 @@
+@0.2.1
+- Fix dell'url dell'import di un css
+- Fix del bug che comprometteva la creazione del nuovo alias
+@0.2
+- Utilizzo della Classe Wrapper Database realizzata inizialmente per OT
+- Modificato il sistema di internazionalizzazione per l'utilizzo di gettext()
+- Aggiunte le traduzioni in: italiano, inglese e parziale in esperanto
+- Revisione del modo in cui viene prodotto l'html e lo style css
+- Pulizia del codice e standardizzazione delle directory sul modello i*
+- Utilizzo di rasplice.contaminati.net per creare email con user più reale
diff --git a/res/file/TODO b/res/file/TODO
new file mode 100644
index 0000000..4ecdd5d
--- /dev/null
+++ b/res/file/TODO
@@ -0,0 +1,2 @@
+- finirire la traduzione in esperanto
+- tradurre in tedesco e spagnolo
diff --git a/res/images/orologio1.png b/res/images/orologio1.png
new file mode 100755
index 0000000..b13e142
Binary files /dev/null and b/res/images/orologio1.png differ
diff --git a/res/images/orologio10.png b/res/images/orologio10.png
new file mode 100755
index 0000000..7ad915b
Binary files /dev/null and b/res/images/orologio10.png differ
diff --git a/res/images/orologio11.png b/res/images/orologio11.png
new file mode 100755
index 0000000..90b1c06
Binary files /dev/null and b/res/images/orologio11.png differ
diff --git a/res/images/orologio12.png b/res/images/orologio12.png
new file mode 100755
index 0000000..14e4057
Binary files /dev/null and b/res/images/orologio12.png differ
diff --git a/res/images/orologio13.png b/res/images/orologio13.png
new file mode 100755
index 0000000..6e9969f
Binary files /dev/null and b/res/images/orologio13.png differ
diff --git a/res/images/orologio14.png b/res/images/orologio14.png
new file mode 100755
index 0000000..a92a1ae
Binary files /dev/null and b/res/images/orologio14.png differ
diff --git a/res/images/orologio15.png b/res/images/orologio15.png
new file mode 100755
index 0000000..1fccffc
Binary files /dev/null and b/res/images/orologio15.png differ
diff --git a/res/images/orologio2.png b/res/images/orologio2.png
new file mode 100755
index 0000000..6606d78
Binary files /dev/null and b/res/images/orologio2.png differ
diff --git a/res/images/orologio3.png b/res/images/orologio3.png
new file mode 100755
index 0000000..76278a4
Binary files /dev/null and b/res/images/orologio3.png differ
diff --git a/res/images/orologio4.png b/res/images/orologio4.png
new file mode 100755
index 0000000..f46e9be
Binary files /dev/null and b/res/images/orologio4.png differ
diff --git a/res/images/orologio5.png b/res/images/orologio5.png
new file mode 100755
index 0000000..55585b7
Binary files /dev/null and b/res/images/orologio5.png differ
diff --git a/res/images/orologio6.png b/res/images/orologio6.png
new file mode 100755
index 0000000..ec03419
Binary files /dev/null and b/res/images/orologio6.png differ
diff --git a/res/images/orologio7.png b/res/images/orologio7.png
new file mode 100755
index 0000000..a3671b5
Binary files /dev/null and b/res/images/orologio7.png differ
diff --git a/res/images/orologio8.png b/res/images/orologio8.png
new file mode 100755
index 0000000..34c0fc5
Binary files /dev/null and b/res/images/orologio8.png differ
diff --git a/res/images/orologio9.png b/res/images/orologio9.png
new file mode 100755
index 0000000..914d867
Binary files /dev/null and b/res/images/orologio9.png differ
diff --git a/res/locale/apteryx.pot b/res/locale/apteryx.pot
new file mode 100644
index 0000000..73615cf
--- /dev/null
+++ b/res/locale/apteryx.pot
@@ -0,0 +1,53 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 0.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr ""
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr ""
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr ""
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr ""
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr ""
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr ""
diff --git a/res/locale/en_US/LC_MESSAGES/apteryx.po b/res/locale/en_US/LC_MESSAGES/apteryx.po
new file mode 100644
index 0000000..8d9bc83
--- /dev/null
+++ b/res/locale/en_US/LC_MESSAGES/apteryx.po
@@ -0,0 +1,54 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:12+0000\n"
+"Last-Translator: gin(e) \n"
+"Language-Team: LANGUAGE \n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775939.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Item to create an email alias for 24 hours "
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "email:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Creator of daily email alias (24 hours)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "For the next 24 hours all email sent to:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "will redirect to:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Creation failed. Maybe you have written wrongs informations, retry."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Alias already exits, retry."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Invalid Email"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "There are no email alias for that email address"
diff --git a/res/locale/en_US/LC_MESSAGES/messages.mo b/res/locale/en_US/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..4388d64
Binary files /dev/null and b/res/locale/en_US/LC_MESSAGES/messages.mo differ
diff --git a/res/locale/en_US/LC_MESSAGES/messages.po b/res/locale/en_US/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..9d36f2c
--- /dev/null
+++ b/res/locale/en_US/LC_MESSAGES/messages.po
@@ -0,0 +1,111 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:12+0000\n"
+"Last-Translator: gin(e) \n"
+"Language-Team: LANGUAGE \n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775939.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Item to create an email alias for 24 hours "
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "email:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Creator of daily email alias (24 hours)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "For the next 24 hours all email sent to:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "will redirect to:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Creation failed. Maybe you have written wrongs informations, retry."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Alias already exits, retry."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Invalid Email"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "There are no email alias for that email address"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr "Database connection problem."
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr "what shit?!"
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr "Database selection problem."
+
+#: Database.php:158
+msgid "Query select error."
+msgstr "Query select error."
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr "Your query returned "
+
+#: Database.php:178
+msgid "more than one result."
+msgstr "more than one result."
+
+#: Database.php:180
+msgid "less than one result."
+msgstr "less than one result."
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr "Your query returned more or less that one result."
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr "Your query return more than 1 element for row."
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr "Your query return more than %s element for row."
+
+#: Database.php:269
+msgid "Query error."
+msgstr "Query error."
+
+#: Database.php:285
+msgid "No row affected."
+msgstr "No row affected."
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr "More than 1 row are affected."
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr "Are present more than 1 row."
diff --git a/res/locale/en_US/LC_MESSAGES/otdblib.po b/res/locale/en_US/LC_MESSAGES/otdblib.po
new file mode 100644
index 0000000..dbb0b99
--- /dev/null
+++ b/res/locale/en_US/LC_MESSAGES/otdblib.po
@@ -0,0 +1,76 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: 2013-08-16 14:49+0000\n"
+"Last-Translator: gin(e) \n"
+"Language-Team: LANGUAGE \n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"X-POOTLE-MTIME: 1376664594.0\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr "Database connection problem."
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr "what shit?!"
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr "Database selection problem."
+
+#: Database.php:158
+msgid "Query select error."
+msgstr "Query select error."
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr "Your query returned "
+
+#: Database.php:178
+msgid "more than one result."
+msgstr "more than one result."
+
+#: Database.php:180
+msgid "less than one result."
+msgstr "less than one result."
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr "Your query returned more or less that one result."
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr "Your query return more than 1 element for row."
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr "Your query return more than %s element for row."
+
+#: Database.php:269
+msgid "Query error."
+msgstr "Query error."
+
+#: Database.php:285
+msgid "No row affected."
+msgstr "No row affected."
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr "More than 1 row are affected."
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr "Are present more than 1 row."
diff --git a/res/locale/eo/LC_MESSAGES/apteryx.po b/res/locale/eo/LC_MESSAGES/apteryx.po
new file mode 100644
index 0000000..6589d64
--- /dev/null
+++ b/res/locale/eo/LC_MESSAGES/apteryx.po
@@ -0,0 +1,54 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:00+0000\n"
+"Last-Translator: gin(e) \n"
+"Language-Team: LANGUAGE \n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775226.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Alternativilo por krei Aliasojn 24hore por propra retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "Retpoŝtadreso:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Kreanto de retpoŝtaliasoj tuttage (24 horoj)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Por la proksimaj 24 horoj ĉiuj retpoŝtoj kiuj alvenos al:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "estos alidirektonta al:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Aliaskreado fiaskis. Eble vi skribis datenojn nekorekte, reprovu."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Aliaso jam ekzistas, reprovu."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Nekorekta retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Neniu Aliaso ekzistas por tiu ĉi repoŝtadreso"
diff --git a/res/locale/eo/LC_MESSAGES/messages.mo b/res/locale/eo/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..47044ba
Binary files /dev/null and b/res/locale/eo/LC_MESSAGES/messages.mo differ
diff --git a/res/locale/eo/LC_MESSAGES/messages.po b/res/locale/eo/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..dd0a80b
--- /dev/null
+++ b/res/locale/eo/LC_MESSAGES/messages.po
@@ -0,0 +1,112 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:00+0000\n"
+"Last-Translator: gin(e) \n"
+"Language-Team: LANGUAGE \n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775226.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Alternativilo por krei Aliasojn 24hore por propra retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "Retpoŝtadreso:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Kreanto de retpoŝtaliasoj tuttage (24 horoj)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Por la proksimaj 24 horoj ĉiuj retpoŝtoj kiuj alvenos al:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "estos alidirektonta al:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Aliaskreado fiaskis. Eble vi skribis datenojn nekorekte, reprovu."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Aliaso jam ekzistas, reprovu."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Nekorekta retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Neniu Aliaso ekzistas por tiu ĉi repoŝtadreso"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""
diff --git a/res/locale/eo/LC_MESSAGES/otdblib.po b/res/locale/eo/LC_MESSAGES/otdblib.po
new file mode 100644
index 0000000..54ef450
--- /dev/null
+++ b/res/locale/eo/LC_MESSAGES/otdblib.po
@@ -0,0 +1,74 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.10.0\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""
diff --git a/res/locale/eo_EO/LC_MESSAGES/apteryx.po b/res/locale/eo_EO/LC_MESSAGES/apteryx.po
new file mode 100644
index 0000000..6589d64
--- /dev/null
+++ b/res/locale/eo_EO/LC_MESSAGES/apteryx.po
@@ -0,0 +1,54 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:00+0000\n"
+"Last-Translator: gin(e) \n"
+"Language-Team: LANGUAGE \n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775226.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Alternativilo por krei Aliasojn 24hore por propra retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "Retpoŝtadreso:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Kreanto de retpoŝtaliasoj tuttage (24 horoj)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Por la proksimaj 24 horoj ĉiuj retpoŝtoj kiuj alvenos al:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "estos alidirektonta al:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Aliaskreado fiaskis. Eble vi skribis datenojn nekorekte, reprovu."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Aliaso jam ekzistas, reprovu."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Nekorekta retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Neniu Aliaso ekzistas por tiu ĉi repoŝtadreso"
diff --git a/res/locale/eo_EO/LC_MESSAGES/messages.mo b/res/locale/eo_EO/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..47044ba
Binary files /dev/null and b/res/locale/eo_EO/LC_MESSAGES/messages.mo differ
diff --git a/res/locale/eo_EO/LC_MESSAGES/messages.po b/res/locale/eo_EO/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..dd0a80b
--- /dev/null
+++ b/res/locale/eo_EO/LC_MESSAGES/messages.po
@@ -0,0 +1,112 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:00+0000\n"
+"Last-Translator: gin(e) \n"
+"Language-Team: LANGUAGE \n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775226.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Alternativilo por krei Aliasojn 24hore por propra retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "Retpoŝtadreso:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Kreanto de retpoŝtaliasoj tuttage (24 horoj)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Por la proksimaj 24 horoj ĉiuj retpoŝtoj kiuj alvenos al:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "estos alidirektonta al:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Aliaskreado fiaskis. Eble vi skribis datenojn nekorekte, reprovu."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Aliaso jam ekzistas, reprovu."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Nekorekta retpoŝtadreso"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Neniu Aliaso ekzistas por tiu ĉi repoŝtadreso"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""
diff --git a/res/locale/eo_EO/LC_MESSAGES/otdblib.po b/res/locale/eo_EO/LC_MESSAGES/otdblib.po
new file mode 100644
index 0000000..54ef450
--- /dev/null
+++ b/res/locale/eo_EO/LC_MESSAGES/otdblib.po
@@ -0,0 +1,74 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.10.0\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""
diff --git a/res/locale/it_IT/LC_MESSAGES/apteryx.po b/res/locale/it_IT/LC_MESSAGES/apteryx.po
new file mode 100644
index 0000000..befdbac
--- /dev/null
+++ b/res/locale/it_IT/LC_MESSAGES/apteryx.po
@@ -0,0 +1,54 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:04+0000\n"
+"Last-Translator: Anonymous Pootle User\n"
+"Language-Team: LANGUAGE \n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775488.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Accrocchio per creare alias di 24h per una propria email"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "email:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Creatore di alias email giornalieri (24 ore)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Per le prossime 24 ore tutte le mail che arriveranno a:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "verranno redirette a:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Alias gia' esistente, riprova."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Email non valida"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Non esiste nessun alias per questa email"
diff --git a/res/locale/it_IT/LC_MESSAGES/messages.mo b/res/locale/it_IT/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..4b70077
Binary files /dev/null and b/res/locale/it_IT/LC_MESSAGES/messages.mo differ
diff --git a/res/locale/it_IT/LC_MESSAGES/messages.po b/res/locale/it_IT/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..e043696
--- /dev/null
+++ b/res/locale/it_IT/LC_MESSAGES/messages.po
@@ -0,0 +1,112 @@
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: 2013-04-12 14:04+0000\n"
+"Last-Translator: Anonymous Pootle User\n"
+"Language-Team: LANGUAGE \n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0-rc1\n"
+"X-POOTLE-MTIME: 1365775488.0\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr "Accrocchio per creare alias di 24h per una propria email"
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr "email:"
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr "Creatore di alias email giornalieri (24 ore)"
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr "Per le prossime 24 ore tutte le mail che arriveranno a:"
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr "verranno redirette a:"
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr "Alias gia' esistente, riprova."
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr "Email non valida"
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr "Non esiste nessun alias per questa email"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr "Non è possibile connettersi al dbms."
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr "ma che cazzo?!"
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr "Problema nella selezione del database."
+
+#: Database.php:158
+msgid "Query select error."
+msgstr "Errore nell'interrogazione del database."
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr "L'interrogazione effettuata è tornata con "
+
+#: Database.php:178
+msgid "more than one result."
+msgstr "più di un risultato."
+
+#: Database.php:180
+msgid "less than one result."
+msgstr "meno di un risultato."
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr "L'interrogazione effettuata è tornata con più o meno di un risultato."
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr "L'interrogazione è tornata con più di un attributo per riga."
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr "L'interrogazione è tornata con più %s attributi per riga."
+
+#: Database.php:269
+msgid "Query error."
+msgstr "Errore nell'esecuzione di una query."
+
+#: Database.php:285
+msgid "No row affected."
+msgstr "Nessuna riga alterata."
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr "Più di una riga alterata."
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr "Sono presenti più di una riga."
diff --git a/res/locale/it_IT/LC_MESSAGES/otdblib.po b/res/locale/it_IT/LC_MESSAGES/otdblib.po
new file mode 100644
index 0000000..2e26827
--- /dev/null
+++ b/res/locale/it_IT/LC_MESSAGES/otdblib.po
@@ -0,0 +1,76 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: 2013-08-16 14:29+0000\n"
+"Last-Translator: gin(e) \n"
+"Language-Team: LANGUAGE \n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.5.0\n"
+"X-POOTLE-MTIME: 1376663369.0\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr "Non è possibile connettersi al dbms."
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr "ma che cazzo?!"
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr "Problema nella selezione del database."
+
+#: Database.php:158
+msgid "Query select error."
+msgstr "Errore nell'interrogazione del database."
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr "L'interrogazione effettuata è tornata con "
+
+#: Database.php:178
+msgid "more than one result."
+msgstr "più di un risultato."
+
+#: Database.php:180
+msgid "less than one result."
+msgstr "meno di un risultato."
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr "L'interrogazione effettuata è tornata con più o meno di un risultato."
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr "L'interrogazione è tornata con più di un attributo per riga."
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr "L'interrogazione è tornata con più %s attributi per riga."
+
+#: Database.php:269
+msgid "Query error."
+msgstr "Errore nell'esecuzione di una query."
+
+#: Database.php:285
+msgid "No row affected."
+msgstr "Nessuna riga alterata."
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr "Più di una riga alterata."
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr "Sono presenti più di una riga."
diff --git a/res/locale/messages.pot b/res/locale/messages.pot
new file mode 100644
index 0000000..eda64d7
--- /dev/null
+++ b/res/locale/messages.pot
@@ -0,0 +1,117 @@
+# #-#-#-#-# apteryx.pot (0.2) #-#-#-#-#
+# apteryx.indivia.net
+# This file is distributed under the same license as the "iApteryx" package.
+# gin(e) , 2013
+#
+# #-#-#-#-# otdblib.pot (1.2) #-#-#-#-#
+# OTDbLib template translation.
+# Copyright (C) 2013.
+# This file is distributed under the same license as the OTDbLib package.
+# gin(e) , 2013.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 0.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-02-24 13:14+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../include/apteryx_text.php:2
+msgid "Accrocchio per creare alias di 24h per una propria email"
+msgstr ""
+
+#: ../../include/apteryx_text.php:3
+msgid "email:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:4
+msgid "Creatore di alias email giornalieri (24 ore)"
+msgstr ""
+
+#: ../../include/apteryx_text.php:5
+msgid "Per le prossime 24 ore tutte le mail che arriveranno a:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:6
+msgid "verranno redirette a:"
+msgstr ""
+
+#: ../../include/apteryx_text.php:7
+msgid "Creazione dell'alias fallita. Forse hai scritto male i dati, riprova."
+msgstr ""
+
+#: ../../include/apteryx_text.php:8
+msgid "Alias gia' esistente, riprova."
+msgstr ""
+
+#: ../../include/apteryx_text.php:9
+msgid "Email non valida"
+msgstr ""
+
+#: ../../include/apteryx_text.php:10
+msgid "Non esiste nessun alias per questa email"
+msgstr ""
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""
diff --git a/res/locale/otdblib.pot b/res/locale/otdblib.pot
new file mode 100644
index 0000000..482bc8c
--- /dev/null
+++ b/res/locale/otdblib.pot
@@ -0,0 +1,75 @@
+# OTDbLib template translation.
+# Copyright (C) 2013.
+# This file is distributed under the same license as the OTDbLib package.
+# gin(e) , 2013.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-08-16 15:53+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: Database.php:98
+msgid "Database connection problem."
+msgstr ""
+
+#: Database.php:122
+msgid "what shit?!"
+msgstr ""
+
+#: Database.php:139
+msgid "Database selection problem."
+msgstr ""
+
+#: Database.php:158
+msgid "Query select error."
+msgstr ""
+
+#: Database.php:174
+msgid "Your query returned "
+msgstr ""
+
+#: Database.php:178
+msgid "more than one result."
+msgstr ""
+
+#: Database.php:180
+msgid "less than one result."
+msgstr ""
+
+#: Database.php:197
+msgid "Your query returned more or less that one result."
+msgstr ""
+
+#: Database.php:222
+msgid "Your query return more than 1 element for row."
+msgstr ""
+
+#: Database.php:248
+#, php-format
+msgid "Your query return more than %s element for row."
+msgstr ""
+
+#: Database.php:269
+msgid "Query error."
+msgstr ""
+
+#: Database.php:285
+msgid "No row affected."
+msgstr ""
+
+#: Database.php:287
+msgid "More than 1 row are affected."
+msgstr ""
+
+#: Database.php:318
+msgid "Are present more than 1 row."
+msgstr ""