r433: Merging the locale-change branch onto trunk; we now use ISSO's localize system
authorRobert Sesek <rsesek@bluestatic.org>
Sat, 24 Sep 2005 18:00:21 +0000 (18:00 +0000)
committerRobert Sesek <rsesek@bluestatic.org>
Sat, 24 Sep 2005 18:00:21 +0000 (18:00 +0000)
40 files changed:
admin/autoaction.php
admin/field.php
admin/global.php
admin/index.php
admin/jump.php
admin/language.php
admin/priority.php
admin/product.php
admin/resolution.php
admin/setting.php
admin/severity.php
admin/status.php
admin/usergroup.php
attachment.php
docs/lang_file_import.php [deleted file]
docs/lang_file_master.xml
docs/lang_registry_converter.php [deleted file]
docs/lang_registry_populator.php [deleted file]
docs/lang_registry_replacer.php [deleted file]
docs/phrasetools.php [deleted file]
docs/schema_changes.sql
editcomment.php
editreport.php
favourite.php
includes/adminfunctions.php
includes/class_language.php [deleted file]
includes/class_message_reporter.php
includes/functions.php
includes/init.php
includes/language.php [new file with mode: 0644]
includes/settings.php
login.php
newcomment.php
newreport.php
register.php
search.php
showhistory.php
showreport.php
viewattachment.php
vote.php

index 7bea3c01f850c9e57c446513dfd30b60503ab797..26332e2671227fe8c89f55efae9dd45716f852b0 100644 (file)
@@ -31,7 +31,7 @@ if ($_REQUEST['do'] == 'kill')
        $action = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "autoaction WHERE actionid = " . intval($bugsys->in['actionid']));
        if (!$action)
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
        $db->query("DELETE FROM " . TABLE_PREFIX . "autoaction WHERE actionid = $action[actionid]");
@@ -46,10 +46,10 @@ if ($_REQUEST['do'] == 'delete')
        $action = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "autoaction WHERE actionid = " . intval($bugsys->in['actionid']));
        if (!$action)
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
-       $admin->page_confirm(lang::p('confirm_action_delete'), "autoaction.php?do=kill&amp;actionid=$action[actionid]");
+       $admin->page_confirm($lang->string('Are you sure you want to delete this action?'), "autoaction.php?do=kill&amp;actionid=$action[actionid]");
 }
 
 // ###################################################################
@@ -58,7 +58,7 @@ if ($_POST['do'] == 'insert' OR $_POST['do'] == 'update')
 {
        if (empty($bugsys->in['name']))
        {
-               $admin->error(lang::p('error_need_action_name'));
+               $admin->error($lang->string('You need to specify a name for this action.'));
        }
        
        foreach ($bugsys->in['fields'] AS $key => $value)
@@ -79,7 +79,7 @@ if ($_POST['do'] == 'insert' OR $_POST['do'] == 'update')
        
        if (count($deltas['custom']) < 1 AND count($deltas['builtin']) < 1)
        {
-               $admin->error(lang::p('custom_field_error_need_field_changes'));
+               $admin->error($lang->string('You need to specify some fields to change.'));
        }
        
        if ($_POST['do'] == 'insert')
@@ -99,7 +99,7 @@ if ($_POST['do'] == 'insert' OR $_POST['do'] == 'update')
        {
                if (!$bugsys->in['actionid'])
                {
-                       $admin->error(lang::p('error_invalid_id'));
+                       $admin->error($lang->getlex('error_invalid_id'));
                }
                
                $db->query("
@@ -127,14 +127,14 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
                $action = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "autoaction WHERE actionid = " . intval($bugsys->in['actionid']));
                if (!$action)
                {
-                       $admin->error(lang::p('error_invalid_id'));
+                       $admin->error($lang->getlex('error_invalid_id'));
                }
                $action['fields'] = unserialize($action['fieldchanges']);
        }
 
-       $admin->page_start(lang::p((($add) ? 'new_auto_action' : 'edit_auto_action')));
+       $admin->page_start(($add ? $lang->string('New Automatic Action') : $lang->string('Edit Automatic Action')));
        
-       $admin->form_start('autoaction.php', (($add) ? 'insert' : 'update'));
+       $admin->form_start('autoaction.php', ($add ? 'insert' : 'update'));
        
        if ($edit)
        {
@@ -142,27 +142,27 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
        }
        
        $admin->table_start();
-       $admin->table_head(lang::p((($add) ? 'new_auto_action' : 'edit_auto_action')));
+       $admin->table_head(($add ? $lang->string('New Automatic Action') : $lang->string('Edit Automatic Action')));
        
-       $admin->row_input(lang::p('name'), 'name', $action['name']);
-       $admin->row_textarea(lang::p('description'), 'description', $action['description']);
-       $admin->row_textarea(lang::p('add_comment'), 'comment', $action['comment']);
+       $admin->row_input($lang->string('Name'), 'name', $action['name']);
+       $admin->row_textarea($lang->string('Description'), 'description', $action['description']);
+       $admin->row_textarea($lang->string('Add Comment'), 'comment', $action['comment']);
        
-       $admin->row_span(lang::p('field_changes'), 'thead', 'center');
+       $admin->row_span($lang->string('Field Changes'), 'thead', 'center');
                
        // -------------------------------------------------------------------
        // built-in fields      
        construct_datastore_select('severity', 'severity', 'severityid', $action['fields']['builtin']['severity'], true, true);
-       $admin->row_list(lang::p('severity'), 'fields[severity]');
+       $admin->row_list($lang->string('Severity'), 'fields[severity]');
        
        construct_datastore_select('priority', 'priority', 'priorityid', $action['fields']['builtin']['priority'], true, true);
-       $admin->row_list(lang::p('priority'), 'fields[priority]');
+       $admin->row_list($lang->string('Priority'), 'fields[priority]');
        
        construct_datastore_select('status', 'status', 'statusid', $action['fields']['builtin']['status'], true, true);
-       $admin->row_list(lang::p('status'), 'fields[status]');
+       $admin->row_list($lang->string('Status'), 'fields[status]');
        
        construct_datastore_select('resolution', 'resolution', 'resolutionid', $action['fields']['builtin']['resolution'], true, true);
-       $admin->row_list(lang::p('resolution'), 'fields[resolution]');
+       $admin->row_list($lang->string('Resolution'), 'fields[resolution]');
        
        $admin->row_span('', 'tcat', 'center');
        
@@ -187,8 +187,8 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
                        
                        case 'input_checkbox':
                                $admin->list_item('', 0, ((!$action['fields']['custom']["$field[fieldid]"]) ? true : false));
-                               $admin->list_item(lang::p('checked'), 1, (($action['fields']['custom']["$field[fieldid]"] == 1) ? true : false));
-                               $admin->list_item(lang::p('unchecked'), 2, (($action['fields']['custom']["$field[fieldid]"] == 2) ? true : false));
+                               $admin->list_item($lang->string('Checked'), 1, (($action['fields']['custom']["$field[fieldid]"] == 1) ? true : false));
+                               $admin->list_item($lang->string('Un-Checked'), 2, (($action['fields']['custom']["$field[fieldid]"] == 2) ? true : false));
                                $admin->row_list($field['name'], "fields[custom][$field[fieldid]]");
                        break;
                        
@@ -218,18 +218,18 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
 
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('automatic_actions'));
+       $admin->page_start($lang->string('Automatic Actions'));
        
        $admin->table_start();
-       $admin->table_head(lang::p('automatic_actions'));
+       $admin->table_head($lang->string('Automatic Actions'));
        
        $actions = $db->query("SELECT * FROM " . TABLE_PREFIX . "autoaction ORDER BY name ASC");
        while ($action = $db->fetch_array($actions))
        {
-               $admin->row_text($action['name'] . "\n<div class=\"smallfont\">$action[description]</div>", "<a href=\"autoaction.php?do=edit&amp;actionid=$action[actionid]\">[" . lang::p('edit') . "]</a> <a href=\"autoaction.php?do=delete&amp;actionid=$action[actionid]\">[" . lang::p('delete') . "]</a>");
+               $admin->row_text($action['name'] . "\n<div class=\"smallfont\">$action[description]</div>", "<a href=\"autoaction.php?do=edit&amp;actionid=$action[actionid]\">[" . $lang->string('Edit') . "]</a> <a href=\"autoaction.php?do=delete&amp;actionid=$action[actionid]\">[" . $lang->string('Delete') . "]</a>");
        }
        
-       $admin->row_span('<a href="autoaction.php?do=add">[' . lang::p('new_auto_action') . ']</a>', 'tfoot', 'center', 3);
+       $admin->row_span('<a href="autoaction.php?do=add">[' . $lang->string('New Automatic Action') . ']</a>', 'tfoot', 'center', 3);
        $admin->table_end();
        
        $admin->page_end();
index e90e23fb5258dfa7fe0667c71e42e644906899cc..532cf0da8d712742f593f3ec61d22143c648867e 100644 (file)
@@ -18,9 +18,9 @@ if (!can_perform('canadminfields'))
 }
 
 $TYPES = array(
-       'input_text' => lang::p('single_line_text_box'),
-       'input_checkbox' => lang::p('checkbox_flag'),
-       'select_single' => lang::p('drop_dwon_menu'),
+       'input_text' => $lang->string('Single-Line Text Box'),
+       'input_checkbox' => $lang->string('Checkbox Flag'),
+       'select_single' => $lang->string('Drop-Down Menu'),
 );
 
 // ###################################################################
@@ -37,7 +37,7 @@ if ($_REQUEST['do'] == 'kill')
        $field = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bugfield WHERE fieldid = " . intval($bugsys->in['fieldid']));
        if (!$field)
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
        $db->query("DELETE FROM " . TABLE_PREFIX . "bugfield WHERE fieldid = $field[fieldid]");
@@ -55,10 +55,10 @@ if ($_REQUEST['do'] == 'delete')
        $field = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bugfield WHERE fieldid = " . intval($bugsys->in['fieldid']));
        if (!$field)
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
-       $admin->page_confirm(lang::p('confirm_custom_field_delete'), "field.php?do=kill&amp;fieldid=$field[fieldid]");
+       $admin->page_confirm($lang->string('Are you sure you want to delete this bug field? Doing so will remove everything for this field and it cannot be undone!'), "field.php?do=kill&amp;fieldid=$field[fieldid]");
 }
 
 // ###################################################################
@@ -75,7 +75,7 @@ if ($_REQUEST['do'] == 'update')
                $field = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bugfield WHERE fieldid = " . intval($bugsys->in['fieldid']));
                if (!$field)
                {
-                       $admin->error(lang::p('error_invalid_id'));
+                       $admin->error($lang->getlex('error_invalid_id'));
                }
                
                $edit = true;
@@ -85,11 +85,11 @@ if ($_REQUEST['do'] == 'update')
        
        if (empty($bugsys->in['name']))
        {
-               $admin->error(lang::p('error_need_display_name'));
+               $admin->error($lang->string('You must specify a display name.'));
        }
        if (!isset($TYPES["$type"]) AND $add)
        {
-               $admin->error(lang::p('invalid_field_type'));
+               $admin->error($lang->string('Invalid field type specified.'));
        }
        
        switch ($type)
@@ -115,7 +115,7 @@ if ($_REQUEST['do'] == 'update')
                        array_walk($selects, 'trim');
                        if (count($selects) < 1)
                        {
-                               $admin->error(lang::p('custom_field_need_values'));
+                               $admin->error($lang->string('You need to specify some select values.'));
                        }
                        
                        $extradata = "'" . $bugsys->escape(serialize($selects)) . "', " . intval($bugsys->in['usedefault']);
@@ -152,8 +152,8 @@ if ($_REQUEST['do'] == 'update')
                        WHERE fieldid = " . intval($bugsys->in['fieldid'])
                );
        }
-       
-       $admin->redirect('field.php?do=modify', lang::p((($add) ? 'custom_field_added' : 'custom_field_updated')));
+
+       $admin->redirect('field.php?do=modify', ($add ? $lang->string('The custom field has been added') : $lang->string('The custom field has been updated')));
 }
 
 // ###################################################################
@@ -164,8 +164,8 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
        $typeselect = (($add AND empty($bugsys->in['step'])) ? true : false);
        $edit = (($add) ? false : true);
        
-       $admin->page_start(lang::p((($add) ? 'add_new_field' : 'edit_field'))); 
-       $admin->form_start('field.php', (($typeselect) ? 'add' : 'update'));
+       $admin->page_start(($add ? $lang->string('Add New Custom Field') : $lang->string('Edit Custom Field')));
+       $admin->form_start('field.php', ($typeselect ? 'add' : 'update'));
        if ($add AND !$typeselect)
        {
                $admin->form_hidden_field('type', $bugsys->in['type']);
@@ -174,12 +174,12 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
        {
                $admin->form_hidden_field('step', 1);
                $admin->table_start(true, '40%');
-               $admin->table_head(lang::p('select_type'));
+               $admin->table_head($lang->string('Select Type'));
        }
        else
        {
                $admin->table_start();
-               $admin->table_head((($add) ? lang::p('add_new_field') . ' - ' . $TYPES[ $bugsys->in['type'] ] : lang::p('edit_field')));
+               $admin->table_head(($add ? $lang->string('Add New Bug Field') . ' - ' . $TYPES[ $bugsys->in['type'] ] : $lang->string('Edit Field')));
        }
        
        if ($edit)
@@ -187,7 +187,7 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
                $field = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bugfield WHERE fieldid = " . intval($bugsys->in['fieldid']));
                if (!$field)
                {
-                       $admin->error(lang::p('error_invalid_id'));
+                       $admin->error($lang->getlex('error_invalid_id'));
                }
                
                $admin->form_hidden_field('fieldid', $field['fieldid']);
@@ -205,7 +205,7 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
                {
                        $admin->list_item($description, $name);
                }
-               $admin->row_list(lang::p('field_type'), 'type', false);
+               $admin->row_list($lang->string('Field Type'), 'type', false);
                
                $admin->row_submit();
                $admin->table_end();
@@ -215,40 +215,40 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
        {
                if (!isset($TYPES["$type"]))
                {
-                       $admin->error(lang::p('error_invalid_id'));
+                       $admin->error($lang->getlex('error_invalid_id'));
                }
                
                // global fields
-               $admin->row_span(lang::p('global_fields'), 'thead', 'center');
-               $admin->row_text(lang::p('field_type'), $TYPES["$type"]);
-               $admin->row_input(lang::p('display_name'), 'name', $field['name']);
-               $admin->row_textarea(lang::p('description'), 'description', $field['description']);
-               $admin->row_yesno(lang::p('required'), 'required', $field['required']);
-               $admin->row_yesno(lang::p('can_be_searched'), 'cansearch', ((isset($field['cansearch'])) ? $field['cansearch'] : true));
+               $admin->row_span($lang->string('Global Fields'), 'thead', 'center');
+               $admin->row_text($lang->string('Field Type'), $TYPES["$type"]);
+               $admin->row_input($lang->string('Display Name'), 'name', $field['name']);
+               $admin->row_textarea($lang->string('Description'), 'description', $field['description']);
+               $admin->row_yesno($lang->string('Required'), 'required', $field['required']);
+               $admin->row_yesno($lang->string('Can Be Searched'), 'cansearch', ((isset($field['cansearch'])) ? $field['cansearch'] : true));
                
                // type-specific fields
-               $admin->row_span(lang::p('type_specific_fields'), 'thead', 'center');
+               $admin->row_span($lang->string('Type-Specific Fields'), 'thead', 'center');
                
                switch ($type)
                {
                        case 'input_text':
-                               $admin->row_input(lang::p('default_value'), 'defaultvalue', $field['defaultvalue']);
-                               $admin->row_input(lang::p('regex_match'), 'regexmatch', $field['regexmatch']);
-                               $admin->row_input(lang::p('max_length'), 'maxlength', $field['maxlength'], 2, 10);
+                               $admin->row_input($lang->string('Default Value'), 'defaultvalue', $field['defaultvalue']);
+                               $admin->row_input($lang->string('Regular Expression Match'), 'regexmatch', $field['regexmatch']);
+                               $admin->row_input($lang->string('Maximum Length'), 'maxlength', $field['maxlength'], 2, 10);
                        break;
                        
                        case 'input_checkbox':
-                               $admin->row_yesno(lang::p('checked_by_default'), 'defaultvalue', $field['defaultvalue']);
+                               $admin->row_yesno($lang->string('Checked By Default'), 'defaultvalue', $field['defaultvalue']);
                        break;
                        
                        case 'select_single':
-                               $admin->row_textarea(lang::p('selection_values'), 'selects', stripslashes(implode("\n", unserialize($field['selects']))));
-                               $admin->row_yesno(lang::p('make_first_option_default'), 'usedefault', $field['usedefault']);
+                               $admin->row_textarea($lang->string('Selection Values'), 'selects', stripslashes(implode("\n", unserialize($field['selects']))));
+                               $admin->row_yesno($lang->string('Make the First Option Default'), 'usedefault', $field['usedefault']);
                        break;
                }
                
                // end table
-               $admin->row_submit((($edit) ? '<a href="field.php?do=delete&amp;fieldid=' . $field['fieldid'] . '">[' . lang::p('delete_field') . ']</a>' : ''));
+               $admin->row_submit((($edit) ? '<a href="field.php?do=delete&amp;fieldid=' . $field['fieldid'] . '">[' . $lang->string('Delete Field') . ']</a>' : ''));
                $admin->table_end();
                $admin->form_end();
        }
@@ -260,11 +260,11 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
 
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('additional_bug_fields'));
+       $admin->page_start($lang->string('Additional Bug Fields'));
        
        $admin->table_start();
-       $admin->table_head(lang::p('additional_bug_fields'), 3);
-       $admin->table_column_head(array(lang::p('display_name_description'), lang::p('field_id'), lang::p('actions')));
+       $admin->table_head($lang->string('Additional Bug Fields'), 3);
+       $admin->table_column_head(array($lang->string('Display Name/Description'), $lang->string('Field ID'), $lang->string('Actions')));
        
        $fields = $db->query("SELECT * FROM " . TABLE_PREFIX . "bugfield ORDER BY fieldid ASC");
        while ($field = $db->fetch_array($fields))
@@ -273,12 +273,12 @@ if ($_REQUEST['do'] == 'modify')
                        array(
                                "$field[name]<div class=\"smallfont\"><em>$field[description]</em></div>" => 'l',
                                "(fieldid: $field[fieldid])" => 'c',
-                               "<a href=\"field.php?do=edit&amp;fieldid=$field[fieldid]\">[" . lang::p('edit') . "]</a> <a href=\"field.php?do=delete&amp;fieldid=$field[fieldid]\">[" . lang::p('delete') . "]</a>" => 'c'
+                               "<a href=\"field.php?do=edit&amp;fieldid=$field[fieldid]\">[" . $lang->string('Edit') . "]</a> <a href=\"field.php?do=delete&amp;fieldid=$field[fieldid]\">[" . $lang->string('Delete') . "]</a>" => 'c'
                        )
                );
        }
        
-       $admin->row_span('<a href="field.php?do=add">[' . lang::p('add_new_field') . ']</a>', 'tfoot', 'center', 3);
+       $admin->row_span('<a href="field.php?do=add">[' . $lang->string('Add New Bug Field') . ']</a>', 'tfoot', 'center', 3);
        $admin->table_end();
        
        $admin->page_end();
index 946dcb1d3c68954b8b124d6cf46a654af5b3c8eb..e97aad37432c221b4b0eee20452606ccac0f231f 100755 (executable)
@@ -19,28 +19,28 @@ require_once('./includes/functions.php');
 // admin navigation
 
 $globalnav = array(
-       lang::p('admin_locations') => array(
-               lang::p('home') => 'index.php',
-               lang::p('logout') => '../login.php?do=cplogout'
+       $lang->string('Administration Locations') => array(
+               $lang->string('Home') => 'index.php',
+               $lang->string('Logout') => '../login.php?do=cplogout'
        ),
        
-       lang::p('options') => array(
-               lang::p('bugstrike_settings') => 'setting.php',
-               //'Manage Languages' => 'language.php'
+       $lang->string('Options') => array(
+               $lang->string('BugStrike Settings') => 'setting.php',
+               $lang->string('Manage Languages') => 'language.php'
        ),
        
-       lang::p('bug_fields') => array(
-               lang::p('producs_versions_components') => 'product.php',
-               lang::p('priorities') => 'priority.php',
-               lang::p('resolutions') => 'resolution.php',
-               lang::p('severities') => 'severity.php',
-               lang::p('statuses') => 'status.php',
-               lang::p('custom_bug_fields') => 'field.php',
-               lang::p('automatic_actions') => 'autoaction.php'
+       $lang->string('Bug Fields') => array(
+               $lang->string('Products / Versions / Components') => 'product.php',
+               $lang->string('Priorities') => 'priority.php',
+               $lang->string('Resolutions') => 'resolution.php',
+               $lang->string('Severities') => 'severity.php',
+               $lang->string('Statuses') => 'status.php',
+               $lang->string('Custom Bug Fields') => 'field.php',
+               $lang->string('Automatic Actions') => 'autoaction.php'
        ),
        
-       lang::p('user_management') => array(
-               lang::p('usergroups') => 'usergroup.php'
+       $lang->string('User Management') => array(
+               $lang->string('Usergroups') => 'usergroup.php'
        )
 );
 
@@ -60,10 +60,10 @@ function admin_login()
        
        $admin->form_start('../login.php', 'cplogin', false, 'cplogin');
        $admin->table_start(true, '425');
-       $admin->table_head(lang::p('bugstrike_login'));
-       $admin->row_input(lang::p('email'), 'email', $bugsys->userinfo['email'], 2, 35, false, false, 'middle');
-       $admin->row_input(lang::p('password'), 'password', '', 2, 35, false, true, 'middle');
-       $admin->row_submit('', lang::p('login'));
+       $admin->table_head($bugsys->lang->string('Login to BugStrike'));
+       $admin->row_input($bugsys->lang->string('Email'), 'email', $bugsys->userinfo['email'], 2, 35, false, false, 'middle');
+       $admin->row_input($bugsys->lang->string('Password'), 'password', '', 2, 35, false, true, 'middle');
+       $admin->row_submit('', $bugsys->lang->string('Login'));
        $admin->table_end();
        $admin->form_end();
        
@@ -81,7 +81,7 @@ if ($_COOKIE[COOKIE_PREFIX . 'adminsession'])
                if (md5(md5($bugsys->userinfo['authkey']) . md5($bugsys->userinfo['email']) . md5($bugsys->userinfo['userid'])) != $_COOKIE[COOKIE_PREFIX . 'adminsession'])
                {
                        $funct->cookie(COOKIE_PREFIX . 'adminsession', '');
-                       $admin->error(lang::p('invalid_admin_session_terminated'));
+                       $admin->error($lang->string('Invalid admin session has been terminated.'));
                }
                else
                {
index 7967be58601ce8b4b351592c93f0b1f4f583d39e..8aba3fe188bf4a3203cf44647ec04628c00104cf 100755 (executable)
@@ -15,7 +15,7 @@ require_once('./global.php');
 $admin->page_start('Index');
 
 $admin->table_start(true, '25%');
-$admin->table_head(lang::p('admin_menu'));
+$admin->table_head($lang->string('BugStrike Administration Menu'));
 
 $navdata = '<ul>';
 foreach  ($globalnav AS $group => $links)
index f87e83a50ad48e1e40a35c3e2d7d4c306d2f52c9..f509da0810faad292d96b65df05fd82812f7a679 100755 (executable)
@@ -14,7 +14,7 @@ require_once('./global.php');
 
 if ($bugsys->in['jumplocation'] == -1 OR !$bugsys->in['jumplocation'])
 {
-       $admin->error(lang::p('invalid_jump_location'));
+       $admin->error($lang->string('Please select a location to jump to. Your selection is invalid.'));
 }
 
 header("Location: " . $bugsys->in['jumplocation']);
index 78e1f1a3ac5492c0951412fc6986af0369aa43c7..ba373e94ea24a3a510c72d8c127af8f5382fcf7d 100644 (file)
@@ -49,14 +49,46 @@ if ($_POST['do'] == 'insert')
 
 if ($_REQUEST['do'] == 'add')
 {
-       // display form to add new item
+       $admin->page_start($lang->string('New Language'));
+       
+       $admin->form_start('language.php', 'update');
+       $admin->table_start();
+       $admin->table_head($lang->string('New Language'));
+       
+       $admin->row_input($lang->string('Title'), 'title');
+       $admin->row_input($lang->string('Character Set'), 'charset');
+       $admin->list_item($lang->string('Left-to-Right'), 'ltr', true);
+       $admin->list_item($lang->string('Right-to-Left'), 'rtl');
+       $admin->row_list($lang->string('Direction'), 'direction');
+       $admin->row_input($lang->string('Path to XML'), 'filename');
+       $admin->row_yesno($lang->string('User Selectable'), 'userselect', true);
+       $admin->row_yesno($lang->string('Debug Mode (run directly from XML)'), 'langdebug', false);
+       
+       $admin->row_submit();
+       $admin->table_end();
+       $admin->form_end();
+       
+       $admin->page_end();
 }
 
 // ###################################################################
 
 if ($_POST['do'] == 'update')
 {
-       // run code to update item in database
+       $db->query("
+               UPDATE language
+               SET title = '" . $bugsys->in['title'] . "',
+                       charset = '" . $bugsys->in['charset'] . "',
+                       direction = '" . $bugsys->in['direction'] . "',
+                       userselect = " . intval($bugsys->in['userselect']) . ",
+                       debug = " . intval($bugsys->in['langdebug']) . ",
+                       filename = '" . $bugsys->in['filename'] . "'
+               WHERE languageid = " . intval($bugsys->in['languageid'])
+       );
+       
+       build_languages();
+       
+       $admin->redirect('language.php?do=modify');
 }
 
 // ###################################################################
@@ -66,20 +98,25 @@ if ($_REQUEST['do'] == 'edit')
        $language = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "language WHERE languageid = " . intval($bugsys->in['languageid']));
        if (!$language)
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
-       $admin->page_start(lang::p('edit_language'));
+       $admin->page_start($lang->string('Edit Language'));
        
        $admin->form_start('language.php', 'update');
        $admin->table_start();
-       $admin->table_head(lang::r('Edit Language - ' . $language['title']));
+       $admin->table_head(sprintf($lang->string('Edit Language - %1$s'), $language['title']));
+       
+       $admin->form_hidden_field('languageid', $language['languageid']);
        
-       $admin->row_input(lang::p('title'), 'title', $language['title']);
-       $admin->row_input(lang::p('character_set'), 'charset', $language['charset']);
-       $admin->list_item(lang::p('ltr'), 'ltr', (($language['direction'] == 'ltr') ? true : false));
-       $admin->list_item(lang::p('rtl'), 'rtl', (($language['direction'] == 'rtl') ? true : false));
-       $admin->row_list(lang::p('direction'), 'direction');
+       $admin->row_input($lang->string('Title'), 'title', $language['title']);
+       $admin->row_input($lang->string('Character Set'), 'charset', $language['charset']);
+       $admin->list_item($lang->string('Left-to-Right'), 'ltr', (($language['direction'] == 'ltr') ? true : false));
+       $admin->list_item($lang->string('Right-to-Left'), 'rtl', (($language['direction'] == 'rtl') ? true : false));
+       $admin->row_list($lang->string('Direction'), 'direction');
+       $admin->row_input($lang->string('Path to XML'), 'filename', $language['filename']);
+       $admin->row_yesno($lang->string('User Selectable'), 'userselect', $language['userselect']);
+       $admin->row_yesno($lang->string('Debug Mode (run directly from XML)'), 'langdebug', (bool)$language['debug']);
        
        $admin->row_submit();
        $admin->table_end();
@@ -90,14 +127,37 @@ if ($_REQUEST['do'] == 'edit')
 
 // ###################################################################
 
+if ($_REQUEST['do'] == 'reload')
+{
+       $language = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "language WHERE languageid = " . intval($bugsys->in['languageid']));
+       if (!$language)
+       {
+               $admin->error($lang->getlex('error_invalid_id'));
+       }
+       
+       $db->query("DELETE FROM localization WHERE languageid = $language[languageid]");
+       
+       require_once('./includes/language.php');
+       
+       $localizations = fetch_phrases($language['languageid'], true);
+       foreach ($localizations AS $key => $value)
+       {
+               $db->query("INSERT INTO localization (localkey, localtext, languageid) VALUES ('" . $bugsys->escape($key) . "', '" . $bugsys->escape($value) . "', $language[languageid])");
+       }
+       
+       $admin->redirect('language.php?do=modify');
+}
+
+// ###################################################################
+
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('manage_languages'));
+       $admin->page_start($lang->string('Manage Languages'));
                
        $admin->table_start();
-       $admin->table_head(lang::p('manage_languages'), 4);
+       $admin->table_head($lang->string('Manage Languages'), 4);
        
-       $admin->table_column_head(array(lang::p('title'), lang::p('charset'), lang::p('options'), lang::p('actions')));
+       $admin->table_column_head(array($lang->string('Title'), $lang->string('Charset'), $lang->string('Options'), $lang->string('Actions')));
        
        $languages = $db->query("SELECT * FROM " . TABLE_PREFIX . "language ORDER BY languageid ASC");
        while ($language = $db->fetch_array($languages))
@@ -105,12 +165,12 @@ if ($_REQUEST['do'] == 'modify')
                $admin->row_multi_item(array(
                        $language['title'] => 'l',
                        $language['charset'] => 'c',
-                       (($language['default']) ? '<strong>' . lang::p('default_language') . '</strong> / ' : '') . (($language['userselect']) ? lang::p('user_selectable') : lang::p('private')) => 'c',
-                       "<a href=\"language.php?do=edit&amp;languageid=$language[languageid]\">[" . lang::p('edit_settings') . "]</a> <a href=\"phrase.php?languageid=$language[languageid]\">[" . lang::p('manage_phrases') . "]</a>" => 'c'
+                       (($language['default']) ? '<strong>' . $lang->string('DEFAULT LANGUAGE') . '</strong> / ' : '') . ($language['userselect'] ? $lang->string('User Selectable') : $lang->string('Private')) => 'c',
+                       "<a href=\"language.php?do=edit&amp;languageid=$language[languageid]\">[" . $lang->string('Edit Settings') . "]</a> <a href=\"language.php?do=reload&amp;languageid=$language[languageid]\">[" . $lang->string('Reload Language XML') . "]</a>" => 'c'
                ));
        }
        
-       $admin->row_span('<a href="language.php?do=add">[' . lang::p('add_new_language') . ']</a>', 'tfoot', 'center', 4);
+       $admin->row_span('<a href="language.php?do=add">[' . $lang->string('Add New Language') . ']</a>', 'tfoot', 'center', 4);
        $admin->table_end();
        
        $admin->page_end();
index b90a740e496f95e8859fd9171149a8b1104c881d..bf799e293315c746f9bcec1152264eb45a93f382 100755 (executable)
@@ -38,7 +38,7 @@ if ($_REQUEST['do'] == 'kill')
 
 if ($_REQUEST['do'] == 'delete')
 {
-       $admin->page_confirm(lang::p('confirm_delete_priority'), 'priority.php?do=kill&amp;priorityid=' . intval($bugsys->in['priorityid']));
+       $admin->page_confirm($lang->string('Are you sure you want to delete this priority? Doing so will revert all bugs to the default priority (which is set in the options panel)?'), 'priority.php?do=kill&amp;priorityid=' . intval($bugsys->in['priorityid']));
 }
 
 // ###################################################################
@@ -55,13 +55,13 @@ if ($_POST['do'] == 'insert')
 
 if ($_REQUEST['do'] == 'add')
 {
-       $admin->page_start(lang::p('add_new_priority'));
+       $admin->page_start($lang->string('Add New Priority'));
        
        $admin->form_start('priority.php', 'insert');
        $admin->table_start();
-       $admin->table_head(lang::p('new_priority'));
-       $admin->row_input(lang::p('priority_title'), 'priority');
-       $admin->row_input(lang::p('priority_display_order'), 'displayorder');
+       $admin->table_head($lang->string('New Priority'));
+       $admin->row_input($lang->string('Priority Title<div><dfn>The title of this priority flag (eg: `Slated for Development` or `Address Now`)</dfn></div>'), 'priority');
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the priorities are displayed. The higher the number, the lower down in the list it is.</dfn></div>'), 'displayorder');
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -85,17 +85,17 @@ if ($_REQUEST['do'] == 'edit')
        $priority = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "priority WHERE priorityid = " . intval($bugsys->in['priorityid']));
        if (!is_array($priority))
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getkex('error_invalid_id'));
        }
        
-       $admin->page_start(lang::p('edit_priority'));
+       $admin->page_start($lang->string('Edit Priority'));
        
        $admin->form_start('priority.php', 'update');
        $admin->form_hidden_field('priorityid', $priority['priorityid']);
        $admin->table_start();
-       $admin->table_head(lang::p('edit_priority_title', $priority['priority'], $priority['priorityid']));
-       $admin->row_input(lang::p('priority_title'), 'priority', $priority['priority']);
-       $admin->row_input(lang::p('priority_display_order'), 'displayorder', $priority['displayorder']);
+       $admin->table_head(sprintf($lang->string('Edit Priority `%1$s` (id: %2$s)', $priority['priority'], $priority['priorityid'])));
+       $admin->row_input($lang->string('Priority Title<div><dfn>The title of this priority flag (eg: `Slated for Development` or `Address Now`)</dfn></div>'), 'priority', $priority['priority']);
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the priorities are displayed. The higher the number, the lower down in the list it is.</dfn></div>'), 'displayorder', $priority['displayorder']);
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -107,21 +107,21 @@ if ($_REQUEST['do'] == 'edit')
 
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('priority_manager'));
+       $admin->page_start($lang->string('Priority Manager'));
        
        $priorities = $db->query("SELECT * FROM " . TABLE_PREFIX . "priority ORDER BY displayorder");
        
        $admin->form_start('priority.php', 'null');
        $admin->table_start();
-       $admin->table_head(lang::p('priority_manager'));
+       $admin->table_head($lang->string('Priority Manager'));
        
        while ($priority = $db->fetch_array($priorities))
        {
-               $admin->row_text("$priority[displayorder]: <a href=\"priority.php?do=edit&amp;priorityid=$priority[priorityid]\">$priority[priority]</a>", "(priorityid: $priority[priorityid]) <a href=\"priority.php?do=edit&amp;priorityid=$priority[priorityid]\">[" . lang::p('edit') . "]</a> <a href=\"priority.php?do=delete&amp;priorityid=$priority[priorityid]\">[" . lang::p('delete') . "]</a>");
+               $admin->row_text("$priority[displayorder]: <a href=\"priority.php?do=edit&amp;priorityid=$priority[priorityid]\">$priority[priority]</a>", "(priorityid: $priority[priorityid]) <a href=\"priority.php?do=edit&amp;priorityid=$priority[priorityid]\">[" . $lang->string('Edit') . "]</a> <a href=\"priority.php?do=delete&amp;priorityid=$priority[priorityid]\">[" . $lang->string('Delete') . "]</a>");
        }
        $db->free_result($priorityes);
        
-       $admin->row_span('<a href="priority.php?do=add">[' . lang::p('add_new_priority') . ']</a>', 'tfoot', 'center', 3);
+       $admin->row_span('<a href="priority.php?do=add">[' . $lang->string('Add New Priority') . ']</a>', 'tfoot', 'center', 3);
        $admin->table_end();
        $admin->form_end();
        
index 86ac5a2b140b9a3c8cc4e36ad0087673688d37ad..614542e436dea0c900a8f364d15eb4b5470b8610 100755 (executable)
@@ -20,28 +20,30 @@ if (!can_perform('canadminversions'))
 
 function construct_option_list($type, $id, $edit, $addcomponent, $addversion, $delete, $displayorder)
 {
+       global $bugsys;
+       
        $type_display = $type;
        $type = (($type == 'component') ? 'product' : $type);
        $type_action = (($type == 'version') ? 'versionid' : 'productid');
        
        if ($edit)
        {
-               $opt .= '<option value="product.php?do=edit' . $type . '&' . $type_action . '=' . $id . '">' . lang::p('edit') . ' ' . lang::p($type_display) . '</option>';
+               $opt .= '<option value="product.php?do=edit' . $type . '&' . $type_action . '=' . $id . '">' . $bugsys->lang->string('Edit') . ' ' . $type_display . '</option>';
        }
        
        if ($delete)
        {
-               $opt .= '<option value="product.php?do=delete' . $type . '&' . $type_action . '=' . $id . '">' . lang::p('delete') . ' ' . lang::p($type_display) . '</option>';
+               $opt .= '<option value="product.php?do=delete' . $type . '&' . $type_action . '=' . $id . '">' . $bugsys->lang->string('Delete') . ' ' . $type_display . '</option>';
        }
        
        if ($addcomponent)
        {
-               $opt .= '<option value="product.php?do=addproduct&productid=' . $id . '">' . lang::p('add_component') . '</option>';
+               $opt .= '<option value="product.php?do=addproduct&productid=' . $id . '">' . $bugsys->lang->string('Add Component') . '</option>';
        }
        
        if ($addversion)
        {
-               $opt .= '<option value="product.php?do=addversion&productid=' . $id . '">' . lang::p('add_version') . '</option>';
+               $opt .= '<option value="product.php?do=addversion&productid=' . $id . '">' . $bugsys->lang->string('Add Version') . '</option>';
        }
        
        $type = strtolower($type);
@@ -50,7 +52,7 @@ function construct_option_list($type, $id, $edit, $addcomponent, $addversion, $d
        
        $displayorder = (($displayorder != -1) ? '<input type="text" name="displayorder[' . $name . ']" value="' . $displayorder . '" size="4" /> ' : '');
        
-       return $displayorder . '<select id="' . $name . '" name="' . $name . '" onchange="exec_action(\'' . $name . '\')">' . $opt . '</select> <input type="button" name="gobutton" value="  ' . lang::p('go') . '  " onclick="exec_action(\'' . $name . '\')" />';
+       return $displayorder . '<select id="' . $name . '" name="' . $name . '" onchange="exec_action(\'' . $name . '\')">' . $opt . '</select> <input type="button" name="gobutton" value="  ' . $bugsys->lang->string('Go') . '  " onclick="exec_action(\'' . $name . '\')" />';
 }
 
 // ###################################################################
@@ -76,7 +78,7 @@ if ($_REQUEST['do'] == 'killversion')
 
 if ($_REQUEST['do'] == 'deleteversion')
 {
-       $admin->page_confirm(lang::p('confirm_delete_version'), 'product.php?do=killversion&amp;versionid=' . intval($bugsys->in['versionid']));
+       $admin->page_confirm($lang->string('Are you sure you want to delete this version? Doing so will do x to the bugs with this version.'), 'product.php?do=killversion&amp;versionid=' . intval($bugsys->in['versionid']));
 }
 
 // ###################################################################
@@ -92,14 +94,14 @@ if ($_REQUEST['do'] == 'insertversion')
 
 if ($_REQUEST['do'] == 'addversion')
 {
-       $admin->page_start(lang::p('add_version'));
+       $admin->page_start($lang->string('Add Version'));
        
        if ($bugsys->in['productid'] != -1)
        {
                $product = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "product WHERE productid = " . intval($bugsys->in['productid']));
                if (!is_array($product))
                {
-                       $admin->error(lang::p('error_invalid_id'));
+                       $admin->error($lang->getlex('error_invalid_id'));
                }
        }
        else
@@ -110,9 +112,9 @@ if ($_REQUEST['do'] == 'addversion')
        $admin->form_start('product.php', 'insertversion');
        $admin->form_hidden_field('productid', intval($bugsys->in['productid']));
        $admin->table_start();
-       $admin->table_head(lang::p('add_new_version'));
-       $admin->row_input(lang::p('version_title'), 'version');
-       $admin->row_input(lang::p('version_display_order'), 'displayorder');
+       $admin->table_head($lang->string('Add New Version'));
+       $admin->row_input($lang->string('Version Number<div><dfn>This is the version string for this product.</dfn></div>'), 'version');
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the versions are displayed.</dfn></div>'), 'displayorder');
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -126,7 +128,7 @@ if ($_REQUEST['do'] == 'updateversion')
 {
        if (empty($bugsys->in['version']))
        {
-               $admin->error(lang::p('fill_in_version_number'));
+               $admin->error($lang->string('Please fill in a version number.'));
        }
        
        $db->query("UPDATE " . TABLE_PREFIX . "version SET version = '" . $bugsys->in['version'] . "', displayorder = " . intval($bugsys->in['displayorder']) . " WHERE versionid = " . intval($bugsys->in['versionid']));
@@ -139,20 +141,20 @@ if ($_REQUEST['do'] == 'updateversion')
 
 if ($_REQUEST['do'] == 'editversion')
 {
-       $admin->page_start(lang::p('edit_version'));
+       $admin->page_start($lang->string('Edit Version'));
        
        $version = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "version WHERE versionid = " . intval($bugsys->in['versionid']));
        if (!is_array($version))
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
        $admin->form_start('product.php', 'updateversion');
        $admin->form_hidden_field('versionid', $version['versionid']);
        $admin->table_start();
-       $admin->table_head(lang::p('edit_version_title', $version['version']));
-       $admin->row_input(lang::p('version_title'), 'version', $version['version']);
-       $admin->row_input(lang::p('version_display_order'), 'displayorder', $version['displayorder']);
+       $admin->table_head(sprintf($lang->string('Edit Version - %1$s'), $version['version']));
+       $admin->row_input($lang->string('Version Number<div><dfn>This is the version string for this product.</dfn></div>'), 'version', $version['version']);
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the versions are displayed.</dfn></div>'), 'displayorder', $version['displayorder']);
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -183,7 +185,7 @@ if ($_REQUEST['do'] == 'killproduct')
 
 if ($_REQUEST['do'] == 'deleteproduct')
 {
-       $admin->page_confirm(lang::p('confirm_delete_product'), 'product.php?do=killproduct&amp;productid=' . intval($bugsys->in['productid']));
+       $admin->page_confirm($lang->string('Are you sure you want to delete this product and all of it\'s sub-versions and components (as well as any bugs contained within those groups)?'), 'product.php?do=killproduct&amp;productid=' . intval($bugsys->in['productid']));
 }
 
 // ###################################################################
@@ -192,7 +194,7 @@ if ($_REQUEST['do'] == 'insertproduct')
 {
        if (empty($bugsys->in['shortname']) OR empty($bugsys->in['title']))
        {
-               $admin->error(lang::p('go_back_and_fill_both_fields'));
+               $admin->error($lang->string('Please go back and fill in both fields.'));
        }
        
        $db->query("
@@ -211,16 +213,16 @@ if ($_REQUEST['do'] == 'insertproduct')
 
 if ($_REQUEST['do'] == 'addproduct')
 {
-       $admin->page_start(lang::p('add_new_product'));
+       $admin->page_start($lang->string('Add New Product'));
        
        $admin->form_start('product.php', 'insertproduct');
        $admin->form_hidden_field('componentmother', intval($bugsys->in['productid']));
        $admin->table_start();
-       $admin->table_head(lang::p('add_product'));
-       $admin->row_input(lang::p('product_shortname'), 'shortname');
-       $admin->row_input(lang::p('product_title'), 'title');
-       $admin->row_textarea(lang::p('product_description'), 'description');
-       $admin->row_input(lang::p('product_display_order'), 'displayorder');
+       $admin->table_head($lang->string('Add Product'));
+       $admin->row_input($lang->string('Short Name<div><dfn>The name that can be used to submit email reports. This should be unique.</dfn></div>'), 'shortname');
+       $admin->row_input($lang->string('Title'), 'title');
+       $admin->row_textarea($lang->string('Description<div><dfn>A short description of this product.</dfn></div>'), 'description');
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the products are displayed.</dfn></div>'), 'displayorder');
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -234,12 +236,12 @@ if ($_REQUEST['do'] == 'updateproduct')
 {
        if (empty($bugsys->in['shortname']) OR empty($bugsys->in['title']))
        {
-               $admin->error(lang::p('go_back_and_fill_both_fields'));
+               $admin->error($lang->string('Please go back and fill in both fields.'));
        }
        
        if (empty($bugsys->in['productid']))
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
        $db->query("UPDATE " . TABLE_PREFIX . "product SET title = '" . $bugsys->in['title'] . "', shortname = '" . $bugsys->in['shortname'] . "', description = '" . $bugsys->in['description'] . "', displayorder = " . intval($bugsys->in['displayorder']) . " WHERE productid = " . intval($bugsys->in['productid']));
@@ -252,22 +254,22 @@ if ($_REQUEST['do'] == 'updateproduct')
 
 if ($_REQUEST['do'] == 'editproduct')
 {
-       $admin->page_start(lang::p('edit_product'));
+       $admin->page_start($lang->string('Edit Product'));
        
        $product = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "product WHERE productid = " . intval($bugsys->in['productid']));
        if (!is_array($product))
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
        $admin->form_start('product.php', 'updateproduct');
        $admin->form_hidden_field('productid', $product['productid']);
        $admin->table_start();
-       $admin->table_head(lang::p('edit_product_title', $product['title']));
-       $admin->row_input(lang::p('product_title'), 'title', $product['title']);
-       $admin->row_input(lang::p('product_shortname'), 'shortname', $product['shortname']);
-       $admin->row_textarea(lang::p('product_description'), 'description', $product['description']);
-       $admin->row_input(lang::p('product_display_order'), 'displayorder', $product['displayorder']);
+       $admin->table_head(sprintf($lang->string('Edit Product - %1$s'), $product['title']));
+       $admin->row_input($lang->string('Title'), 'title', $product['title']);
+       $admin->row_input($lang->string('Short Name<div><dfn>The name that can be used to submit email reports. This should be unique.</dfn></div>'), 'shortname', $product['shortname']);
+       $admin->row_textarea($lang->string('Description<div><dfn>A short description of this product.</dfn></div>'), 'description', $product['description']);
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the products are displayed.</dfn></div>'), 'displayorder', $product['displayorder']);
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -298,7 +300,7 @@ if ($_POST['do'] == 'displayorder')
 
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('products_and_versions'));
+       $admin->page_start($lang->string('Products and Versions'));
        
        $javascript = <<<EOF
 <script type="text/javascript">
@@ -338,15 +340,15 @@ EOF;
        $versions = (array)$version;
        
        $admin->table_start();
-       $admin->table_head(lang::p('products_versions'));
+       $admin->table_head($lang->string('Products / Versions'));
        
        // Handle our global versions
        if (is_array($versions['0']))
        {
-               $admin->row_text(lang::p('global_versions'), construct_option_list('product', -1, 0, 0, 1, 0, -1), 'middle', 2, 'alt3');
+               $admin->row_text($lang->string('Global Versions'), construct_option_list($lang->string('Product'), -1, 0, 0, 1, 0, -1), 'middle', 2, 'alt3');
                foreach ($versions['0'] AS $version)
                {
-                       $admin->row_text('-- ' . $version['version'], construct_option_list('version', $version['versionid'], 1, 0, 0, 1, $version['displayorder']), 'middle', 2, 'alt2');
+                       $admin->row_text('-- ' . $version['version'], construct_option_list($lang->string('Version'), $version['versionid'], 1, 0, 0, 1, $version['displayorder']), 'middle', 2, 'alt2');
                }
        }
        
@@ -354,28 +356,28 @@ EOF;
        foreach ($products AS $product)
        {
                // Product
-               $admin->row_text("<a href=\"product.php?do=editproduct&amp;productid=$product[productid]\">$product[title]</a>", construct_option_list('product', $product['productid'], 1, 1, 1, 1, $product['displayorder']), 'middle', 2, 'alt3');
+               $admin->row_text("<a href=\"product.php?do=editproduct&amp;productid=$product[productid]\">$product[title]</a>", construct_option_list($lang->string('Product'), $product['productid'], 1, 1, 1, 1, $product['displayorder']), 'middle', 2, 'alt3');
                
                // Versions
                foreach ($versions["$product[productid]"] AS $version)
                {
-                       $admin->row_text('-- ' . $version['version'], construct_option_list('version', $version['versionid'], 1, 0, 0, 1, $version['displayorder']), 'middle', 2, 'alt2');
+                       $admin->row_text('-- ' . $version['version'], construct_option_list($lang->string('Version'), $version['versionid'], 1, 0, 0, 1, $version['displayorder']), 'middle', 2, 'alt2');
                }
                
                // Components
                foreach ((array)$component["$product[productid]"] AS $comp)
                {
-                       $admin->row_text("-- <a href=\"product.php?do=editproduct&amp;productid=$comp[productid]\">$comp[title]</a>", construct_option_list('component', $comp['productid'], 1, 0, 1, 1, $comp['displayorder']), 'middle', 2, 'alt1');
+                       $admin->row_text("-- <a href=\"product.php?do=editproduct&amp;productid=$comp[productid]\">$comp[title]</a>", construct_option_list($lang->string('Component'), $comp['productid'], 1, 0, 1, 1, $comp['displayorder']), 'middle', 2, 'alt1');
                        
                        // Component versions
                        foreach ($versions["$comp[productid]"] AS $version)
                        {
-                               $admin->row_text('---- ' . $version['version'], construct_option_list('version', $version['versionid'], 1, 0, 0, 1, $version['displayorder']), 'middle', 2, 'alt2');
+                               $admin->row_text('---- ' . $version['version'], construct_option_list($lang->string('Version'), $version['versionid'], 1, 0, 0, 1, $version['displayorder']), 'middle', 2, 'alt2');
                        }
                }
        }
        
-       $admin->row_span('<input type="submit" name="button" value="  ' . lang::p('save_display_order') . '  " accesskey="s" /> <a href="product.php?do=addproduct">[' . lang::p('add_new_product') . ']</a>', 'tfoot', 'center');
+       $admin->row_span('<input type="submit" name="button" value="  ' . $lang->string('Save Display Order') . '  " accesskey="s" /> <a href="product.php?do=addproduct">[' . $lang->string('Add New Product') . ']</a>', 'tfoot', 'center');
        
        $admin->table_end();
        
index 7f3952be121710351302d75664168b3eac644137..f760a6cabf9d69710ee56728705e1ccf946fa854 100755 (executable)
@@ -38,7 +38,7 @@ if ($_REQUEST['do'] == 'kill')
 
 if ($_REQUEST['do'] == 'delete')
 {
-       $admin->page_confirm(lang::p('confirm_delete_resolution'), 'resolution.php?do=kill&amp;resolutionid=' . intval($bugsys->in['resolutionid']));
+       $admin->page_confirm($lang->string('Are you sure you want to delete this resolution? Doing so will revert all bugs to the default resolution (which is set in the options panel)?'), 'resolution.php?do=kill&amp;resolutionid=' . intval($bugsys->in['resolutionid']));
 }
 
 // ###################################################################
@@ -54,13 +54,13 @@ if ($_POST['do'] == 'insert')
 
 if ($_REQUEST['do'] == 'add')
 {
-       $admin->page_start(lang::p('add_new_resolution'));
+       $admin->page_start($lang->string('Add New Resolution'));
        
        $admin->form_start('resolution.php', 'insert');
        $admin->table_start();
-       $admin->table_head(lang::p('new_resolution'));
-       $admin->row_input(lang::p('resolution_title'), 'resolution');
-       $admin->row_input(lang::p('resolution_display_order'), 'displayorder');
+       $admin->table_head($lang->string('New Resolution'));
+       $admin->row_input($lang->string('Resolution Title<div><dfn>The title of this resolution flag (eg: `Fixed` or `Bogus`)</dfn></div>'), 'resolution');
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the resolutions are displayed. The higher the number, the lower down in the list it is.</dfn></div>'), 'displayorder');
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -84,17 +84,17 @@ if ($_REQUEST['do'] == 'edit')
        $resolution = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "resolution WHERE resolutionid = " . intval($bugsys->in['resolutionid']));
        if (!is_array($resolution))
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
-       $admin->page_start(lang::p('edit_resolution'));
+       $admin->page_start($lang->string('Edit Resolution'));
        
        $admin->form_start('resolution.php', 'update');
        $admin->form_hidden_field('resolutionid', $resolution['resolutionid']);
        $admin->table_start();
-       $admin->table_head(lang::p('edit_resolution_title', $resolution['resolution'], $resolution['resolutionid']));
-       $admin->row_input(lang::p('resolution_title'), 'resolution', $resolution['resolution']);
-       $admin->row_input(lang::p('resolution_display_order'), 'displayorder', $resolution['displayorder']);
+       $admin->table_head(sprintf($lang->string('Edit Resolution - %1$s (id: %2$s)'), $resolution['resolution'], $resolution['resolutionid']));
+       $admin->row_input($lang->string('Resolution Title<div><dfn>The title of this resolution flag (eg: `Fixed` or `Bogus`)</dfn></div>'), 'resolution', $resolution['resolution']);
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the resolutions are displayed. The higher the number, the lower down in the list it is.</dfn></div>'), 'displayorder', $resolution['displayorder']);
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -106,21 +106,21 @@ if ($_REQUEST['do'] == 'edit')
 
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('resolution_manager'));
+       $admin->page_start($lang->string('Resolution Manager'));
        
        $resolutions = $db->query("SELECT * FROM " . TABLE_PREFIX . "resolution ORDER BY displayorder");
        
        $admin->form_start('resolution.php', 'null');
        $admin->table_start();
-       $admin->table_head(lang::p('resolution_manager'));
+       $admin->table_head($lang->string('Resolution Manager'));
        
        while ($resolution = $db->fetch_array($resolutions))
        {
-               $admin->row_text("$resolution[displayorder]: <a href=\"resolution.php?do=edit&amp;resolutionid=$resolution[resolutionid]\">$resolution[resolution]</a>", "(resolutionid: $resolution[resolutionid]) <a href=\"resolution.php?do=edit&amp;resolutionid=$resolution[resolutionid]\">[" . lang::p('edit') . "]</a> <a href=\"resolution.php?do=delete&amp;resolutionid=$resolution[resolutionid]\">[" . lang::p('delete') . "]</a>");
+               $admin->row_text("$resolution[displayorder]: <a href=\"resolution.php?do=edit&amp;resolutionid=$resolution[resolutionid]\">$resolution[resolution]</a>", "(resolutionid: $resolution[resolutionid]) <a href=\"resolution.php?do=edit&amp;resolutionid=$resolution[resolutionid]\">[" . $lang->string('Edit') . "]</a> <a href=\"resolution.php?do=delete&amp;resolutionid=$resolution[resolutionid]\">[" . $lang->string('Delete') . "]</a>");
        }
        $db->free_result($resolutiones);
        
-       $admin->row_span('<a href="resolution.php?do=add">[' . lang::p('add_new_resolution') . ']</a>', 'tfoot', 'center', 3);
+       $admin->row_span('<a href="resolution.php?do=add">[' . $lang->string('Add New Resolution') . ']</a>', 'tfoot', 'center', 3);
        $admin->table_end();
        $admin->form_end();
        
index 6eee9a7b0ab58725e2f2cf634bb21e05d5b71902..161a14bd042376a5e7bb481bb5dc489f4f40c1ce 100755 (executable)
@@ -46,7 +46,7 @@ if ($_POST['do'] == 'update')
 
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('settings'));
+       $admin->page_start($lang->string('Settings'));
        
        $admin->form_start('setting.php', 'update');
        
@@ -73,21 +73,21 @@ if ($_REQUEST['do'] == 'modify')
        
        unset($config);
        
-       foreach ($define AS $group)
+       foreach ($define AS $group => $name)
        {
                $admin->table_start();
-               $admin->table_head(lang::p('settinggroup_' . $group));
+               $admin->table_head($name);
                foreach ($settings["$group"] AS $opt)
                {
-                       $admin->row_span('<span' . ((DEVDEBUG) ? ' title="$bugsys->options[\'' . $opt[1] . '\']"' : '') . "><strong>" . lang::p('setting_' . $opt[1] . '_title') . "</strong></span>", 'thead');
+                       $admin->row_span('<span' . ((DEVDEBUG) ? ' title="$bugsys->options[\'' . $opt[1] . '\']"' : '') . "><strong>" . $opt[5] . "</strong></span>", 'thead');
                        switch ($opt[2])
                        {
                                case 'textbox':
-                                       $admin->row_input(lang::p('setting_' . $opt[1] . '_desc'), 'setting[' . $opt[1] . ']', $options["$opt[1]"]);
+                                       $admin->row_input($opt[6], 'setting[' . $opt[1] . ']', $options["$opt[1]"]);
                                break;
                                
                                case 'textarea':
-                                       $admin->row_textarea(lang::p('setting_' . $opt[1] . '_desc'), 'setting[' . $opt[1] . ']', $options["$opt[1]"]);
+                                       $admin->row_textarea($opt[6], 'setting[' . $opt[1] . ']', $options["$opt[1]"]);
                                break;
                                
                                case 'yesno':
@@ -96,14 +96,14 @@ if ($_REQUEST['do'] == 'modify')
                                                $options["$opt[1]"] = $opt[3];
                                        }
                                        
-                                       $admin->list_item(lang::p('yes'), '1', (($options["$opt[1]"]) ? true : false));
-                                       $admin->list_item(lang::p('no'), '0', (($options["$opt[1]"]) ? false : true));
-                                       $admin->row_list(lang::p('setting_' . $opt[1] . '_desc'), 'setting[' . $opt[1] . ']', false);
+                                       $admin->list_item($lang->string('Yes'), '1', (($options["$opt[1]"]) ? true : false));
+                                       $admin->list_item($lang->string('No'), '0', (($options["$opt[1]"]) ? false : true));
+                                       $admin->row_list($opt[6], 'setting[' . $opt[1] . ']', false);
                                break;
                                
                                default:
                                        eval('$optcode = "' . $opt[2] . '";');
-                                       $admin->row_text(lang::p('setting_' . $opt[1] . '_desc'), $optcode);
+                                       $admin->row_text($opt[6], $optcode);
                                break;
                        }
                }
index 5adb043c353dc71827123297ce4355366cf92c90..7af50abd9cb0c30f84babc607db76d557956fc04 100755 (executable)
@@ -38,7 +38,7 @@ if ($_REQUEST['do'] == 'kill')
 
 if ($_REQUEST['do'] == 'delete')
 {
-       $admin->page_confirm(lang::p('confirm_delete_severity'), 'severity.php?do=kill&amp;severityid=' . intval($bugsys->in['severityid']));
+       $admin->page_confirm($lang->string('Are you sure you want to delete this severity? Doing so will revert all bugs to the default severity (which is set in the options panel)?'), 'severity.php?do=kill&amp;severityid=' . intval($bugsys->in['severityid']));
 }
 
 // ###################################################################
@@ -54,13 +54,13 @@ if ($_POST['do'] == 'insert')
 
 if ($_REQUEST['do'] == 'add')
 {
-       $admin->page_start(lang::p('add_new_severity'));
+       $admin->page_start($lang->string('Add New Severity'));
        
        $admin->form_start('severity.php', 'insert');
        $admin->table_start();
-       $admin->table_head(lang::p('new_severity'));
-       $admin->row_input(lang::p('severity_title'), 'severity');
-       $admin->row_input(lang::p('severity_display_order'), 'displayorder');
+       $admin->table_head($lang->string('New Severity'));
+       $admin->row_input($lang->string('Severity Title<div><dfn>The title of this severity flag (eg: `Major` or `Critical`)</dfn></div>'), 'severity');
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the severities are displayed. The higher the number, the lower down in the list it is.</dfn></div>'), 'displayorder');
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -85,17 +85,17 @@ if ($_REQUEST['do'] == 'edit')
        $severity = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "severity WHERE severityid = " . intval($bugsys->in['severityid']));
        if (!is_array($severity))
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
-       $admin->page_start(lang::p('edit_severity'));
+       $admin->page_start($lang->string('Edit Severity'));
        
        $admin->form_start('severity.php', 'update');
        $admin->form_hidden_field('severityid', $severity['severityid']);
        $admin->table_start();
-       $admin->table_head(lang::p('edit_severity_title', $severity['severity'], $severity['severityid']));
-       $admin->row_input(lang::p('severity_title'), 'severity', $severity['severity']);
-       $admin->row_input(lang::p('severity_display_order'), 'displayorder', $severity['displayorder']);
+       $admin->table_head(sprintf($lang->string('Edit Severity - %1$s (id: %2$s)', $severity['severity'], $severity['severityid'])));
+       $admin->row_input($lang->string('Severity Title<div><dfn>The title of this severity flag (eg: `Major` or `Critical`)</dfn></div>'), 'severity', $severity['severity']);
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the severities are displayed. The higher the number, the lower down in the list it is.</dfn></div>'), 'displayorder', $severity['displayorder']);
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -107,21 +107,21 @@ if ($_REQUEST['do'] == 'edit')
 
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('severity_manager'));
+       $admin->page_start($lang->string('Severity Manager'));
        
        $severities = $db->query("SELECT * FROM " . TABLE_PREFIX . "severity ORDER BY displayorder");
        
        $admin->form_start('severity.php', 'null');
        $admin->table_start();
-       $admin->table_head(lang::p('severity_manager'));
+       $admin->table_head($lang->string('Severity Manager'));
        
        while ($severity = $db->fetch_array($severities))
        {
-               $admin->row_text("$severity[displayorder]: <a href=\"severity.php?do=edit&amp;severityid=$severity[severityid]\">$severity[severity]</a>", "(severityid: $severity[severityid]) <a href=\"severity.php?do=edit&amp;severityid=$severity[severityid]\">[" . lang::p('edit') . "]</a> <a href=\"severity.php?do=delete&amp;severityid=$severity[severityid]\">[" . lang::p('delete') . "]</a>");
+               $admin->row_text("$severity[displayorder]: <a href=\"severity.php?do=edit&amp;severityid=$severity[severityid]\">$severity[severity]</a>", "(severityid: $severity[severityid]) <a href=\"severity.php?do=edit&amp;severityid=$severity[severityid]\">[" . $lang->string('Edit') . "]</a> <a href=\"severity.php?do=delete&amp;severityid=$severity[severityid]\">[" . $lang->string('Delete') . "]</a>");
        }
        $db->free_result($severityes);
        
-       $admin->row_span('<a href="severity.php?do=add">[' . lang::p('add_new_severity') . ']</a>', 'tfoot', 'center', 3);
+       $admin->row_span('<a href="severity.php?do=add">[' . $lang->string('Add New Severity') . ']</a>', 'tfoot', 'center', 3);
        $admin->table_end();
        $admin->form_end();
        
index b1362434d459e93050a243dacb7bc78cb7bf21fe..15eb234179971cec6c194ceefda18e6e85a2c7c4 100755 (executable)
@@ -38,7 +38,7 @@ if ($_REQUEST['do'] == 'kill')
 
 if ($_REQUEST['do'] == 'delete')
 {
-       $admin->page_confirm(lang::p('confirm_delete_status'), 'status.php?do=kill&amp;statusid=' . intval($bugsys->in['statusid']));
+       $admin->page_confirm($lang->string('Are you sure you want to delete this status? Doing so will revert all bugs to the default status (which is set in the options panel)?'), 'status.php?do=kill&amp;statusid=' . intval($bugsys->in['statusid']));
 }
 
 // ###################################################################
@@ -54,14 +54,14 @@ if ($_POST['do'] == 'insert')
 
 if ($_REQUEST['do'] == 'add')
 {
-       $admin->page_start(lang::p('add_new_status'));
+       $admin->page_start($lang->string('Add New Status'));
        
        $admin->form_start('status.php', 'insert');
        $admin->table_start();
-       $admin->table_head(lang::p('new_status'));
-       $admin->row_input(lang::p('status_title'), 'status');
-       $admin->row_input(lang::p('status_display_order'), 'displayorder');
-       $admin->row_input(lang::p('status_color'), 'color');
+       $admin->table_head($lang->string('New Status'));
+       $admin->row_input($lang->string('Status Title<div><dfn>The title of this status flag (eg: `Confirmed` or `Closed (Fixed)`)</dfn></div>'), 'status');
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the statuses ar displayed.</dfn></div>'), 'displayorder');
+       $admin->row_input($lang->string('Status Colour<div><dfn>The colour of the status. This will be displayed on bug listings page to make viewing easier. Note: you must enter the # sign if you are using HEX values.</dfn></div>'), 'color');
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -85,18 +85,18 @@ if ($_REQUEST['do'] == 'edit')
        $status = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "status WHERE statusid = " . intval($bugsys->in['statusid']));
        if (!is_array($status))
        {
-               $admin->error(lang::p('error_invalid_id'));
+               $admin->error($lang->getlex('error_invalid_id'));
        }
        
-       $admin->page_start(lang::p('edit_status'));
+       $admin->page_start($lang->string('Edit Status'));
        
        $admin->form_start('status.php', 'update');
        $admin->form_hidden_field('statusid', $status['statusid']);
        $admin->table_start();
-       $admin->table_head(lang::p('edit_status_title', $status['status'], $status['statusid']));
-       $admin->row_input(lang::p('status_title'), 'status', $status['status']);
-       $admin->row_input(lang::p('status_display_order'), 'displayorder', $status['displayorder']);
-       $admin->row_input(lang::p('status_color'), 'color', $status['color']);
+       $admin->table_head(sprintf($lang->string('Edit Status - %1$s (id: %2$s)'), $status['status'], $status['statusid']));
+       $admin->row_input($lang->string('Status Title<div><dfn>The title of this status flag (eg: `Confirmed` or `Closed (Fixed)`)</dfn></div>'), 'status', $status['status']);
+       $admin->row_input($lang->string('Display Order<div><dfn>The order in which the statuses ar displayed.</dfn></div>'), 'displayorder', $status['displayorder']);
+       $admin->row_input($lang->string('Status Colour<div><dfn>The colour of the status. This will be displayed on bug listings page to make viewing easier. Note: you must enter the # sign if you are using HEX values.</dfn></div>'), 'color', $status['color']);
        $admin->row_submit();
        $admin->table_end();
        $admin->form_end();
@@ -108,22 +108,22 @@ if ($_REQUEST['do'] == 'edit')
 
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('status_manager'));
+       $admin->page_start($lang->string('Status Manager'));
        
        $statuses = $db->query("SELECT * FROM " . TABLE_PREFIX . "status");
        
        $admin->form_start('status.php', 'null');
        $admin->table_start();
-       $admin->table_head(lang::p('status_manager'));
+       $admin->table_head($lang->string('Status Manager'));
        
        while ($status = $db->fetch_array($statuses))
        {
                $colourblock = '<span style="float: right"><div style="height: 12px; width: 12px; background-color: ' . $status['color'] . '; border: 1px black solid"></div></span>';
-               $admin->row_text("$colourblock$status[displayorder]: <a href=\"status.php?do=edit&amp;statusid=$status[statusid]\">$status[status]</a>", "(statusid: $status[statusid]) <a href=\"status.php?do=edit&amp;statusid=$status[statusid]\">[" . lang::p('edit') . "]</a> <a href=\"status.php?do=delete&amp;statusid=$status[statusid]\">[" . lang::p('delete') . "]</a>");
+               $admin->row_text("$colourblock$status[displayorder]: <a href=\"status.php?do=edit&amp;statusid=$status[statusid]\">$status[status]</a>", "(statusid: $status[statusid]) <a href=\"status.php?do=edit&amp;statusid=$status[statusid]\">[" . $lang->string('Edit') . "]</a> <a href=\"status.php?do=delete&amp;statusid=$status[statusid]\">[" . $lang->string('Delete') . "]</a>");
        }
        $db->free_result($statuses);
        
-       $admin->row_span('<a href="status.php?do=add">[' . lang::p('add_new_status') . ']</a>', 'tfoot', 'center', 3);
+       $admin->row_span('<a href="status.php?do=add">[' . $lang->string('Add New Status') . ']</a>', 'tfoot', 'center', 3);
        $admin->table_end();
        $admin->form_end();
        
index a5f4d1a3ef0d77579b38d63fa6a80b208871f7ab..d73569f6542e22d4ebb1d794bc0e6760ffa76084 100755 (executable)
@@ -18,6 +18,46 @@ if (!can_perform('canadmingroups'))
        admin_login();
 }
 
+// ###################################################################
+// define permissions as groups
+
+$permissions = array(
+       $lang->string('General Permissions') => array(
+               'canviewbugs' => $lang->string('Can View Bugs'),
+               'canviewhidden' => $lang->string('Can View Hidden Bugs and Comments'),
+               'cansearch' => $lang->string('Can Search Bugs'),
+               'cansubscribe' => $lang->string('Can Subscribe to Bugs'),
+               'canbeassignedto' => $lang->string('Can Be Assigned Bugs')
+       ),
+       
+       $lang->string('Posting/Submitting Permissions') => array(
+               'canvote' => $lang->string('Can Vote on Polls'),
+               'cansubmitbugs' => $lang->string('Can Submit Bugs'),
+               'canpostcomments' => $lang->string('Can Post Comments'),
+               'cangetattach' => $lang->string('Can View Attachments'),
+               'canputattach' => $lang->string('Can Upload/Edit Own Attachments'),
+               'caneditattach' => $lang->string('Can Manage All Attachments')
+       ),
+       
+       $lang->string('Moderation/Managment Permissions') => array(
+               'caneditown' => $lang->string('Can Edit Own Bugs'),
+               'caneditothers' => $lang->string('Can Edit Others\' Bugs'),
+               'caneditinfo' => $lang->string('Can Edit Bug Information'),
+               'canassign' => $lang->string('Can Assign Bugs'),
+               'canchangestatus' => $lang->string('Can Change Status')
+       ),
+       
+       $lang->string('Administrator Permissions') => array(
+               'canadminpanel' => $lang->string('Can Access Control Panel'),
+               'canadminbugs' => $lang->string('Can Administer Bug Reports'),
+               'canadminfields' => $lang->string('Can Administer Additional Bug Fields'),
+               'canadminversions' => $lang->string('Can Administer Products / Components / Versions'),
+               'canadminusers' => $lang->string('Can Administer Users'),
+               'canadmingroups' => $lang->string('Can Administer Usergroups'),
+               'canadmintools' => $lang->string('Can Administer Settings / Maintenance Tools')
+       )
+);
+
 // ###################################################################
 
 if (empty($_REQUEST['do']))
@@ -31,7 +71,7 @@ if ($_REQUEST['do'] == 'kill')
 {
        if ($bugsys->in['usergroupid'] < 7)
        {
-               $admin->error(lang::p('cant_delete_default_usergroup'));
+               $admin->error($lang->string('You can\'t delete a default usergroup.'));
        }
        
        $db->query("DELETE FROM " . TABLE_PREFIX . "usergroup WHERE usergroupid = " . intval($bugsys->in['usergroupid']));
@@ -49,10 +89,10 @@ if ($_REQUEST['do'] == 'delete')
 {
        if ($bugsys->in['usergroupid'] < 7)
        {
-               $admin->error(lang::p('cant_delete_default_usergroup'));
+               $admin->error($lang->string('You can\'t delete a default usergroup.'));
        }
        
-       $admin->page_confirm(lang::p('confirm_delete_usergroup'), 'usergroup.php?do=kill&amp;usergroupid=' . intval($bugsys->in['usergroupid']));
+       $admin->page_confirm($lang->string('Are you sure you want to delete this usergroup? All users in this group will be set back to the default registered usergroup (id: 2).'), 'usergroup.php?do=kill&amp;usergroupid=' . intval($bugsys->in['usergroupid']));
 }
 
 // ###################################################################
@@ -62,16 +102,16 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
        $add = (($_REQUEST['do'] == 'add') ? true : false);
        $edit = (($_REQUEST['do'] == 'edit') ? true : false);
        
-       $admin->page_start((($add) ? lang::p('new_usergroup') : lang::p('edit_usergroup')));
+       $admin->page_start(($add ? $lang->string('New Usergroup') : $lang->string('Edit Usergroup')));
        
-       $admin->form_start('usergroup.php', (($add) ? 'insert' : 'update'));
+       $admin->form_start('usergroup.php', ($add ? 'insert' : 'update'));
        
        if ($edit)
        {
                $usergroup = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "usergroup WHERE usergroupid = " . intval($bugsys->in['usergroupid']));
                if (!is_array($usergroup))
                {
-                       $admin->error(lang::p('error_invalid_id'));
+                       $admin->error($lang->getlex('error_invalid_id'));
                }
                
                $admin->form_hidden_field('usergroupid', $usergroup['usergroupid']);
@@ -83,55 +123,24 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
        
        // Details
        $admin->table_start();
-       $admin->table_head(lang::p('usergroup_details'));
-       $admin->row_input(lang::p('usergroup_title'), 'title', $bugsys->sanitize($usergroup['title']));
-       $admin->row_input(lang::p('usergroup_display_title'), 'displaytitle', $bugsys->sanitize($usergroup['displaytitle']));
-       $admin->row_input(lang::p('usergroup_open_markup'), 'opentag', $bugsys->sanitize($usergroup['opentag']));
-       $admin->row_input(lang::p('usergroup_close_markup'), 'closetag', $bugsys->sanitize($usergroup['closetag']));
+       $admin->table_head($lang->string('Usergroup Details'));
+       $admin->row_input($lang->string('Usergroup Title'), 'title', $bugsys->sanitize($usergroup['title']));
+       $admin->row_input($lang->string('Display Title<div><dfn>This is the title that others will be able to see when comments are posted.</dfn></div>'), 'displaytitle', $bugsys->sanitize($usergroup['displaytitle']));
+       $admin->row_input($lang->string('Opening Tag Markup<div><dfn>Place all open HTML tags here that will be wrapped around the username.</dfn></div>'), 'opentag', $bugsys->sanitize($usergroup['opentag']));
+       $admin->row_input($lang->string('Closing Tag Markup<div><dfn>Place all closed HTML tags that will close any open HTML tags entered above.</dfn></div>'), 'closetag', $bugsys->sanitize($usergroup['closetag']));
        $admin->table_end();
        
        // Permission
        $admin->table_start();
-       
-       // define permissions as groups
-       $permissions = array(
-               'general' => array(
-                       'canviewbugs',
-                       'canviewhidden',
-                       'cansearch',
-                       'cansubscribe',
-                       'canbeassignedto'),
-               'posting' => array(
-                       'canvote',
-                       'cansubmitbugs',
-                       'canpostcomments',
-                       'cangetattach',
-                       'canputattach',
-                       'caneditattach'),
-               'moderation' => array(
-                       'caneditown',
-                       'caneditothers',
-                       'caneditinfo',
-                       'canassign',
-                       'canchangestatus'),
-               'admin' => array(
-                       'canadminpanel',
-                       'canadminbugs',
-                       'canadminfields',
-                       'canadminversions',
-                       'canadminusers',
-                       'canadmingroups',
-                       'canadmintools')
-       );
-       
-       $admin->table_head(lang::p('usergroup_permission_settings'));
+               
+       $admin->table_head($lang->string('Permission Settings'));
        
        foreach ($permissions AS $group => $settings)
        {
-               $admin->row_span(lang::p("permissions_group_$group"), 'thead', 'center');
-               foreach ($settings AS $setting)
+               $admin->row_span($group, 'thead', 'center');
+               foreach ($settings AS $setting => $name)
                {
-                       $admin->row_yesno(lang::p("permissions_$setting"), "perm[$setting]", ($usergroup['permissions'] & $_PERMISSION["$setting"]));
+                       $admin->row_yesno($name, "perm[$setting]", ($usergroup['permissions'] & $_PERMISSION["$setting"]));
                }
        }
        
@@ -139,7 +148,7 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
                
        // custom field permissions
        $admin->table_start();
-       $admin->table_head(lang::p('custom_field_permissions'));
+       $admin->table_head($lang->string('Custom Field Permissions'));
        
        if ($edit)
        {
@@ -154,9 +163,9 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
        while ($field = $db->fetch_array($fields))
        {
                unset($listitem);
-               $admin->list_item(lang::p('no_permission'), 0, $permissions["$field[fieldid]"] == 0);
-               $admin->list_item(lang::p('can_view_field'), 1, $permissions["$field[fieldid]"] == 1);
-               $admin->list_item(lang::p('can_view_edit_field'), 2, $permissions["$field[fieldid]"] == 2);
+               $admin->list_item($lang->string('No Permission'), 0, $permissions["$field[fieldid]"] == 0);
+               $admin->list_item($lang->string('Can View Field'), 1, $permissions["$field[fieldid]"] == 1);
+               $admin->list_item($lang->string('Can View, Edit Field'), 2, $permissions["$field[fieldid]"] == 2);
                $admin->row_list($field['name'], "custom[$field[fieldid]]");
        }
        
@@ -254,11 +263,11 @@ if ($_POST['do'] == 'update')
 
 if ($_REQUEST['do'] == 'modify')
 {
-       $admin->page_start(lang::p('usergroup_manager'));
+       $admin->page_start($lang->string('Usergroup Manager'));
        
        $admin->form_start('usergroup.php', 'null');
        $admin->table_start();
-       $admin->table_head(lang::p('usergroup_manager'), 3);
+       $admin->table_head($lang->string('Usergroup Manager'), 3);
        
        $groups = $db->query("SELECT * FROM " . TABLE_PREFIX . "usergroup ORDER BY usergroupid ASC");
        while ($group = $db->fetch_array($groups))
@@ -279,13 +288,13 @@ if ($_REQUEST['do'] == 'modify')
                $usergroups["$group[usergroupid]"]['total'] = $group['total'];
        }
        
-       $admin->table_column_head(array(lang::p('usergroup'), lang::p('number_of_users'), lang::p('action')));
+       $admin->table_column_head(array($lang->string('Usergroup'), $lang->string('Number of Users'), $lang->string('Action')));
        foreach ($usergroups AS $group)
        {
-               $admin->row_multi_item(array("<a href=\"usergroup.php?do=edit&amp;usergroupid=$group[usergroupid]\">$group[title]</a>" => 'l', ((!$group['total']) ? '-' : $group['total']) => 'c', "<a href=\"usergroup.php?do=edit&amp;usergroupid=$group[usergroupid]\">[" . lang::p('edit') . "]</a>" . (($group['usergroupid'] > 6) ? "<a href=\"usergroup.php?do=delete&amp;usergroupid=$group[usergroupid]\">[" . lang::p('delete') . "]</a>" : '') => 'c'));
+               $admin->row_multi_item(array("<a href=\"usergroup.php?do=edit&amp;usergroupid=$group[usergroupid]\">$group[title]</a>" => 'l', ((!$group['total']) ? '-' : $group['total']) => 'c', "<a href=\"usergroup.php?do=edit&amp;usergroupid=$group[usergroupid]\">[" . $lang->string('Edit') . "]</a>" . (($group['usergroupid'] > 6) ? "<a href=\"usergroup.php?do=delete&amp;usergroupid=$group[usergroupid]\">[" . $lang->string('Delete') . "]</a>" : '') => 'c'));
        }
        
-       $admin->row_span('<a href="usergroup.php?do=add">[' . lang::p('add_new_usergroup') . ']</a>', 'tfoot', 'center', 3);
+       $admin->row_span('<a href="usergroup.php?do=add">[' . $lang->string('Add New Usergroup') . ']</a>', 'tfoot', 'center', 3);
        $admin->table_end();
        $admin->form_end();
        
index b55f816e379023754c8452303b760bad9302e8cd..a2547b804b7c27f8c4a18f9dfcc1b6f87c8e3549 100755 (executable)
@@ -26,14 +26,14 @@ if (isset($bugsys->in['attachmentid']))
        $attachment = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "attachment WHERE attachmentid = " . intval($bugsys->in['attachmentid']));
        if (!$attachment)
        {
-               $message->error(lang::p('error_invalid_id'));
+               $message->error($lang->getlex('error_invalid_id'));
        }
 }
 
 $bug = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = " . (($attachment['attachmentid']) ? $attachment['bugid'] : intval($bugsys->in['bugid'])));
 if (!$bug)
 {
-       $message->error(lang::p('error_invalid_id'));
+       $message->error($lang->getlex('error_invalid_id'));
 }
 
 // setup logging
@@ -57,7 +57,7 @@ if ($_REQUEST['do'] == 'kill')
        $log->allowempty = true;
        $log->log();
        
-       $message->redirect(lang::p('attachment_deleted'), "showreport.php?bugid=$bug[bugid]");
+       $message->redirect($lang->string('The attachment has been removed.'), "showreport.php?bugid=$bug[bugid]");
 }
 
 // ###################################################################
@@ -69,7 +69,7 @@ if ($_REQUEST['do'] == 'delete')
                $message->error_permission();
        }
        
-       $message->message(lang::r("are you sure you want to delete this attachment? <a href=\"attachment.php?do=kill&amp;attachmentid=$attachment[attachmentid]\">yes</a>"));
+       $message->message(sprintf($lang->string('Are you sure want to delete this attachment (id: %1$s)? <a href="attachment.php?do=kill&amp;attachmentid=%1$s">Yes</a>'), $attachment['attachmentid']));
 }
 
 // ###################################################################
@@ -88,24 +88,24 @@ if ($_POST['do'] == 'insert')
        switch ($FILE['error'])
        {
                case 0: break;
-               case 1: $message->error(lang::p('error_file_too_big_php')); break;
-               case 2: $message->error(lang::p('error_file_too_big')); break;
-               case 3: $message->error(lang::p('error_file_partial_upload')); break;
-               case 4: $message->error(lang::p('error_file_not_uploaded_at_all')); break;
-               case 6: $message->error(lang::p('error_file_not_in_tmp')); break;
+               case 1: $message->error($lang->string('PHP said the file you uploaded was too big.')); break;
+               case 2: $message->error($lang->string('The file exceeds the allowed upload size.')); break;
+               case 3: $message->error($lang->string('The file was only partially uploaded.')); break;
+               case 4: $message->error($lang->string('The file was not uploaded at all.')); break;
+               case 6: $message->error($lang->string('PHP could not find the /tmp directory.')); break;
        }
        
        // did it upload?
        if (!is_uploaded_file($FILE['tmp_name']))
        {
-               $message->error(lang::p('error_file_not_uploaded'));
+               $message->error($lang->string('The file you specified did not upload.'));
        }
        
        // #*# put some MIME-type validation here
        
        if (!$bugsys->in['description'])
        {
-               $message->error(lang::p('error_need_file_description'));
+               $message->error($lang->string('You need to specify a file description.'));
        }
        
        $filedata = $bugsys->escape(file_get_contents($FILE['tmp_name']), true, true);
@@ -139,7 +139,7 @@ if ($_POST['do'] == 'insert')
                
                $log->language = 'log_mark_obsoletes';
                $log->arguments = array($attachmentid, $FILE['name'], implode(', ', $obsoletes));
-               $log->log($log->diff(lang::p('obsoleted_attachments'), '', implode(', ', $obsoletes)));
+               $log->log($log->diff($lang->string('Obsoleted attachments'), '', implode(', ', $obsoletes)));
        }
        
        // handle comment stuff
@@ -173,7 +173,7 @@ if ($_POST['do'] == 'insert')
        // update the last post data
        $db->query("UPDATE " . TABLE_PREFIX . "bug SET lastposttime = $time, lastpostby = " . $bugsys->userinfo['userid'] . " WHERE bugid = $bug[bugid]");
        
-       $message->redirect(lang::p('attachment_added'), "showreport.php?bugid=$bug[bugid]");
+       $message->redirect($lang->string('The attachment has been added to the bug.'), "showreport.php?bugid=$bug[bugid]");
 }
 
 // ###################################################################
@@ -227,7 +227,7 @@ if ($_POST['do'] == 'update')
        $log->log($log->diff('description', $diff[0]['description'], $diff[1]['description']));
        $log->log($log->diff('obsolete', $diff[0]['obsolete'], $diff[1]['obsolete']));
        
-       $message->redirect(lang::p('attachment_updated'), "showreport.php?bugid=$bug[bugid]");
+       $message->redirect($lang->string('The attachment was successfully modified.'), "showreport.php?bugid=$bug[bugid]");
 }
 
 // ###################################################################
diff --git a/docs/lang_file_import.php b/docs/lang_file_import.php
deleted file mode 100644 (file)
index beda6c1..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-// takes the XML language file and loads it into the database
-// SVN: $Id$
-
-chdir('./../');
-
-require_once('./global.php');
-
-if (empty($_REQUEST['do']))
-{
-       echo "are you sure? <a href=\"lang_file_import.php?do=1\">yes</a>";
-}
-
-if ($_REQUEST['do'] == 1)
-{
-       require_once('./includes/class_xml_language.php');
-       $lang = new XML_Language();
-       
-       $lang->path = './docs/lang_file_master.xml';
-       $lang->load();
-       $lang->parse();
-       $query = $lang->build();
-       
-       if ($query)
-       {
-               $db->query("TRUNCATE TABLE " . TABLE_PREFIX . "phrase");
-               $db->query($query);
-               echo 'language file imported...';
-       }
-}
-
-?>
\ No newline at end of file
index 57e3e0206337985c4607e2b31e5b7fbf1216eea9..250db0d71e80852b0f34076fb0aa5776fd23865c 100755 (executable)
 <!-- $Id$ -->
 
 <language MASTER="MASTER">
-       <phrase name="action"><![CDATA[Action]]></phrase>
-       <phrase name="additional_bug_fields"><![CDATA[Additional Bug Fields]]></phrase>
-       <phrase name="add_component"><![CDATA[Add Component]]></phrase>
-       <phrase name="add_new_field"><![CDATA[Add New Bug Field]]></phrase>
-       <phrase name="add_new_priority"><![CDATA[Add New Priority]]></phrase>
-       <phrase name="add_new_product"><![CDATA[Add New Product]]></phrase>
-       <phrase name="add_new_resolution"><![CDATA[Add New Resolution]]></phrase>
-       <phrase name="add_new_severity"><![CDATA[Add New Severity]]></phrase>
-       <phrase name="add_new_status"><![CDATA[Add New Status]]></phrase>
-       <phrase name="add_new_usergroup"><![CDATA[Add New Usergroup]]></phrase>
-       <phrase name="add_new_version"><![CDATA[Add New Version]]></phrase>
-       <phrase name="add_product"><![CDATA[Add Product]]></phrase>
-       <phrase name="add_version"><![CDATA[Add Version]]></phrase>
-       <phrase name="administration_x"><![CDATA[Administration - %1$s]]></phrase>
-       <phrase name="bugstrike_login"><![CDATA[BugStrike Login]]></phrase>
-       <phrase name="cant_delete_default_usergroup"><![CDATA[You can't delete a default usergroup.]]></phrase>
-       <phrase name="confirm"><![CDATA[Confirm]]></phrase>
-       <phrase name="confirm_delete_priority"><![CDATA[Are you sure you want to delete this priority? Doing so will revert all bugs to the default priority (which is set in the options panel)?]]></phrase>
-       <phrase name="confirm_delete_product"><![CDATA[Are you sure you want to delete this product and all of it's sub-versions and components (as well as any bugs contained within those groups)?]]></phrase>
-       <phrase name="confirm_delete_resolution"><![CDATA[Are you sure you want to delete this resolution? Doing so will revert all bugs to the default resolution (which is set in the options panel)?]]></phrase>
-       <phrase name="confirm_delete_severity"><![CDATA[Are you sure you want to delete this severity? Doing so will revert all bugs to the default severity (which is set in the options panel)?]]></phrase>
-       <phrase name="confirm_delete_status"><![CDATA[Are you sure you want to delete this status? Doing so will revert all bugs to the default status (which is set in the options panel)?]]></phrase>
-       <phrase name="confirm_delete_usergroup"><![CDATA[Are you sure you want to delete this usergroup? All users in this group will be set back to the default registered usergroup (id: 2).]]></phrase>
-       <phrase name="confirm_delete_version"><![CDATA[Are you sure you want to delete this version? Doing so will do x to the bugs with this version.]]></phrase>
-       <phrase name="delete_wraplink"><![CDATA[[Delete]]]></phrase>
-       <phrase name="edit_field"><![CDATA[Edit Field]]></phrase>
-       <phrase name="edit_priority"><![CDATA[Edit Priority]]></phrase>
-       <phrase name="edit_priority_title"><![CDATA[Edit Priority - %1$s (priorityid: %2$s)]]></phrase>
-       <phrase name="edit_product"><![CDATA[Edit Product]]></phrase>
-       <phrase name="edit_product_title"><![CDATA[Edit Product - %1$s]]></phrase>
-       <phrase name="edit_resolution"><![CDATA[Edit Resolution]]></phrase>
-       <phrase name="edit_resolution_title"><![CDATA[Edit Resolution - %1$s (resolutionid: %2$s)]]></phrase>
-       <phrase name="edit_severity"><![CDATA[Edit Severity]]></phrase>
-       <phrase name="edit_severity_title"><![CDATA[Edit Severity  - %1$s (severityid: %2$s)]]></phrase>
-       <phrase name="edit_status"><![CDATA[Edit Status]]></phrase>
-       <phrase name="edit_status_title"><![CDATA[Edit Status  - %1$s (statusid: %2$s)]]></phrase>
-       <phrase name="edit_usergroup"><![CDATA[Edit Usergroup]]></phrase>
-       <phrase name="edit_version"><![CDATA[Edit Version]]></phrase>
-       <phrase name="edit_version_title"><![CDATA[Edit Version - %1$s]]></phrase>
-       <phrase name="edit_wraplink"><![CDATA[[Edit]]]></phrase>
-       <phrase name="email"><![CDATA[Email]]></phrase>
-       <phrase name="error"><![CDATA[Error]]></phrase>
-       <phrase name="error_invalid_id"><![CDATA[That is an invalid ID.]]></phrase>
-       <phrase name="error_no_permission"><![CDATA[You do not have permission to access this page. If you think that this is an error, please contact an administrator.]]></phrase>
-       <phrase name="field_x_is_required"><![CDATA[The field titled "%1$s" is a required field.]]></phrase>
-       <phrase name="fill_in_version_number"><![CDATA[Please fill in a version number.]]></phrase>
-       <phrase name="global_versions"><![CDATA[Global Versions]]></phrase>
-       <phrase name="go"><![CDATA[Go]]></phrase>
-       <phrase name="go_back_and_fill_both_fields"><![CDATA[Please go back and fill in both fields.]]></phrase>
-       <phrase name="guest"><![CDATA[Guest]]></phrase>
-       <phrase name="invalid_admin_session_terminated"><![CDATA[Invalid admin session has been terminated.]]></phrase>
-       <phrase name="login"><![CDATA[Login]]></phrase>
-       <phrase name="log_kill_attachment"><![CDATA[Removed attachment #%1$s]]></phrase>
-       <phrase name="log_mark_obsoletes"><![CDATA[Marking other attachments obsolete]]></phrase>
-       <phrase name="log_new_attachment"><![CDATA[Uploaded new attachment "%1$s" (attachmentid: %2$s)]]></phrase>
-       <phrase name="log_new_attachment_comment"><![CDATA[Created comment #%2$s]]></phrase>
-       <phrase name="log_new_comment"><![CDATA[Added comment (commentid: #%1$s)]]></phrase>
-       <phrase name="log_update_attachment"><![CDATA[Updated attachment #%1$s]]></phrase>
-       <phrase name="log_update_bug"><![CDATA[Updated bug]]></phrase>
-       <phrase name="log_update_comment"><![CDATA[Updated comment #%1$s]]></phrase>
-       <phrase name="new_priority"><![CDATA[New Priority]]></phrase>
-       <phrase name="new_resolution"><![CDATA[New Resolution]]></phrase>
-       <phrase name="new_severity"><![CDATA[New Severity]]></phrase>
-       <phrase name="new_status"><![CDATA[New Status]]></phrase>
-       <phrase name="new_usergroup"><![CDATA[New Usergroup]]></phrase>
-       <phrase name="no"><![CDATA[No]]></phrase>
-       <phrase name="number_of_users"><![CDATA[Number of Users]]></phrase>
-       <phrase name="password"><![CDATA[Password]]></phrase>
-       <phrase name="permissions_canadminbugs"><![CDATA[Can Administer Bug Reports]]></phrase>
-       <phrase name="permissions_canadminfields"><![CDATA[Can Administer Additional Bug Fields]]></phrase>
-       <phrase name="permissions_canadmingroups"><![CDATA[Can Administer Usergroups]]></phrase>
-       <phrase name="permissions_canadminpanel"><![CDATA[Can Access Control Panel]]></phrase>
-       <phrase name="permissions_canadmintools"><![CDATA[Can Administer Settings / Maintenance Tools]]></phrase>
-       <phrase name="permissions_canadminusers"><![CDATA[Can Administer Users]]></phrase>
-       <phrase name="permissions_canadminversions"><![CDATA[Can Administer Products / Components / Versions]]></phrase>
-       <phrase name="permissions_canassign"><![CDATA[Can Assign Bugs]]></phrase>
-       <phrase name="permissions_canbeassignedto"><![CDATA[Can Be Assigned Bugs]]></phrase>
-       <phrase name="permissions_canchangestatus"><![CDATA[Can Change Status]]></phrase>
-       <phrase name="permissions_caneditattach"><![CDATA[Can Manage All Attachments]]></phrase>
-       <phrase name="permissions_caneditinfo"><![CDATA[Can Edit Bug Information]]></phrase>
-       <phrase name="permissions_caneditothers"><![CDATA[Can Edit Others' Bugs]]></phrase>
-       <phrase name="permissions_caneditown"><![CDATA[Can Edit Own Bugs]]></phrase>
-       <phrase name="permissions_cangetattach"><![CDATA[Can View Attachments]]></phrase>
-       <phrase name="permissions_canpostcomments"><![CDATA[Can Post Comments]]></phrase>
-       <phrase name="permissions_canputattach"><![CDATA[Can Upload/Edit Own Attachments]]></phrase>
-       <phrase name="permissions_cansearch"><![CDATA[Can Search Bugs]]></phrase>
-       <phrase name="permissions_cansubmitbugs"><![CDATA[Can Submit Bugs]]></phrase>
-       <phrase name="permissions_cansubscribe"><![CDATA[Can Subscribe to Bugs]]></phrase>
-       <phrase name="permissions_canviewbugs"><![CDATA[Can View Bugs]]></phrase>
-       <phrase name="permissions_canviewhidden"><![CDATA[Can View Hidden Bugs and Comments]]></phrase>
-       <phrase name="permissions_canvote"><![CDATA[Can Vote on Polls]]></phrase>
-       <phrase name="permissions_group_admin"><![CDATA[Administrator Permissions]]></phrase>
-       <phrase name="permissions_group_general"><![CDATA[General Permissions]]></phrase>
-       <phrase name="permissions_group_moderation"><![CDATA[Moderation/Managment Permissions]]></phrase>
-       <phrase name="permissions_group_posting"><![CDATA[Posting/Submitting Permissions]]></phrase>
-       <phrase name="priority_display_order"><![CDATA[Display Order<div><dfn>The order in which the priorities are displayed. The higher the number, the lower down in the list it is.</dfn></div>]]></phrase>
-       <phrase name="priority_manager"><![CDATA[Priority Manager]]></phrase>
-       <phrase name="priority_title"><![CDATA[Priority Title<div><dfn>The title of this priority flag (eg: `Slated for Development` or `Address Now`)</dfn></div>]]></phrase>
-       <phrase name="products_and_versions"><![CDATA[Products and Versions]]></phrase>
-       <phrase name="products_versions"><![CDATA[Products / Versions]]></phrase>
-       <phrase name="product_description"><![CDATA[Description<div><dfn>A short description of this product.</dfn></div>]]></phrase>
-       <phrase name="product_display_order"><![CDATA[Display Order<div><dfn>The order in which the products are displayed.</dfn></div>]]></phrase>
-       <phrase name="product_shortname"><![CDATA[Short Name<div><dfn>The name that can be used to submit email reports. This should be unique.</dfn></div>]]></phrase>
-       <phrase name="product_title"><![CDATA[Title]]></phrase>
-       <phrase name="redirect"><![CDATA[Redirect]]></phrase>
-       <phrase name="reset"><![CDATA[Reset]]></phrase>
-       <phrase name="resolution_display_order"><![CDATA[Display Order<div><dfn>The order in which the resolutions are displayed. The higher the number, the lower down in the list it is.</dfn></div>]]></phrase>
-       <phrase name="resolution_manager"><![CDATA[Resolution Manager]]></phrase>
-       <phrase name="resolution_title"><![CDATA[Resolution Title<div><dfn>The title of this resolution flag (eg: `Fixed` or `Bogus`)</dfn></div>]]></phrase>
-       <phrase name="save_display_order"><![CDATA[Save Display Order]]></phrase>
-       <phrase name="settinggroup_general"><![CDATA[General Options]]></phrase>
-       <phrase name="settinggroup_reporting"><![CDATA[Bug Reporting Options]]></phrase>
-       <phrase name="settinggroup_untouchables"><![CDATA[Untouchables]]></phrase>
-       <phrase name="setting_allowhtml_desc"><![CDATA[Set this to <em>yes</em> if you want to allow users to post raw HTML in their bug reports. This is <strong>very</strong> dangerous and it is not recommended.]]></phrase>
-       <phrase name="setting_allowhtml_title"><![CDATA[Allow HTML in Bug Reports]]></phrase>
-       <phrase name="setting_allownewreg_desc"><![CDATA[Can unregistered users be allowed to create accounts.]]></phrase>
-       <phrase name="setting_allownewreg_title"><![CDATA[Allow New Registrations]]></phrase>
-       <phrase name="setting_dateformat_desc"><![CDATA[Set the date format used for bug report and comment information. This is based on PHP's date() function.]]></phrase>
-       <phrase name="setting_dateformat_title"><![CDATA[Date Format]]></phrase>
-       <phrase name="setting_defaultassign_desc"><![CDATA[This is the default developer new bugs will be assigned to. If a user does not have permisssion to assign bugs, this will be the default. If you don't want any default assignment, leave this as <em>Not Selected</em>.]]></phrase>
-       <phrase name="setting_defaultassign_title"><![CDATA[Default Bug Assignment]]></phrase>
-       <phrase name="setting_defaultcomment_desc"><![CDATA[If you wish to set a template for entering the initial comment of a bug report, then you may specify this here. However, the template will only take effect on the initial report/comment. Note: the template cannot be forced on the user as there is no way to validate it.]]></phrase>
-       <phrase name="setting_defaultcomment_title"><![CDATA[Default Comment Text]]></phrase>
-       <phrase name="setting_defaultpriority_desc"><![CDATA[The default priority that will be selected when creating a new bug report. Depending on your permission setup, the user may not be able to set this in a new report so this will act as the value.]]></phrase>
-       <phrase name="setting_defaultpriority_title"><![CDATA[Default Priority]]></phrase>
-       <phrase name="setting_defaultresolve_desc"><![CDATA[This is the default bug resolution. If a user is not able to change this field, setting this will act as the default value.]]></phrase>
-       <phrase name="setting_defaultresolve_title"><![CDATA[Default Resolution]]></phrase>
-       <phrase name="setting_defaultseverity_desc"><![CDATA[The default severity that is selected when creating a new bug report.]]></phrase>
-       <phrase name="setting_defaultseverity_title"><![CDATA[Default Severity]]></phrase>
-       <phrase name="setting_defaultstatus_desc"><![CDATA[The default default that is selected when creating a new bug report. If a user can not assign a status, this will be the one inserted into the database.]]></phrase>
-       <phrase name="setting_defaultstatus_title"><![CDATA[Default Status]]></phrase>
-       <phrase name="setting_moderatenewusers_desc"><![CDATA[All new users will have to be approved by the administration before being able to have normal user rights.]]></phrase>
-       <phrase name="setting_moderatenewusers_title"><![CDATA[Moderate New Users]]></phrase>
-       <phrase name="setting_sendwelcomemail_desc"><![CDATA[Setting this option to <em>yes</em> will send all new users, after they've been verified, a welcoming email.]]></phrase>
-       <phrase name="setting_sendwelcomemail_title"><![CDATA[Send New Use Welcome Email]]></phrase>
-       <phrase name="setting_trackertitle_desc"><![CDATA[The global name of the bug tracker. Example: Iris Studios Bug Tracker]]></phrase>
-       <phrase name="setting_trackertitle_title"><![CDATA[Tracker Title]]></phrase>
-       <phrase name="setting_trackerversion_desc"><![CDATA[Do not touch this!]]></phrase>
-       <phrase name="setting_trackerversion_title"><![CDATA[Tracker Version Number]]></phrase>
-       <phrase name="setting_verifyemail_desc"><![CDATA[Setting this to yes will force all new users to verify their account with an email activation link.]]></phrase>
-       <phrase name="setting_verifyemail_title"><![CDATA[Require Activation Email]]></phrase>
-       <phrase name="setting_webmasteremail_desc"><![CDATA[The email address from which emails will be sent out.]]></phrase>
-       <phrase name="setting_webmasteremail_title"><![CDATA[Webmaster Email Address]]></phrase>
-       <phrase name="severity_display_order"><![CDATA[Display Order<div><dfn>The order in which the severities are displayed. The higher the number, the lower down in the list it is.</dfn></div>]]></phrase>
-       <phrase name="severity_title"><![CDATA[Severity Title<div><dfn>The title of this severity flag (eg: `Major` or `Critical`)</dfn></div>]]></phrase>
-       <phrase name="status_color"><![CDATA[Status Colour<div><dfn>The colour of the status. This will be displayed on bug listings page to make viewing easier. Note: you must enter the # sign if you are using HEX values.</dfn></div>]]></phrase>
-       <phrase name="status_display_order"><![CDATA[Display Order<div><dfn>The order in which the statuses ar displayed.</dfn></div>]]></phrase>
-       <phrase name="status_title"><![CDATA[Status Title<div><dfn>The title of this status flag (eg: `Confirmed` or `Closed (Fixed)`)</dfn></div>]]></phrase>
-       <phrase name="submit"><![CDATA[Submit]]></phrase>
-       <phrase name="usergroup"><![CDATA[Usergroup]]></phrase>
-       <phrase name="usergroup_close_markup"><![CDATA[Closing Tag Markup<div><dfn>Place all closed HTML tags that will close any open HTML tags entered above.</dfn></div>]]></phrase>
-       <phrase name="usergroup_details"><![CDATA[Usergroup Details]]></phrase>
-       <phrase name="usergroup_display_title"><![CDATA[Display Title<div><dfn>This is the title that others will be able to see when comments are posted.</dfn></div>]]></phrase>
-       <phrase name="usergroup_manager"><![CDATA[Usergroup Manager]]></phrase>
-       <phrase name="usergroup_open_markup"><![CDATA[Opening Tag Markup<div><dfn>Place all open HTML tags here that will be wrapped around the username.</dfn></div>]]></phrase>
-       <phrase name="usergroup_permission_settings"><![CDATA[Permission Settings]]></phrase>
-       <phrase name="usergroup_title"><![CDATA[Usergroup Title]]></phrase>
-       <phrase name="version_display_order"><![CDATA[Display Order<div><dfn>The order in which the versions are displayed.</dfn></div>]]></phrase>
-       <phrase name="version_title"><![CDATA[Version Number<div><dfn>This is the version string for this product.</dfn></div>]]></phrase>
-       <phrase name="wait_to_be_redirected"><![CDATA[Please wait to be redirected. If you are not redirected in a few seconds, click <a href="%1$s">here</a>.]]></phrase>
-       <phrase name="yes"><![CDATA[Yes]]></phrase>
+
+       <phrase>
+               <key><![CDATA[Delete]]></key>
+               <value><![CDATA[Delete]]></value>
+               <oldkey></oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Your account is now activated and you can now login.]]></key>
+               <value><![CDATA[Your account is now activated and you can now login.]]></value>
+               <oldkey>account_activated</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Your account is pending approval.]]></key>
+               <value><![CDATA[Your account is pending approval.]]></value>
+               <oldkey>account_pending_approval</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Action]]></key>
+               <value><![CDATA[Action]]></value>
+               <oldkey>action</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Actions]]></key>
+               <value><![CDATA[Actions]]></value>
+               <oldkey>actions</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Additional Bug Fields]]></key>
+               <value><![CDATA[Additional Bug Fields]]></value>
+               <oldkey>additional_bug_fields</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add Comment]]></key>
+               <value><![CDATA[Add Comment]]></value>
+               <oldkey>add_comment</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add Component]]></key>
+               <value><![CDATA[Add Component]]></value>
+               <oldkey>add_component</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Action]]></key>
+               <value><![CDATA[Add New Action]]></value>
+               <oldkey>add_new_action</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Bug Field]]></key>
+               <value><![CDATA[Add New Bug Field]]></value>
+               <oldkey>add_new_field</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Language]]></key>
+               <value><![CDATA[Add New Language]]></value>
+               <oldkey>add_new_language</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Priority]]></key>
+               <value><![CDATA[Add New Priority]]></value>
+               <oldkey>add_new_priority</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Product]]></key>
+               <value><![CDATA[Add New Product]]></value>
+               <oldkey>add_new_product</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Resolution]]></key>
+               <value><![CDATA[Add New Resolution]]></value>
+               <oldkey>add_new_resolution</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Severity]]></key>
+               <value><![CDATA[Add New Severity]]></value>
+               <oldkey>add_new_severity</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Status]]></key>
+               <value><![CDATA[Add New Status]]></value>
+               <oldkey>add_new_status</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Usergroup]]></key>
+               <value><![CDATA[Add New Usergroup]]></value>
+               <oldkey>add_new_usergroup</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add New Version]]></key>
+               <value><![CDATA[Add New Version]]></value>
+               <oldkey>add_new_version</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add Product]]></key>
+               <value><![CDATA[Add Product]]></value>
+               <oldkey>add_product</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add to Favourites]]></key>
+               <value><![CDATA[Add to Favourites]]></value>
+               <oldkey>add_to_favourites</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Add Version]]></key>
+               <value><![CDATA[Add Version]]></value>
+               <oldkey>add_version</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Administration - %1$s]]></key>
+               <value><![CDATA[Administration - %1$s]]></value>
+               <oldkey>administration_x</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Administration Locations]]></key>
+               <value><![CDATA[Administration Locations]]></value>
+               <oldkey>admin_locations</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[BugStrike Administration Menu]]></key>
+               <value><![CDATA[BugStrike Administration Menu]]></value>
+               <oldkey>admin_menu</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[alert: bad attachment]]></key>
+               <value><![CDATA[alert: bad attachment]]></value>
+               <oldkey>alert_bad_attachment</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[alert: bad bug]]></key>
+               <value><![CDATA[alert: bad bug]]></value>
+               <oldkey>alert_bad_bug</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You are already logged in.]]></key>
+               <value><![CDATA[You are already logged in.]]></value>
+               <oldkey>already_logged_in</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The attachment has been added to the bug.]]></key>
+               <value><![CDATA[The attachment has been added to the bug.]]></value>
+               <oldkey>attachment_added</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The attachment has been removed.]]></key>
+               <value><![CDATA[The attachment has been removed.]]></value>
+               <oldkey>attachment_deleted</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The attachment was successfully modified.]]></key>
+               <value><![CDATA[The attachment was successfully modified.]]></value>
+               <oldkey>attachment_updated</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Automatic Actions]]></key>
+               <value><![CDATA[Automatic Actions]]></value>
+               <oldkey>automatic_actions</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[BugStrike Login]]></key>
+               <value><![CDATA[BugStrike Login]]></value>
+               <oldkey>bugstrike_login</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[BugStrike Settings]]></key>
+               <value><![CDATA[BugStrike Settings]]></value>
+               <oldkey>bugstrike_settings</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The bug has been added to the database.]]></key>
+               <value><![CDATA[The bug has been added to the database.]]></value>
+               <oldkey>bug_added</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Your changes to the bug have been saved.]]></key>
+               <value><![CDATA[Your changes to the bug have been saved.]]></value>
+               <oldkey>bug_edit_done</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Bug Fields]]></key>
+               <value><![CDATA[Bug Fields]]></value>
+               <oldkey>bug_fields</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You can't delete a default usergroup.]]></key>
+               <value><![CDATA[You can't delete a default usergroup.]]></value>
+               <oldkey>cant_delete_default_usergroup</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Be Searched]]></key>
+               <value><![CDATA[Can Be Searched]]></value>
+               <oldkey>can_be_searched</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can View, Edit Field]]></key>
+               <value><![CDATA[Can View, Edit Field]]></value>
+               <oldkey>can_view_edit_field</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can View Field]]></key>
+               <value><![CDATA[Can View Field]]></value>
+               <oldkey>can_view_field</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Character Set]]></key>
+               <value><![CDATA[Character Set]]></value>
+               <oldkey>character_set</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Charset]]></key>
+               <value><![CDATA[Charset]]></value>
+               <oldkey>charset</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Checkbox Flag]]></key>
+               <value><![CDATA[Checkbox Flag]]></value>
+               <oldkey>checkbox_flag</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Checked]]></key>
+               <value><![CDATA[Checked]]></value>
+               <oldkey>checked</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Checked By Default]]></key>
+               <value><![CDATA[Checked By Default]]></value>
+               <oldkey>checked_by_default</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Your reply has been added to the comment list.]]></key>
+               <value><![CDATA[Your reply has been added to the comment list.]]></value>
+               <oldkey>comment_added</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The comment was modified successfully.]]></key>
+               <value><![CDATA[The comment was modified successfully.]]></value>
+               <oldkey>comment_updated</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Component]]></key>
+               <value><![CDATA[Component]]></value>
+               <oldkey>component</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Confirm]]></key>
+               <value><![CDATA[Confirm]]></value>
+               <oldkey>confirm</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Are you sure you want to delete this action?]]></key>
+               <value><![CDATA[Are you sure you want to delete this action?]]></value>
+               <oldkey>confirm_action_delete</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Are you sure you want to delete this bug field? Doing so will remove everything for this field and it cannot be undone!]]></key>
+               <value><![CDATA[Are you sure you want to delete this bug field? Doing so will remove everything for this field and it cannot be undone!]]></value>
+               <oldkey>confirm_custom_field_delete</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Are you sure you want to delete this priority? Doing so will revert all bugs to the default priority (which is set in the options panel)?]]></key>
+               <value><![CDATA[Are you sure you want to delete this priority? Doing so will revert all bugs to the default priority (which is set in the options panel)?]]></value>
+               <oldkey>confirm_delete_priority</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Are you sure you want to delete this product and all of it's sub-versions and components (as well as any bugs contained within those groups)?]]></key>
+               <value><![CDATA[Are you sure you want to delete this product and all of it's sub-versions and components (as well as any bugs contained within those groups)?]]></value>
+               <oldkey>confirm_delete_product</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Are you sure you want to delete this resolution? Doing so will revert all bugs to the default resolution (which is set in the options panel)?]]></key>
+               <value><![CDATA[Are you sure you want to delete this resolution? Doing so will revert all bugs to the default resolution (which is set in the options panel)?]]></value>
+               <oldkey>confirm_delete_resolution</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Are you sure you want to delete this severity? Doing so will revert all bugs to the default severity (which is set in the options panel)?]]></key>
+               <value><![CDATA[Are you sure you want to delete this severity? Doing so will revert all bugs to the default severity (which is set in the options panel)?]]></value>
+               <oldkey>confirm_delete_severity</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Are you sure you want to delete this status? Doing so will revert all bugs to the default status (which is set in the options panel)?]]></key>
+               <value><![CDATA[Are you sure you want to delete this status? Doing so will revert all bugs to the default status (which is set in the options panel)?]]></value>
+               <oldkey>confirm_delete_status</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Are you sure you want to delete this usergroup? All users in this group will be set back to the default registered usergroup (id: 2).]]></key>
+               <value><![CDATA[Are you sure you want to delete this usergroup? All users in this group will be set back to the default registered usergroup (id: 2).]]></value>
+               <oldkey>confirm_delete_usergroup</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Are you sure you want to delete this version? Doing so will do x to the bugs with this version.]]></key>
+               <value><![CDATA[Are you sure you want to delete this version? Doing so will do x to the bugs with this version.]]></value>
+               <oldkey>confirm_delete_version</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Custom Bug Fields]]></key>
+               <value><![CDATA[Custom Bug Fields]]></value>
+               <oldkey>custom_bug_fields</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The custom bug field has been added.]]></key>
+               <value><![CDATA[The custom bug field has been added.]]></value>
+               <oldkey>custom_field_added</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You need to specify some fields to change.]]></key>
+               <value><![CDATA[You need to specify some fields to change.]]></value>
+               <oldkey>custom_field_error_need_field_changes</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You need to specify some select values.]]></key>
+               <value><![CDATA[You need to specify some select values.]]></value>
+               <oldkey>custom_field_need_values</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Custom Field Permissions]]></key>
+               <value><![CDATA[Custom Field Permissions]]></value>
+               <oldkey>custom_field_permissions</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The bug field has been updated.]]></key>
+               <value><![CDATA[The bug field has been updated.]]></value>
+               <oldkey>custom_field_updated</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[DEFAULT LANGUAGE]]></key>
+               <value><![CDATA[DEFAULT LANGUAGE]]></value>
+               <oldkey>default_language</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Default Value]]></key>
+               <value><![CDATA[Default Value]]></value>
+               <oldkey>default_value</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Delete]]></key>
+               <value><![CDATA[Delete]]></value>
+               <oldkey>delete</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Delete Field]]></key>
+               <value><![CDATA[Delete Field]]></value>
+               <oldkey>delete_field</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Description]]></key>
+               <value><![CDATA[Description]]></value>
+               <oldkey>description</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Direction]]></key>
+               <value><![CDATA[Direction]]></value>
+               <oldkey>direction</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Display Name]]></key>
+               <value><![CDATA[Display Name]]></value>
+               <oldkey>display_name</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Display Name/Description]]></key>
+               <value><![CDATA[Display Name/Description]]></value>
+               <oldkey>display_name_description</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Drop-Down Menu]]></key>
+               <value><![CDATA[Drop-Down Menu]]></value>
+               <oldkey>drop_dwon_menu</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit]]></key>
+               <value><![CDATA[Edit]]></value>
+               <oldkey>edit</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Auto Action]]></key>
+               <value><![CDATA[Edit Auto Action]]></value>
+               <oldkey>edit_auto_action</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Field]]></key>
+               <value><![CDATA[Edit Field]]></value>
+               <oldkey>edit_field</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Language]]></key>
+               <value><![CDATA[Edit Language]]></value>
+               <oldkey>edit_language</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Priority]]></key>
+               <value><![CDATA[Edit Priority]]></value>
+               <oldkey>edit_priority</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Priority - %1$s (priorityid: %2$s)]]></key>
+               <value><![CDATA[Edit Priority - %1$s (priorityid: %2$s)]]></value>
+               <oldkey>edit_priority_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Product]]></key>
+               <value><![CDATA[Edit Product]]></value>
+               <oldkey>edit_product</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Product - %1$s]]></key>
+               <value><![CDATA[Edit Product - %1$s]]></value>
+               <oldkey>edit_product_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Resolution]]></key>
+               <value><![CDATA[Edit Resolution]]></value>
+               <oldkey>edit_resolution</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Resolution - %1$s (resolutionid: %2$s)]]></key>
+               <value><![CDATA[Edit Resolution - %1$s (resolutionid: %2$s)]]></value>
+               <oldkey>edit_resolution_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Settings]]></key>
+               <value><![CDATA[Edit Settings]]></value>
+               <oldkey>edit_settings</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Severity]]></key>
+               <value><![CDATA[Edit Severity]]></value>
+               <oldkey>edit_severity</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Severity  - %1$s (severityid: %2$s)]]></key>
+               <value><![CDATA[Edit Severity  - %1$s (severityid: %2$s)]]></value>
+               <oldkey>edit_severity_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Status]]></key>
+               <value><![CDATA[Edit Status]]></value>
+               <oldkey>edit_status</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Status  - %1$s (statusid: %2$s)]]></key>
+               <value><![CDATA[Edit Status  - %1$s (statusid: %2$s)]]></value>
+               <oldkey>edit_status_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Usergroup]]></key>
+               <value><![CDATA[Edit Usergroup]]></value>
+               <oldkey>edit_usergroup</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Version]]></key>
+               <value><![CDATA[Edit Version]]></value>
+               <oldkey>edit_version</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Edit Version - %1$s]]></key>
+               <value><![CDATA[Edit Version - %1$s]]></value>
+               <oldkey>edit_version_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Email]]></key>
+               <value><![CDATA[Email]]></value>
+               <oldkey>email</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Error]]></key>
+               <value><![CDATA[Error]]></value>
+               <oldkey>error</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Sorry, you are already registered.]]></key>
+               <value><![CDATA[Sorry, you are already registered.]]></value>
+               <oldkey>error_already_registered</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You have already voted on this bug.]]></key>
+               <value><![CDATA[You have already voted on this bug.]]></value>
+               <oldkey>error_already_voted</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Please fill in the bug's description field]]></key>
+               <value><![CDATA[Please fill in the bug's description field]]></value>
+               <oldkey>error_enter_bug_description</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Please enter a title for the bug]]></key>
+               <value><![CDATA[Please enter a title for the bug]]></value>
+               <oldkey>error_enter_bug_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[PHP could not find the /tmp directory.]]></key>
+               <value><![CDATA[PHP could not find the /tmp directory.]]></value>
+               <oldkey>error_file_not_in_tmp</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The file you specified did not upload.]]></key>
+               <value><![CDATA[The file you specified did not upload.]]></value>
+               <oldkey>error_file_not_uploaded</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The file was not uploaded at all.]]></key>
+               <value><![CDATA[The file was not uploaded at all.]]></value>
+               <oldkey>error_file_not_uploaded_at_all</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The file was only partially uploaded.]]></key>
+               <value><![CDATA[The file was only partially uploaded.]]></value>
+               <oldkey>error_file_partial_upload</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The file exceeds the allowed upload size.]]></key>
+               <value><![CDATA[The file exceeds the allowed upload size.]]></value>
+               <oldkey>error_file_too_big</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[PHP said the file you uploaded was too big.]]></key>
+               <value><![CDATA[PHP said the file you uploaded was too big.]]></value>
+               <oldkey>error_file_too_big_php</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[That is an invalid ID.]]></key>
+               <value><![CDATA[That is an invalid ID.]]></value>
+               <oldkey>error_invalid_id</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Sorry, we could not match your registration string. Please make sure you entered the correct URL.]]></key>
+               <value><![CDATA[Sorry, we could not match your registration string. Please make sure you entered the correct URL.]]></value>
+               <oldkey>error_invalid_registration_key</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You need to specify a name for this action.]]></key>
+               <value><![CDATA[You need to specify a name for this action.]]></value>
+               <oldkey>error_need_action_name</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You need to be logged in to access this feature.]]></key>
+               <value><![CDATA[You need to be logged in to access this feature.]]></value>
+               <oldkey>error_need_credentials</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You must specify a display name.]]></key>
+               <value><![CDATA[You must specify a display name.]]></value>
+               <oldkey>error_need_display_name</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You need to specify a file description.]]></key>
+               <value><![CDATA[You need to specify a file description.]]></value>
+               <oldkey>error_need_file_description</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You need to enter a summary for this bug.]]></key>
+               <value><![CDATA[You need to enter a summary for this bug.]]></value>
+               <oldkey>error_need_summary</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You need to enter text into the comment field]]></key>
+               <value><![CDATA[You need to enter text into the comment field]]></value>
+               <oldkey>error_no_comment_text</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Sorry, we don't allow new registrations.]]></key>
+               <value><![CDATA[Sorry, we don't allow new registrations.]]></value>
+               <oldkey>error_no_new_registrations</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You do not have permission to access this page. If you think that this is an error, please contact an administrator.]]></key>
+               <value><![CDATA[You do not have permission to access this page. If you think that this is an error, please contact an administrator.]]></value>
+               <oldkey>error_no_permission</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[This bug has been added to your favourites list.]]></key>
+               <value><![CDATA[This bug has been added to your favourites list.]]></value>
+               <oldkey>favourite_added</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[This bug has been removed from your favourites list.]]></key>
+               <value><![CDATA[This bug has been removed from your favourites list.]]></value>
+               <oldkey>favourite_removed</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Field Changes]]></key>
+               <value><![CDATA[Field Changes]]></value>
+               <oldkey>field_changes</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Field ID]]></key>
+               <value><![CDATA[Field ID]]></value>
+               <oldkey>field_id</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Field Type]]></key>
+               <value><![CDATA[Field Type]]></value>
+               <oldkey>field_type</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The field titled "%1$s" is a required field.]]></key>
+               <value><![CDATA[The field titled "%1$s" is a required field.]]></value>
+               <oldkey>field_x_is_required</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Please fill in a version number.]]></key>
+               <value><![CDATA[Please fill in a version number.]]></value>
+               <oldkey>fill_in_version_number</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Global Fields]]></key>
+               <value><![CDATA[Global Fields]]></value>
+               <oldkey>global_fields</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Global Versions]]></key>
+               <value><![CDATA[Global Versions]]></value>
+               <oldkey>global_versions</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Go]]></key>
+               <value><![CDATA[Go]]></value>
+               <oldkey>go</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Please go back and fill in both fields.]]></key>
+               <value><![CDATA[Please go back and fill in both fields.]]></value>
+               <oldkey>go_back_and_fill_both_fields</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Guest]]></key>
+               <value><![CDATA[Guest]]></value>
+               <oldkey>guest</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Home]]></key>
+               <value><![CDATA[Home]]></value>
+               <oldkey>home</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Invalid email or password.]]></key>
+               <value><![CDATA[Invalid email or password.]]></value>
+               <oldkey>inavlid_email_pass</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Invalid admin session has been terminated.]]></key>
+               <value><![CDATA[Invalid admin session has been terminated.]]></value>
+               <oldkey>invalid_admin_session_terminated</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Invalid comment ID]]></key>
+               <value><![CDATA[Invalid comment ID]]></value>
+               <oldkey>invalid_comment_id</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Invalid field type specified.]]></key>
+               <value><![CDATA[Invalid field type specified.]]></value>
+               <oldkey>invalid_field_type</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Please select a location to jump to. Your selection is invalid.]]></key>
+               <value><![CDATA[Please select a location to jump to. Your selection is invalid.]]></value>
+               <oldkey>invalid_jump_location</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Invalid product/component/version selected.]]></key>
+               <value><![CDATA[Invalid product/component/version selected.]]></value>
+               <oldkey>invalid_pcv</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You have been logged out.]]></key>
+               <value><![CDATA[You have been logged out.]]></value>
+               <oldkey>logged_out</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Login]]></key>
+               <value><![CDATA[Login]]></value>
+               <oldkey>login</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Welcome back! You are now logged in.]]></key>
+               <value><![CDATA[Welcome back! You are now logged in.]]></value>
+               <oldkey>login_redirect</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Logout]]></key>
+               <value><![CDATA[Logout]]></value>
+               <oldkey>logout</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Removed attachment #%1$s]]></key>
+               <value><![CDATA[Removed attachment #%1$s]]></value>
+               <oldkey>log_kill_attachment</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Marking other attachments obsolete]]></key>
+               <value><![CDATA[Marking other attachments obsolete]]></value>
+               <oldkey>log_mark_obsoletes</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Uploaded new attachment "%1$s" (attachmentid: %2$s)]]></key>
+               <value><![CDATA[Uploaded new attachment "%1$s" (attachmentid: %2$s)]]></value>
+               <oldkey>log_new_attachment</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Created comment #%2$s]]></key>
+               <value><![CDATA[Created comment #%2$s]]></value>
+               <oldkey>log_new_attachment_comment</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Added comment (commentid: #%1$s)]]></key>
+               <value><![CDATA[Added comment (commentid: #%1$s)]]></value>
+               <oldkey>log_new_comment</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Updated attachment #%1$s]]></key>
+               <value><![CDATA[Updated attachment #%1$s]]></value>
+               <oldkey>log_update_attachment</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Updated bug]]></key>
+               <value><![CDATA[Updated bug]]></value>
+               <oldkey>log_update_bug</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Updated comment #%1$s]]></key>
+               <value><![CDATA[Updated comment #%1$s]]></value>
+               <oldkey>log_update_comment</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Left-to-Right]]></key>
+               <value><![CDATA[Left-to-Right]]></value>
+               <oldkey>ltr</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Make the First Option Default]]></key>
+               <value><![CDATA[Make the First Option Default]]></value>
+               <oldkey>make_first_option_default</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Manage Phrases]]></key>
+               <value><![CDATA[Manage Phrases]]></value>
+               <oldkey>manage_phrases</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Manage Languages]]></key>
+               <value><![CDATA[Manage Languages]]></value>
+               <oldkey>master_languages</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Maximum Length]]></key>
+               <value><![CDATA[Maximum Length]]></value>
+               <oldkey>max_length</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Name]]></key>
+               <value><![CDATA[Name]]></value>
+               <oldkey>name</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You now need to activate your account via email.]]></key>
+               <value><![CDATA[You now need to activate your account via email.]]></value>
+               <oldkey>need_to_activate_account</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[New Automatic Action]]></key>
+               <value><![CDATA[New Automatic Action]]></value>
+               <oldkey>new_auto_action</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[New Priority]]></key>
+               <value><![CDATA[New Priority]]></value>
+               <oldkey>new_priority</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[New Resolution]]></key>
+               <value><![CDATA[New Resolution]]></value>
+               <oldkey>new_resolution</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[New Severity]]></key>
+               <value><![CDATA[New Severity]]></value>
+               <oldkey>new_severity</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[New Status]]></key>
+               <value><![CDATA[New Status]]></value>
+               <oldkey>new_status</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[New Usergroup]]></key>
+               <value><![CDATA[New Usergroup]]></value>
+               <oldkey>new_usergroup</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[No]]></key>
+               <value><![CDATA[No]]></value>
+               <oldkey>no</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You are not logged in.]]></key>
+               <value><![CDATA[You are not logged in.]]></value>
+               <oldkey>not_logged_in</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[No Permission]]></key>
+               <value><![CDATA[No Permission]]></value>
+               <oldkey>no_permission</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Number of Users]]></key>
+               <value><![CDATA[Number of Users]]></value>
+               <oldkey>number_of_users</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Obsoleted attachments]]></key>
+               <value><![CDATA[Obsoleted attachments]]></value>
+               <oldkey>obsoleted_attachments</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Options]]></key>
+               <value><![CDATA[Options]]></value>
+               <oldkey>options</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Password]]></key>
+               <value><![CDATA[Password]]></value>
+               <oldkey>password</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Administer Bug Reports]]></key>
+               <value><![CDATA[Can Administer Bug Reports]]></value>
+               <oldkey>permissions_canadminbugs</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Administer Additional Bug Fields]]></key>
+               <value><![CDATA[Can Administer Additional Bug Fields]]></value>
+               <oldkey>permissions_canadminfields</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Administer Usergroups]]></key>
+               <value><![CDATA[Can Administer Usergroups]]></value>
+               <oldkey>permissions_canadmingroups</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Access Control Panel]]></key>
+               <value><![CDATA[Can Access Control Panel]]></value>
+               <oldkey>permissions_canadminpanel</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Administer Settings / Maintenance Tools]]></key>
+               <value><![CDATA[Can Administer Settings / Maintenance Tools]]></value>
+               <oldkey>permissions_canadmintools</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Administer Users]]></key>
+               <value><![CDATA[Can Administer Users]]></value>
+               <oldkey>permissions_canadminusers</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Administer Products / Components / Versions]]></key>
+               <value><![CDATA[Can Administer Products / Components / Versions]]></value>
+               <oldkey>permissions_canadminversions</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Assign Bugs]]></key>
+               <value><![CDATA[Can Assign Bugs]]></value>
+               <oldkey>permissions_canassign</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Be Assigned Bugs]]></key>
+               <value><![CDATA[Can Be Assigned Bugs]]></value>
+               <oldkey>permissions_canbeassignedto</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Change Status]]></key>
+               <value><![CDATA[Can Change Status]]></value>
+               <oldkey>permissions_canchangestatus</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Manage All Attachments]]></key>
+               <value><![CDATA[Can Manage All Attachments]]></value>
+               <oldkey>permissions_caneditattach</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Edit Bug Information]]></key>
+               <value><![CDATA[Can Edit Bug Information]]></value>
+               <oldkey>permissions_caneditinfo</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Edit Others' Bugs]]></key>
+               <value><![CDATA[Can Edit Others' Bugs]]></value>
+               <oldkey>permissions_caneditothers</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Edit Own Bugs]]></key>
+               <value><![CDATA[Can Edit Own Bugs]]></value>
+               <oldkey>permissions_caneditown</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can View Attachments]]></key>
+               <value><![CDATA[Can View Attachments]]></value>
+               <oldkey>permissions_cangetattach</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Post Comments]]></key>
+               <value><![CDATA[Can Post Comments]]></value>
+               <oldkey>permissions_canpostcomments</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Upload/Edit Own Attachments]]></key>
+               <value><![CDATA[Can Upload/Edit Own Attachments]]></value>
+               <oldkey>permissions_canputattach</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Search Bugs]]></key>
+               <value><![CDATA[Can Search Bugs]]></value>
+               <oldkey>permissions_cansearch</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Submit Bugs]]></key>
+               <value><![CDATA[Can Submit Bugs]]></value>
+               <oldkey>permissions_cansubmitbugs</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Subscribe to Bugs]]></key>
+               <value><![CDATA[Can Subscribe to Bugs]]></value>
+               <oldkey>permissions_cansubscribe</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can View Bugs]]></key>
+               <value><![CDATA[Can View Bugs]]></value>
+               <oldkey>permissions_canviewbugs</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can View Hidden Bugs and Comments]]></key>
+               <value><![CDATA[Can View Hidden Bugs and Comments]]></value>
+               <oldkey>permissions_canviewhidden</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can Vote on Polls]]></key>
+               <value><![CDATA[Can Vote on Polls]]></value>
+               <oldkey>permissions_canvote</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Administrator Permissions]]></key>
+               <value><![CDATA[Administrator Permissions]]></value>
+               <oldkey>permissions_group_admin</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[General Permissions]]></key>
+               <value><![CDATA[General Permissions]]></value>
+               <oldkey>permissions_group_general</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Moderation/Managment Permissions]]></key>
+               <value><![CDATA[Moderation/Managment Permissions]]></value>
+               <oldkey>permissions_group_moderation</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Posting/Submitting Permissions]]></key>
+               <value><![CDATA[Posting/Submitting Permissions]]></value>
+               <oldkey>permissions_group_posting</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Priorities]]></key>
+               <value><![CDATA[Priorities]]></value>
+               <oldkey>priorities</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Priority]]></key>
+               <value><![CDATA[Priority]]></value>
+               <oldkey>priority</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Display Order<div><dfn>The order in which the priorities are displayed. The higher the number, the lower down in the list it is.</dfn></div>]]></key>
+               <value><![CDATA[Display Order<div><dfn>The order in which the priorities are displayed. The higher the number, the lower down in the list it is.</dfn></div>]]></value>
+               <oldkey>priority_display_order</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Priority Manager]]></key>
+               <value><![CDATA[Priority Manager]]></value>
+               <oldkey>priority_manager</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Priority Title<div><dfn>The title of this priority flag (eg: `Slated for Development` or `Address Now`)</dfn></div>]]></key>
+               <value><![CDATA[Priority Title<div><dfn>The title of this priority flag (eg: `Slated for Development` or `Address Now`)</dfn></div>]]></value>
+               <oldkey>priority_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Private]]></key>
+               <value><![CDATA[Private]]></value>
+               <oldkey>private</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Products / Versions / Components]]></key>
+               <value><![CDATA[Products / Versions / Components]]></value>
+               <oldkey>producs_versions_components</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Product]]></key>
+               <value><![CDATA[Product]]></value>
+               <oldkey>product</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Products and Versions]]></key>
+               <value><![CDATA[Products and Versions]]></value>
+               <oldkey>products_and_versions</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Products / Versions]]></key>
+               <value><![CDATA[Products / Versions]]></value>
+               <oldkey>products_versions</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Description<div><dfn>A short description of this product.</dfn></div>]]></key>
+               <value><![CDATA[Description<div><dfn>A short description of this product.</dfn></div>]]></value>
+               <oldkey>product_description</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Display Order<div><dfn>The order in which the products are displayed.</dfn></div>]]></key>
+               <value><![CDATA[Display Order<div><dfn>The order in which the products are displayed.</dfn></div>]]></value>
+               <oldkey>product_display_order</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Short Name<div><dfn>The name that can be used to submit email reports. This should be unique.</dfn></div>]]></key>
+               <value><![CDATA[Short Name<div><dfn>The name that can be used to submit email reports. This should be unique.</dfn></div>]]></value>
+               <oldkey>product_shortname</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Title]]></key>
+               <value><![CDATA[Title]]></value>
+               <oldkey>product_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Redirect]]></key>
+               <value><![CDATA[Redirect]]></value>
+               <oldkey>redirect</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Regular Expression Match]]></key>
+               <value><![CDATA[Regular Expression Match]]></value>
+               <oldkey>regex_match</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The email you specified was blank.]]></key>
+               <value><![CDATA[The email you specified was blank.]]></value>
+               <oldkey>register_blank_email</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The password you specified was blank.]]></key>
+               <value><![CDATA[The password you specified was blank.]]></value>
+               <oldkey>register_blank_password</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The emails you entered do not match.]]></key>
+               <value><![CDATA[The emails you entered do not match.]]></value>
+               <oldkey>register_emails_no_match</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The specified email is already in use.]]></key>
+               <value><![CDATA[The specified email is already in use.]]></value>
+               <oldkey>register_email_in_use</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The specified email is invalid.]]></key>
+               <value><![CDATA[The specified email is invalid.]]></value>
+               <oldkey>register_invalid_email</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The passwords you entered did not match.]]></key>
+               <value><![CDATA[The passwords you entered did not match.]]></value>
+               <oldkey>register_passwords_no_match</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Your registration is complete.]]></key>
+               <value><![CDATA[Your registration is complete.]]></value>
+               <oldkey>registration_complete</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Remove from Favourites]]></key>
+               <value><![CDATA[Remove from Favourites]]></value>
+               <oldkey>remove_from_favourites</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Required]]></key>
+               <value><![CDATA[Required]]></value>
+               <oldkey>required</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Reset]]></key>
+               <value><![CDATA[Reset]]></value>
+               <oldkey>reset</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Resolution]]></key>
+               <value><![CDATA[Resolution]]></value>
+               <oldkey>resolution</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Resolutions]]></key>
+               <value><![CDATA[Resolutions]]></value>
+               <oldkey>resolutions</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Display Order<div><dfn>The order in which the resolutions are displayed. The higher the number, the lower down in the list it is.</dfn></div>]]></key>
+               <value><![CDATA[Display Order<div><dfn>The order in which the resolutions are displayed. The higher the number, the lower down in the list it is.</dfn></div>]]></value>
+               <oldkey>resolution_display_order</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Resolution Manager]]></key>
+               <value><![CDATA[Resolution Manager]]></value>
+               <oldkey>resolution_manager</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Resolution Title<div><dfn>The title of this resolution flag (eg: `Fixed` or `Bogus`)</dfn></div>]]></key>
+               <value><![CDATA[Resolution Title<div><dfn>The title of this resolution flag (eg: `Fixed` or `Bogus`)</dfn></div>]]></value>
+               <oldkey>resolution_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Right-to-Left]]></key>
+               <value><![CDATA[Right-to-Left]]></value>
+               <oldkey>rtl</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Save Display Order]]></key>
+               <value><![CDATA[Save Display Order]]></value>
+               <oldkey>save_display_order</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[You have to enter some criteria to search for]]></key>
+               <value><![CDATA[You have to enter some criteria to search for]]></value>
+               <oldkey>search_no_criteria</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[No search results were returned that matched your criteria.]]></key>
+               <value><![CDATA[No search results were returned that matched your criteria.]]></value>
+               <oldkey>search_no_results</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Selection Values]]></key>
+               <value><![CDATA[Selection Values]]></value>
+               <oldkey>selection_values</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Select Type]]></key>
+               <value><![CDATA[Select Type]]></value>
+               <oldkey>select_type</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[General Options]]></key>
+               <value><![CDATA[General Options]]></value>
+               <oldkey>settinggroup_general</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Pagination Options]]></key>
+               <value><![CDATA[Pagination Options]]></value>
+               <oldkey>settinggroup_pagination</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Bug Reporting Options]]></key>
+               <value><![CDATA[Bug Reporting Options]]></value>
+               <oldkey>settinggroup_reporting</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Untouchables]]></key>
+               <value><![CDATA[Untouchables]]></value>
+               <oldkey>settinggroup_untouchables</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Settings]]></key>
+               <value><![CDATA[Settings]]></value>
+               <oldkey>settings</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Set this to <em>yes</em> if you want to allow users to post raw HTML in their bug reports. This is <strong>very</strong> dangerous and it is not recommended.]]></key>
+               <value><![CDATA[Set this to <em>yes</em> if you want to allow users to post raw HTML in their bug reports. This is <strong>very</strong> dangerous and it is not recommended.]]></value>
+               <oldkey>setting_allowhtml_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Allow HTML in Bug Reports]]></key>
+               <value><![CDATA[Allow HTML in Bug Reports]]></value>
+               <oldkey>setting_allowhtml_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Can unregistered users be allowed to create accounts.]]></key>
+               <value><![CDATA[Can unregistered users be allowed to create accounts.]]></value>
+               <oldkey>setting_allownewreg_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Allow New Registrations]]></key>
+               <value><![CDATA[Allow New Registrations]]></value>
+               <oldkey>setting_allownewreg_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Set the date format used for bug report and comment information. This is based on PHP's date() function.]]></key>
+               <value><![CDATA[Set the date format used for bug report and comment information. This is based on PHP's date() function.]]></value>
+               <oldkey>setting_dateformat_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Date Format]]></key>
+               <value><![CDATA[Date Format]]></value>
+               <oldkey>setting_dateformat_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[This is the default developer new bugs will be assigned to. If a user does not have permisssion to assign bugs, this will be the default. If you don't want any default assignment, leave this as <em>Not Selected</em>.]]></key>
+               <value><![CDATA[This is the default developer new bugs will be assigned to. If a user does not have permisssion to assign bugs, this will be the default. If you don't want any default assignment, leave this as <em>Not Selected</em>.]]></value>
+               <oldkey>setting_defaultassign_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Default Bug Assignment]]></key>
+               <value><![CDATA[Default Bug Assignment]]></value>
+               <oldkey>setting_defaultassign_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[If you wish to set a template for entering the initial comment of a bug report, then you may specify this here. However, the template will only take effect on the initial report/comment. Note: the template cannot be forced on the user as there is no way to validate it.]]></key>
+               <value><![CDATA[If you wish to set a template for entering the initial comment of a bug report, then you may specify this here. However, the template will only take effect on the initial report/comment. Note: the template cannot be forced on the user as there is no way to validate it.]]></value>
+               <oldkey>setting_defaultcomment_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Default Comment Text]]></key>
+               <value><![CDATA[Default Comment Text]]></value>
+               <oldkey>setting_defaultcomment_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The number of items (e.g. bugs) to be displayed on a page by default. The user will have the option of over-riding these values.]]></key>
+               <value><![CDATA[The number of items (e.g. bugs) to be displayed on a page by default. The user will have the option of over-riding these values.]]></value>
+               <oldkey>setting_defaultpp_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Default Per-Page Amount]]></key>
+               <value><![CDATA[Default Per-Page Amount]]></value>
+               <oldkey>setting_defaultpp_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The default priority that will be selected when creating a new bug report. Depending on your permission setup, the user may not be able to set this in a new report so this will act as the value.]]></key>
+               <value><![CDATA[The default priority that will be selected when creating a new bug report. Depending on your permission setup, the user may not be able to set this in a new report so this will act as the value.]]></value>
+               <oldkey>setting_defaultpriority_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Default Priority]]></key>
+               <value><![CDATA[Default Priority]]></value>
+               <oldkey>setting_defaultpriority_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[This is the default bug resolution. If a user is not able to change this field, setting this will act as the default value.]]></key>
+               <value><![CDATA[This is the default bug resolution. If a user is not able to change this field, setting this will act as the default value.]]></value>
+               <oldkey>setting_defaultresolve_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Default Resolution]]></key>
+               <value><![CDATA[Default Resolution]]></value>
+               <oldkey>setting_defaultresolve_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The default severity that is selected when creating a new bug report.]]></key>
+               <value><![CDATA[The default severity that is selected when creating a new bug report.]]></value>
+               <oldkey>setting_defaultseverity_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Default Severity]]></key>
+               <value><![CDATA[Default Severity]]></value>
+               <oldkey>setting_defaultseverity_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The default default that is selected when creating a new bug report. If a user can not assign a status, this will be the one inserted into the database.]]></key>
+               <value><![CDATA[The default default that is selected when creating a new bug report. If a user can not assign a status, this will be the one inserted into the database.]]></value>
+               <oldkey>setting_defaultstatus_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Default Status]]></key>
+               <value><![CDATA[Default Status]]></value>
+               <oldkey>setting_defaultstatus_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[To prevent your server from experiencing load problems, set the maximum per page limit. Specifying a value here will make sure any user-entered value will not be higher than this, preventing server load problems.]]></key>
+               <value><![CDATA[To prevent your server from experiencing load problems, set the maximum per page limit. Specifying a value here will make sure any user-entered value will not be higher than this, preventing server load problems.]]></value>
+               <oldkey>setting_maxpp_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Maximum Per-Page Value]]></key>
+               <value><![CDATA[Maximum Per-Page Value]]></value>
+               <oldkey>setting_maxpp_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[All new users will have to be approved by the administration before being able to have normal user rights.]]></key>
+               <value><![CDATA[All new users will have to be approved by the administration before being able to have normal user rights.]]></value>
+               <oldkey>setting_moderatenewusers_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Moderate New Users]]></key>
+               <value><![CDATA[Moderate New Users]]></value>
+               <oldkey>setting_moderatenewusers_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The number of pages that will appear in the page navigation system on either side of the current page. Set this to 0 to display all pages.]]></key>
+               <value><![CDATA[The number of pages that will appear in the page navigation system on either side of the current page. Set this to 0 to display all pages.]]></value>
+               <oldkey>setting_pagelinks_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Number of Page Links]]></key>
+               <value><![CDATA[Number of Page Links]]></value>
+               <oldkey>setting_pagelinks_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Setting this option to <em>yes</em> will send all new users, after they've been verified, a welcoming email.]]></key>
+               <value><![CDATA[Setting this option to <em>yes</em> will send all new users, after they've been verified, a welcoming email.]]></value>
+               <oldkey>setting_sendwelcomemail_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Send New Use Welcome Email]]></key>
+               <value><![CDATA[Send New Use Welcome Email]]></value>
+               <oldkey>setting_sendwelcomemail_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The global name of the bug tracker. Example: Iris Studios Bug Tracker]]></key>
+               <value><![CDATA[The global name of the bug tracker. Example: Iris Studios Bug Tracker]]></value>
+               <oldkey>setting_trackertitle_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Tracker Title]]></key>
+               <value><![CDATA[Tracker Title]]></value>
+               <oldkey>setting_trackertitle_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Do not touch this!]]></key>
+               <value><![CDATA[Do not touch this!]]></value>
+               <oldkey>setting_trackerversion_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Tracker Version Number]]></key>
+               <value><![CDATA[Tracker Version Number]]></value>
+               <oldkey>setting_trackerversion_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Setting this to yes will force all new users to verify their account with an email activation link.]]></key>
+               <value><![CDATA[Setting this to yes will force all new users to verify their account with an email activation link.]]></value>
+               <oldkey>setting_verifyemail_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Require Activation Email]]></key>
+               <value><![CDATA[Require Activation Email]]></value>
+               <oldkey>setting_verifyemail_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[The email address from which emails will be sent out.]]></key>
+               <value><![CDATA[The email address from which emails will be sent out.]]></value>
+               <oldkey>setting_webmasteremail_desc</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Webmaster Email Address]]></key>
+               <value><![CDATA[Webmaster Email Address]]></value>
+               <oldkey>setting_webmasteremail_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Severities]]></key>
+               <value><![CDATA[Severities]]></value>
+               <oldkey>severities</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Severity]]></key>
+               <value><![CDATA[Severity]]></value>
+               <oldkey>severity</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Display Order<div><dfn>The order in which the severities are displayed. The higher the number, the lower down in the list it is.</dfn></div>]]></key>
+               <value><![CDATA[Display Order<div><dfn>The order in which the severities are displayed. The higher the number, the lower down in the list it is.</dfn></div>]]></value>
+               <oldkey>severity_display_order</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Severity Manager]]></key>
+               <value><![CDATA[Severity Manager]]></value>
+               <oldkey>severity_manager</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Severity Title<div><dfn>The title of this severity flag (eg: `Major` or `Critical`)</dfn></div>]]></key>
+               <value><![CDATA[Severity Title<div><dfn>The title of this severity flag (eg: `Major` or `Critical`)</dfn></div>]]></value>
+               <oldkey>severity_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Single-Line Text Box]]></key>
+               <value><![CDATA[Single-Line Text Box]]></value>
+               <oldkey>single_line_text_box</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Status]]></key>
+               <value><![CDATA[Status]]></value>
+               <oldkey>status</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Statuses]]></key>
+               <value><![CDATA[Statuses]]></value>
+               <oldkey>statuses</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Status Colour<div><dfn>The colour of the status. This will be displayed on bug listings page to make viewing easier. Note: you must enter the # sign if you are using HEX values.</dfn></div>]]></key>
+               <value><![CDATA[Status Colour<div><dfn>The colour of the status. This will be displayed on bug listings page to make viewing easier. Note: you must enter the # sign if you are using HEX values.</dfn></div>]]></value>
+               <oldkey>status_color</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Display Order<div><dfn>The order in which the statuses ar displayed.</dfn></div>]]></key>
+               <value><![CDATA[Display Order<div><dfn>The order in which the statuses ar displayed.</dfn></div>]]></value>
+               <oldkey>status_display_order</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Status Manager]]></key>
+               <value><![CDATA[Status Manager]]></value>
+               <oldkey>status_manager</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Status Title<div><dfn>The title of this status flag (eg: `Confirmed` or `Closed (Fixed)`)</dfn></div>]]></key>
+               <value><![CDATA[Status Title<div><dfn>The title of this status flag (eg: `Confirmed` or `Closed (Fixed)`)</dfn></div>]]></value>
+               <oldkey>status_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Submit]]></key>
+               <value><![CDATA[Submit]]></value>
+               <oldkey>submit</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Title]]></key>
+               <value><![CDATA[Title]]></value>
+               <oldkey>title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Tracker Home]]></key>
+               <value><![CDATA[Tracker Home]]></value>
+               <oldkey>tracker_home</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Type-Specific Fields]]></key>
+               <value><![CDATA[Type-Specific Fields]]></value>
+               <oldkey>type_specific_fields</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Un-Checked]]></key>
+               <value><![CDATA[Un-Checked]]></value>
+               <oldkey>unchecked</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Usergroup]]></key>
+               <value><![CDATA[Usergroup]]></value>
+               <oldkey>usergroup</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Usergroups]]></key>
+               <value><![CDATA[Usergroups]]></value>
+               <oldkey>usergroups</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Closing Tag Markup<div><dfn>Place all closed HTML tags that will close any open HTML tags entered above.</dfn></div>]]></key>
+               <value><![CDATA[Closing Tag Markup<div><dfn>Place all closed HTML tags that will close any open HTML tags entered above.</dfn></div>]]></value>
+               <oldkey>usergroup_close_markup</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Usergroup Details]]></key>
+               <value><![CDATA[Usergroup Details]]></value>
+               <oldkey>usergroup_details</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Display Title<div><dfn>This is the title that others will be able to see when comments are posted.</dfn></div>]]></key>
+               <value><![CDATA[Display Title<div><dfn>This is the title that others will be able to see when comments are posted.</dfn></div>]]></value>
+               <oldkey>usergroup_display_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Usergroup Manager]]></key>
+               <value><![CDATA[Usergroup Manager]]></value>
+               <oldkey>usergroup_manager</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Opening Tag Markup<div><dfn>Place all open HTML tags here that will be wrapped around the username.</dfn></div>]]></key>
+               <value><![CDATA[Opening Tag Markup<div><dfn>Place all open HTML tags here that will be wrapped around the username.</dfn></div>]]></value>
+               <oldkey>usergroup_open_markup</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Permission Settings]]></key>
+               <value><![CDATA[Permission Settings]]></value>
+               <oldkey>usergroup_permission_settings</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Usergroup Title]]></key>
+               <value><![CDATA[Usergroup Title]]></value>
+               <oldkey>usergroup_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[User Management]]></key>
+               <value><![CDATA[User Management]]></value>
+               <oldkey>user_management</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[User Selectable]]></key>
+               <value><![CDATA[User Selectable]]></value>
+               <oldkey>user_selectable</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Version]]></key>
+               <value><![CDATA[Version]]></value>
+               <oldkey>version</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Display Order<div><dfn>The order in which the versions are displayed.</dfn></div>]]></key>
+               <value><![CDATA[Display Order<div><dfn>The order in which the versions are displayed.</dfn></div>]]></value>
+               <oldkey>version_display_order</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Version Number<div><dfn>This is the version string for this product.</dfn></div>]]></key>
+               <value><![CDATA[Version Number<div><dfn>This is the version string for this product.</dfn></div>]]></value>
+               <oldkey>version_title</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Your vote has been added.]]></key>
+               <value><![CDATA[Your vote has been added.]]></value>
+               <oldkey>vote_added</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Please wait to be redirected. If you are not redirected in a few seconds, click <a href="%1$s">here</a>.]]></key>
+               <value><![CDATA[Please wait to be redirected. If you are not redirected in a few seconds, click <a href="%1$s">here</a>.]]></value>
+               <oldkey>wait_to_be_redirected</oldkey>
+       </phrase>
+
+       <phrase>
+               <key><![CDATA[Yes]]></key>
+               <value><![CDATA[Yes]]></value>
+               <oldkey>yes</oldkey>
+       </phrase>
+
 </language>
\ No newline at end of file
diff --git a/docs/lang_registry_converter.php b/docs/lang_registry_converter.php
deleted file mode 100644 (file)
index c24a609..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-// converts the language registry to phrases
-// $Id$
-
-chdir('./../');
-require_once('./global.php');
-
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-       <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-       <title>Phrase Registry Converter</title>
-</head>
-<body>
-
-<h2>Phrase Registry Converter</h2>
-
-Pick a phrase from the phrase registry and enter in a varname and a comment (optional). The converter will remove it from the phrase registry and add it to the language system. It will also fill in the md5 field and comment field in the language system.
-
-<br />
-<br />
-
-<?php
-
-if ($bugsys->in['do'] == 'convert')
-{
-       foreach ($bugsys->in['phrases'] AS $md5 => $phrase)
-       {
-               if ($phrase['varname'] AND $phrase['phrasetext'])
-               {
-                       $db->query("
-                               REPLACE INTO phrase
-                                       (varname, phrasetext, md5, comment)
-                               VALUES
-                                       ('" . $phrase['varname'] . "',
-                                       '" . $phrase['phrasetext'] . "',
-                                       '" . $md5 . "',
-                                       '" . $phrase['comment']  . "'
-                               )"
-                       );
-                       
-                       $db->query("DELETE FROM phraseregistry WHERE md5 = '" . $md5 . "'");
-               }
-       }
-       
-       echo 'Converted phrase registry items. <a href="lang_registry_converter.php">Continue...</a>';
-       exit;
-}
-
-?>
-
-<form action="lang_registry_converter.php" method="post" name="converter">
-<input name="do" type="hidden" value="convert" />
-
-<table border="1" cellspacing="2" cellpadding="4" width="100%">
-<thead>
-<tr style="background-color: #EFEFEF">
-       <td>Phrase Text</td>
-       <td>Varname</td>
-       <td>Comment</td>
-</tr>
-</thead>
-<tbody>
-<?php
-
-$registry = $db->query("SELECT * FROM phraseregistry");
-while ($phrase = $db->fetch_array($registry))
-{
-       $phrase['text_clean'] = htmlspecialchars($phrase['phrasetext']);
-       
-       echo <<<HTML
-<tr>
-       <td><input name="phrases[$phrase[md5]][phrasetext]" type="text" value="$phrase[text_clean]" style="width: 100%" /></td>
-       <td><input name="phrases[$phrase[md5]][varname]" type="text" style="width: 100%" /></td>
-       <td><input name="phrases[$phrase[md5]][comment]" type="text" style="width: 100%" /></td>
-</tr>
-
-HTML;
-}
-
-?>
-<tr style="background-color: #696969; text-align: center">
-       <td colspan="3"><input name="submit" type="submit" value="  Convert Registry Items  " /></td>
-</tr>
-</tbody>
-</table>
-
-</form>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/lang_registry_populator.php b/docs/lang_registry_populator.php
deleted file mode 100755 (executable)
index 4e1b5ed..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-// looks for lang::r() calls and adds them to the system
-// $Id$
-
-chdir('./../');
-require_once('./global.php');
-
-function fetch_listing($path, $basepath = '', $unset = 1)
-{
-       static $filelist;
-       
-       if ($unset)
-       {
-               $filelist = array();
-       }
-       
-       if (substr($path, (strlen($path) - 1), 1) != '/')
-       {
-               $path .= '/';
-       }
-       
-       if ($handle = opendir($path))
-       {
-               while (($file = readdir($handle)) !== false)
-               {
-                       if (substr($file, 0, 1) != '.' AND $file != 'CVS')
-                       {
-                               if (is_dir($path . $file))
-                               {
-                                       $filelist["$basepath"][] = "$file/";
-                                       fetch_listing("$path$file", "$basepath$file/", 0);
-                               }
-                               else
-                               {
-                                       $filelist["$basepath"][] = $file;
-                               }
-                       }
-               }
-               closedir($handle);
-       }
-       return $filelist;
-}
-
-function fetch_flat_listing($filelist)
-{
-       foreach ($filelist AS $basepath => $files)
-       {
-               foreach ($files AS $file)
-               {
-                       if (preg_match('#\.php$#', $file))
-                       {
-                               $flatlist[] = "./$basepath$file";
-                       }
-               }
-       }
-       return $flatlist;
-}
-
-// ###################################################################
-// ###################################################################
-
-$listing = fetch_flat_listing(fetch_listing(getcwd()));
-
-foreach ($listing AS $filename)
-{
-       $file = file_get_contents($filename);
-       
-       preg_match_all("#lang::r\('(.*?)'\)#", $file, $matches);
-       foreach ($matches[0] AS $matchid => $match)
-       {
-               lang::r($matches[1]["$matchid"]);
-       }
-}
-
-?>
\ No newline at end of file
diff --git a/docs/lang_registry_replacer.php b/docs/lang_registry_replacer.php
deleted file mode 100755 (executable)
index 74ca060..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-// replaces lang::r() with lang::p() calls
-// $Id$
-
-chdir('./../');
-require_once('./global.php');
-
-function fetch_listing($path, $basepath = '', $unset = 1)
-{
-       static $filelist;
-       
-       if ($unset)
-       {
-               $filelist = array();
-       }
-       
-       if (substr($path, (strlen($path) - 1), 1) != '/')
-       {
-               $path .= '/';
-       }
-       
-       if ($handle = opendir($path))
-       {
-               while (($file = readdir($handle)) !== false)
-               {
-                       if (substr($file, 0, 1) != '.' AND $file != 'CVS')
-                       {
-                               if (is_dir($path . $file))
-                               {
-                                       $filelist["$basepath"][] = "$file/";
-                                       fetch_listing("$path$file", "$basepath$file/", 0);
-                               }
-                               else
-                               {
-                                       $filelist["$basepath"][] = $file;
-                               }
-                       }
-               }
-               closedir($handle);
-       }
-       return $filelist;
-}
-
-function fetch_flat_listing($filelist)
-{
-       foreach ($filelist AS $basepath => $files)
-       {
-               foreach ($files AS $file)
-               {
-                       if (preg_match('#\.php$#', $file))
-                       {
-                               $flatlist[] = "./$basepath$file";
-                       }
-               }
-       }
-       return $flatlist;
-}
-
-// ###################################################################
-// ###################################################################
-
-$listing = fetch_flat_listing(fetch_listing(getcwd()));
-
-$phrases = $db->query("SELECT * FROM phrase WHERE md5");
-while ($phrase = $db->fetch_array($phrases))
-{
-       $replace["$phrase[md5]"] = $phrase['varname'];
-}
-
-foreach ($listing AS $filename)
-{
-       $file = file_get_contents($filename);
-       
-       preg_match_all("#lang::r\('(.*?)'\)#", $file, $matches);
-       foreach ($matches[0] AS $matchid => $match)
-       {
-               $mdstring = md5($matches[1]["$matchid"]);
-               if ($replace["$mdstring"])
-               {
-                       $file = str_replace($match, 'lang::p(\'' . $replace["$mdstring"] . '\')', $file);
-               }
-       }
-       
-       if ($h = fopen($filename, 'w'))
-       {
-               fwrite($h, $file);
-       }
-       fclose($h);
-}
-
-?>
\ No newline at end of file
diff --git a/docs/phrasetools.php b/docs/phrasetools.php
deleted file mode 100644 (file)
index 6ca8628..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-       <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-       <title>Phrase Tools</title>
-</head>
-<body>
-
-<?php
-
-error_reporting(E_ALL & ~E_NOTICE);
-
-// phrase tools for managing DB phrase system
-// SVN: $Id$
-
-chdir('./../');
-require_once('./global.php');
-
-define('SELECTED', ' selected="selected"');
-define('CHECKED', ' checked="checked"');
-
-
-$vars['varname'] = $bugsys->in['varname'];
-$vars['phrasetext'] = $bugsys->unsanitize($bugsys->in['phrasetext']);
-$vars['matchmethod'] = $bugsys->in['matchmethod'];
-$vars['do'] = $bugsys->in['do'];
-$vars['doneinsert'] = intval($bugsys->in['doneinsert']);
-$vars['oldvarname'] = $bugsys->in['oldvarname'];
-$use['varname'] = (bool)$_REQUEST['use']['varname'];
-$use['phrasetext'] = (bool)$_REQUEST['use']['phrasetext'];
-$use['and'] = (($vars['matchmethod'] == 'and') ? true : false);
-$use['or'] = (($use['and']) ? false : true);
-$use['matcher'] = (($use['and']) ? 'AND' : 'OR');
-
-$select['or'] = (($use['or']) ? SELECTED : '');
-$select['and'] = (($use['and']) ? SELECTED : '');
-$select['search'] = (($vars['do'] == 'search') ? SELECTED : '');
-$select['insert'] = (($vars['do'] == 'insert' OR $vars['doneinsert']) ? SELECTED : '');
-$select['delete'] = (($vars['do'] == 'delete') ? SELECTED : '');
-
-function sanitize_name($name)
-{
-       $name = preg_replace('#[^a-zA-Z0-9_]#', '_', $name);
-       $name = preg_replace('#_{1,}#', '_', $name);
-       $name = preg_replace('#(^_|_$)#', '', $name);
-       return $name;
-}
-
-// ###################################################################
-
-echo <<<HTML
-<h2>Search | <a href="phrasetools.php?do=export">Export</a></h2>
-
-<form action="phrasetools.php" method="post" name="newphrase">
-<div><strong><u>V</u>arname:</strong> <input type="text" name="varname" value="$vars[varname]" size="35" accesskey="v" /> <input type="checkbox" name="use[varname]" value="1" accesskey="c" checked="checked" /></div>
-<div><strong>Phrase <u>t</u>ext:</strong> <input type="checkbox" name="use[phrasetext]" value="1" accesskey="r" /></div>
-<div><textarea name="phrasetext" rows="7" cols="75" accesskey="t">$vars[phrasetext]</textarea></div>
-<div>
-       <strong>Action:</strong>
-       <select name="do"><option value="search"$select[search]>Search</option><option value="insert"$select[insert]>Insert</option><option value="delete"$select[delete]>Delete</option></select>
-</div>
-<div>
-       <strong>Match Method:</strong>
-       <select name="matchmethod"><option value="or"$select[or]>* OR *</option><option value="and"$select[and]>+ AND +</option></select>
-       <input type="submit" name="submit" value="  Continue  " accesskey="s" />
-       <input type="reset" name="reset" value="  Reset  " />
-</div>
-</form>
-HTML;
-
-if ($_REQUEST['do'])
-{
-       echo "\n\n<hr />\n\n";
-}
-
-// ###################################################################
-
-if ($_REQUEST['do'] == 'kill')
-{
-       $db->query("DELETE FROM " . TABLE_PREFIX . "phrase WHERE varname = '" . $vars['varname'] . "'");
-       header("Location: phrasetools.php");
-}
-
-// ###################################################################
-
-if ($_REQUEST['do'] == 'delete')
-{
-       $phrase = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "phrase WHERE varname = '" . $vars['varname'] . "'");
-       if (!$phrase)
-       {
-               echo 'Not a valid phrase!';
-               exit;
-       }
-       
-       echo "<h2>Delete</h2>\n\n<pre><a href=\"phrasetools.php?do=kill&amp;varname=$phrase[varname]\">Found: <strong>$phrase[varname]</strong> ===> $phrase[phrasetext]</a></pre>";
-}
-
-// ###################################################################
-
-if ($_POST['do'] == 'insert')
-{
-       $vars['varname'] = str_replace(' ', '_', $vars['varname']);
-       $db->query("
-               INSERT INTO " . TABLE_PREFIX . "phrase
-                       (varname, phrasetext)
-               VALUES
-                       ('" . sanitize_name($vars['varname']) . "', '" . $vars['phrasetext'] . "'
-               )"
-       );
-       header("Location: phrasetools.php?do=edit&doneinsert=1&varname=$vars[varname]");
-}
-
-// ###################################################################
-
-if ($_POST['do'] == 'update')
-{
-       $db->query("
-               UPDATE " . TABLE_PREFIX . "phrase
-               SET varname = '" . sanitize_name($vars['varname']) . "',
-                       phrasetext = '" . $vars['phrasetext'] . "'
-               WHERE varname = '" . $vars['oldvarname'] . "'"
-       );
-       header("Location: phrasetools.php?do=edit&varname=$vars[varname]");
-}
-
-// ###################################################################
-
-if ($_REQUEST['do'] == 'edit')
-{
-       $phrase = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "phrase WHERE varname = '" . $vars['varname'] . "'");
-       if (!$phrase)
-       {
-               echo 'Not a valid phrase!';
-               exit;
-       }
-       
-       echo <<<HTML
-<h2>Edit</h2>
-
-<form action="phrasetools.php" method="post" name="editphrase">
-<input type="hidden" name="do" value="update" />
-<input type="hidden" name="oldvarname" value="$phrase[varname]" />
-<div><strong>Varname:</strong> <input type="text" name="varname" value="$phrase[varname]" size="35" /></div>
-<div><strong>Phrase text:</strong></div>
-<div><textarea name="phrasetext" rows="7" cols="75">$phrase[phrasetext]</textarea></div>
-<div>
-       <input type="submit" name="submit" value="  Continue  " accesskey="e" />
-       <input type="reset" name="reset" value="  Reset  " />
-</div>
-</form>
-HTML;
-}
-
-// ###################################################################
-
-if ($_REQUEST['do'] == 'search')
-{
-       if ($use['varname'] AND !$use['phrasetext'])
-       {
-               $where = "varname LIKE '%$vars[varname]%'";
-       }
-       else if (!$use['varname'] AND $use['phrasetext'])
-       {
-               $where = "phrasetext LIKE '%$vars[phrasetext]%'";
-       }
-       else
-       {
-               $where = "varname LIKE '%$vars[varname]%' $use[matcher] phrasetext LIKE '%$vars[phrasetext]%'";
-       }
-       
-       $phrases = $db->query("SELECT * FROM " . TABLE_PREFIX . "phrase WHERE $where");
-       $numrows = $db->num_rows($phrases);
-       
-       if ($numrows < 1)
-       {
-               echo 'No results found!';
-               exit;
-       }
-       
-       if ($numrows > 2)
-       {
-               while ($phrase = $db->fetch_array($phrases))
-               {
-                       echo "<pre><div>\$bugsys->language['<strong><a href=\"phrasetools.php?do=edit&amp;varname=$phrase[varname]\">$phrase[varname]</a></strong>'] =======> " . $bugsys->sanitize($phrase['phrasetext']) . "</div></pre>";
-               }
-       }
-       else
-       {
-               $phrase = $db->fetch_array($phrases);
-               header("Location: phrasetools.php?do=edit&varname=$phrase[varname]");
-       }
-}
-
-// ###################################################################
-
-if ($_REQUEST['do'] == 'export')
-{
-       require_once('./includes/class_xml_language.php');
-       $lang = new XML_Language();
-       $output = $lang->export(-1);
-       
-       $output = $bugsys->sanitize($output);
-       
-       echo <<<HTML
-<textarea style="width: 100%; height: 500px" rows="10" cols="10">$output</textarea>
-HTML;
-}
-
-?>
-
-</body>
-</html>
\ No newline at end of file
index 37c26afa516d18b1858110130c0ebec31053ebd9..cff9e9248a6466d66b56d0690ede199bd434e3fa 100644 (file)
@@ -28,4 +28,24 @@ ALTER TABLE `search` ADD PRIMARY KEY(`userid`);
 
 ALTER TABLE `search` ADD `orderby` MEDIUMTEXT NOT NULL;
 
-ALTER TABLE `search` ADD `hilight` VARCHAR(255) NOT NULL;
\ No newline at end of file
+ALTER TABLE `search` ADD `hilight` VARCHAR(255) NOT NULL;
+
+ALTER TABLE `language` ADD `debug` INT(2) UNSIGNED NOT NULL;
+
+ALTER TABLE `phrase` DROP INDEX `varname`;
+
+ALTER TABLE `phrase` CHANGE `varname` `localkey` MEDIUMTEXT NOT NULL;
+
+ALTER TABLE `phrase` DROP `imported`;
+
+DROP TABLE `locale`;
+
+ALTER TABLE `phrase` RENAME `localization`;
+
+ALTER TABLE `localization` ADD `languageid` INT(10) UNSIGNED NOT NULL;
+
+ALTER TABLE `localization` ADD `localid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
+
+ALTER TABLE `localization` CHANGE `phrasetext` `localtext` MEDIUMTEXT NOT NULL;
+
+ALTER TABLE `language` ADD `filename` VARCHAR(255) NOT NULL AFTER `direction`;
\ No newline at end of file
index a0726d29b99ff8f9cdd6adb52e47e2b136ba3dcb..eabaa23299004070e8a68af38fe7f64a8dc119f3 100644 (file)
@@ -30,7 +30,7 @@ $comment = $db->query_first("
 
 if (!$comment)
 {
-       $message->error(lang::p('invalid_comment_id'));
+       $message->error($lang->getlex('error_invalid_id'));
 }
 
 $bug = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = $comment[bugid]");
@@ -58,7 +58,7 @@ if ($_POST['do'] == 'update')
 {
        if (!$bugsys->in['comment'])
        {
-               $message->error(lang::p('error_no_comment_text'));
+               $message->error($lang->string('You need to enter text into the comment field'));
        }
        
        $bugsys->in['comment_parsed'] = $bugsys->in['comment'];
@@ -93,7 +93,7 @@ if ($_POST['do'] == 'update')
                WHERE bugid = $bug[bugid]"
        );
        
-       $message->redirect(lang::p('comment_updated'), "showreport.php?bugid=$bug[bugid]");
+       $message->redirect($lang->string('The comment was modified successfully.'), "showreport.php?bugid=$bug[bugid]");
 }
 
 // ###################################################################
index bb9a6b6c9a67cae048bbb829a5ce1eda8e77350f..3daf9c719a838df214d094764a65aff0421ae7dc 100644 (file)
@@ -33,7 +33,7 @@ if (!(((can_perform('caneditown') AND $bugsys->userinfo['userid'] == $comment['u
 
 if (!$bug)
 {
-       $message->error(lang::p('error_invalid_id'));
+       $message->error($lang->getlex('error_invalid_id'));
 }
 
 if ($bug['hidden'] AND !can_perform('canviewhidden'))
@@ -108,7 +108,7 @@ if ($_POST['do'] == 'update')
        
        if (!(((can_perform('caneditown') AND $bugsys->userinfo['userid'] == $comment['userid']) OR can_perform('caneditothers')) AND can_perform('caneditinfo')))
        {
-               $message->redirect(lang::p('comment_added'), "showreport.php?bugid=$bug[bugid]");
+               $message->redirect($lang->string('Your reply has been added to the comment list.'), "showreport.php?bugid=$bug[bugid]");
        }
        
        // -------------------------------------------------------------------
@@ -117,11 +117,11 @@ if ($_POST['do'] == 'update')
        
        if (!$bugsys->in['summary'])
        {
-               $message->error(lang::p('error_need_summary'));
+               $message->error($lang->string('You need to enter a summary for this bug.'));
        }
        if (!$pcv)
        {
-               $message->error(lang::p('invalid_pcv'));
+               $message->error($lang->string('Invalid product/component/version selected.'));
        }
        
        $hist[0] = (array)$db->query_first("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = $bug[bugid]");
@@ -315,7 +315,7 @@ if ($_POST['do'] == 'update')
        }
 
        
-       $message->redirect(lang::p('bug_edit_done'), "showreport.php?bugid=$bug[bugid]");
+       $message->redirect($lang->string('Your changes to the bug have been saved.'), "showreport.php?bugid=$bug[bugid]");
 }
 
 /*=====================================================================*\
index d08e5ae013bec5bd7172bdc3d26eb0c8bb6697af..3fc008e5cd22060c3c00ce4af451d0e730176cb5 100644 (file)
@@ -25,7 +25,7 @@ if (!$bugsys->userinfo['userid'])
 
 if (empty($_REQUEST['do']))
 {
-       $message->error(lang::p('error_invalid_id'));
+       $message->error($lang->getlex('error_invalid_id'));
 }
 
 // ###################################################################
@@ -35,18 +35,18 @@ if ($_REQUEST['do'] == 'handle')
        $bug = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = " . intval($bugsys->in['bugid']) . ((!can_perform('canviewhidden')) ? " AND !bug.hidden" : ''));
        if (!$bug)
        {
-               $message->error(lang::p('error_invalid_id'));
+               $message->error($lang->getlex('error_invalid_id'));
        }
        
        if ($db->query_first("SELECT * FROM " . TABLE_PREFIX . "favourite WHERE userid = " . $bugsys->userinfo['userid'] . " AND bugid = " . intval($bugsys->in['bugid'])))
        {
                $db->query("DELETE FROM " . TABLE_PREFIX . "favourite WHERE userid = " . $bugsys->userinfo['userid'] . " AND bugid = " . intval($bugsys->in['bugid']));
-               $message->redirect(lang::p('favourite_removed'), "showreport.php?bugid=" . intval($bugsys->in['bugid']));
+               $message->redirect($lang->string('This bug has been removed from your favourites list.'), "showreport.php?bugid=" . intval($bugsys->in['bugid']));
        }
        else
        {
                $db->query("INSERT INTO " . TABLE_PREFIX . "favourite (userid, bugid) VALUES (" . $bugsys->userinfo['userid'] . ", " . intval($bugsys->in['bugid']) . ")");
-               $message->redirect(lang::p('favourite_added'), "showreport.php?bugid=" . intval($bugsys->in['bugid']));
+               $message->redirect($lang->string('This bug has been added to your favourites list.'), "showreport.php?bugid=" . intval($bugsys->in['bugid']));
        }
 }
 
index 6f4c04b9a37e0c7d361c19e626395f2319ec7bf1..8d231ab723b49358caf5bf87f249b76a0dc6c30c 100755 (executable)
@@ -14,6 +14,8 @@ class Admin_Print_Class
 {
        function redirect($location, $timeout = 10)
        {
+               global $bugsys;
+               
                $timeout = $timeout * 200;
                
                $js = 
@@ -39,17 +41,19 @@ class Admin_Print_Class
        </script>
 EOD;
                
-               $this->page_start(lang::p('redirect'), ':default:', 15, $js);
+               $this->page_start($bugsys->lang->string('Redirect'), ':default:', 15, $js);
                
-               $this->page_message(lang::p('redirect'), lang::p('wait_to_be_redirected', $location));
+               $this->page_message($bugsys->lang->string('Redirect'), sprintf($bugsys->lang->string('Please wait to be redirected. If you are not redirected in a few seconds, click <a href="%1$s">here</a>.'), $location));
                
                $this->page_end();
        }
        
        function error($message)
        {
-               $this->page_start(lang::p('error'));
-               $this->page_message(lang::p('error'), $message);
+               global $bugsys;
+               
+               $this->page_start($bugsys->lang->string('Error'));
+               $this->page_message($bugsys->lang->string('Error'), $message);
                $this->page_end();
                
                exit;
@@ -67,7 +71,7 @@ EOD;
                        return;
                }
                
-               $title = 'BugStrike - ' . lang::p('administration_x', $actiontitle);
+               $title = sprintf($bugsys->lang->string('BugStrike - Administration - %1$s'), $actiontitle);
                
                echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
                echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>";
@@ -86,7 +90,7 @@ EOD;
                        
                        echo "<div class=\"tcat\" style=\"padding: 5px; border-bottom: 4px outset\">\n";
                        echo "\n\t<form action=\"jump.php\" method=\"post\" title=\"navigation\" style=\"display: inline\">";
-                       echo "\n\t<span style=\"float: right\"><a href=\"../\">" . lang::p('tracker_home') . "</a></span>";
+                       echo "\n\t<span style=\"float: right\"><a href=\"../\">" . $bugsys->lang->string('Tracker Home') . "</a></span>";
                        echo "\n\t\tNavigation: <select name=\"jumplocation\" onchange=\"this.form.submit()\">";
                        foreach ($globalnav AS $grouptitle => $links)
                        {
@@ -99,7 +103,7 @@ EOD;
                                echo "\n\t\t</optgroup>";
                        }
                        echo "\n\t\t</select>";
-                       echo "\n\t\t<input type=\"submit\" name=\"go\" value=\"&nbsp;" . lang::p('go') . "&nbsp;\" />";
+                       echo "\n\t\t<input type=\"submit\" name=\"go\" value=\"&nbsp;" . $bugsys->lang->string('Go') . "&nbsp;\" />";
                        echo "\n\t</form>";
                        echo "\n</div>";
                }
@@ -127,9 +131,11 @@ EOD;
        
        function page_confirm($message, $location)
        {
-               $this->page_start(lang::p('confirm'));
+               global $bugsys;
                
-               $this->page_message(lang::p('confirm'), $message . '<p><input type="button" name="confirm" value="  ' . lang::p('yes') . '  " onclick="window.location = \'' . $location . '\';" />');
+               $this->page_start($bugsys->lang->string('Confirm'));
+               
+               $this->page_message($bugsys->lang->string('Confirm'), $message . '<p><input type="button" name="confirm" value="  ' . $bugsys->lang->string('Yes') . '  " onclick="window.location = \'' . $location . '\';" />');
                
                $this->page_end();
        }
@@ -328,9 +334,11 @@ EOD;
        
        function row_submit($extra = false, $submit = ':save:', $reset = ':reset:', $colspan = 2)
        {
+               global $bugsys;
+               
                if ($submit === ':save:')
                {
-                       $submit = "  " . lang::p('submit') . "  ";
+                       $submit = "  " . $bugsys->lang->string('Submit') . "  ";
                }
                else
                {
@@ -339,7 +347,7 @@ EOD;
                
                if ($reset === ':reset:')
                {
-                       $reset = "  " . lang::p('reset') . "  ";
+                       $reset = "  " . $bugsys->lang->string('Reset') . "  ";
                }
                else
                {
@@ -374,12 +382,14 @@ EOD;
                
                $listitem = '';
                
-               $this->row_text($label, "\n<select class=\"button\" name=\"$name\"" . (($is_jump) ? " onchange=\"this.form.submit();\"" : '') . ">$optionlist\n</select>" . (($is_jump) ? "\n<input type=\"submit\" class=\"button\" value=\"  " . lang::p('go') . "  \" accesskey=\"g\" />" : '') . "\n", $colspan);
+               $this->row_text($label, "\n<select class=\"button\" name=\"$name\"" . (($is_jump) ? " onchange=\"this.form.submit();\"" : '') . ">$optionlist\n</select>" . (($is_jump) ? "\n<input type=\"submit\" class=\"button\" value=\"  " . $bugsys->lang->string('Go') . "  \" accesskey=\"g\" />" : '') . "\n", $colspan);
        }
        
        function row_yesno($label, $name, $value, $colspan = 2)
        {
-               $this->row_text($label, "<input type=\"radio\" name=\"$name\" value=\"1\"" . (($value) ? ' checked="checked"' : '') . " /> " . lang::p('yes') . " <input type=\"radio\" name=\"$name\" value=\"0\"" . ((!$value) ? ' checked="checked"' : '') . "  /> " . lang::p('no'), $colspan);
+               global $bugsys;
+               
+               $this->row_text($label, "<input type=\"radio\" name=\"$name\" value=\"1\"" . (($value) ? ' checked="checked"' : '') . " /> " . $bugsys->lang->string('Yes') . " <input type=\"radio\" name=\"$name\" value=\"0\"" . ((!$value) ? ' checked="checked"' : '') . "  /> " . $bugsys->lang->string('No'), $colspan);
        }
 }
 
diff --git a/includes/class_language.php b/includes/class_language.php
deleted file mode 100644 (file)
index 09c2490..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-<?php
-/*=====================================================================*\
-|| ################################################################### ||
-|| # app [#]version[#]
-|| # --------------------------------------------------------------- # ||
-|| # Copyright Â©2002-[#]year[#] by Iris Studios, Inc. All Rights Reserved. # ||
-|| # This file may not be reproduced in any way without permission.  # ||
-|| # --------------------------------------------------------------- # ||
-|| # User License Agreement at http://www.iris-studios.com/license/  # ||
-|| ################################################################### ||
-\*=====================================================================*/
-
-/**
-* Language management class. Because this uses Simpleton we want to
-* keep names as short as short as possible
-*/
-class lang
-{
-       var $language = array();
-       var $vars = array();
-       
-       /**
-       * Singleton initializer
-       *
-       * @param        integer Language ID
-       * @return       object  An instance of the class
-       */
-       function init($languageid = 0)
-       {
-               static $instance;
-               
-               if (!$instance)
-               {
-                       $instance = new lang();
-                       $instance->load($instance->select());
-               }
-               
-               return $instance;
-       }
-       
-       /**
-       * Initializes the language system by fetching the appropriate language
-       *
-       * @param        integer Language ID
-       */
-       function load($languageid)
-       {
-               global $bugsys;
-               
-               $phrases = $bugsys->db->query("
-                       (SELECT varname, phrasetext FROM " . TABLE_PREFIX . "phrase)
-                               UNION ALL
-                       (SELECT varname, phrasetext FROM " . TABLE_PREFIX . "locale WHERE languageid = " . intval($languageid) . ")"
-               );
-               while ($phrase = $bugsys->db->fetch_array($phrases))
-               {
-                       $this->language["$phrase[varname]"] = $phrase['phrasetext'];
-               }
-               $bugsys->db->free_result($phrases);
-       }
-       
-       /**
-       * Selects the proper language for the user
-       *
-       * @return       integer The language ID that will be used
-       */
-       function select()
-       {
-               global $bugsys;
-               
-               if ($bugsys->userinfo['userid'])
-               {
-                       $languageid = $bugsys->userinfo['languageid'];
-                       $language = $bugsys->datastore['language']["$languageid"];
-               }
-               if (!$languageid)
-               {
-                       foreach ($bugsys->datastore['language'] AS $language)
-                       {
-                               if ($language['default'])
-                               {
-                                       $languageid = $language['languageid'];
-                                       $language = $bugsys->datastore['language']["$languageid"];
-                                       break;
-                               }
-                       }
-               }
-               
-               $this->vars['id'] = $language['languageid'];
-               $this->vars['charset'] = $language['charset'];
-               $this->vars['direction'] = $language['direction'];
-               $this->vars['code'] = $language['languagecode'];
-               
-               return $languageid;
-       }
-       
-       /**
-       * Fetches a phrase from the language array
-       *
-       * @param        string  Phrase name
-       * @return       string  The phrase text
-       */
-       function fetch_phrase($phrasename)
-       {
-               return $this->language["$phrasename"];
-       }
-       
-       /**
-       * Takes a phrase name and the arguments for it and constructs it
-       *
-       * @param        string          Phrase name
-       * @param        arguments       Values for the arguments the phrase takes
-       * @return       string          Processed phrase
-       */
-       function p()
-       {
-               $obj =& lang::init();
-               
-               $args = func_get_args();
-               $numargs = sizeof($args);
-               
-               if ($numargs < 1)
-               {
-                       return false;
-               }
-               
-               if ($phrasetext = $obj->fetch_phrase($args[0]))
-               {
-                       if (defined('DEBUG_LOCALIZE'))
-                       {
-                               return '[[LOCALIZED: ' . $args[0] . ']]';
-                       }
-                       
-                       if ($numargs < 2)
-                       {
-                               $phrase = $phrasetext;
-                       }
-                       else
-                       {
-                               $args[0] = $phrasetext;
-                               if (($phrase = @call_user_func_array('sprintf', $args)) === false)
-                               {
-                                       global $bugsys;
-                                       $bugsys->debug("$args[0] reported an sprintf() error; parsing manually");
-                                       
-                                       for ($i = 1; $i < $numargs; $i++)
-                                       {
-                                               $phrase = str_replace("%{$i}\$s", $args["$i"], $args[0]);
-                                       }
-                               }
-                       }
-                       return preg_replace('#%([0-9].*?)\$s#', '<strong>[ARG \\1: UNDEFINED]</strong>', $phrase);
-               }
-               else
-               {
-                       return "<strong>[UNDEFINED PHRASE: $args[0]]</strong>";
-               }
-               
-               return $phrase;
-       }
-       
-       /**
-       * Registers a phrase with the temporary text system
-       *
-       * @param        string  Phrase text
-       *
-       * @return       string  Phrase text
-       */
-       function r($string)
-       {
-               global $bugsys;
-               
-               $mdstring = md5($string);
-               
-               if ($regphrase = $bugsys->db->query_first("SELECT * FROM phrase WHERE md5 = '$mdstring'"))
-               {
-                       return $regphrase['phrasetext'];
-               }
-               else
-               {
-                       $bt = debug_backtrace();
-                       $btstr = $bt[0]['file'] . ':' . $bt[0]['line'];
-                       
-                       $bugsys->db->query("REPLACE INTO phraseregistry (md5, phrasetext, file) VALUES ('$mdstring', '" . $bugsys->sanitize($string) . "', '$btstr')");
-               }
-               
-               return $string;
-       }
-       
-       /**
-       * Fetches a variable from the vars array
-       *
-       * @param        string  Variable name
-       * @return       mixed   The value of the variable
-       */
-       function fetch_var($varname)
-       {
-               return $this->vars["$varname"];
-       }
-       
-       /**
-       * Returns a variable about the language system
-       *
-       * @param        string  The name of the variable
-       * @return       mixed   The value fof the variable
-       */
-       function v($varname)
-       {
-               $obj =& lang::init();
-               return $obj->fetch_var($varname);
-       }
-}
-
-/*=====================================================================*\
-|| ###################################################################
-|| # $HeadURL$
-|| # $Id$
-|| ###################################################################
-\*=====================================================================*/
-?>
\ No newline at end of file
index 01db13e0eeb1dea922613d66cfbe41ecfa4cbcd2..765b4dd245a14f71231c7230406a448b9c0837de 100755 (executable)
@@ -28,12 +28,9 @@ class Message_Reporter
                        trigger_error('Message_Reporter::phrase is an array so please use Message_Reporter::error_list_process() to prepare it', E_USER_ERROR);
                }
                
-               if (empty($this->process))
-               {
-                       $this->process = lang::p($this->phrase);
-               }
+               $this->process = ($text ? $text : $this->process);
                
-               $this->process = (($text) ? $text : $this->process);
+               $this->check_process();
                
                eval('$bugsys->template->flush("' . $bugsys->template->fetch('std_error') . '");');
                exit;
@@ -49,14 +46,16 @@ class Message_Reporter
                $this->process = "\n\n<ol style=\"list-style-type: decimal\">";
                foreach ($this->phrase AS $phrase)
                {
-                       $this->process .= "\n\t<li>" . lang::p($phrase) . "</li>";
+                       $this->process .= "\n\t<li>" . $phrase . "</li>";
                }
                $this->process .= "\n</ol>";
        }
        
        function error_permission()
        {
-               $this->phrase = 'error_no_permission';
+               global $bugsys;
+               
+               $this->phrase = $bugsys->lang->string('You do not have permission to access this page. If you think that this is an error, please contact an administrator.');
                $this->error();
        }
        
@@ -70,13 +69,10 @@ class Message_Reporter
                        trigger_error('Message_Reporter::phrase is an array and cannot be used in Message_Reporter::redirect()', E_USER_ERROR);
                }
                
-               if (empty($this->process))
-               {
-                       $this->process = lang::p($this->phrase);
-               }
+               $this->process = ($text ? $text : $this->process);
+               $this->url = ($url ? $url : $this->url);
                
-               $this->process = (($text) ? $text : $this->process);
-               $this->url = (($url) ? $url : $this->url);
+               $this->check_process();
                
                eval('$bugsys->template->flush("' . $bugsys->template->fetch('std_redirect') . '");');
                
@@ -98,16 +94,21 @@ class Message_Reporter
                        trigger_error('Message_Reporter::phrase is an array and cannot be used in Message_Reporter::message()', E_USER_ERROR);
                }
                
-               if (empty($this->process))
-               {
-                       $this->process = lang::p($this->phrase);
-               }
+               $this->process = ($text ? $text : $this->process);
                
-               $this->process = (($text) ? $text : $this->process);
+               $this->check_process();
                
                eval('$bugsys->template->flush("' . $bugsys->template->fetch('std_message') . '");');
                exit;
        }
+       
+       function check_process()
+       {
+               if (empty($this->process))
+               {
+                       trigger_error('Message_Reporter requires some text to display a message', E_USER_ERROR);
+               }
+       }
 }
 
 /*=====================================================================*\
index 9d2dc35c96bbb8019b17afe53a3ddea52d3905ed..965be6cec00cc679bbecded318e91cfc3b80d58b 100755 (executable)
@@ -495,7 +495,7 @@ function process_custom_fields($bugid, $inputdata = array())
                                
                if ($field['required'] AND empty($inputdata["field$field[fieldid]"]))
                {
-                       $errorlist[] = lang::p('field_x_is_required', $field['name']);
+                       $errorlist[] = sprintf($bugsys->lang->string('The field titled "%1$s" is a required field.'), $field['name']);
                        continue;
                }
                
index c6eb11375d695342b4d81a5368e9c74f230aef32..b9386f1bdb288712ef6179297ce220aaead729ef 100755 (executable)
@@ -41,9 +41,10 @@ $db->database = $database;
 $db->connect($servername, $username, $password, $usepconnect);
 
 $bugsys->load('functions');
-$bugsys->load('mail');
 $bugsys->exec_sanitize_data();
 
+$bugsys->load('xml');
+
 // change cookie expiration to one hour
 $funct->cookieexp = 3600;
 
@@ -74,9 +75,6 @@ while ($store = $db->fetch_array($datastoretemp))
 $bugsys->options = $bugsys->datastore['setting'];
 unset($bugsys->datastore['setting']);
 
-$mail->from = $bugsys->options['webmasteremail'];
-$mail->fromname = 'BugStrike Notification';
-
 // ###################################################################
 // load userinfo
 $userid = intval($bugsys->in[COOKIE_PREFIX . 'userid']);
@@ -112,9 +110,13 @@ if (!$userinfo)
 }
 
 // ###################################################################
-// load language information
-require_once('./includes/class_language.php');
-$bugsys->lang =& lang::init();
+// SECONDARY LANGUAGE SYSTEM -- EXPERIMENTAL
+$bugsys->load('localize');
+
+require_once('./includes/language.php');
+
+$LANGDATA = fetch_user_language();
+$lang->init_with_table(fetch_phrases($LANGDATA['id']));
 
 // ###################################################################
 // initialize the date system
@@ -122,6 +124,12 @@ $bugsys->load('date');
 $datef->usertz = $bugsys->userinfo['timezone'];
 $datef->fetch_offset();
 
+// ###################################################################
+// mail system
+$bugsys->load('mail');
+$mail->from = $bugsys->options['webmasteremail'];
+$mail->fromname = $lang->string('BugStrike Notification');
+
 // ###################################################################
 // Initialize usergroup system
 $_PERMISSION = array(
@@ -161,4 +169,4 @@ foreach ($_PERMISSION AS $name => $maskvalue)
 || # $Id$
 || ###################################################################
 \*=====================================================================*/
-?>
+?>
\ No newline at end of file
diff --git a/includes/language.php b/includes/language.php
new file mode 100644 (file)
index 0000000..8584b31
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+/*=====================================================================*\
+|| ################################################################### ||
+|| # BugStrike [#]version[#]
+|| # --------------------------------------------------------------- # ||
+|| # Copyright Â©2002-[#]year[#] by Iris Studios, Inc. All Rights Reserved. # ||
+|| # This file may not be reproduced in any way without permission.  # ||
+|| # --------------------------------------------------------------- # ||
+|| # User License Agreement at http://www.iris-studios.com/license/  # ||
+|| ################################################################### ||
+\*=====================================================================*/
+
+// ###################################################################
+// LEXICAL STRING CONSTANTS
+
+$lang->setlex('error_invalid_id', $lang->string('That is an invalid ID.'));
+
+// ###################################################################
+// fetches phrases from the system
+function fetch_phrases($languageid, $forcexml = false)
+{
+       global $bugsys;
+       
+       $language =& $bugsys->datastore['language']["$languageid"];
+       
+       $locals = array();
+       
+       if ($language['debug'] OR $forcexml)
+       {
+               if (!file_exists($language['filename']))
+               {
+                       trigger_error('Cannot load XML strings file', E_USER_ERROR);
+               }
+               
+               $xmldata = file_get_contents($language['filename']);
+               if ($xmldata === false)
+               {
+                       trigger_error('Error reading XML strings file', E_USER_ERROR);
+               }
+               
+               $xml = $bugsys->xml->parse($xmldata);
+               foreach ($xml['language']['phrase'] AS $phrase)
+               {
+                       $locals[ $phrase['key']['value'] ] = $phrase['value']['value'];
+               }
+       }
+       else
+       {
+               $localizations = $bugsys->db->query("SELECT * FROM " . TABLE_PREFIX . "localization WHERE languageid = $languageid");
+               while ($local = $bugsys->db->fetch_array($localizations))
+               {
+                       $locals["$local[localkey]"] = $local['localtext'];
+               }
+               $bugsys->db->free_result($localizations);
+       }
+       
+       return $locals;
+}
+
+// ###################################################################
+// determines the user's language
+function fetch_user_language()
+{
+       global $bugsys;
+       
+       if ($bugsys->userinfo['userid'])
+       {
+               $languageid = $bugsys->userinfo['languageid'];
+               $language = $bugsys->datastore['language']["$languageid"];
+       }
+       
+       if (!$languageid)
+       {
+               foreach ($bugsys->datastore['language'] AS $language)
+               {
+                       if ($language['default'])
+                       {
+                               $languageid = $language['languageid'];
+                               $language = $bugsys->datastore['language']["$languageid"];
+                               break;
+                       }
+               }
+       }
+       
+       $lang['id'] = $language['languageid'];
+       $lang['charset'] = $language['charset'];
+       $lang['direction'] = $language['direction'];
+       $lang['code'] = $language['languagecode'];
+       
+       return $lang;
+}
+
+/*=====================================================================*\
+|| ###################################################################
+|| # $HeadURL$
+|| # $Id$
+|| ###################################################################
+\*=====================================================================*/
+?>
\ No newline at end of file
index c7f5120882f5bfbc52d61d723119c1f58f4352fc..b923f8d5a9af9eed08d340e8cf4c22c25d3652ec 100755 (executable)
 
 /*
 $define[GROUPNAME] = GROUPNAME; <-- sets up an option group
-$config[VARNAME] = array(GROUPNAME, VARNAME, CODE, DEFAULT, VOLATILE); <-- sets up a setting
+$config[VARNAME] = array(GROUPNAME, VARNAME, CODE, DEFAULT, VOLATILE, NAME, DESCRIPTION); <-- sets up a setting
 */
 
 $settingconfig = array();
 
 // ###################################################################
 
-$define['general'] = 'general';
+$define['general'] = $lang->string('General Options');
 
-$config['allownewreg']                 =       array('general', 'allownewreg', 'yesno', 1, false);
-$config['verifyemail']                 =       array('general', 'verifyemail', 'yesno', 0, false);
-$config['moderatenewusers']            =       array('general', 'moderatenewusers', 'yesno', 0, false);
-$config['sendwelcomemail']             =       array('general', 'sendwelcomemail', 'yesno', 1, false);
-$config['webmasteremail']              =       array('general', 'webmasteremail', 'textbox', '', false);
-$config['trackertitle']                        =       array('general', 'trackertitle', 'textbox', '', false);
-$config['dateformat']                  =       array('general', 'dateformat', 'textbox', 'F j, Y h:i:s A', false);
+$config['allownewreg']                 =       array('general', 'allownewreg', 'yesno', 1, false, $lang->string('Allow New Registrations'), $lang->string('Can unregistered users be allowed to create accounts.'));
+$config['verifyemail']                 =       array('general', 'verifyemail', 'yesno', 0, false, $lang->string('Require Activation Email'), $lang->string('Setting this to yes will force all new users to verify their account with an email activation link.'));
+$config['moderatenewusers']            =       array('general', 'moderatenewusers', 'yesno', 0, false, $lang->string('Moderate New Users'), $lang->string('All new users will have to be approved by the administration before being able to have normal user rights.'));
+$config['sendwelcomemail']             =       array('general', 'sendwelcomemail', 'yesno', 1, false, $lang->string('Send New Use Welcome Email'), $lang->string('Setting this option to <em>yes</em> will send all new users, after they\'ve been verified, a welcoming email.'));
+$config['webmasteremail']              =       array('general', 'webmasteremail', 'textbox', '', false, $lang->string('Webmaster Email Address'), $lang->string('The email address from which emails will be sent out.'));
+$config['trackertitle']                        =       array('general', 'trackertitle', 'textbox', '', false, $lang->string('Tracker Title'), $lang->string('The global name of the bug tracker. Example: Iris Studios Bug Tracker'));
+$config['dateformat']                  =       array('general', 'dateformat', 'textbox', 'F j, Y h:i:s A', false, $lang->string('Date Format'), $lang->string('Set the date format used for bug report and comment information. This is based on PHP\'s date() function.'));
 
 // ###################################################################
 
-$define['reporting'] = 'reporting';
+$define['reporting'] = $lang->string('Bug Reporting Options');
 
-$config['allowhtml']                   =       array('reporting', 'allowhtml', 'yesno', 0, false);
-$config['defaultseverity']             =       array('reporting', 'defaultseverity', '" . construct_option_select(\'setting[defaultseverity]\', $bugsys->datastore[\'severity\'],  $bugsys->options[\'defaultseverity\'], \'severityid\', \'severity\') . "', 1, false);
-$config['defaultpriority']             =       array('reporting', 'defaultpriority', '" . construct_option_select(\'setting[defaultpriority]\', $bugsys->datastore[\'priority\'],  $bugsys->options[\'defaultpriority\'], \'priorityid\', \'priority\') . "', 1, false);
-$config['defaultstatus']               =       array('reporting', 'defaultstatus', '" . construct_option_select(\'setting[defaultstatus]\', $bugsys->datastore[\'status\'],  $bugsys->options[\'defaultstatus\'], \'statusid\', \'status\') . "', 1, false);
-$config['defaultresolve']              =       array('reporting', 'defaultresolve', '" . construct_option_select(\'setting[defaultresolve]\', $bugsys->datastore[\'resolution\'],  $bugsys->options[\'defaultresolve\'], \'resolutionid\', \'resolution\') . "', 1, false);
-$config['defaultassign']               =       array('reporting', 'defaultassign', '" . construct_option_select(\'setting[defaultassign]\', $bugsys->datastore[\'assignto\'],  $bugsys->options[\'defaultassign\'], \'userid\', \'displayname\', 0) . "', 0, false);
-$config['defaultcomment']              =       array('reporting', 'defaultcomment', 'textarea', '', false);
+$config['allowhtml']                   =       array('reporting', 'allowhtml', 'yesno', 0, false, $lang->string('Allow HTML in Bug Reports'), $lang->string('Set this to <em>yes</em> if you want to allow users to post raw HTML in their bug reports. This is <strong>very</strong> dangerous and it is not recommended.'));
+$config['defaultseverity']             =       array('reporting', 'defaultseverity', '" . construct_option_select(\'setting[defaultseverity]\', $bugsys->datastore[\'severity\'],  $bugsys->options[\'defaultseverity\'], \'severityid\', \'severity\') . "', 1, false, $lang->string('Default Severity'), $lang->string('The default severity that is selected when creating a new bug report.'));
+$config['defaultpriority']             =       array('reporting', 'defaultpriority', '" . construct_option_select(\'setting[defaultpriority]\', $bugsys->datastore[\'priority\'],  $bugsys->options[\'defaultpriority\'], \'priorityid\', \'priority\') . "', 1, false, $lang->string('Default Priority'), $lang->string('The default priority that will be selected when creating a new bug report. Depending on your permission setup, the user may not be able to set this in a new report so this will act as the value.'));
+$config['defaultstatus']               =       array('reporting', 'defaultstatus', '" . construct_option_select(\'setting[defaultstatus]\', $bugsys->datastore[\'status\'],  $bugsys->options[\'defaultstatus\'], \'statusid\', \'status\') . "', 1, false, $lang->string('Default Status'), $lang->string('The default default that is selected when creating a new bug report. If a user can not assign a status, this will be the one inserted into the database.'));
+$config['defaultresolve']              =       array('reporting', 'defaultresolve', '" . construct_option_select(\'setting[defaultresolve]\', $bugsys->datastore[\'resolution\'],  $bugsys->options[\'defaultresolve\'], \'resolutionid\', \'resolution\') . "', 1, false, $lang->string('Default Resolution'), $lang->string('This is the default bug resolution. If a user is not able to change this field, setting this will act as the default value.'));
+$config['defaultassign']               =       array('reporting', 'defaultassign', '" . construct_option_select(\'setting[defaultassign]\', $bugsys->datastore[\'assignto\'],  $bugsys->options[\'defaultassign\'], \'userid\', \'displayname\', 0) . "', 0, false, $lang->string('Default Bug Assignment'), $lang->string('This is the default developer new bugs will be assigned to. If a user does not have permisssion to assign bugs, this will be the default. If you don\'t want any default assignment, leave this as <em>Not Selected</em>.'));
+$config['defaultcomment']              =       array('reporting', 'defaultcomment', 'textarea', '', false, $lang->string('Default Comment Text'), $lang->string('If you wish to set a template for entering the initial comment of a bug report, then you may specify this here. However, the template will only take effect on the initial report/comment. Note: the template cannot be forced on the user as there is no way to validate it.'));
 
 // ###################################################################
 
-$define['pagination'] = 'pagination';
+$define['pagination'] = $lang->string('Pagination Options');
 
-$config['defaultpp']                   =       array('pagination', 'defaultpp', 'textbox', 20, false);
-$config['maxpp']                               =       array('pagination', 'maxpp', 'textbox', 100, false);
-$config['pagelinks']                   =       array('pagination', 'pagelinks', 'textbox', 3, false);
+$config['defaultpp']                   =       array('pagination', 'defaultpp', 'textbox', 20, false, $lang->string('Default Per-Page Amount'), $lang->string('The number of items (e.g. bugs) to be displayed on a page by default. The user will have the option of over-riding these values.'));
+$config['maxpp']                               =       array('pagination', 'maxpp', 'textbox', 100, false, $lang->string('Maximum Per-Page Value'), $lang->string('To prevent your server from experiencing load problems, set the maximum per page limit. Specifying a value here will make sure any user-entered value will not be higher than this, preventing server load problems.'));
+$config['pagelinks']                   =       array('pagination', 'pagelinks', 'textbox', 3, false, $lang->string('Number of Page Links'), $lang->string('The number of pages that will appear in the page navigation system on either side of the current page. Set this to 0 to display all pages.'));
 
 // ###################################################################
 
-$define['untouchables'] = 'untouchables';
+$define['untouchables'] = $lang->string('Untouchables');
 
-$config['trackerversion']              =       array('untouchables', 'trackerversion', 'textbox', '', true);
+$config['trackerversion']              =       array('untouchables', 'trackerversion', 'textbox', '', true, $lang->string('Tracker Version Number'), $lang->string('Do not touch this!'));
 
 
 /*=====================================================================*\
index 6760a07c785c4e3e9a755b8c1092b298fc712757..123aa460ac3a58b5c1f76b5426a7c966483d9dce 100755 (executable)
--- a/login.php
+++ b/login.php
@@ -24,7 +24,7 @@ require_once('./global.php');
 
 if ($bugsys->userinfo['userid'] AND $_REQUEST['do'] != 'logout' AND $_POST['do'] != 'cplogin' AND $_REQUEST['do'] != 'cplogout')
 {
-       $message->error(lang::p('already_logged_in'));
+       $message->error($lang->string('You are already logged in.'));
 }
 
 // ###################################################################
@@ -75,10 +75,10 @@ if ($_POST['do'] == 'login' OR $_POST['do'] == 'cplogin')
                        $funct->cookie(COOKIE_PREFIX . 'authkey');
                }
                
-               $message->error(lang::p('inavlid_email_pass'));
+               $message->error($lang->string('Invalid email or password.'));
        }
        
-       $message->redirect(lang::p('login_redirect'), $url);
+       $message->redirect($lang->string('Welcome back! You are now logged in.'), $url);
 }
 
 // ###################################################################
@@ -90,11 +90,11 @@ if ($_REQUEST['do'] == 'logout')
                $funct->cookie(COOKIE_PREFIX . 'userid');
                $funct->cookie(COOKIE_PREFIX . 'authkey');
                $funct->cookie(COOKIE_PREFIX . 'adminsession');
-               $message->redirect(lang::p('logged_out'), 'index.php');
+               $message->redirect($lang->string('You have been logged out.'), 'index.php');
        }
        else
        {
-               $message->error(lang::p('error_need_credentials'));
+               $message->error($lang->string('You need to be logged in to access this feature.'));
        }
 }
 
@@ -105,11 +105,11 @@ if ($_REQUEST['do'] == 'cplogout')
        if ($_COOKIE[COOKIE_PREFIX . 'adminsession'])
        {
                $funct->cookie(COOKIE_PREFIX . 'adminsession');
-               $message->redirect(lang::p('logged_out'), 'admin/');
+               $message->redirect($lang->string('You have been logged out.'), 'admin/');
        }
        else
        {
-               $message->error(lang::p('not_logged_in'));
+               $message->error($lang->string('You are not logged in.'));
        }
 }
 
index 579d0a57fbb9fcfec7252b139674cc33cc47fb30..4bfa9d859583830228b5aae1ca72429720594cf1 100644 (file)
@@ -61,7 +61,7 @@ if ($_POST['do'] == 'insert')
        $log->arguments = array($commentid);
        $log->log();
 
-       $message->redirect(lang::p('comment_added'), "showreport.php?bugid=" . intval($bugsys->in['bugid']));
+       $message->redirect($lang->string('Your reply has been added to the comment list.'), "showreport.php?bugid=" . intval($bugsys->in['bugid']));
 }
 
 /*=====================================================================*\
index e6d4cbc1ebbf23f521027b14c375ff692526d8c4..1fb8d9fca4da34d86d2d2b42b458365e8be247c0 100755 (executable)
@@ -83,15 +83,15 @@ if ($_POST['do'] == 'insert')
        // sanity checks
        if (!$pcv)
        {
-               $message->error(lang::p('invalid_pcv'));
+               $message->error($lang->string('Invalid product/component/version selected.'));
        }
        if (!$bugsys->in['summary'])
        {
-               $message->error(lang::p('error_enter_bug_title'));
+               $message->error($lang->string('Please enter a title for the bug'));
        }
        if (!$bugsys->in['comment'])
        {
-               $message->error(lang::p('error_enter_bug_description'));
+               $message->error($lang->string('Please fill in the bug\'s description field'));
        }
        
        // -------------------------------------------------------------------
@@ -144,7 +144,7 @@ if ($_POST['do'] == 'insert')
        
        $db->query("INSERT INTO " . TABLE_PREFIX . "vote (bugid, votefor, voteagainst) VALUES ($bugid, 0, 0)");
        
-       $message->redirect(lang::p('bug_added'), "showreport.php?bugid=$bugid");
+       $message->redirect($lang->string('The bug has been added to the database.'), "showreport.php?bugid=$bugid");
 }
 
 // ###################################################################
index 1ec4bd8853acb4e2533934de41fc81a96811f138..d5a5b9080d59870b4dfa3d11f86d341b8388fc0b 100755 (executable)
@@ -26,12 +26,12 @@ if (empty($_REQUEST['do']))
 {
        if ($bugsys->userinfo['userid'])
        {
-               $message->error(lang::p('error_already_registered'));
+               $message->error($lang->string('Sorry, you are already registered.'));
        }
        
        if (!$bugsys->options['allownewreg'])
        {
-               $message->error(lang::p('error_no_new_registrations'));
+               $message->error($lang->string('Sorry, we don\'t allow new registrations.'));
        }
 
        foreach ($bugsys->datastore['language'] AS $value => $temp)
@@ -49,42 +49,42 @@ if ($_POST['do'] == 'insert')
 {
        if ($bugsys->userinfo['userid'])
        {
-               $message->error(lang::p('error_already_registered'));
+               $message->error($lang->string('Sorry, you are already registered.'));
        }
        
        if (!$bugsys->options['allownewreg'])
        {
-               $message->error(lang::p('error_no_new_registrations'));
+               $message->error($lang->string('Sorry, we don\'t allow new registrations.'));
        }
 
        if ($bugsys->in['email'] != $bugsys->in['confirmemail'])
        {
-               $message->phrase[] = 'register_emails_no_match';
+               $message->phrase[] = $lang->string('The emails you entered do not match.');
        }
        
        if (!$bugsys->in['email'])
        {
-               $message->phrase[] = 'register_blank_email';
+               $message->phrase[] = $lang->string('The email you specified was blank.');
        }
        
        if ($bugsys->in['password'] != $bugsys->in['confirmpassword'])
        {
-               $message->phrase[] = 'register_passwords_no_match';
+               $message->phrase[] = $lang->string('The passwords you entered did not match.');
        }
        
        if (!$bugsys->in['password'])
        {
-               $message->phrase[] = 'register_blank_password';
+               $message->phrase[] = $lang->string('The password you specified was blank.');
        }
        
        if (!$funct->is_valid_email($bugsys->in['email']))
        {
-               $message->phrase[] = 'register_invalid_email';
+               $message->phrase[] = $lang->string('The specified email is invalid.');
        }
        
        if (is_array($db->query_first("SELECT * FROM " . TABLE_PREFIX . "user WHERE email = '" . $bugsys->in['email'] . "'")))
        {
-               $message->phrase[] = 'register_email_in_use';
+               $message->phrase[] = $lang->string('The specified email is already in use.');
        }
        
        if ($message->phrase)
@@ -136,29 +136,49 @@ if ($_POST['do'] == 'insert')
                $db->query("INSERT INTO " . TABLE_PREFIX . "useractivation (userid, activator, dateline, usergroupid) VALUES ($userid, '$activationid', " . TIMENOW . ", 2)");
                
                $mail->to = $bugsys->in['email'];
-               $mail->subject =  lang::r('Welcome to ' . $bugsys->options['trackertitle']);
-               $mail->body = lang::r("Hi " . $bugsys->in['displayname'] . " you need to activate your account: http://devbox/bugtraq/register.php?do=activate&userid=" . $userid . "&activator=" . $activationid);
+               $mail->subject =  sprintf($lang->string('Welcome to %1$s'), $bugsys->options['trackertitle']);
+               $mail->body = sprintf($lang->string('Hi %1$s,
+
+Welcome to the %2$s tracker. Before you can begin posting bug reports, you\'ll need to activae your account. To do this, please click this link:
+
+%3$s/register.php?do=activate&userid=%4$s&activator=%5$s',
+
+                                                               $bugsys->in['displayname'],
+                                                               'Avalon Development', // #*# change
+                                                               'http://devbox/bugtrack', // #*# change
+                                                               $userid,
+                                                               $activationid
+               );
+               
                $mail->send();
        
-               $message->message(lang::p('need_to_activate_account'));
+               $message->message($lang->string('You now need to activate your account via email.'));
        }
        else if ($usergroupid == 4 OR $usergroupid == 2)
        {
                if ($bugsys->options['sendwelcomemail'])
                {
                        $mail->to = $bugsys->in['email'];
-                       $mail->subject = lang::r('Welcome to ' . $bugsys->options['trackertitle']);
-                       $mail->body = lang::r("Hi " . $bugsys->in['displayname'] . " and welcome to the " . $bugsys->options['trackertitle'] . " bug tracker! Thanks for registering.");
+                       $mail->subject = sprintf($lang->string('Welcome to %1$s'), $bugsys->options['trackertitle']);
+                       $mail->body = sprintf($lang->string('Hi %1$s,
+
+Thank you for taking the time to register at %2$s. We look forward to your contributations to making our products better.
+
+If you have any questions, please don\'t hesitate to contact the webmaster.',
+                                                               $bugsys->in['displayname'],
+                                                               $bugsys->options['trackertitle']
+                       );
+                       
                        $mail->send();
                }
                
                if ($usergroupid == 4)
                {
-                       $message->message(lang::p('account_pending_approval'));
+                       $message->message($lang->string('Your account is pending approval.'));
                }
                else
                {
-                       $message->message(lang::r('Registration complete!'));
+                       $message->message($lang->string('Thank you for registering. You may now use your account.'));
                }
        }
 }
@@ -176,16 +196,23 @@ if ($_REQUEST['do'] == 'activate')
                if ($bugsys->options['sendwelcomemail'])
                {
                        $mail->to = $user['email'];
-                       $mail->subject = lang::r('Welcome to ' . $bugsys->options['trackertitle']);
-                       $mail->body = lang::r("Hi " . $user['displayname'] . " and welcome to the " . $bugsys->options['trackertitle'] . " bug tracker! Thanks for registering.");
+                       $mail->subject = sprintf($lang->string('Welcome to %1$s'), $bugsys->options['trackertitle']);
+                       $mail->body = sprintf($lang->string('Hi %1$s,
+
+Thank you for taking the time to register at %2$s. We look forward to your contributations to making our products better.
+
+If you have any questions, please don\'t hesitate to contact the webmaster.',
+                                                               $user['displayname'],
+                                                               $bugsys->options['trackertitle']
+                       );
                        $mail->send();
                }
                
-               $message->message(lang::p('account_activated'));
+               $message->message($lang->string('Your account is now activated and you can now login.'));
        }
        else
        {
-               $message->error(lang::p('error_invalid_registration_key'));
+               $message->error($lang->string('Sorry, we could not match your registration string. Please make sure you entered the correct URL.'));
        }
 }
 
index 9273164b980fb9aa58c14740bef0187a7736602f..ad0d76fd46f4788aad7f386e53251797258a23f7 100644 (file)
@@ -223,7 +223,7 @@ if ($_REQUEST['do'] == 'process')
        // have to search something
        if (count($querybuild) < 1)
        {
-               $message->error(lang::p('search_no_criteria'));
+               $message->error($lang->string('You have to enter some criteria to search for'));
        }
        
        // -------------------------------------------------------------------
@@ -254,7 +254,7 @@ if ($_REQUEST['do'] == 'process')
        
        if ($numrows < 1)
        {
-               $message->error(lang::p('search_no_results'));
+               $message->error($lang->string('No search results were returned that matched your criteria.'));
        }
        
        while ($result = $db->fetch_array($search))
index 4a8f49fd4101e3aebf0f95eda1adb40f0f46df50..def3a0351563bf304d74c4310922fd3c224557ec 100644 (file)
@@ -25,7 +25,7 @@ require_once('./global.php');
 $bug = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = " . intval($bugsys->in['bugid']));
 if (!$bug)
 {
-       $message->error(lang::p('error_invalid_id'));
+       $message->error($lang->getlex('error_invalid_id'));
 }
 
 if ($bug['hidden'] AND !can_perform('canviewhidden'))
index 6fa06949009dc268c526d7a965dec63fa0d81698..1f63d99806b7f84e92eab642a4d06eeaccf39682 100644 (file)
@@ -48,7 +48,7 @@ if (empty($bugid) OR $_REQUEST['do'] == 'quicksearch')
                }
                else
                {
-                       $error = lang::p('error_invalid_id');
+                       $error = $lang->getlex('error_invalid_id');
                }
        }
        
@@ -72,7 +72,7 @@ $bug = $db->query_first("
 
 if (!is_array($bug))
 {
-       $message->error(lang::p('error_invalid_id'));
+       $message->error($lang->getlex('error_invalid_id'));
 }
 
 if ($bug['hidden'] AND !can_perform('canviewhidden'))
@@ -84,7 +84,7 @@ if ($bug['hidden'] AND !can_perform('canviewhidden'))
 // global display items
 
 $favourite = (bool)$db->query_first("SELECT * FROM " . TABLE_PREFIX . "favourite WHERE bugid = $bug[bugid] AND userid = " . $bugsys->userinfo['userid']);
-$favouritetext = (($favourite) ? lang::p('remove_from_favourites') : lang::p('add_to_favourites'));
+$favouritetext = (($favourite) ? $lang->string('Remove from Favourites') : $lang->string('Add to Favourites'));
 
 $bug['userinfo'] = construct_user_display($bug);
 $bug['datetime'] = $datef->format($bugsys->options['dateformat'], $bug['dateline']);
index fef08c2d71b70fab745b6a67b6d8c98db95b86ed..f4e9b571e28129d85787a22a8b0e51120cba03e1 100755 (executable)
@@ -21,7 +21,7 @@ require_once('./global.php');
 $attachment = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "attachment WHERE attachmentid = " . intval($bugsys->in['attachmentid']));
 if (!$attachment)
 {
-       $message->error(lang::p('error_invalid_id'));
+       $message->error($lang->getlex('error_invalid_id'));
 }
 
 if (!can_perform('cangetattach') AND !can_perform('caneditattach'))
index e778439ebcd39d6b7714d3cb554bc0eb2286c816..204e3e612e5ee6906dc92584b73d256c67f78597 100644 (file)
--- a/vote.php
+++ b/vote.php
@@ -25,7 +25,7 @@ if (!can_perform('canvote'))
 
 if (empty($_REQUEST['do']))
 {
-       $message->error(lang::p('error_invalid_id'));
+       $message->error($lang->getlex('error_invalid_id'));
 }
 
 // ###################################################################
@@ -37,12 +37,12 @@ if ($_REQUEST['do'] == 'vote')
        
        if (!$bug)
        {
-               $message->error(lang::p('error_invalid_id'));
+               $message->error($lang->getlex('error_invalid_id'));
        }
        
        if ($vote['uservote'])
        {
-               $message->error(lang::p('error_already_voted'));
+               $message->error($lang->string('You have already voted on this bug.'));
        }
        
        // handle userids
@@ -75,7 +75,7 @@ if ($_REQUEST['do'] == 'vote')
        
        $db->query("UPDATE " . TABLE_PREFIX . "vote SET userids = '$userids', votefor = $votefor, voteagainst = $voteagainst WHERE bugid = $bug[bugid]");
 
-       $message->redirect(lang::p('vote_added'), "showreport.php?bugid=$bug[bugid]");
+       $message->redirect($lang->string('Your vote has been added.'), "showreport.php?bugid=$bug[bugid]");
 }
 
 /*=====================================================================*\