diff --git a/WebApp/_btn_back.php b/WebApp/_btn_back.php
index 3759151..1edc1fd 100644
--- a/WebApp/_btn_back.php
+++ b/WebApp/_btn_back.php
@@ -1,3 +1,3 @@
 <div class="div_btn_back">
-    <a href="landing.php" class="btn btn-lg btn-primary btn-block">Return to menu</a>
+    <a href="landing.php" class="btn btn-lg btn-primary btn-block"><?php echo $lang["return_to_menu"] ?></a>
 </div>
diff --git a/WebApp/_btn_logout.php b/WebApp/_btn_logout.php
index d31c89a..1130fd6 100644
--- a/WebApp/_btn_logout.php
+++ b/WebApp/_btn_logout.php
@@ -1,3 +1,3 @@
 <div class="div_btn_logout">
-    <a href="logout.php" class="btn btn-lg btn-success btn-block">Logout</a>
+    <a href="logout.php" class="btn btn-lg btn-success btn-block"><?php echo $lang["sec.logout"] ?></a>
 </div>
diff --git a/WebApp/_common.php b/WebApp/_common.php
index c765f30..91375ae 100644
--- a/WebApp/_common.php
+++ b/WebApp/_common.php
@@ -20,4 +20,4 @@
 if (!isset($b_debug))
 {
     $b_debug = false;
-}
+}
\ No newline at end of file
diff --git a/WebApp/functions.php b/WebApp/functions.php
index 2a2c607..c2f5118 100644
--- a/WebApp/functions.php
+++ b/WebApp/functions.php
@@ -6,6 +6,11 @@
     require_once 'configuration_user.php';
 }
 
+require_once 'languages/en.php';
+
+if (isset($language) && $language != 'en' && file_exists('languages/'.$language.'.php'))
+    include_once 'languages/'.$language.'.php';
+
 require_once 'functions_design.php';
 require_once 'functions_database.php';
 require_once 'functions_security.php';
diff --git a/WebApp/functions_costant.php b/WebApp/functions_costant.php
index ead576b..ede0146 100644
--- a/WebApp/functions_costant.php
+++ b/WebApp/functions_costant.php
@@ -103,4 +103,16 @@ public static function current_page_url ()
                 {$pageURL .= ':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];}
              return $pageURL;
             }
+
+        public static function uiLanguage ()
+            {
+                global $language;
+                return $language;
+            }
+
+        public static function lang ($Key)
+        {
+            global $lang;
+            return $lang[$Key];
+        }
     }
diff --git a/WebApp/functions_design.php b/WebApp/functions_design.php
index ec37410..119be2d 100644
--- a/WebApp/functions_design.php
+++ b/WebApp/functions_design.php
@@ -9,7 +9,7 @@ class design
     public static function input_date ($TrDateDefault)
         {
             echo "<div class='form-group'>";
-                echo "<label for='Date'>Date</label>";
+                echo '<label for="Date">'.costant::lang("trans.date").'</label>';
                 echo "<input id = 'Date' type='date' name='Date' class='form-control'   value = '${TrDateDefault}'/>";
                 echo "<span class='help-block'></span>";
             echo "</div>\n";
@@ -20,11 +20,18 @@ public static function input_date ($TrDateDefault)
     //Create status input element
     public static function input_status ($TrStatusDefault)
         {
-            $StatusArrayDesc = array ("None", "Reconciled", "Void", "Follow Up", "Duplicate");
+            $StatusArrayDesc = array (
+                costant::lang("trans.status.none"), 
+                costant::lang("trans.status.reconciled"),
+                costant::lang("trans.status.void"),
+                costant::lang("trans.status.follow-up"),
+                costant::lang("trans.status.duplicate")
+            );
+
             $StatusArrayDB = array ("", "R", "V", "F", "D");
 
             echo "<div class='form-group'>";
-                echo "<label for='Status'>Status</label>";
+                echo '<label for="Status">'.costant::lang("trans.status").'</label>';
                 echo "<select id ='Status' name='Status' class='form-control'>";
                 for ($i = 0; $i < sizeof($StatusArrayDesc); $i++)
                 {
@@ -42,24 +49,29 @@ public static function input_status ($TrStatusDefault)
     //Create type input element
     public static function input_type ($TrTypeDefault)
     {
-        $TypeArrayDesc = array ('Withdrawal', 'Deposit', 'Transfer');
+        $TypeArrayDesc = array (
+            costant::lang("trans.type.withdrawal"),
+            costant::lang("trans.type.deposit"),
+            costant::lang("trans.type.transfer")
+        );
+        $TypeArrayCode = array ('Withdrawal', 'Deposit', 'Transfer');
 
         echo '<div class="form-group">';
-            echo '<label for="Type">Type</label>';
+            echo '<label for="Type">'.costant::lang("trans.type").'</label>';
 #            echo '<select id="Type" name="Type" class="form-control" onchange="enable_element(\'ToAccount\',\'Type\',\'Transfer\'); disable_element(\'Payee\',\'Type\',\'Transfer\')">';
             $on_change = 'onchange="enable_element(\'ToAccount\',\'Type\',\'Transfer\'); disable_element(\'Payee\',\'Type\',\'Transfer\')"';
-            for ($i = 0; $i < sizeof($TypeArrayDesc); $i++)
+            for ($i = 0; $i < sizeof($TypeArrayCode); $i++)
             {
                 $is_selected = '';
-                if ($TypeArrayDesc[$i] == $TrTypeDefault)
+                if ($TypeArrayCode[$i] == $TrTypeDefault)
                 {
 #                    $is_selected = 'selected';
                     $is_selected = 'checked';
                 }
-                $element_id = 'Type_' . $TypeArrayDesc[$i];
+                $element_id = 'Type_' . $TypeArrayCode[$i];
                 $element_onchange = str_replace('Type', $element_id, $on_change);
 #                echo "<option value='${TypeArrayDesc[$i]}' $is_selected> ${TypeArrayDesc[$i]} </option>";
-                echo '<input type="radio" id="' . $element_id . '" name="Type" value="' . $TypeArrayDesc[$i] . '" ' . $element_onchange . $is_selected . '>';
+                echo '<input type="radio" id="' . $element_id . '" name="Type" value="' . $TypeArrayCode[$i] . '" ' . $element_onchange . $is_selected . '>';
                 echo '<label for="' . $element_id . '">' . $TypeArrayDesc[$i] . '</label>';
 
             }
@@ -77,7 +89,7 @@ public static function input_account ($TrAccountDefault)
                 {$AccountArrayDesc[0] = "None";}
 
             echo "<div class='form-group'>";
-                echo "<label for='Account'>Account</label>";
+                echo '<label for="Account">'.costant::lang("trans.account").'</label>';
                 echo "<select id ='Account' name='Account' class='form-control'>";
                 for ($i = 0; $i < sizeof($AccountArrayDesc); $i++)
                 {
@@ -99,7 +111,7 @@ public static function input_toaccount ($TrToAccountDefault)
             array_unshift($ToAccountArrayDesc,"None");
 
             echo "<div class='form-group'>";
-                echo "<label for='ToAccount'>To Account</label>";
+                echo '<label for="ToAccount">'.costant::lang("trans.to-account").'</label>';
                 echo "<select id ='ToAccount' name='ToAccount' class='form-control'>";
                 for ($i = 0; $i < sizeof($ToAccountArrayDesc); $i++)
                 {
@@ -121,8 +133,8 @@ public static function input_payee ($TrPayeeDefault)
             array_unshift($PayeeArrayDesc,"None");
 
             echo "<div class='form-group'>";
-                echo "<label for='Payee'>Payee</label>";
-                echo "<input id='Payee' type='text' name='Payee' class='form-control' placeholder='Choose a payee' autocomplete = 'off' required />";
+                echo '<label for="Payee">'.costant::lang("trans.payee").'</label>';
+                echo '<input id="Payee" type="text" name="Payee" class="form-control" placeholder="'.costant::lang("trans.payee.placeholder").'" autocomplete = "off" required />';
                 echo "<span class='help-block'></span>";
             echo "</div>\n";
 
@@ -142,8 +154,8 @@ public static function input_category ($TrCategoryDefault)
             array_unshift($CategoryArrayDesc,"None");
 
             echo "<div class='form-group'>";
-                echo "<label for='Category'>Category</label>";
-                echo "<input id='Category' type='text' name='Category' class='form-control' placeholder='Choose a category' autocomplete = 'off' required />";
+                echo '<label for="Category">'.costant::lang("trans.category").'</label>';
+                echo '<input id="Category" type="text" name="Category" class="form-control" placeholder="'.costant::lang("trans.category.placeholder").'" autocomplete = "off" required />';
                 echo "<span class='help-block'></span>";
             echo "</div>\n";
 
@@ -160,8 +172,8 @@ public static function input_category ($TrCategoryDefault)
     public static function input_subcategory ($TrSubCategoryDefault)
         {
             echo "<div class='form-group'>";
-                echo "<label for='SubCategory'>SubCategory</label>";
-                echo "<input id='SubCategory' type='text' name='SubCategory' class='form-control' placeholder='Choose a subcategory' autocomplete='off' />";
+                echo '<label for="SubCategory">'.costant::lang("trans.sub-category").'</label>';
+                echo '<input id="SubCategory" type="text" name="SubCategory" class="form-control" placeholder="'.costant::lang("trans.sub-category.placeholder").'" autocomplete="off" />';
                 echo "<span class='help-block'></span>";
             echo "</div>\n";
 
@@ -176,14 +188,14 @@ public static function input_subcategory ($TrSubCategoryDefault)
     public static function input_amount ($TrAmountDefault)
         {
             echo "<div class='form-group'>";
-                echo "<label for='Amount'>Amount</label>";
+                echo '<label for="Amount">'.costant::lang("trans.amount").'</label>';
                 if ($TrAmountDefault <> 0)
                     {
-                        echo "<input id='Amount' type='number' name='Amount' class='form-control' placeholder='New transaction amount' min='0.01' step ='0.01' value='${TrAmountDefault}' required />";
+                        echo "<input id='Amount' type='number' name='Amount' class='form-control' placeholder='".costant::lang("trans.amount.placeholder")."' min='0.01' step ='0.01' value='{$TrAmountDefault}' required />";
                     }
                 else
                     {
-                        echo "<input id='Amount' type='number' name='Amount' class='form-control' placeholder='New transaction amount' min='0.01' step ='0.01' required />";
+                        echo "<input id='Amount' type='number' name='Amount' class='form-control' placeholder='".costant::lang("trans.amount.placeholder")."' min='0.01' step ='0.01' required />";
                     }
                 echo "<span class='help-block'></span>";
             echo "</div>\n";
@@ -195,14 +207,14 @@ public static function input_amount ($TrAmountDefault)
     public static function input_notes ($TrNotesDefault)
         {
             echo "<div class='form-group'>";
-                echo "<label for='Notes'>Notes</label>";
+                echo '<label for="Notes">'.costant::lang("trans.notes").'</label>';
                 if ($TrNotesDefault <> "Empty")
                     {
-                        echo "<textarea id='Notes' name='Notes' class='form-control' rows='5' placeholder='New transaction notes'>${TrNotesDefault}</textarea>";
+                        echo "<textarea id='Notes' name='Notes' class='form-control' rows='5' placeholder='".costant::lang("trans.notes.placeholder")."'>{$TrNotesDefault}</textarea>";
                     }
                 else
                     {
-                        echo "<textarea id='Notes' name='Notes' class='form-control' rows='5' placeholder='New transaction notes'></textarea>";
+                        echo "<textarea id='Notes' name='Notes' class='form-control' rows='5' placeholder='".costant::lang("trans.notes.placeholder")."'></textarea>";
                     }
                 echo "<span class='help-block'></span>";
             echo "</div>\n";
@@ -263,10 +275,10 @@ public static function settings_checkbox ($VarName,$VarValue,$VarDescription)
 
 
     //Create password input element
-    public static function settings_password ($VarName,$PlaceHolder,$Required)
+    public static function settings_password ($VarName,$PlaceHolder,$Required,$Label)
         {
             echo "<div class='form-group'>";
-                echo "<label for='Set_${VarName}'>".str_replace("_"," ",$VarName)."</label>";
+                echo "<label for='Set_${VarName}'>$Label</label>";
                     if ($Required == True)
                         {
                             echo "<input id='Set_${VarName}' type='Password' name='Set_${VarName}' class='form-control' placeholder='${PlaceHolder}' required />";
@@ -286,7 +298,7 @@ public static function settings_default_account ($TrAccountDefault)
                 {$AccountArrayDesc[0] = "None";}
 
             echo "<div class='form-group'>";
-                echo "<label for='Default_Account'> Default Account</label>";
+                echo '<label for="Default_Account">'.costant::lang("settings.default-account").'</label>';
                 echo "<select id ='Default_Account' name='Default_Account' class='form-control'>";
                 for ($i = 0; $i < sizeof($AccountArrayDesc); $i++)
                 {
@@ -316,4 +328,24 @@ public static function table_cell ($value,$css_class,$s_extra='')
             echo $value;
             echo '</td>';
         }
+
+     //Create account input element
+     public static function settings_language ($Language)
+        {
+            $AvailableLanguages = array("en","it");
+
+            echo "<div class='form-group'>";
+                echo '<label for="Language">'.costant::lang("settings.language").'</label>';
+                echo "<select id ='Language' name='Language' class='form-control'>";
+                for ($i = 0; $i < sizeof($AvailableLanguages); $i++)
+                {
+                    if ($AvailableLanguages[$i] == $Language)
+                        {echo "<option value=\"{$AvailableLanguages[$i]}\" selected> {$AvailableLanguages[$i]} </option>";}
+                    else
+                        {echo "<option value=\"{$AvailableLanguages[$i]}\"> {$AvailableLanguages[$i]} </option>";}
+                }
+                echo "</select>";
+                echo "<span class='help-block'></span>";
+            echo "</div>\n";
+        }
 }
diff --git a/WebApp/functions_various.php b/WebApp/functions_various.php
index a7c184b..ea6d8d1 100644
--- a/WebApp/functions_various.php
+++ b/WebApp/functions_various.php
@@ -100,11 +100,11 @@ public static function getPageUrl() : String
     public static function getPagesList() : Array
     {
         $pages_list             = [
-                                    'new_transaction'   => 'New transaction',
-                                    'show'              => 'Show transactions',
-                                    'settings'          => 'Edit settings',
-                                    'guide'             => 'Guide',
-                                    'about'             => 'About',
+                                    'new_transaction'   => costant::lang("page.new-transaction"),
+                                    'show'              => costant::lang("page.show-transactions"),
+                                    'settings'          => costant::lang("page.settings"),
+                                    'guide'             => costant::lang("page.guide"),
+                                    'about'             => costant::lang("page.about")
                                     ];
         return $pages_list;
     }
diff --git a/WebApp/guide.php b/WebApp/guide.php
index c59f343..0a5e927 100644
--- a/WebApp/guide.php
+++ b/WebApp/guide.php
@@ -13,20 +13,20 @@
             <p>
                 <ol>
                     <li>
-                        Copy the data below and paste them into your desktop application.
+                        <?php echo $lang["guide.step1"] ?>
                     </li>
                     <li>
-                        Re-open desktop application to synchronise bank account(s), etc. to the WebApp from Desktop.
+                        <?php echo $lang["guide.step2"] ?>
                     </li>
                     <li>
-                        Start using the WebApp version.
+                        <?php echo $lang["guide.step3"] ?>
                     </li>
                 </ol>
             </p>
         </div>
         <div class="container text_align_center">
             <h4>
-                WebApp URL:
+                <?php echo $lang["guide.webapp-url"] ?>
             </h4>
             <p>
                 <strong>
@@ -35,7 +35,7 @@
             </p>
             <br />
             <h4>
-                Desktop GUID:
+                <?php echo $lang["guide.desktop-guid"] ?>
             </h4>
             <p>
                 <strong>
diff --git a/WebApp/index.php b/WebApp/index.php
index bb67210..aed6138 100644
--- a/WebApp/index.php
+++ b/WebApp/index.php
@@ -11,7 +11,7 @@
         $upgrade_result = db_upgrade::upgrade_db();
         if ($upgrade_result == 'update_done')
             {
-                various::send_alert_and_redirect('Database succesfully updated to version '.costant::app_version(), 'index.php');
+                various::send_alert_and_redirect($lang["db_successfully_updated_to_version"].costant::app_version(), 'index.php');
             }
     }
 $username = null;
@@ -71,17 +71,17 @@
         <div class="container text_align_center">
             <form id="login" method="post">
                 <div class="form-group">
-                    <label for="Username">Username</label>
-                    <input id="Username" type="text" name="Username" class="form-control" placeholder="Insert Username" autofocus required />
+                    <label for="Username"><?php echo $lang["sec.username"]; ?></label>
+                    <input id="Username" type="text" name="Username" class="form-control" placeholder="<?php echo $lang["sec.username.placeholder"] ?>"" autofocus required />
                     <span class="help-block"></span>
                 </div>
                 <div class="form-group">
-                    <label for="Password">Password</label>
-                    <input id="Password" type="password" name="Password" class="form-control" placeholder="Insert Password" required />
+                    <label for="Password"><?php echo $lang["sec.password"]; ?></label>
+                    <input id="Password" type="password" name="Password" class="form-control" placeholder="<?php echo $lang["sec.password.placeholder"] ?>" required />
                     <span class="help-block"></span>
                 </div>
                 <br />
-                <button type="submit" id="Login" name="Login" class="btn btn-lg btn-success btn-block" value = "Login">Login</button>
+                <button type="submit" id="Login" name="Login" class="btn btn-lg btn-success btn-block" value = "Login"><?php echo $lang["sec.login"] ?></button>
             </form>
         </div>
 <?php
diff --git a/WebApp/insert.php b/WebApp/insert.php
index 3ec5d8f..a8ca448 100644
--- a/WebApp/insert.php
+++ b/WebApp/insert.php
@@ -8,18 +8,20 @@
     $TrEditedNr = $_POST["TrEditedNr"];
 }
 
+include_once '_common.php';
+
 switch ($TrEditedNr)
 {
     case -1:    
-        $s_page_title = 'New Transaction';
+        $s_page_title = $lang["page.transaction.added"];
         $transaction_action = 'added';
     break;
     case 0:     
-        $s_page_title = 'Existing Transaction';
+        $s_page_title = $lang["page.transaction.duplicated"];
         $transaction_action = 'duplicated';
     break;
     default:    
-        $s_page_title = 'Existing Transaction';
+        $s_page_title = $lang["page.transaction.updated"];
         $transaction_action = 'updated';
     break;
 }
@@ -27,7 +29,6 @@
 $a_head_js_add[]        = '<script src="res/app/base-1.0.4.js" type="text/javascript"></script>';
 $a_head_css_add[]       = '<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">';
 
-include_once '_common.php';
 include_once '_header.php';
 
 
@@ -84,13 +85,13 @@
                 check_box
             </i>
             <h3>
-                <?php echo ucfirst($transaction_action); ?> successfully
+                <?php echo $lang["trans.msg.action-".$transaction_action.".successfully"] ?> 
             </h3>
             <br />
             <br />
-            <a href="new_transaction.php" class="btn btn-lg btn-success btn-block">Add next</a>
+            <a href="new_transaction.php" class="btn btn-lg btn-success btn-block"><?php echo $lang["trans.msg.add-next"] ?></a>
             <br />
-            <a href="show.php" class="btn btn-lg btn-success btn-block">Show transactions</a>
+            <a href="show.php" class="btn btn-lg btn-success btn-block"><?php echo $lang["page.show-transactions"] ?></a>
             <br />
         </div>
 		
diff --git a/WebApp/languages/en.php b/WebApp/languages/en.php
new file mode 100644
index 0000000..4200080
--- /dev/null
+++ b/WebApp/languages/en.php
@@ -0,0 +1,104 @@
+<?php 
+//ENGLISH
+
+$lang["page.new-transaction"] = "New transaction";
+$lang["page.transaction.added"] = "New Transaction";
+$lang["page.transaction.duplicated"] = "Existing Transaction";
+$lang["page.transaction.updated"] = "Existing Transaction";
+$lang["page.show-transactions"] = "Show transactions";
+$lang["page.settings"] = "Edit settings";
+$lang["page.settings.new"] = "New settings";
+$lang["page.guide"] = "Guide";
+$lang["page.about"] = "About";
+
+$lang["sec.username"] = "Username";
+$lang["sec.username.placeholder"] = "Insert Username";
+$lang["sec.password"] = "Password";
+$lang["sec.password.placeholder"] = "Insert Password";
+$lang["sec.login"] = "Login";
+$lang["sec.logout"] = "Logout";
+
+$lang["return_to_menu"] = "Return to menu";
+
+$lang["db_successfully_updated_to_version"] = "Database successfully updated to version ";
+
+$lang["trans.msg.add-next"] = "Add next";
+$lang["trans.msg.action-added.successfully"] = "Added successfully";
+$lang["trans.msg.action-duplicated.successfully"] = "Duplicated successfully";
+$lang["trans.msg.action-updated.successfully"] = "Updated successfully";
+
+$lang["trans.new.header"] = "Creating new transaction";
+$lang["trans.new.submit"] = "Create transaction";
+$lang["trans.update.header"] = "Editing transaction";
+$lang["trans.update.submit"] = "Update transaction";
+$lang["trans.duplicate.header"] = "Duplicating transaction";
+$lang["trans.duplicate.submit"] = "Create duplicate";
+$lang["trans.upload.label"] = "Take a picture or upload attachments";
+
+$lang["trans.date"] = "Date";
+$lang["trans.status"] = "Status";
+$lang["trans.status.none"] = "None";
+$lang["trans.status.reconciled"] = "Reconciled";
+$lang["trans.status.void"] = "Void";
+$lang["trans.status.follow-up"] = "Follow Up";
+$lang["trans.status.duplicate"] = "Duplicate";
+$lang["trans.type"] = "Type";
+$lang["trans.type.withdrawal"] = "Withdrawal";
+$lang["trans.type.deposit"] = "Deposit";
+$lang["trans.type.transfer"] = "Transfer";
+$lang["trans.account"] = "Account";
+$lang["trans.to-account"] = "To Account";
+$lang["trans.payee"] = "Payee";
+$lang["trans.payee.placeholder"] = "Choose a payee";
+$lang["trans.category"] = "Category";
+$lang["trans.category.placeholder"] = "Choose a category";
+$lang["trans.sub-category"] = "SubCategory";
+$lang["trans.sub-category.placeholder"] = "Choose a subcategory";
+$lang["trans.amount"] = "Amount";
+$lang["trans.amount.placeholder"] = "New transaction amount";
+$lang["trans.notes"] = "Notes";
+$lang["trans.notes.placeholder"] = "New transaction notes";
+
+$lang["settings.new"] = "Provide new settings to start using Money Manager EX";
+$lang["settings.default-account"] = "Default Account";
+$lang["settings.language"] = "Language";
+$lang["settings.save"] = "Save Settings";
+$lang["settings.apply"] = "Apply Settings";
+
+$lang["settings.authentication.section"] = "Authentication";
+$lang["settings.authentication.disable"] = "Disable authentication (NOT RECOMMENDED)";
+$lang["settings.authentication.username.placeholder"] = "Insert a new username";
+$lang["settings.authentication.password.update.placeholder"] = "To change insert a new password";
+$lang["settings.authentication.password.new.placeholder"] = "Insert a password";
+$lang["settings.authentication.password.confirm.placeholder"] = "Confirm new password";
+
+$lang["settings.new-trans.section"] = "New transactions";
+$lang["settings.new-trans.disable-payee.placeholder"] = "Disable payees management";
+$lang["settings.new-trans.disable-category.placeholder"] = "Disable categories management";
+
+$lang["settings.new-trans.section"] = "Desktop integration";
+
+$lang["guide.step1"] = "Copy the data below and paste them into your desktop application.";
+$lang["guide.step2"] = "Re-open desktop application to synchronize bank account(s), etc. to the WebApp from Desktop.";
+$lang["guide.step3"] = "Start using the WebApp version.";
+$lang["guide.webapp-url"] = "WebApp URL";
+$lang["guide.desktop-guid"] = "Desktop GUID";
+
+$lang["show.no_pending_trans"] = "No pending transactions";
+$lang["show.current_pending_trans"] = "Current pending transactions";
+$lang["show.delete_all_selected"] = "Delete all selected";
+$lang["show.add_new"] = "Add new";
+$lang["show.delete"] = "Delete";
+$lang["show.new"] = "New transaction";
+$lang["show.no_trans_selected"] = "No transaction selected!";
+
+/*
+ * THESE TRANSLATIONS ARE STILL NOT USED.
+ * THEY ARE READY FOR JAVASCRIPT FILES: functions-1.2.0.js and new_transaction-1.0.4.js
+ */
+$lang["browser_not_support_html5"] = "Seems that the browser doesn't fully supports HTML5\n\nPlease make attention because it doesn't validate fields!";
+$lang["sec.password_not_matching"] = "Password doesn't match!";
+$lang["attachment.upload_failed"] = "There was an error attempting to upload the file.";
+$lang["attachment.upload_canceled"] = "The upload has been canceled by the user or the browser dropped the connection.";
+$lang["trans.msg.not_all_fields_are_valid"] = "Not all fields are valid";
+$lang["trans.msg.do_you_want_to_add_new_payee"] = "Do you want to add the new payee";
\ No newline at end of file
diff --git a/WebApp/languages/it.php b/WebApp/languages/it.php
new file mode 100644
index 0000000..ebb07ec
--- /dev/null
+++ b/WebApp/languages/it.php
@@ -0,0 +1,104 @@
+<?php 
+//ITALIANO
+
+$lang["page.new-transaction"] = "Nuova operazione";
+$lang["page.transaction.added"] = "Nuova Operazione";
+$lang["page.transaction.duplicated"] = "Operazione esistente";
+$lang["page.transaction.updated"] = "Operazione esistente";
+$lang["page.show-transactions"] = "Lista operazioni";
+$lang["page.settings"] = "Impostazioni";
+$lang["page.settings.new"] = "Nuove impostazioni";
+$lang["page.guide"] = "Guida";
+$lang["page.about"] = "Info";
+
+$lang["sec.username"] = "Username";
+$lang["sec.username.placeholder"] = "Inserisci lo Username";
+$lang["sec.password"] = "Password";
+$lang["sec.password.placeholder"] = "Inserisci la Password";
+$lang["sec.login"] = "Accedi";
+$lang["sec.logout"] = "Esci";
+
+$lang["return_to_menu"] = "Ritorna al menu";
+
+$lang["db_successfully_updated_to_version"] = "Database aggiornato con successo alla versione ";
+
+$lang["trans.msg.add-next"] = "Aggiungi altra operazione";
+$lang["trans.msg.action-added.successfully"] = "Aggiunta con successo";
+$lang["trans.msg.action-duplicated.successfully"] = "Duplicata con successo";
+$lang["trans.msg.action-updated.successfully"] = "Aggiornata con successo";
+
+$lang["trans.new.header"] = "Crea nuova operazione";
+$lang["trans.new.submit"] = "Crea";
+$lang["trans.update.header"] = "Modifica operazione";
+$lang["trans.update.submit"] = "Aggiorna";
+$lang["trans.duplicate.header"] = "Duplica operazione";
+$lang["trans.duplicate.submit"] = "Duplica";
+$lang["trans.upload.label"] = "Fai una foto o carica allegati";
+
+$lang["trans.date"] = "Data";
+$lang["trans.status"] = "Stato";
+$lang["trans.status.none"] = "Non Riconciliata";
+$lang["trans.status.reconciled"] = "Riconciliata";
+$lang["trans.status.void"] = "Nulla";
+$lang["trans.status.follow-up"] = "Da Monitorare";
+$lang["trans.status.duplicate"] = "Duplicata";
+$lang["trans.type"] = "Tipo";
+$lang["trans.type.withdrawal"] = "Prelievo";
+$lang["trans.type.deposit"] = "Deposito";
+$lang["trans.type.transfer"] = "Trasferimento";
+$lang["trans.account"] = "Conto";
+$lang["trans.to-account"] = "Al Conto";
+$lang["trans.payee"] = "Beneficiario";
+$lang["trans.payee.placeholder"] = "Scegli un beneficiario";
+$lang["trans.category"] = "Categoria";
+$lang["trans.category.placeholder"] = "Scegli una categoria";
+$lang["trans.sub-category"] = "Sotto-Categoria";
+$lang["trans.sub-category.placeholder"] = "Scegli una sotto-categoria";
+$lang["trans.amount"] = "Importo";
+$lang["trans.amount.placeholder"] = "Importo operazione";
+$lang["trans.notes"] = "Note";
+$lang["trans.notes.placeholder"] = "Eventuali note";
+
+$lang["settings.new"] = "Fornisci le nuove impostazioni per iniziare ad usare Money Manager EX";
+$lang["settings.default-account"] = "Account di default";
+$lang["settings.language"] = "Lingua";
+$lang["settings.save"] = "Salva";
+$lang["settings.apply"] = "Applica";
+
+$lang["settings.authentication.section"] = "Autenticazione";
+$lang["settings.authentication.disable"] = "Disattiva l'autenticazione (NON RACCOMANDATO)";
+$lang["settings.authentication.username.placeholder"] = "Inserisci un nuovo username";
+$lang["settings.authentication.password.update.placeholder"] = "Inserisci una nuova password per cambiarla";
+$lang["settings.authentication.password.new.placeholder"] = "Inserisci una password";
+$lang["settings.authentication.password.confirm.placeholder"] = "Conferma la nuova password";
+
+$lang["settings.new-trans.section"] = "Nuove transazioni";
+$lang["settings.new-trans.disable-payee.placeholder"] = "Disattiva la gestione del beneficiario";
+$lang["settings.new-trans.disable-category.placeholder"] = "Disattiva la gestione della categoria";
+$lang["settings.new-trans.section"] = "Integrazione desktop";
+
+$lang["guide.step1"] = "Copia le informazioni qui sotto e incollale nell'applicazione desktop.";
+$lang["guide.step2"] = "Riapri l'applicazione desktop per sincronizzare i conti, i beneficiari, etc. sulla WebApp.";
+$lang["guide.step3"] = "Inizia ad usare la WebApp.";
+
+$lang["guide.webapp-url"] = "WebApp URL:";
+$lang["guide.desktop-guid"] = "Desktop GUID:";
+
+$lang["show.no_pending_trans"] = "Nessuna operazione in sospeso";
+$lang["show.current_pending_trans"] = "Operazioni in sospeso";
+$lang["show.delete_all_selected"] = "Cancella le righe selezionate";
+$lang["show.add_new"] = "Nuova operazione";
+$lang["show.delete"] = "Cancella";
+$lang["show.new"] = "Nuova operazione";
+$lang["show.no_trans_selected"] = "Nessuna operazione selezionata!";
+
+/*
+ * THESE TRANSLATIONS ARE STILL NOT USED.
+ * THEY ARE READY FOR JAVASCRIPT FILES: functions-1.2.0.js and new_transaction-1.0.4.js
+ */
+$lang["browser_not_support_html5"] = "Sembra che il browser non supporti l'HTML5\n\nPresta attenzione perché i campi non verranno validati!";
+$lang["sec.password_not_matching"] = "La password non corrisponde!";
+$lang["attachment.upload_failed"] = "Si è verificato un errore al caricamento del file.";
+$lang["attachment.upload_canceled"] = "Il caricamento è stato annullato dall'utente o il browser ha interrotto la connessione.";
+$lang["trans.msg.not_all_fields_are_valid"] = "Alcuni campi non sono validi";
+$lang["trans.msg.do_you_want_to_add_new_payee"] = "Confermi la creazione del nuovo beneficiario";
\ No newline at end of file
diff --git a/WebApp/new_transaction.php b/WebApp/new_transaction.php
index 2fe3d19..31738c8 100644
--- a/WebApp/new_transaction.php
+++ b/WebApp/new_transaction.php
@@ -3,23 +3,25 @@
 $b_restricted_auth  = true;
 $transaction_name   = '';
 
+require_once 'functions.php';
+
 $TrEditNr = 0;
-$TransactionHeaderText = 'Creating new transaction';
-$TransactionSubmit = 'Create transaction';
+$TransactionHeaderText = $lang["trans.new.header"];
+$TransactionSubmit = $lang["trans.new.submit"];
 $FlagNew = true;
 
 if (isset($_GET['TrEditNr']))
 {
     $TrEditNr = $_GET['TrEditNr'];
-    $TransactionHeaderText = 'Editing transaction';
-    $TransactionSubmit = 'Update transaction';
+    $TransactionHeaderText = $lang["trans.update.header"];
+    $TransactionSubmit = $lang["trans.update.submit"];
     $FlagNew = false;
 }
 elseif (isset($_GET['TrDuplicateNr']))
 {
     $TrEditNr = $_GET['TrDuplicateNr'];
-    $TransactionHeaderText = 'Duplicating transaction';
-    $TransactionSubmit = 'Create duplicate';
+    $TransactionHeaderText = $lang["trans.duplicate.header"];
+    $TransactionSubmit = $lang["trans.duplicate.submit"];
 }
 
 $s_page_title           = $TransactionHeaderText;
@@ -104,7 +106,7 @@
                     design::input_notes($TransactionNotes);
                     
                     echo "<div class='form-group'>";
-                        echo '<label class="width100" for="fileToUpload">Take a picture or upload attachments</label><br />';
+                        echo "<label class='width100' for='fileToUpload'>{$lang["trans.upload.label"]}</label><br />";
                         echo "<input type='file' name='fileToUpload' id='fileToUpload' onchange='attachment_uploadFile(${TrEditNr});' />";
                         echo "<span class='help-block'></span>";
                     echo "</div>\n";
@@ -134,7 +136,7 @@
                                 echo "populate_sub_category(false);";
                             echo "</script>";
                         }
-                    echo "<button type='submit' id='SubmitButton' name='SubmitButton' class='btn btn-lg btn-success btn-block'>${TransactionSubmit}</button>";
+                    echo "<button type='submit' id='SubmitButton' name='SubmitButton' class='btn btn-lg btn-success btn-block'>{$TransactionSubmit}</button>";
 
                 echo "</form>";
             echo "</div>\n";
diff --git a/WebApp/res/app/new_transaction-1.0.4.js b/WebApp/res/app/new_transaction-1.0.4.js
index d506cd6..d8b7bb7 100644
--- a/WebApp/res/app/new_transaction-1.0.4.js
+++ b/WebApp/res/app/new_transaction-1.0.4.js
@@ -49,7 +49,7 @@ var transactions = {
                 submit_form = true;
             }else{
                 form.find(':invalid').first().focus();
-                alert('Not all fields are valid');
+                alert("Not all fields are valid");
             }
 
             // Confirm add new payee
diff --git a/WebApp/settings.php b/WebApp/settings.php
index 7435c1d..049000c 100644
--- a/WebApp/settings.php
+++ b/WebApp/settings.php
@@ -5,7 +5,12 @@
 include_once '_common.php';
 
 if ($_SERVER["REQUEST_METHOD"] == "POST")
-    {        
+    {   
+        if (isset ($_POST["Language"]))
+            {$language = $_POST["Language"];}
+            else
+            {$language = "en";}
+
         if (isset ($_POST["Set_Disable_authentication"]))
             {$disable_authentication = $_POST["Set_Disable_authentication"];}
             else
@@ -42,6 +47,7 @@
         
         $parameterarray = array
             (
+                "language"              => $language,
                 "disable_authentication"=> $disable_authentication,
                 "user_username"         => $username,
                 "user_password"         => $password,
@@ -65,9 +71,11 @@
 
 $is_edit                = (isset($const_username) AND isset($const_password));
 
+$s_page_title = $lang["page.settings"];
+
 if (!$is_edit)
 {
-    $s_page_title           = 'New settings';
+    $s_page_title           = $lang["page.settings.new"];
     $b_page_logo            = true;
 
 }
@@ -79,13 +87,14 @@
         <?php
             if (!$is_edit) :
         ?>
-        <h3 class="text_align_center">Provide new settings to start using Money Manager EX</h3>
+        <h3 class="text_align_center"><?php echo $lang["settings.new"] ?></h3>
         <?php
             endif;
         ?>
         <br />
         <form id="login" method="post" action="settings.php">
             <?php
+                $const_uiLanguage = costant::uiLanguage();
                 $const_disable_authentication = costant::disable_authentication();
                 $const_username = costant::login_username();
                 $const_password = costant::login_password();
@@ -94,37 +103,44 @@
                 $const_disable_category = costant::disable_category();
                 $const_defaultaccountname = costant::transaction_default_account();
                 
+                //SECTION LANGUAGE
+                if  ($const_uiLanguage)
+                    {design::settings_language($const_uiLanguage);}
+                    else
+                    {design::settings_language("en");}
+                echo "<br />";
+
                 //SECTION AUTHENTICATION
-                design::section_legened("Authentication");
+                design::section_legened($lang["settings.authentication.section"]);
                     if ($const_disable_authentication == True)
-                        {design::settings_checkbox("Set_Disable_authentication",True,"Disable authentication (Not recommended)");}
+                        {design::settings_checkbox("Set_Disable_authentication",True,$lang["settings.authentication.disable"]);}
                         else
-                        {design::settings_checkbox("Set_Disable_authentication",False,"Disable authentication (Not recommended)");}
+                        {design::settings_checkbox("Set_Disable_authentication",False,$lang["settings.authentication.disable"]);}
 
                     if (isset($const_username) && $const_disable_authentication == False)
                         {design::settings("Username",$const_username,"","Text",True);}
                         else
-                        {design::settings("Username","","Insert a new username","Text",True);}
+                        {design::settings("Username","",$lang["sec.username.placeholder"] ,"Text",True);}
                     
                     if (isset($const_password) && $const_disable_authentication == False)
-                        {design::settings_password("Password","To change insert a new password",False);}
+                        {design::settings_password("Password",$lang["settings.authentication.password.update.placeholder"],False,"Password");}
                         else
-                        {design::settings_password("Password","Insert a password",True);}
+                        {design::settings_password("Password",$lang["settings.authentication.password.new.placeholder"],True,"Password");}
             
-                    design::settings_password("Confirm_Password","Confirm new password",False);
+                    design::settings_password("Confirm_Password",$lang["settings.authentication.password.confirm.placeholder"],False,"Conferma Password");
                 echo "<br />";
                 
                 //SECTION NEW TRANSACTIONS
-                design::section_legened("New transactions");
+                design::section_legened($lang["settings.new-trans.section"]);
                     if ($const_disable_payee == True)
-                        {design::settings_checkbox("Set_Disable_payee",True,"Disable payees management");}
+                        {design::settings_checkbox("Set_Disable_payee",True,$lang["settings.new-trans.disable-payee.placeholder"]);}
                         else
-                        {design::settings_checkbox("Set_Disable_payee",False,"Disable payees management");}
+                        {design::settings_checkbox("Set_Disable_payee",False,$lang["settings.new-trans.disable-payee.placeholder"]);}
                         
                     if ($const_disable_category == True)
-                        {design::settings_checkbox("Set_Disable_category",True,"Disable categories management");}
+                        {design::settings_checkbox("Set_Disable_category",True,$lang["settings.new-trans.disable-category.placeholder"]);}
                         else
-                        {design::settings_checkbox("Set_Disable_category",False,"Disable categories management");}
+                        {design::settings_checkbox("Set_Disable_category",False,$lang["settings.new-trans.disable-category.placeholder"]);}
                     
                     if (isset($const_defaultaccountname))
                         {design::settings_default_account($const_defaultaccountname);}
@@ -133,7 +149,7 @@
                 echo "<br />";
                 
                 //SECTION DESKTOP INTEGRATION
-                design::section_legened("Desktop integration");
+                design::section_legened($lang["settings.new-trans.section"]);
                     if (isset($const_desktop_guid))
                         {design::settings("Guid",$const_desktop_guid,"","Text",True);}
                         else
@@ -170,13 +186,13 @@ function Disable_Authentication()
             <?php
                 if (isset($const_username) AND isset($const_password))
                     {
-                        echo ('<button type="button" id="EditSettings" name="EditSettings" class="btn btn-lg btn-success btn-block" onclick="check_password_match_and_submit(\'Set_Password\',\'Set_Confirm_Password\',\'login\')">Save Settings</button>');
+                        echo ('<button type="button" id="EditSettings" name="EditSettings" class="btn btn-lg btn-success btn-block" onclick="check_password_match_and_submit(\'Set_Password\',\'Set_Confirm_Password\',\'login\')">'.$lang["settings.save"].'</button>');
                         echo '<br />';
-                        echo ('<a href="landing.php" class="btn btn-lg btn-success btn-block">Return to menu</a>');
+                        echo ('<a href="landing.php" class="btn btn-lg btn-success btn-block">'.$lang['return_to_menu'].'</a>');
                     }
                 else
                     {
-                        echo ('<button type="button" id="EditSettings" name="EditSettings" class="btn btn-lg btn-success btn-block" onclick="check_password_match_and_submit(\'Set_Password\',\'Set_Confirm_Password\',\'login\')">Apply Settings</button>');
+                        echo ('<button type="button" id="EditSettings" name="EditSettings" class="btn btn-lg btn-success btn-block" onclick="check_password_match_and_submit(\'Set_Password\',\'Set_Confirm_Password\',\'login\')">'.$lang["settings.apply"].'</button>');
                     }
                 echo '<br />';
                 echo '<br />';
diff --git a/WebApp/show.php b/WebApp/show.php
index 6195297..7c6d319 100644
--- a/WebApp/show.php
+++ b/WebApp/show.php
@@ -6,6 +6,8 @@
 $a_head_js_add[]      = '<script src="res/app/show-1.1.0.js" type="text/javascript"></script>';
 
 include_once '_common.php';
+
+$s_page_title = $lang["page.show-transactions"];    
 include_once '_header.php';
 
 function drawRecordRow(Array $a_transaction, String $s_date) : void
@@ -101,7 +103,7 @@ function drawRecordRow(Array $a_transaction, String $s_date) : void
 
     $resultarray = db_function::transaction_select_all_order_by_date('DESC');
     echo '<div class="container">';
-        echo '<h3 class="text_align_center">' . (count($resultarray) == 0 ? 'No' : 'Current'). ' pending transaction' . (count($resultarray) != 1 ? 's' : ''). '</h3>';
+        echo '<h3 class="text_align_center">' . (count($resultarray) == 0 ? $lang["show.no_pending_trans"] : $lang["show.current_pending_trans"]). '</h3>';
         echo '<br />';
         echo '<div class="table-responsive">';
 
@@ -116,27 +118,27 @@ function drawRecordRow(Array $a_transaction, String $s_date) : void
             /**
              *  delete button
              */
-            echo '<button type="submit" id="TrDelete" name="btn_action" value="Delete" class="btn btn-lg btn-danger btn-block">Delete all selected</button>';
+            echo "<button type='submit' id='TrDelete' name='btn_action' value='Delete' class='btn btn-lg btn-danger btn-block'>{$lang["show.delete_all_selected"]}</button>";
 
             /**
              *  new button
              */
-            echo '<input type="button" class="btn btn-lg btn-success btn-block" id="btn_new" value="New transaction" onclick='."'top.location.href = ".'"new_transaction.php"'."' />";
+            echo '<input type="button" class="btn btn-lg btn-success btn-block" id="btn_new" value="'.$lang["show.new"].'" onclick='."'top.location.href = ".'"new_transaction.php"'."' />";
             echo '<br />';
 
             echo '<table class="table table-hover table-condensed">';
             #echo '<table class = "table table-hover table-condensed table-bordered">'; //TABLE BORDERED FOR DEBUG
                 echo '<thead>';
                     echo '<tr>';
-                        echo "<th class='text_align_center'><span class='glyphicon glyphicon-trash'></span> <span class='transaction-extra-columns'>Delete</span></th>";
-                        echo "<th class=''><span class='glyphicon glyphicon-info-sign'></span> <span class='transaction-extra-columns'>Type</span></th>";
-                        echo '<th class="text_align_right">Amount</th>';
-                        echo '<th class="text_align_center">Notes</th>';
-                        echo '<th>Account</th>';
+                        echo "<th class='text_align_center'><span class='glyphicon glyphicon-trash'></span> <span class='transaction-extra-columns'>{$lang["show.delete"]}</span></th>";
+                        echo "<th class=''><span class='glyphicon glyphicon-info-sign'></span> <span class='transaction-extra-columns'>{$lang["trans.type"]}</span></th>";
+                        echo "<th class='text_align_right'>{$lang["trans.amount"]}</th>";
+                        echo "<th class='text_align_center'>{$lang["trans.notes"]}</th>";
+                        echo "<th>{$lang["account"]}</th>";
                         if (costant::disable_payee() == False)
-                            {echo "<th class='transaction-extra-columns'>Payee</th>";}
+                            {echo "<th class='transaction-extra-columns'>{$lang["trans.payee"]}</th>";}
                         if (costant::disable_category() == False)
-                            {echo '<th>Category</th>';}
+                            {echo "<th>{$lang["trans.category"]}</th>";}
                     echo '</tr>';
                 echo '</thead>';
                 
@@ -159,10 +161,10 @@ function drawRecordRow(Array $a_transaction, String $s_date) : void
 else: ?>
 
     <div class="container">
-        <h3 class="text_align_center">No pending transactions</h3>
+        <h3 class="text_align_center"><?php echo $lang["show.no_pending_trans"] ?></h3>
         <br />
         <br />
-        <a href="new_transaction.php" class="btn btn-lg btn-success btn-block">Add new</a>
+        <a href="new_transaction.php" class="btn btn-lg btn-success btn-block"><?php echo $lang["show.add_new"] ?></a>
 
 <?php
 
diff --git a/WebApp/show_function.php b/WebApp/show_function.php
index 5dd3fc5..78c7834 100644
--- a/WebApp/show_function.php
+++ b/WebApp/show_function.php
@@ -20,7 +20,7 @@
         
         if(!isset($_POST['TrDelete']) && $btn_action == 'Delete')
             {   
-                $test = various::send_alert_and_redirect('No transaction selected!', 'show.php');
+                $test = various::send_alert_and_redirect(costant::lang("show.no_trans_selected"), 'show.php');
             }
         
         if(isset($_POST['TrEdit']) && in_array($btn_action, ['Edit', 'Duplicate']))
@@ -32,6 +32,6 @@
             
         if(!isset($_POST['TrEdit']) && $btn_action == 'Edit')
             {   
-                $test = various::send_alert_and_redirect('No transaction selected!', 'show.php');
+                $test = various::send_alert_and_redirect(costant::lang("show.no_trans_selected"), 'show.php');
             }
     }