Added multilanguage support.
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Sun, 8 Aug 2010 11:21:14 +0000 (11:21 +0000)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Sun, 8 Aug 2010 11:21:14 +0000 (11:21 +0000)
install/index.php
install/isession.inc

index e6d32f54844bf9ac55daf6a04ccdd77445e327fb..e42df56b173ffafd79dbd7c657a2c24b5821de62 100644 (file)
@@ -17,14 +17,13 @@ if (file_exists($path_to_root.'/config_db.php'))
 
 include($path_to_root . "/install/isession.inc");
 
-page(_($help_context = "FrontAccouting ERP Installation Wizard"), true, false, "", '', false,
-       'stylesheet.css');
+page(_("FrontAccouting ERP Installation Wizard"), true, false, "", '', false, 'stylesheet.css');
 
 include($path_to_root . "/includes/ui.inc");
 include($path_to_root . "/includes/system_tests.inc");
 include($path_to_root . "/admin/db/maintenance_db.inc");
 include($path_to_root . "/includes/packages.inc");
-include($path_to_root . "/installed_extensions.php");
+@include($path_to_root . "/installed_extensions.php");
 //-------------------------------------------------------------------------------------------------
 
 function subpage_title($txt) 
@@ -33,6 +32,7 @@ function subpage_title($txt)
        
        echo '<center><img src="'.$path_to_root.'/themes/default/images/logo_frontaccounting.png" width="250" height="50" alt="Logo" />
                </center>';
+
        $page = @$_POST['Page'] ? $_POST['Page'] : 1;
 
        display_heading(
@@ -61,10 +61,8 @@ function display_coas()
                label_cell($coa['name']);
                label_cell($coa['encoding']);
                label_cell(is_array($coa['Descr']) ? implode('<br>', $coa['Descr']) :  $coa['Descr']);
-               if ($installed)
-                       label_cell(_("Installed"));
-               else
-                       check_cells(null, 'coas['.$coa['package'].']');
+               label_cell($installed ?
+                       _("Installed") : checkbox(null, 'coas['.$coa['package'].']'), "align='center'");
 
                end_row();
        }
@@ -91,16 +89,29 @@ function display_langs()
                label_cell($lang['name']);
                label_cell($lang['encoding']);
                label_cell(is_array($lang['Descr']) ? implode('<br>', $lang['Descr']) :  $lang['Descr']);
-               if ($installed)
-                       label_cell(_("Installed"));
-               else
-                       check_cells(null, 'langs['.$lang['package'].']');
-
+               label_cell($installed ?
+                       _("Installed") : checkbox(null, 'langs['.$lang['package'].']'), "align='center'");
                end_row();
        }
        end_table(1);
 }
 
+function instlang_list_row($label, $name, $value=null) {
+
+       global $inst_langs;
+
+       $langs = array();
+       foreach ($inst_langs as $n => $lang)
+                       $langs[$n] = $lang['name'];
+
+       echo "<td>$label</td>\n" . "<td>\n" 
+               .array_selector($name, $value, $langs, 
+                       array(
+                               'select_submit' => true,
+                               'async' => true
+                       )) . "</td>\n";
+}
+
 function install_connect_db() {
 
        global $db;
@@ -142,7 +153,7 @@ function do_install() {
                        'password' => md5($con['pass'])));
 
                if (!copy($path_to_root. "/config.default.php", $path_to_root. "/config.php")) {
-                       display_error(_("Cannot save system configuration file config.php"));
+                       display_error(_("Cannot save system configuration file 'config.php'."));
                        return false;
                }
 
@@ -159,13 +170,13 @@ function do_install() {
                $err = write_config_db($table_prefix != "");
 
                if ($err == -1) {
-                       display_error(_("Cannot open the config_db.php configuration file:"));
+                       display_error(_("Cannot open 'config_db.php' configuration file."));
                        return false;
                } else if ($err == -2) {
-                       display_error(_("Cannot write to the config_db.php configuration file"));
+                       display_error(_("Cannot write to the 'config_db.php' configuration file."));
                        return false;
                } else if ($err == -3) {
-                       display_error(_("The configuration file config_db.php is not writable. Change its permissions so it is, then re-run step 5."));
+                       display_error(_("Configuration file 'config_db.php' is not writable. Change its permissions so it is, then re-run installation step."));
                        return false;
                }
                // update default language
@@ -186,6 +197,7 @@ if (!isset($_SESSION['inst_set']))  // default settings
                'username' => 'admin',
                'tbpref' => '0_',
                'admin' => 'admin',
+               'inst_lang' => 'C'
        );
 
 if (!@$_POST['Tests'])
@@ -202,15 +214,15 @@ elseif (isset($_POST['continue'])) {
 }
 elseif (isset($_POST['db_test'])) {
        if (get_post('host')=='') {
-               display_error(_('Host name cannot be empty'));
+               display_error(_('Host name cannot be empty.'));
                set_focus('host');
        }
        elseif ($_POST['dbuser']=='') {
-               display_error(_('Database user name cannot be empty'));
+               display_error(_('Database user name cannot be empty.'));
                set_focus('dbuser');
        }
        elseif ($_POST['dbname']=='') {
-               display_error(_('Database name cannot be empty'));
+               display_error(_('Database name cannot be empty.'));
                set_focus('dbname');
        }
        else {
@@ -292,6 +304,12 @@ elseif (isset($_POST['set_admin'])) {
        }
 }
 
+if (list_updated('inst_lang')) {
+       $_SESSION['inst_set']['inst_lang'] = get_post('inst_lang');
+       $Ajax->setEncoding($inst_langs[get_post('inst_lang')]['encoding']);
+       $Ajax->activate('welcome');
+}
+
 start_form();
        switch(@$_POST['Page']) {
                default:
@@ -300,6 +318,11 @@ start_form();
 //                     break;
                case '1':
                        subpage_title(_('System Diagnostics'));
+                       div_start('welcome');
+                       start_table();
+                       instlang_list_row(_("Select install wizard language:"), 'inst_lang',
+                               $_SESSION['inst_set']['inst_lang']);
+                       end_table(1);
                        $_POST['Tests'] = display_system_tests(true);
                        br();
                        if (@$_POST['Tests']) {
@@ -309,6 +332,7 @@ start_form();
                                display_error(_('Application cannot be installed. Please fix problems listed below in red, and press Refresh button.'));
                                submit_center('refresh', _('Refresh'));
                        }
+                       div_end();
                        break;
 
                case '2':
@@ -318,29 +342,29 @@ start_form();
                        }
                        subpage_title(_('Database Server Settings'));
                        start_table(TABLESTYLE);
-                       text_row_ex(_("Server Host"), 'host', 30);
-                       text_row_ex(_("Database User"), 'dbuser', 30);
-                       text_row_ex(_("Database Password"), 'dbpassword', 30);
-                       text_row_ex(_("Database Name"), 'dbname', 30);
-                       yesno_list_row(_("Use '0_' Table Prefix"), 'tbpref', 1, _('Yes'), _('No'), false);
-                       check_row(_("Install additional language packs from FA repository"), 'sel_langs');
-                       check_row(_("Install additional COAs from FA repository"), 'sel_coas');
+                       text_row_ex(_("Server Host:"), 'host', 30);
+                       text_row_ex(_("Database User:"), 'dbuser', 30);
+                       text_row_ex(_("Database Password:"), 'dbpassword', 30);
+                       text_row_ex(_("Database Name:"), 'dbname', 30);
+                       yesno_list_row(_("Use '0_' Table Prefix:"), 'tbpref', 1, _('Yes'), _('No'), false);
+                       check_row(_("Install Additional Language Packs from FA Repository:"), 'sel_langs');
+                       check_row(_("Install Additional COAs from FA Repository:"), 'sel_coas');
                        end_table(1);
-                       display_note(_('Use table prefix if you share selected database with another application, or you want to use it for more than one FA company.'));
-                       display_note(_("Do not select additional langs nor COAs if you have no internet connection right now. You can install them later."));
+                       display_note(_('Use table prefix if you share selected database for more than one FA company.'));
+                       display_note(_("Do not select additional langs nor COAs if you have no working internet connection right now. You can install them later."));
                        submit_center_first('back', _('<< Back'));
                        submit_center_last('db_test', _('Continue >>'));
                        break;
 
                case '3': // select langauges
-                       subpage_title(_('Language packs selection'));
+                       subpage_title(_('User Interface Languages Selection'));
                        display_langs();
                        submit_center_first('back', _('<< Back'));
                        submit_center_last('install_langs', _('Continue >>'));
                        break;
 
                case '4': // select COA
-                       subpage_title(_('Charts of accounts selection'));
+                       subpage_title(_('Charts of Accounts Selection'));
                        display_coas();
                        submit_center_first('back', _('<< Back'));
                        submit_center_last('install_coas', _('Continue >>'));
@@ -354,12 +378,12 @@ start_form();
                        }
                        subpage_title(_('Company Settings'));
                        start_table(TABLESTYLE);
-                       text_row_ex(_("Company Name"), 'name', 30);
-                       text_row_ex(_("Admin Login"), 'admin', 30);
-                       password_row(_("Admin Password"), 'pass', @$_POST['pass']);
-                       password_row(_("Reenter Password"), 'repass', @$_POST['repass']);
-                       coa_list_row(_("Select Chart of Accounts"), 'coa');
-                       languages_list_row(_("Select default language"), 'lang');
+                       text_row_ex(_("Company Name:"), 'name', 30);
+                       text_row_ex(_("Admin Login:"), 'admin', 30);
+                       password_row(_("Admin Password:"), 'pass', @$_POST['pass']);
+                       password_row(_("Reenter Password:"), 'repass', @$_POST['repass']);
+                       coa_list_row(_("Select Chart of Accounts:"), 'coa');
+                       languages_list_row(_("Select Default Language:"), 'lang');
                        end_table(1);
                        submit_center_first('back', _('<< Back'));
                        submit_center_last('set_admin', _('Continue >>'));
@@ -367,7 +391,7 @@ start_form();
 
                case '6': // final screen
                        subpage_title(_('FrontAccounting ERP has been installed successsfully.'));
-                       display_note(_('Please remove install wizard folder.'));
+                       display_note(_('Please do not forget to remove install wizard folder.'));
                        $install_done = true;
                        hyperlink_no_params($path_to_root.'/index.php', _('Click here to start.'));
                        break;
index bf04551bfa7f3209947c9f0ae52761b5603b8675..d2928ea315099a55c0abe519db039a8b6819c74b 100644 (file)
@@ -65,24 +65,34 @@ session_start();
 header("Cache-control: private");
 
 include_once($path_to_root . "/config.default.php");
+
+$inst_langs = array(
+  'C' => array ( 'name' => 'English',  'code' => 'C',          'encoding' => 'iso-8859-1'),
+  'pl_PL' => array ( 'name' => 'Polski',       'code' => 'pl_PL',      'encoding' => 'iso-8859-2'),
+);
+
+$Ajax = new Ajax();
+
 get_text_init();
 
+$i_lang = isset($_POST['inst_lang']) ? $_POST['inst_lang'] : 
+       (isset($_SESSION['inst_set']['inst_lang']) ? $_SESSION['inst_set']['inst_lang'] : 'C');
+
 // Page Initialisation
-if (!isset($_SESSION['language']) || !method_exists($_SESSION['language'], 'set_language')) 
+if (!isset($_SESSION['language']) || !method_exists($_SESSION['language'], 'set_language')
+       || $_SESSION['language']->code != $i_lang) 
 {
-       $l = array_search_value($dflt_lang, $installed_languages,  'code');
+       $l = array_search_value($i_lang, $inst_langs,  'code');
        $_SESSION['language'] = new language($l['name'], $l['code'], $l['encoding'],
         isset($l['rtl']) ? 'rtl' : 'ltr');
 }
 
 $_SESSION['language']->set_language($_SESSION['language']->code);
+$_SESSION['get_text']->add_domain( $_SESSION['language']->code, $path_to_root."/install/lang");
 
 include_once($path_to_root . "/version.php");
 include_once($path_to_root . "/includes/main.inc");
 
-// Ajax communication object
-$Ajax = new Ajax();
-
 // js/php validation rules container
 $Validate = array();
 // bindings for editors
@@ -90,6 +100,8 @@ $Editors = array();
 // page help. Currently help for function keys.
 $Pagehelp = array();
 
+//$Ajax = new Ajax();
+
 // intercept all output to destroy it in case of ajax call
 register_shutdown_function('end_flush');
 ob_start('output_html',0);