]> git.mjollnir.org Git - moodle.git/commitdiff
get_string: Refactoring, performance improvements, bug fixes and unit tests
authortjhunt <tjhunt>
Mon, 30 Mar 2009 02:21:27 +0000 (02:21 +0000)
committertjhunt <tjhunt>
Mon, 30 Mar 2009 02:21:27 +0000 (02:21 +0000)
MDL-18669 get_string refactored to elimiate duplicate code and make it easier to understand.
MDL-17763 parent language not processed correctly when getting a plugin string.
MDL-16181 more intelligent caching to avoid repeated file_exists checks.
MDL-12434 move values to array keys to improve lookup times.

The main part of the refactoring is to create a singleton string_manager class to encapsulate the cached data and the processing, while breaking the code up into more smaller methods.

Other performance improvements include:
* Cache results of plugin name -> locations to search array.
* Cache parent lang lookup.
* Skip eval if the string does not contain $ \ or %.
* Remove the unnecessary sprintf from the eval.

There is a performance testing script in lib/simpletest/getstringperformancetester.php. For now this script has the old get_string implementation copied and pasted to the end, and renamed to old_get_string to allow for comparitive timings.

There are now some unit tests for get_string in lib/simpletest/teststringmanager.php. I think I have managed to cover most of the tricky cases.

21 files changed:
help.php
lang/en_utf8/moodle.php
lib/moodlelib.php
lib/simpletest/get_string_fixtures/moodle/blocks/mrbs/lang/en_utf8/block_mrbs.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/moodle/blocks/mrbs/lang/fr_utf8/block_mrbs.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/moodle/lang/en_utf8/moodle.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/moodle/lang/en_utf8/test.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/moodle/lang/en_utf8_local/moodle.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/moodle/lang/es_ar_utf8_local/langconfig.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/moodledata/lang/es_ar_utf8/langconfig.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/moodledata/lang/fr_ca_utf8/langconfig.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/moodledata/lang/fr_ca_utf8/test.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/moodledata/lang/fr_utf8/test.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/pagelogs/admin_index.php_get_string.log.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/pagelogs/admin_index.php_old_get_string.log.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/pagelogs/course_view.php_get_string.log.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/pagelogs/course_view.php_old_get_string.log.php [new file with mode: 0644]
lib/simpletest/get_string_fixtures/pagelogs/empty.log.php [new file with mode: 0644]
lib/simpletest/getstringperformancetester.php [new file with mode: 0644]
lib/simpletest/testmoodlelib.php
lib/simpletest/teststringmanager.php [new file with mode: 0644]

index 86d07211e94703ed0e8e6143ab4b3d4dc72270be..3c9844de8168eb42472596085ce926b37233efb4 100644 (file)
--- a/help.php
+++ b/help.php
@@ -14,8 +14,8 @@
 require_once('config.php');
 
 // Get URL parameters.
-$file   = optional_param('file', '', PARAM_PATH);
-$text   = optional_param('text', 'No text to display', PARAM_CLEAN);
+$file = optional_param('file', '', PARAM_PATH);
+$text = optional_param('text', 'No text to display', PARAM_CLEAN);
 $module = optional_param('module', 'moodle', PARAM_ALPHAEXT);
 $forcelang = optional_param('forcelang', '', PARAM_SAFEDIR);
 $skiplocal = optional_param('skiplocal', 0, PARAM_INT);     // shall _local help files be skipped?
@@ -30,89 +30,27 @@ ob_start();
 
 if (!empty($file)) {
     // The help to display is from a help file.
+    list($filepath, $foundlang) = string_manager::instance()->find_help_file($file, $module, $forcelang, $skiplocal);
 
-    // Get the list of parent languages.
-    if (empty($forcelang)) {
-        $langs = array(current_language(), get_string('parentlanguage'), 'en_utf8');  // Fallback
-    } else {
-        $langs = array($forcelang, 'en_utf8');
-    }
-    
-    if (!$skiplocal) {
-        // _local language packs take precedence with both forced language and non-forced language settings
-        $xlangs = array();
-        foreach ($langs as $lang) {
-            if (!empty($lang)) {
-                $xlangs[] = $lang . '_local';
-                $xlangs[] = $lang;
-            }
-        }
-        $langs = $xlangs;
-        unset($xlangs);
-    }
-
-// Define possible locations for help file similar to locations for language strings
-// Note: Always retain module directory as before
-    $locations = array();
-    if ($module == 'moodle') {
-        $locations[$CFG->dataroot.'/lang/'] = $file;
-        $locations[$CFG->dirroot.'/lang/'] = $file;
-    } else {
-        $modfile = $module.'/'.$file;
-        $locations[$CFG->dataroot.'/lang/'] = $modfile;
-        $locations[$CFG->dirroot.'/lang/'] = $modfile;
+    if ($filepath) {
+        $helpfound = true;
+        @include($filepath);   // The actual helpfile
 
-        $rules = places_to_search_for_lang_strings();
-        $exceptions = $rules['__exceptions'];
-        unset($rules['__exceptions']);
-        
-        if (!in_array($module, $exceptions)) {
-            $dividerpos = strpos($module, '_');
-            if ($dividerpos === false) {
-                $type = '';
-                $plugin = $module;
-            } else {
-                $type = substr($module, 0, $dividerpos + 1);
-                $plugin = substr($module, $dividerpos + 1);
-            }
-            if (!empty($rules[$type])) {
-                foreach ($rules[$type] as $location) {
-                    $locations[$CFG->dirroot . "/$location/$plugin/lang/"] = "$plugin/$file";
-                }
-            }
+        // Now, we process some special cases.
+        if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) {
+            include_help_for_each_module($file, $forcelang, $skiplocal);
+        }
+        if ($module == 'question' && $file == 'types.html') {
+            include_help_for_each_qtype();
         }
-    }
-
-    // Work through the possible languages, starting with the most specific.
-    while (!$helpfound && (list(,$lang) = each($langs)) && !empty($lang)) {
-
-        while (!$helpfound && (list($locationprefix,$locationsuffix) = each($locations))) {
-            $filepath = $locationprefix.$lang.'/help/'.$locationsuffix;
-
-            // Now, try to include the help text from this file, if we can.
-            if (file_exists_and_readable($filepath)) {
-                $helpfound = true;
-                @include($filepath);   // The actual helpfile
-
-                // Now, we process some special cases.
-                $helpdir = $locationprefix.$lang.'/help';
-                if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) {
-                    include_help_for_each_module($file, $langs, $helpdir);
-                }
-                if ($module == 'question' and ($file == 'types.html')) {
-                    include_help_for_each_qtype();
-                }
 
-                // The remaining horrible hardcoded special cases should be delegated to modules somehow.
-                if ($module == 'moodle' and ($file == 'resource/types.html')) {  // RESOURCES
-                    include_help_for_each_resource($file, $langs, $helpdir);
-                }
-                if ($module == 'moodle' and ($file == 'assignment/types.html')) {  // ASSIGNMENTS
-                    include_help_for_each_assignment_type();
-                }
-            }
+        // The remaining horrible hardcoded special cases should be delegated to modules somehow.
+        if ($module == 'moodle'&& $file == 'resource/types.html') {  // RESOURCES
+            include_help_for_each_resource($forcelang, $skiplocal);
+        }
+        if ($module == 'moodle' && $file == 'assignment/types.html') {  // ASSIGNMENTS
+            include_help_for_each_assignment_type($forcelang, $skiplocal);
         }
-        reset($locations);
     }
 } else {
     // The help to display was given as an argument to this function.
@@ -121,26 +59,26 @@ if (!empty($file)) {
 }
 
 // Finish buffer
-$output=ob_get_contents();
+$output = ob_get_contents();
 ob_end_clean();
 
 // Determine title
-$title=get_string('help'); // Default is just 'Help'
-$matches=array();
+$title = get_string('help'); // Default is just 'Help'
+$matches = array();
 // You can include a <title> tag to override the standard behaviour:
 // 'Help - title contents'. Otherwise it looks for the text of the first
 // heading: 'Help - heading text'. If there aren't even any headings
 // you just get 'Help'
-if(preg_match('~^(.*?)<title>(.*?)</title>(.*)$~s',$output,$matches)) {
+if (preg_match('~^(.*?)<title>(.*?)</title>(.*)$~s', $output, $matches)) {
     // Extract title
-    $title=$title.' - '.$matches[2]; 
+    $title = $title.' - '.$matches[2];
     // Strip title from output
-    $output=$matches[1].$matches[3];
+    $output = $matches[1].$matches[3];
 } else if(preg_match('~<h[0-9]+(\s[^>]*)?>(.*?)</h[0-9]+>~s',$output,$matches)) {
     // Use first heading as title (obviously leave it in output too). Strip
     // any tags from inside
-    $matches[2]=preg_replace('~<[^>]*>~s','',$matches[2]);
-    $title=$title.' - '.$matches[2];
+    $matches[2] = preg_replace('~<[^>]*>~s','',$matches[2]);
+    $title = $title.' - '.$matches[2];
 }
 
 // use ##emoticons_html## to replace the emoticons documentation
@@ -161,27 +99,21 @@ if (!$helpfound) {
 
 // End of page.
 close_window_button();
-echo '<p class="helpindex"><a href="help.php?file=index.html">'. get_string('helpindex') .'</a>';
+echo '<p class="helpindex"><a href="help.php?file=index.html">'. get_string('helpindex') .'</a></p>';
 
 // Offer a link to the alternative help file language
-if (($helpfound) and (((current_language() != 'en_utf8') and $lang != 'en_utf8') or ($forcelang === 'en_utf8'))) {
-    $linklang = "{$CFG->wwwroot}/help.php?";
-    $linklang .= !empty($module)    ? "module=$module&amp;" : '';
-    $linklang .= !empty($file)      ? "file=$file&amp;" : '';
-    $linklang .= !empty($skiplocal) ? "skiplocal=$skiplocal&amp;" : '';
-
-    if (empty($forcelang) or $forcelang === current_language()) {
-        $nextlang = 'en_utf8';
-        $nextlangname = 'English';
+$currentlang = current_language();
+if ($helpfound && ($foundlang != 'en_utf8' || ($forcelang == 'en_utf8' && current_language() != 'en_utf8'))) {
+    $url = new moodle_url();
+    if ($foundlang != 'en_utf8') {
+        $url->param('forcelang', 'en_utf8');
+        $nextlangname = get_string('english');
     } else {
-        $nextlang = current_language();
+        $url->param('forcelang', $currentlang);
         $nextlangname = get_string('thislanguage');
     }
-
-    $linklang .= "forcelang=$nextlang";
-    echo "<br /><a href=\"$linklang\">" . get_string('showthishelpinlanguage', 'moodle', $nextlangname) . '</a>';
+    echo '<p><a href="' . $url->out() . '">' . get_string('showthishelpinlanguage', 'moodle', $nextlangname) . '</a></p>';
 }
-echo '</p>';
 
 $CFG->docroot = '';   // We don't want a doc link here
 print_footer('none');
@@ -192,13 +124,14 @@ function file_exists_and_readable($filepath) {
 
 // Some functions for handling special cases ========================================
 
-function include_help_for_each_module($file, $langs, $helpdir) {
+function include_help_for_each_module($file, $forcelang, $skiplocal) {
     global $CFG, $DB;
 
-    if (!$modules = $DB->get_records('modules', array('visible'=>1))) {
-        print_error('nomodules', 'debug');        // Should never happen
+    if (!$modules = $DB->get_records('modules', array('visible'=> 1))) {
+        print_error('nomodules', 'debug'); // Should never happen
     }
-    
+
+    // Horrible hack to show the help about grades here too.
     $grade = new stdClass();
     $grade->name = 'grade';
     $modules[] = $grade;
@@ -210,23 +143,10 @@ function include_help_for_each_module($file, $langs, $helpdir) {
     ksort($modulebyname, SORT_LOCALE_STRING);
 
     foreach ($modulebyname as $mod) {
-        foreach ($langs as $lang) {
-            if (empty($lang)) {
-                continue;
-            }
-
-            $filepath = "$helpdir/$mod->name/$file";
-
-            // If that does not exist, try a fallback into the module code folder.
-            if (!file_exists($filepath)) {
-                $filepath = "$CFG->dirroot/mod/$mod->name/lang/$lang/help/$mod->name/$file";
-            }
-
-            if (file_exists_and_readable($filepath)) {
-                echo '<hr />';
-                @include($filepath); // The actual helpfile
-                break; // Out of loop over languages.
-            }
+        list($filepath, $foundlang) = string_manager::instance()->find_help_file($file, $mod->name, $forcelang, $skiplocal);
+        if ($filepath) {
+            echo '<hr />';
+            include($filepath);
         }
     }
 }
@@ -253,12 +173,12 @@ function include_help_for_qtype($qtype, $localizedname) {
     echo '<p>' . get_string($qtype . 'summary', 'qtype_' . $qtype) . "</p>\n\n";
 }
 
-function include_help_for_each_resource($file, $langs, $helpdir) {
+function include_help_for_each_resource($forcelang, $skiplocal) {
     global $CFG;
 
     require_once($CFG->dirroot .'/mod/resource/lib.php');
     $typelist = resource_get_types();
-    
+
     //add label type
     $labelType = new object();
     $labelType->modclass = MOD_CLASS_RESOURCE;
@@ -269,19 +189,10 @@ function include_help_for_each_resource($file, $langs, $helpdir) {
     $typelist[] = $labelType;
 
     foreach ($typelist as $type) {
-   
-        foreach ($langs as $lang) {
-            if (empty($lang)) {
-                continue;
-            }
-
-            $filepath = "$helpdir/resource/type/".$type->name.".html";
-
-            if (file_exists_and_readable($filepath)) {
-                echo '<hr />';
-                @include($filepath); // The actual helpfile
-                break; // Out of loop over languages.
-            }
+        list($filepath, $foundlang) = string_manager::instance()->find_help_file('type/' . $type->name . '.html', 'resource', $forcelang, $skiplocal);
+        if ($filepath) {
+            echo '<hr />';
+            include($filepath);
         }
     }
 }
@@ -293,9 +204,9 @@ function include_help_for_each_assignment_type() {
     $typelist = assignment_types();
 
     foreach ($typelist as $type => $name) {
-        echo '<p><b>'.$name.'</b></p>';
+        echo '<h2>'.$name.'</h2>';
         echo get_string('help'.$type, 'assignment');
-        echo '<hr size="1" />';
+        echo '<hr />';
     }
 }
 ?>
index 154f97f6db3aa019b44473b569656eed61b2028f..817f6513ee3841c67e18a25e4cc34efdcb35f653 100644 (file)
@@ -589,6 +589,7 @@ The new password was automatically generated - you might like to
 <a href=\"$a->link\">change your password</a> to something easier to remember.';
 $string['enable'] = 'Enable';
 $string['encryptedcode'] = 'Encrypted code';
+$string['english'] = 'English';
 $string['enroldate'] = 'Date range';
 $string['enroldetails'] = 'Enrolment details';
 $string['enrolenddate'] = 'End date';
index 2108df744fc51220be1969568ecab3f189f51f39..1dd58ef9fb7c6498c9ddaa8fe96e63f305a2a2b4 100644 (file)
@@ -5206,187 +5206,147 @@ function get_parent_language($lang=null) {
  * within translation strings
  */
 function print_string($identifier, $module='', $a=NULL) {
-    echo get_string($identifier, $module, $a);
-}
-
-/**
- * fix up the optional data in get_string()/print_string() etc
- * ensure possible sprintf() format characters are escaped correctly
- * needs to handle arbitrary strings and objects
- * @param mixed $a An object, string or number that can be used
- * @return mixed the supplied parameter 'cleaned'
- */
-function clean_getstring_data( $a ) {
-    if (is_string($a)) {
-        return str_replace( '%','%%',$a );
-    }
-    elseif (is_object($a)) {
-        $a_vars = get_object_vars( $a );
-        $new_a_vars = array();
-        foreach ($a_vars as $fname => $a_var) {
-            $new_a_vars[$fname] = clean_getstring_data( $a_var );
+    echo string_manager::instance()->get_string($identifier, $module, $a);
+}
+
+/**
+ * Singleton class for managing the search for language strings.
+ *
+ * Not that performance of this class is important. If you decide to change
+ * this class, please use the lib/simpletest/getstringperformancetester.php
+ * script to make sure your changes do not cause a performance problem.
+ */
+class string_manager {
+    private $parentlangs = array('en_utf8' => NULL);
+    private $searchpathsformodule = array();
+    private $strings = array();
+    private $nonpluginfiles = array('moodle' => 1, 'langconfig' => 1);
+    private $langconfigstrs = array('alphabet' => 1, 'backupnameformat' => 1, 'decsep' => 1,
+                'firstdayofweek' => 1, 'listsep' => 1, 'locale' => 1, 'localewin' => 1,
+                'localewincharset' => 1, 'oldcharset' => 1, 'parentlanguage' => 1,
+                'strftimedate' => 1, 'strftimedateshort' => 1, 'strftimedatefullshort' => 1,
+                'strftimedatetime' => 1, 'strftimedaydate' => 1, 'strftimedaydatetime' => 1,
+                'strftimedayshort' => 1, 'strftimedaytime' => 1, 'strftimemonthyear' => 1,
+                'strftimerecent' => 1, 'strftimerecentfull' => 1, 'strftimetime' => 1,
+                'thischarset' => 1, 'thisdirection' => 1, 'thislanguage' => 1,
+                'strftimedatetimeshort' => 1, 'thousandssep' => 1);
+    private $searchplacesbyplugintype;
+    private $dirroot;
+    private $corelocations;
+    private $installstrings = NULL;
+    private $parentlangfile = 'langconfig.php';
+    private $logtofile = false;
+    private static $singletoninstance = NULL;
+
+    public static function instance() {
+        if (is_null(self::$singletoninstance)) {
+            global $CFG;
+            self::$singletoninstance = new self($CFG->dirroot, $CFG->dataroot, $CFG->admin, isset($CFG->running_installer));
+            // Uncomment the followign line to log every call to get_string
+            // to a file in $CFG->dataroot/temp/getstringlog/...
+            // self::$singletoninstance->start_logging();
+        }
+        return self::$singletoninstance;
+    }
+
+    // Some of our arrays need $CFG.
+    protected function __construct($dirroot, $dataroot, $admin, $runninginstaller) {
+        $this->dirroot = $dirroot;
+        $this->corelocations = array(
+            $dirroot . '/lang/' => '',
+            $dataroot . '/lang/' => '',
+        );
+        $this->searchplacesbyplugintype = array(
+            'assignment_' => array('mod/assignment/type'),
+            'auth_' => array('auth'),
+            'block_' => array('blocks'),
+            'datafield_' => array('mod/data/field'),
+            'datapreset_' => array('mod/data/preset'),
+            'enrol_' => array('enrol'),
+            'filter_' => array('filter'),
+            'format_' => array('course/format'),
+            'quiz_' => array('mod/quiz/report'),
+            'qtype_' => array('question/type'),
+            'qformat_' => array('question/format'),
+            'report_' => array($admin.'/report', 'course/report'),
+            'repository_'=>array('repository'),
+            'resource_' => array('mod/resource/type'),
+            'gradereport_' => array('grade/report'),
+            'gradeimport_' => array('grade/import'),
+            'gradeexport_' => array('grade/export'),
+            'profilefield_' => array('user/profile/field'),
+            'portfolio_' => array('portfolio/type'),
+            '' => array('mod')
+        );
+        if ($runninginstaller) {
+            $stringnames = file($dirroot . '/install/stringnames.txt');
+            $this->installstrings = array_map('trim', $stringnames);
+            $this->parentlangfile = 'installer.php';
         }
-        return (object)$new_a_vars;
     }
-    else {
-        return $a;
-    }
-}
-
-/**
- * @return array places to look for lang strings based on the prefix to the
- * module name. For example qtype_ in question/type. Used by get_string and
- * help.php.
- */
-function places_to_search_for_lang_strings() {
-    global $CFG;
 
-    return array(
-        '__exceptions' => array('moodle', 'langconfig'),
-        'assignment_' => array('mod/assignment/type'),
-        'auth_' => array('auth'),
-        'block_' => array('blocks'),
-        'datafield_' => array('mod/data/field'),
-        'datapreset_' => array('mod/data/preset'),
-        'enrol_' => array('enrol'),
-        'filter_' => array('filter'),
-        'format_' => array('course/format'),
-        'quiz_' => array('mod/quiz/report'),
-        'qtype_' => array('question/type'),
-        'qformat_' => array('question/format'),
-        'report_' => array($CFG->admin.'/report', 'course/report'),
-        'repository_'=>array('repository'),
-        'resource_' => array('mod/resource/type'),
-        'gradereport_' => array('grade/report'),
-        'gradeimport_' => array('grade/import'),
-        'gradeexport_' => array('grade/export'),
-        'profilefield_' => array('user/profile/field'),
-        'portfolio_' => array('portfolio/type'),
-        '' => array('mod')
-    );
-}
-
-/**
- * Returns a localized string.
- *
- * Returns the translated string specified by $identifier as
- * for $module.  Uses the same format files as STphp.
- * $a is an object, string or number that can be used
- * within translation strings
- *
- * eg "hello \$a->firstname \$a->lastname"
- * or "hello \$a"
- *
- * If you would like to directly echo the localized string use
- * the function {@link print_string()}
- *
- * Example usage of this function involves finding the string you would
- * like a local equivalent of and using its identifier and module information
- * to retrive it.<br/>
- * If you open moodle/lang/en/moodle.php and look near line 1031
- * you will find a string to prompt a user for their word for student
- * <code>
- * $string['wordforstudent'] = 'Your word for Student';
- * </code>
- * So if you want to display the string 'Your word for student'
- * in any language that supports it on your site
- * you just need to use the identifier 'wordforstudent'
- * <code>
- * $mystring = '<strong>'. get_string('wordforstudent') .'</strong>';
-or
- * </code>
- * If the string you want is in another file you'd take a slightly
- * different approach. Looking in moodle/lang/en/calendar.php you find
- * around line 75:
- * <code>
- * $string['typecourse'] = 'Course event';
- * </code>
- * If you want to display the string "Course event" in any language
- * supported you would use the identifier 'typecourse' and the module 'calendar'
- * (because it is in the file calendar.php):
- * <code>
- * $mystring = '<h1>'. get_string('typecourse', 'calendar') .'</h1>';
- * </code>
- *
- * As a last resort, should the identifier fail to map to a string
- * the returned string will be [[ $identifier ]]
- *
- * @uses $CFG
- * @param string $identifier The key identifier for the localized string
- * @param string $module The module where the key identifier is stored,
- *      usually expressed as the filename in the language pack without the
- *      .php on the end but can also be written as mod/forum or grade/export/xls.
- *      If none is specified then moodle.php is used.
- * @param mixed $a An object, string or number that can be used
- *      within translation strings
- * @param array $extralocations DEPRICATED. An array of strings with other
- *      locations to look for string files. This used to be used by plugins so
- *      they could package their language strings in the plugin folder, however,
- *      There is now a better way to achieve this. See
- *      http://docs.moodle.org/en/Development:Places_to_search_for_lang_strings.
- * @return string The localized string.
- */
-function get_string($identifier, $module='', $a=NULL, $extralocations=NULL) {
-    global $CFG;
-
-/// originally these special strings were stored in moodle.php now we are only in langconfig.php
-    $langconfigstrs = array('alphabet', 'backupnameformat', 'decsep', 'firstdayofweek', 'listsep', 'locale',
-                            'localewin', 'localewincharset', 'oldcharset', 'parentlanguage',
-                            'strftimedate', 'strftimedateshort', 'strftimedatefullshort', 'strftimedatetime',
-                            'strftimedaydate', 'strftimedaydatetime', 'strftimedayshort', 'strftimedaytime',
-                            'strftimemonthyear', 'strftimerecent', 'strftimerecentfull', 'strftimetime',
-                            'thischarset', 'thisdirection', 'thislanguage', 'strftimedatetimeshort', 'thousandssep');
-
-    $filetocheck = 'langconfig.php';
-    $defaultlang = 'en_utf8';
-    if (in_array($identifier, $langconfigstrs)) {
-        $module = 'langconfig';  //This strings are under langconfig.php for 1.6 lang packs
-    }
-
-    $lang = current_language();
-
-    if ($module == '') {
-        $module = 'moodle';
-    }
-
-/// If the "module" is actually a pathname, then automatically derive the proper module name
-    if (strpos($module, '/') !== false) {
+    protected function fix_deprecated_module_name($module) {
+        debugging('The module name you passed to get_string is the deprecated format ' .
+                'like mod/mymod or block/myblock. The correct form looks like mymod, or block_myblock.' , DEBUG_DEVELOPER);
         $modulepath = split('/', $module);
 
         switch ($modulepath[0]) {
-
             case 'mod':
-                $module = $modulepath[1];
-            break;
-
+                return $modulepath[1];
             case 'blocks':
             case 'block':
-                $module = 'block_'.$modulepath[1];
-            break;
-
+                return 'block_'.$modulepath[1];
             case 'enrol':
-                $module = 'enrol_'.$modulepath[1];
-            break;
-
+                return 'enrol_'.$modulepath[1];
             case 'format':
-                $module = 'format_'.$modulepath[1];
-            break;
-
+                return 'format_'.$modulepath[1];
             case 'grade':
-                $module = 'grade'.$modulepath[1].'_'.$modulepath[2];
-            break;
+                return 'grade'.$modulepath[1].'_'.$modulepath[2];
+            default:
+                return $module;
         }
     }
 
-/// if $a happens to have % in it, double it so sprintf() doesn't break
-    if ($a) {
-        $a = clean_getstring_data( $a );
+    protected function locations_to_search($module) {
+        if (isset($this->searchpathsformodule[$module])) {
+            return $this->searchpathsformodule[$module];
+        }
+
+        $locations = $this->corelocations;
+
+        if (!array_key_exists($module, $this->nonpluginfiles)) {
+            foreach ($locations as $location => $ignored) {
+                $locations[$location] = $module . '/';
+            }
+            if ($module == 'local') {
+                $locations[$this->dirroot . '/local/lang/'] = 'local/';
+            } else {
+                list($type, $plugin) = $this->parse_module_name($module);
+                if (isset($this->searchplacesbyplugintype[$type])) {
+                    foreach ($this->searchplacesbyplugintype[$type] as $location) {
+                        $locations[$this->dirroot . "/$location/$plugin/lang/"] = $plugin . '/';
+                    }
+                }
+            }
+        }
+
+        $this->searchpathsformodule[$module] = $locations;
+        return $locations;
     }
 
-/// Define the two or three major locations of language strings for this module
-    $locations = array();
+    protected function parse_module_name($module) {
+        $dividerpos = strpos($module, '_');
+        if ($dividerpos === false) {
+            $type = '';
+            $plugin = $module;
+        } else {
+            $type = substr($module, 0, $dividerpos + 1);
+            $plugin = substr($module, $dividerpos + 1);
+        }
+        return array($type, $plugin);
+    }
 
-    if (!empty($extralocations)) {
+    protected function add_extra_locations($locations, $extralocations) {
         // This is an old, deprecated mechanism that predates the
         // places_to_search_for_lang_strings mechanism that comes later in
         // this function. So tell people who use it to change.
@@ -5394,197 +5354,224 @@ function get_string($identifier, $module='', $a=NULL, $extralocations=NULL) {
                 'See http://docs.moodle.org/en/Development:Places_to_search_for_lang_strings ' .
                 'for a better way to package language strings with your plugin.', DEBUG_DEVELOPER);
         if (is_array($extralocations)) {
-            $locations += $extralocations;
+            $locations = array_merge($locations, $extralocations);
         } else if (is_string($extralocations)) {
             $locations[] = $extralocations;
         } else {
             debugging('Bad lang path provided');
         }
+        return $locations;
     }
 
-    if (!empty($CFG->running_installer) and $lang !== 'en_utf8') {
-        static $stringnames = null;
-        if (!$stringnames) {
-            $stringnames = file($CFG->dirroot.'/install/stringnames.txt');
-            $stringnames = array_map('trim', $stringnames);
+    protected function get_parent_language($lang) {
+        if (array_key_exists($lang, $this->parentlangs)) {
+            return $this->parentlangs[$lang];
         }
-        if (array_search($identifier, $stringnames) !== false) {
-            $module = 'installer';
-            $filetocheck = 'installer.php';
-            $defaultlang = 'en_utf8';
-            $locations[] = $CFG->dirroot.'/install/lang/';
+        $parent = 'en_utf8'; // Will be used if nothing is specified explicitly.
+        foreach ($this->corelocations as $location => $ignored) {
+            foreach (array('_local', '') as $suffix) {
+                $file = $location . $lang . $suffix . '/' . $this->parentlangfile;
+                if ($result = $this->get_string_from_file('parentlanguage', $file, NULL)) {
+                    $parent = $result;
+                    break 2;
+                }
+            }
         }
+        $this->parentlangs[$lang] = $parent;
+        return $parent;
     }
 
-    $locations[] = $CFG->dataroot.'/lang/';
-    $locations[] = $CFG->dirroot.'/lang/';
-    $locations[] = $CFG->dirroot.'/local/lang/';
-
-/// Add extra places to look for strings for particular plugin types.
-    $rules = places_to_search_for_lang_strings();
-    $exceptions = $rules['__exceptions'];
-    unset($rules['__exceptions']);
-
-    if (!in_array($module, $exceptions)) {
-        $dividerpos = strpos($module, '_');
-        if ($dividerpos === false) {
-            $type = '';
-            $plugin = $module;
-        } else {
-            $type = substr($module, 0, $dividerpos + 1);
-            $plugin = substr($module, $dividerpos + 1);
+    protected function load_lang_file($langfile) {
+        if (isset($this->strings[$langfile])) {
+            return $this->strings[$langfile];
         }
-        if (!empty($rules[$type])) {
-            foreach ($rules[$type] as $location) {
-                $locations[] = $CFG->dirroot . "/$location/$plugin/lang/";
-            }
+        $string = array();
+        if (file_exists($langfile)) {
+            include($langfile);
         }
+        $this->strings[$langfile] = $string;
+        return $string;
     }
 
-/// First check all the normal locations for the string in the current language
-    $resultstring = '';
-    foreach ($locations as $location) {
-        $locallangfile = $location.$lang.'_local'.'/'.$module.'.php';    //first, see if there's a local file
-        if (file_exists($locallangfile)) {
-            if ($result = get_string_from_file($identifier, $locallangfile, "\$resultstring")) {
-                if (eval($result) === FALSE) {
-                    trigger_error('Lang error: '.$identifier.':'.$locallangfile, E_USER_NOTICE);
-                }
-                return $resultstring;
-            }
+    protected function get_string_from_file($identifier, $langfile, $a) {
+        $string = &$this->load_lang_file($langfile);
+        if (!isset($string[$identifier])) {
+            return false;
         }
-        //if local directory not found, or particular string does not exist in local direcotry
-        $langfile = $location.$lang.'/'.$module.'.php';
-        if (file_exists($langfile)) {
-            if ($result = get_string_from_file($identifier, $langfile, "\$resultstring")) {
-                if (eval($result) === FALSE) {
-                    trigger_error('Lang error: '.$identifier.':'.$langfile, E_USER_NOTICE);
-                }
-                return $resultstring;
-            }
-       }
+        $result = $string[$identifier];
+        // Skip the eval if we can - slight performance win. Pity there are 3
+        // different problem characters, so we have to use preg_match,
+        // rather than a faster str... function.
+        if (!preg_match('/[%$\\\\]/', $result)) {
+            return $result;
+        }
+        // Moodle used to use $code = '$result = sprintf("' . $result . ')";' for no good reason,
+        // (it had done that since revision 1.1 of moodllib.php if you check CVS). However, this
+        // meant you had to double up '%' chars in $a first. We now skip that. However, lang strings
+        // still contain %% as a result, so we need to fix those.
+        $result = str_replace('%%', '%', $result);
+        $code = '$result = "' . $result . '";';
+        if (eval($code) === FALSE) { // Means parse error.
+            debugging('Parse error while trying to load string "'.$identifier.'" from file "' . $langfile . '".', DEBUG_DEVELOPER);
+        }
+        return $result;
     }
 
-/// If the preferred language was English (utf8) we can abort now
-/// saving some checks beacuse it's the only "root" lang
-    if ($lang == 'en_utf8') {
-        return '[['. $identifier .']]';
-    }
+    public function find_help_file($file, $module, $forcelang, $skiplocal) {
+        if ($forcelang) {
+            $langs = array($forcelang, 'en_utf8');
+        } else {
+            $langs = array();
+            for ($lang = current_language(); $lang; $lang = $this->get_parent_language($lang)) {
+                $langs[] = $lang;
+            }
+        }
 
-/// Is a parent language defined?  If so, try to find this string in a parent language file
+        $locations = $this->locations_to_search($module);
 
-    foreach ($locations as $location) {
-        $langfile = $location.$lang.'/'.$filetocheck;
-        if (file_exists($langfile)) {
-            if ($result = get_string_from_file('parentlanguage', $langfile, "\$parentlang")) {
-                if (eval($result) === FALSE) {
-                    trigger_error('Lang error: '.$identifier.':'.$langfile, E_USER_NOTICE);
-                }
-                if (!empty($parentlang) and strpos($parentlang, '<') === false) {   // found it!
-
-                    //first, see if there's a local file for parent
-                    $locallangfile = $location.$parentlang.'_local'.'/'.$module.'.php';
-                    if (file_exists($locallangfile)) {
-                        if ($result = get_string_from_file($identifier, $locallangfile, "\$resultstring")) {
-                            if (eval($result) === FALSE) {
-                                trigger_error('Lang error: '.$identifier.':'.$locallangfile, E_USER_NOTICE);
-                            }
-                            return $resultstring;
-                        }
-                    }
+        if ($skiplocal) {
+            $localsuffices = array('');
+        } else {
+            $localsuffices = array('_local', '');
+        }
 
-                    //if local directory not found, or particular string does not exist in local direcotry
-                    $langfile = $location.$parentlang.'/'.$module.'.php';
-                    if (file_exists($langfile)) {
-                        if ($result = get_string_from_file($identifier, $langfile, "\$resultstring")) {
-                            eval($result);
-                            return $resultstring;
-                        }
+        foreach ($langs as $lang) {
+            foreach ($locations as $location => $locationsuffix) {
+                foreach ($localsuffices as $localsuffix) {
+                    $filepath = $location . $lang . $localsuffix . '/help/' . $locationsuffix . $file;
+                    // Now, try to include the help text from this file, if we can.
+                    if (file_exists_and_readable($filepath)) {
+                        return array($filepath, $lang);
                     }
                 }
             }
         }
+
+        return array('', '');
     }
 
-/// Our only remaining option is to try English
+    private function start_logging() {
+        $this->logtofile = true;
+    }
 
-    foreach ($locations as $location) {
-        $locallangfile = $location.$defaultlang.'_local/'.$module.'.php';    //first, see if there's a local file
-        if (file_exists($locallangfile)) {
-            if ($result = get_string_from_file($identifier, $locallangfile, "\$resultstring")) {
-                eval($result);
-                return $resultstring;
-            }
+    private function log_get_string_call($identifier, $module, $a) {
+        global $CFG;
+        if ($this->logtofile === true) {
+            $logdir = $CFG->dataroot . '/temp/getstringlog';
+            $filename = strtr(str_replace($CFG->wwwroot . '/', '', qualified_me()), ':/', '__') . '_get_string.log.php';
+            @mkdir($logdir, $CFG->directorypermissions, true);
+            $this->logtofile = fopen("$logdir/$filename", 'w');
+            fwrite($this->logtofile, "<?php\n// Sequence of get_string calls for page " . qualified_me() . "\n");
         }
+        fwrite($this->logtofile, "get_string('$identifier', '$module', " . var_export($a, true) . ");\n");
+    }
 
-        //if local_en not found, or string not found in local_en
-        $langfile = $location.$defaultlang.'/'.$module.'.php';
+    public function get_string($identifier, $module='', $a=NULL, $extralocations=NULL) {
+        if ($this->logtofile) {
+            $this->log_get_string_call($identifier, $module, $a);
+        }
 
-        if (file_exists($langfile)) {
-            if ($result = get_string_from_file($identifier, $langfile, "\$resultstring")) {
-                eval($result);
-                return $resultstring;
-            }
+    /// Preprocess the arguments.
+        if ($module == '') {
+            $module = 'moodle';
         }
-    }
 
-/// And, because under 1.6 en is defined as en_utf8 child, me must try
-/// if it hasn't been queried before.
-    if ($defaultlang  == 'en') {
-        $defaultlang = 'en_utf8';
-        foreach ($locations as $location) {
-            $locallangfile = $location.$defaultlang.'_local/'.$module.'.php';    //first, see if there's a local file
-            if (file_exists($locallangfile)) {
-                if ($result = get_string_from_file($identifier, $locallangfile, "\$resultstring")) {
-                    eval($result);
-                    return $resultstring;
-                }
-            }
+        if ($module == 'moodle' && array_key_exists($identifier, $this->langconfigstrs)) {
+            $module = 'langconfig';
+        }
+
+        if (strpos($module, '/') !== false) {
+            $module = $this->fix_deprecated_module_name($module);
+        }
 
-            //if local_en not found, or string not found in local_en
-            $langfile = $location.$defaultlang.'/'.$module.'.php';
+        $locations = $this->locations_to_search($module);
 
-            if (file_exists($langfile)) {
-                if ($result = get_string_from_file($identifier, $langfile, "\$resultstring")) {
-                    eval($result);
-                    return $resultstring;
+        if (!is_null($this->installstrings) && in_array($identifier, $this->installstrings)) {
+            $module = 'installer';
+            array_unshift($locations, $this->dirroot . '/install/lang/');
+        }
+
+        if ($extralocations) {
+            $locations = $this->add_extra_locations($locations, $extralocations);
+        }
+
+    /// Now do the search.
+        for ($lang = current_language(); $lang; $lang = $this->get_parent_language($lang)) {
+            foreach ($locations as $location => $ignored) {
+                foreach (array('_local', '') as $suffix) {
+                    $file = $location . $lang . $suffix . '/' . $module . '.php';
+                    if ($result = $this->get_string_from_file($identifier, $file, $a)) {
+                        return $result;
+                    }
                 }
             }
         }
-    }
 
-    return '[['.$identifier.']]';  // Last resort
+        return '[[' . $identifier . ']]'; // Last resort.
+    }
 }
 
 /**
- * This function is only used from {@link get_string()}.
+ * Returns a localized string.
+ *
+ * Returns the translated string specified by $identifier as
+ * for $module.  Uses the same format files as STphp.
+ * $a is an object, string or number that can be used
+ * within translation strings
+ *
+ * eg "hello \$a->firstname \$a->lastname"
+ * or "hello \$a"
+ *
+ * If you would like to directly echo the localized string use
+ * the function {@link print_string()}
  *
- * @internal Only used from get_string, not meant to be public API
- * @param string $identifier ?
- * @param string $langfile ?
- * @param string $destination ?
- * @return string|false ?
- * @staticvar array $strings Localized strings
- * @access private
- * @todo Finish documenting this function.
+ * Example usage of this function involves finding the string you would
+ * like a local equivalent of and using its identifier and module information
+ * to retrive it.<br/>
+ * If you open moodle/lang/en/moodle.php and look near line 1031
+ * you will find a string to prompt a user for their word for student
+ * <code>
+ * $string['wordforstudent'] = 'Your word for Student';
+ * </code>
+ * So if you want to display the string 'Your word for student'
+ * in any language that supports it on your site
+ * you just need to use the identifier 'wordforstudent'
+ * <code>
+ * $mystring = '<strong>'. get_string('wordforstudent') .'</strong>';
+or
+ * </code>
+ * If the string you want is in another file you'd take a slightly
+ * different approach. Looking in moodle/lang/en/calendar.php you find
+ * around line 75:
+ * <code>
+ * $string['typecourse'] = 'Course event';
+ * </code>
+ * If you want to display the string "Course event" in any language
+ * supported you would use the identifier 'typecourse' and the module 'calendar'
+ * (because it is in the file calendar.php):
+ * <code>
+ * $mystring = '<h1>'. get_string('typecourse', 'calendar') .'</h1>';
+ * </code>
+ *
+ * As a last resort, should the identifier fail to map to a string
+ * the returned string will be [[ $identifier ]]
+ *
+ * @param string $identifier The key identifier for the localized string
+ * @param string $module The module where the key identifier is stored,
+ *      usually expressed as the filename in the language pack without the
+ *      .php on the end but can also be written as mod/forum or grade/export/xls.
+ *      If none is specified then moodle.php is used.
+ * @param mixed $a An object, string or number that can be used
+ *      within translation strings
+ * @param array $extralocations DEPRICATED. An array of strings with other
+ *      locations to look for string files. This used to be used by plugins so
+ *      they could package their language strings in the plugin folder, however,
+ *      There is now a better way to achieve this. See
+ *      http://docs.moodle.org/en/Development:Places_to_search_for_lang_strings.
+ * @return string The localized string.
  */
-function get_string_from_file($identifier, $langfile, $destination) {
-
-    static $strings;    // Keep the strings cached in memory.
-
-    if (empty($strings[$langfile])) {
-        $string = array();
-        include ($langfile);
-        $strings[$langfile] = $string;
-    } else {
-        $string = &$strings[$langfile];
-    }
-
-    if (!isset ($string[$identifier])) {
-        return false;
-    }
-
-    return $destination .'= sprintf("'. $string[$identifier] .'");';
+function get_string($identifier, $module='', $a=NULL, $extralocations=NULL) {
+    return string_manager::instance()->get_string($identifier, $module, $a, $extralocations);
 }
 
 /**
@@ -5592,13 +5579,12 @@ function get_string_from_file($identifier, $langfile, $destination) {
  *
  * @param array $array An array of strings
  * @param string $module The language module that these strings can be found in.
- * @return string
+ * @return array and array of translated strings.
  */
 function get_strings($array, $module='') {
-
-   $string = NULL;
+   $string = new stdClass;
    foreach ($array as $item) {
-       $string->$item = get_string($item, $module);
+       $string->$item = string_manager::instance()->get_string($item, $module);
    }
    return $string;
 }
diff --git a/lib/simpletest/get_string_fixtures/moodle/blocks/mrbs/lang/en_utf8/block_mrbs.php b/lib/simpletest/get_string_fixtures/moodle/blocks/mrbs/lang/en_utf8/block_mrbs.php
new file mode 100644 (file)
index 0000000..a82aff4
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+$string['yes'] = 'Yes';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/moodle/blocks/mrbs/lang/fr_utf8/block_mrbs.php b/lib/simpletest/get_string_fixtures/moodle/blocks/mrbs/lang/fr_utf8/block_mrbs.php
new file mode 100644 (file)
index 0000000..0ce399a
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+$string['yes'] = 'Oui';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/moodle/lang/en_utf8/moodle.php b/lib/simpletest/get_string_fixtures/moodle/lang/en_utf8/moodle.php
new file mode 100644 (file)
index 0000000..39a50cf
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+$string['test'] = 'Test';
+$string['locallyoverridden'] = 'Not used';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/moodle/lang/en_utf8/test.php b/lib/simpletest/get_string_fixtures/moodle/lang/en_utf8/test.php
new file mode 100644 (file)
index 0000000..e079506
--- /dev/null
@@ -0,0 +1,5 @@
+<?php
+$string['hello'] = 'Hello \'world\'!';
+$string['hellox'] = 'Hello $a!';
+$string['results'] = 'Dear $a->firstname $a->lastname,\n\nOn test \"$a->testname\" you scored $a->grade%% which earns you \$100.';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/moodle/lang/en_utf8_local/moodle.php b/lib/simpletest/get_string_fixtures/moodle/lang/en_utf8_local/moodle.php
new file mode 100644 (file)
index 0000000..b3d35a3
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+$string['locallyoverridden'] = 'Should see this';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/moodle/lang/es_ar_utf8_local/langconfig.php b/lib/simpletest/get_string_fixtures/moodle/lang/es_ar_utf8_local/langconfig.php
new file mode 100644 (file)
index 0000000..b1d732a
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+$string['parentlanguage'] = 'es_mx_utf8';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/moodledata/lang/es_ar_utf8/langconfig.php b/lib/simpletest/get_string_fixtures/moodledata/lang/es_ar_utf8/langconfig.php
new file mode 100644 (file)
index 0000000..6767ae8
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+$string['parentlanguage'] = 'es_utf8';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/moodledata/lang/fr_ca_utf8/langconfig.php b/lib/simpletest/get_string_fixtures/moodledata/lang/fr_ca_utf8/langconfig.php
new file mode 100644 (file)
index 0000000..a0156df
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+$string['parentlanguage'] = 'fr_utf8';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/moodledata/lang/fr_ca_utf8/test.php b/lib/simpletest/get_string_fixtures/moodledata/lang/fr_ca_utf8/test.php
new file mode 100644 (file)
index 0000000..2d728dd
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+$string['hello'] = 'Bonjour Québec!';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/moodledata/lang/fr_utf8/test.php b/lib/simpletest/get_string_fixtures/moodledata/lang/fr_utf8/test.php
new file mode 100644 (file)
index 0000000..0a0fbd1
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+$string['hello'] = 'Bonjour tout le monde!';
+$string['hellox'] = 'Bonjour $a!';
+?>
\ No newline at end of file
diff --git a/lib/simpletest/get_string_fixtures/pagelogs/admin_index.php_get_string.log.php b/lib/simpletest/get_string_fixtures/pagelogs/admin_index.php_get_string.log.php
new file mode 100644 (file)
index 0000000..e73150d
--- /dev/null
@@ -0,0 +1,2010 @@
+<?php
+// Sequence of get_string calls for page http://tim.moodle.com/moodle/admin/index.php
+get_string('locale', '', NULL);
+get_string('thisdirection', '', NULL);
+get_string('administration', '', NULL);
+get_string('activities', '', NULL);
+get_string('administration', '', NULL);
+get_string('adminbookmarks', '', NULL);
+get_string('administrationsite', '', NULL);
+get_string('blockmenutitle', 'blog', NULL);
+get_string('blocktagstitle', 'blog', NULL);
+get_string('calendar', 'calendar', NULL);
+get_string('upcomingevents', 'calendar', NULL);
+get_string('courses', '', NULL);
+get_string('pagedescription', 'block_course_summary', NULL);
+get_string('blockname', 'block_glossary_random', NULL);
+get_string('html', 'block_html', NULL);
+get_string('loancalc', 'block_loancalc', NULL);
+get_string('login', '', NULL);
+get_string('blockname', 'block_mentees', NULL);
+get_string('messages', 'message', NULL);
+get_string('mnet_hosts', 'block_mnet_hosts', NULL);
+get_string('latestnews', '', NULL);
+get_string('blockname', 'block_online_users', NULL);
+get_string('people', '', NULL);
+get_string('formaltitle', 'block_quiz_results', NULL);
+get_string('recentactivity', '', NULL);
+get_string('feedstitle', 'block_rss_client', NULL);
+get_string('blockname', 'block_search', NULL);
+get_string('blocktitle', 'block_search_forums', NULL);
+get_string('blockname', 'block_section_links', NULL);
+get_string('mainmenu', '', NULL);
+get_string('blockname', 'block_social_activities', NULL);
+get_string('defaulttile', 'block_tag_flickr', NULL);
+get_string('blockname', 'block_tag_youtube', NULL);
+get_string('blocktagstitle', 'tag', NULL);
+get_string('locale', '', NULL);
+get_string('thisdirection', '', NULL);
+get_string('administration', '', NULL);
+get_string('notifications', '', NULL);
+get_string('registration', 'admin', NULL);
+get_string('upgradesettings', 'admin', NULL);
+get_string('advancedfeatures', 'admin', NULL);
+get_string('users', 'admin', NULL);
+get_string('courses', 'admin', NULL);
+get_string('grades', '', NULL);
+get_string('location', 'admin', NULL);
+get_string('language', '', NULL);
+get_string('plugins', 'admin', NULL);
+get_string('security', 'admin', NULL);
+get_string('appearance', 'admin', NULL);
+get_string('frontpage', 'admin', NULL);
+get_string('server', 'admin', NULL);
+get_string('net', 'mnet', NULL);
+get_string('reports', '', NULL);
+get_string('development', 'admin', NULL);
+get_string('unsupported', 'admin', NULL);
+get_string('searchresults', '', NULL);
+get_string('themes', '', NULL);
+get_string('themesettings', 'admin', NULL);
+get_string('themelist', 'admin', NULL);
+get_string('configthemelist', 'admin', NULL);
+get_string('allowuserthemes', 'admin', NULL);
+get_string('configallowuserthemes', 'admin', NULL);
+get_string('allowcoursethemes', 'admin', NULL);
+get_string('configallowcoursethemes', 'admin', NULL);
+get_string('allowcategorythemes', 'admin', NULL);
+get_string('configallowcategorythemes', 'admin', NULL);
+get_string('allowuserblockhiding', 'admin', NULL);
+get_string('configallowuserblockhiding', 'admin', NULL);
+get_string('showblocksonmodpages', 'admin', NULL);
+get_string('configshowblocksonmodpages', 'admin', NULL);
+get_string('hideactivitytypenavlink', 'admin', NULL);
+get_string('confighideactivitytypenavlink', 'admin', NULL);
+get_string('hidefromnone', 'admin', NULL);
+get_string('hidefromstudents', 'admin', NULL);
+get_string('hidefromall', 'admin', NULL);
+get_string('themeselector', 'admin', NULL);
+get_string('calendarsettings', 'admin', NULL);
+get_string('adminseesall', 'admin', NULL);
+get_string('helpadminseesall', 'admin', NULL);
+get_string('pref_timeformat', 'calendar', NULL);
+get_string('explain_site_timeformat', 'calendar', NULL);
+get_string('default', 'calendar', NULL);
+get_string('timeformat_12', 'calendar', NULL);
+get_string('timeformat_24', 'calendar', NULL);
+get_string('configstartwday', 'admin', NULL);
+get_string('helpstartofweek', 'admin', NULL);
+get_string('sunday', 'calendar', NULL);
+get_string('monday', 'calendar', NULL);
+get_string('tuesday', 'calendar', NULL);
+get_string('wednesday', 'calendar', NULL);
+get_string('thursday', 'calendar', NULL);
+get_string('friday', 'calendar', NULL);
+get_string('saturday', 'calendar', NULL);
+get_string('calendar_weekend', 'admin', NULL);
+get_string('helpweekenddays', 'admin', NULL);
+get_string('configlookahead', 'admin', NULL);
+get_string('helpupcominglookahead', 'admin', NULL);
+get_string('configmaxevents', 'admin', NULL);
+get_string('helpupcomingmaxevents', 'admin', NULL);
+get_string('enablecalendarexport', 'admin', NULL);
+get_string('configenablecalendarexport', 'admin', NULL);
+get_string('calendarexportsalt', 'admin', NULL);
+get_string('configcalendarexportsalt', 'admin', NULL);
+get_string('htmleditor', 'admin', NULL);
+get_string('htmleditorsettings', 'admin', NULL);
+get_string('defaulthtmleditor', 'admin', NULL);
+get_string('usehtmleditor', 'admin', NULL);
+get_string('confightmleditor', 'admin', NULL);
+get_string('emoticons', 'admin', NULL);
+get_string('configemoticons', 'admin', NULL);
+get_string('htmlsettings', 'admin', NULL);
+get_string('stripalltitletags', 'admin', NULL);
+get_string('configstripalltitletags', 'admin', NULL);
+get_string('moodledocs', '', NULL);
+get_string('docroot', 'admin', NULL);
+get_string('configdocroot', 'admin', NULL);
+get_string('doctonewwindow', 'admin', NULL);
+get_string('configdoctonewwindow', 'admin', NULL);
+get_string('mymoodle', 'admin', NULL);
+get_string('mymoodleredirect', 'admin', NULL);
+get_string('configmymoodleredirect', 'admin', NULL);
+get_string('coursemanager', 'admin', NULL);
+get_string('coursemanager', 'admin', NULL);
+get_string('configcoursemanager', 'admin', NULL);
+get_string('ajaxuse', '', NULL);
+get_string('enableajax', 'admin', NULL);
+get_string('configenableajax', 'admin', NULL);
+get_string('useexternalyui', 'admin', NULL);
+get_string('configuseexternalyui', 'admin', NULL);
+get_string('disablecourseajax', 'admin', NULL);
+get_string('configdisablecourseajax', 'admin', NULL);
+get_string('managetags', 'tag', NULL);
+get_string('coursemgmt', 'admin', NULL);
+get_string('enrolments', '', NULL);
+get_string('coursesettings', '', NULL);
+get_string('formatscorm', 'format_scorm', NULL);
+get_string('formatscorm', '', NULL);
+get_string('formatsocial', 'format_social', NULL);
+get_string('formatsocial', '', NULL);
+get_string('formattopics', 'format_topics', NULL);
+get_string('formattopics', '', NULL);
+get_string('formatweeks', 'format_weeks', NULL);
+get_string('formatweeks', '', NULL);
+get_string('format', '', NULL);
+get_string('coursehelpformat', '', NULL);
+get_string('numberweeks', '', NULL);
+get_string('coursehelpnumberweeks', '', NULL);
+get_string('hiddensectionscollapsed', '', NULL);
+get_string('hiddensectionsinvisible', '', NULL);
+get_string('hiddensections', '', NULL);
+get_string('coursehelphiddensections', '', NULL);
+get_string('newsitemsnumber', '', NULL);
+get_string('coursehelpnewsitemsnumber', '', NULL);
+get_string('showgrades', '', NULL);
+get_string('coursehelpshowgrades', '', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('showreports', '', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('sizegb', '', NULL);
+get_string('sizemb', '', NULL);
+get_string('sizekb', '', NULL);
+get_string('sizeb', '', NULL);
+get_string('maximumupload', '', NULL);
+get_string('coursehelpmaximumupload', '', NULL);
+get_string('metacourse', '', NULL);
+get_string('coursehelpmetacourse', '', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('enrolments', '', NULL);
+get_string('enrolname', 'enrol_manual', NULL);
+get_string('sitedefault', '', NULL);
+get_string('enrolname', 'enrol_manual', NULL);
+get_string('enrolmentplugins', '', NULL);
+get_string('coursehelpenrolmentplugins', '', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('enroldate', '', NULL);
+get_string('enrollable', '', NULL);
+get_string('coursehelpenrollable', '', NULL);
+get_string('unlimited', '', NULL);
+get_string('numdays', '', 1);
+get_string('numdays', '', 2);
+get_string('numdays', '', 3);
+get_string('numdays', '', 4);
+get_string('numdays', '', 5);
+get_string('numdays', '', 6);
+get_string('numdays', '', 7);
+get_string('numdays', '', 8);
+get_string('numdays', '', 9);
+get_string('numdays', '', 10);
+get_string('numdays', '', 11);
+get_string('numdays', '', 12);
+get_string('numdays', '', 13);
+get_string('numdays', '', 14);
+get_string('numdays', '', 15);
+get_string('numdays', '', 16);
+get_string('numdays', '', 17);
+get_string('numdays', '', 18);
+get_string('numdays', '', 19);
+get_string('numdays', '', 20);
+get_string('numdays', '', 21);
+get_string('numdays', '', 22);
+get_string('numdays', '', 23);
+get_string('numdays', '', 24);
+get_string('numdays', '', 25);
+get_string('numdays', '', 26);
+get_string('numdays', '', 27);
+get_string('numdays', '', 28);
+get_string('numdays', '', 29);
+get_string('numdays', '', 30);
+get_string('numdays', '', 31);
+get_string('numdays', '', 32);
+get_string('numdays', '', 33);
+get_string('numdays', '', 34);
+get_string('numdays', '', 35);
+get_string('numdays', '', 36);
+get_string('numdays', '', 37);
+get_string('numdays', '', 38);
+get_string('numdays', '', 39);
+get_string('numdays', '', 40);
+get_string('numdays', '', 41);
+get_string('numdays', '', 42);
+get_string('numdays', '', 43);
+get_string('numdays', '', 44);
+get_string('numdays', '', 45);
+get_string('numdays', '', 46);
+get_string('numdays', '', 47);
+get_string('numdays', '', 48);
+get_string('numdays', '', 49);
+get_string('numdays', '', 50);
+get_string('numdays', '', 51);
+get_string('numdays', '', 52);
+get_string('numdays', '', 53);
+get_string('numdays', '', 54);
+get_string('numdays', '', 55);
+get_string('numdays', '', 56);
+get_string('numdays', '', 57);
+get_string('numdays', '', 58);
+get_string('numdays', '', 59);
+get_string('numdays', '', 60);
+get_string('numdays', '', 61);
+get_string('numdays', '', 62);
+get_string('numdays', '', 63);
+get_string('numdays', '', 64);
+get_string('numdays', '', 65);
+get_string('numdays', '', 66);
+get_string('numdays', '', 67);
+get_string('numdays', '', 68);
+get_string('numdays', '', 69);
+get_string('numdays', '', 70);
+get_string('numdays', '', 71);
+get_string('numdays', '', 72);
+get_string('numdays', '', 73);
+get_string('numdays', '', 74);
+get_string('numdays', '', 75);
+get_string('numdays', '', 76);
+get_string('numdays', '', 77);
+get_string('numdays', '', 78);
+get_string('numdays', '', 79);
+get_string('numdays', '', 80);
+get_string('numdays', '', 81);
+get_string('numdays', '', 82);
+get_string('numdays', '', 83);
+get_string('numdays', '', 84);
+get_string('numdays', '', 85);
+get_string('numdays', '', 86);
+get_string('numdays', '', 87);
+get_string('numdays', '', 88);
+get_string('numdays', '', 89);
+get_string('numdays', '', 90);
+get_string('numdays', '', 91);
+get_string('numdays', '', 92);
+get_string('numdays', '', 93);
+get_string('numdays', '', 94);
+get_string('numdays', '', 95);
+get_string('numdays', '', 96);
+get_string('numdays', '', 97);
+get_string('numdays', '', 98);
+get_string('numdays', '', 99);
+get_string('numdays', '', 100);
+get_string('numdays', '', 101);
+get_string('numdays', '', 102);
+get_string('numdays', '', 103);
+get_string('numdays', '', 104);
+get_string('numdays', '', 105);
+get_string('numdays', '', 106);
+get_string('numdays', '', 107);
+get_string('numdays', '', 108);
+get_string('numdays', '', 109);
+get_string('numdays', '', 110);
+get_string('numdays', '', 111);
+get_string('numdays', '', 112);
+get_string('numdays', '', 113);
+get_string('numdays', '', 114);
+get_string('numdays', '', 115);
+get_string('numdays', '', 116);
+get_string('numdays', '', 117);
+get_string('numdays', '', 118);
+get_string('numdays', '', 119);
+get_string('numdays', '', 120);
+get_string('numdays', '', 121);
+get_string('numdays', '', 122);
+get_string('numdays', '', 123);
+get_string('numdays', '', 124);
+get_string('numdays', '', 125);
+get_string('numdays', '', 126);
+get_string('numdays', '', 127);
+get_string('numdays', '', 128);
+get_string('numdays', '', 129);
+get_string('numdays', '', 130);
+get_string('numdays', '', 131);
+get_string('numdays', '', 132);
+get_string('numdays', '', 133);
+get_string('numdays', '', 134);
+get_string('numdays', '', 135);
+get_string('numdays', '', 136);
+get_string('numdays', '', 137);
+get_string('numdays', '', 138);
+get_string('numdays', '', 139);
+get_string('numdays', '', 140);
+get_string('numdays', '', 141);
+get_string('numdays', '', 142);
+get_string('numdays', '', 143);
+get_string('numdays', '', 144);
+get_string('numdays', '', 145);
+get_string('numdays', '', 146);
+get_string('numdays', '', 147);
+get_string('numdays', '', 148);
+get_string('numdays', '', 149);
+get_string('numdays', '', 150);
+get_string('numdays', '', 151);
+get_string('numdays', '', 152);
+get_string('numdays', '', 153);
+get_string('numdays', '', 154);
+get_string('numdays', '', 155);
+get_string('numdays', '', 156);
+get_string('numdays', '', 157);
+get_string('numdays', '', 158);
+get_string('numdays', '', 159);
+get_string('numdays', '', 160);
+get_string('numdays', '', 161);
+get_string('numdays', '', 162);
+get_string('numdays', '', 163);
+get_string('numdays', '', 164);
+get_string('numdays', '', 165);
+get_string('numdays', '', 166);
+get_string('numdays', '', 167);
+get_string('numdays', '', 168);
+get_string('numdays', '', 169);
+get_string('numdays', '', 170);
+get_string('numdays', '', 171);
+get_string('numdays', '', 172);
+get_string('numdays', '', 173);
+get_string('numdays', '', 174);
+get_string('numdays', '', 175);
+get_string('numdays', '', 176);
+get_string('numdays', '', 177);
+get_string('numdays', '', 178);
+get_string('numdays', '', 179);
+get_string('numdays', '', 180);
+get_string('numdays', '', 181);
+get_string('numdays', '', 182);
+get_string('numdays', '', 183);
+get_string('numdays', '', 184);
+get_string('numdays', '', 185);
+get_string('numdays', '', 186);
+get_string('numdays', '', 187);
+get_string('numdays', '', 188);
+get_string('numdays', '', 189);
+get_string('numdays', '', 190);
+get_string('numdays', '', 191);
+get_string('numdays', '', 192);
+get_string('numdays', '', 193);
+get_string('numdays', '', 194);
+get_string('numdays', '', 195);
+get_string('numdays', '', 196);
+get_string('numdays', '', 197);
+get_string('numdays', '', 198);
+get_string('numdays', '', 199);
+get_string('numdays', '', 200);
+get_string('numdays', '', 201);
+get_string('numdays', '', 202);
+get_string('numdays', '', 203);
+get_string('numdays', '', 204);
+get_string('numdays', '', 205);
+get_string('numdays', '', 206);
+get_string('numdays', '', 207);
+get_string('numdays', '', 208);
+get_string('numdays', '', 209);
+get_string('numdays', '', 210);
+get_string('numdays', '', 211);
+get_string('numdays', '', 212);
+get_string('numdays', '', 213);
+get_string('numdays', '', 214);
+get_string('numdays', '', 215);
+get_string('numdays', '', 216);
+get_string('numdays', '', 217);
+get_string('numdays', '', 218);
+get_string('numdays', '', 219);
+get_string('numdays', '', 220);
+get_string('numdays', '', 221);
+get_string('numdays', '', 222);
+get_string('numdays', '', 223);
+get_string('numdays', '', 224);
+get_string('numdays', '', 225);
+get_string('numdays', '', 226);
+get_string('numdays', '', 227);
+get_string('numdays', '', 228);
+get_string('numdays', '', 229);
+get_string('numdays', '', 230);
+get_string('numdays', '', 231);
+get_string('numdays', '', 232);
+get_string('numdays', '', 233);
+get_string('numdays', '', 234);
+get_string('numdays', '', 235);
+get_string('numdays', '', 236);
+get_string('numdays', '', 237);
+get_string('numdays', '', 238);
+get_string('numdays', '', 239);
+get_string('numdays', '', 240);
+get_string('numdays', '', 241);
+get_string('numdays', '', 242);
+get_string('numdays', '', 243);
+get_string('numdays', '', 244);
+get_string('numdays', '', 245);
+get_string('numdays', '', 246);
+get_string('numdays', '', 247);
+get_string('numdays', '', 248);
+get_string('numdays', '', 249);
+get_string('numdays', '', 250);
+get_string('numdays', '', 251);
+get_string('numdays', '', 252);
+get_string('numdays', '', 253);
+get_string('numdays', '', 254);
+get_string('numdays', '', 255);
+get_string('numdays', '', 256);
+get_string('numdays', '', 257);
+get_string('numdays', '', 258);
+get_string('numdays', '', 259);
+get_string('numdays', '', 260);
+get_string('numdays', '', 261);
+get_string('numdays', '', 262);
+get_string('numdays', '', 263);
+get_string('numdays', '', 264);
+get_string('numdays', '', 265);
+get_string('numdays', '', 266);
+get_string('numdays', '', 267);
+get_string('numdays', '', 268);
+get_string('numdays', '', 269);
+get_string('numdays', '', 270);
+get_string('numdays', '', 271);
+get_string('numdays', '', 272);
+get_string('numdays', '', 273);
+get_string('numdays', '', 274);
+get_string('numdays', '', 275);
+get_string('numdays', '', 276);
+get_string('numdays', '', 277);
+get_string('numdays', '', 278);
+get_string('numdays', '', 279);
+get_string('numdays', '', 280);
+get_string('numdays', '', 281);
+get_string('numdays', '', 282);
+get_string('numdays', '', 283);
+get_string('numdays', '', 284);
+get_string('numdays', '', 285);
+get_string('numdays', '', 286);
+get_string('numdays', '', 287);
+get_string('numdays', '', 288);
+get_string('numdays', '', 289);
+get_string('numdays', '', 290);
+get_string('numdays', '', 291);
+get_string('numdays', '', 292);
+get_string('numdays', '', 293);
+get_string('numdays', '', 294);
+get_string('numdays', '', 295);
+get_string('numdays', '', 296);
+get_string('numdays', '', 297);
+get_string('numdays', '', 298);
+get_string('numdays', '', 299);
+get_string('numdays', '', 300);
+get_string('numdays', '', 301);
+get_string('numdays', '', 302);
+get_string('numdays', '', 303);
+get_string('numdays', '', 304);
+get_string('numdays', '', 305);
+get_string('numdays', '', 306);
+get_string('numdays', '', 307);
+get_string('numdays', '', 308);
+get_string('numdays', '', 309);
+get_string('numdays', '', 310);
+get_string('numdays', '', 311);
+get_string('numdays', '', 312);
+get_string('numdays', '', 313);
+get_string('numdays', '', 314);
+get_string('numdays', '', 315);
+get_string('numdays', '', 316);
+get_string('numdays', '', 317);
+get_string('numdays', '', 318);
+get_string('numdays', '', 319);
+get_string('numdays', '', 320);
+get_string('numdays', '', 321);
+get_string('numdays', '', 322);
+get_string('numdays', '', 323);
+get_string('numdays', '', 324);
+get_string('numdays', '', 325);
+get_string('numdays', '', 326);
+get_string('numdays', '', 327);
+get_string('numdays', '', 328);
+get_string('numdays', '', 329);
+get_string('numdays', '', 330);
+get_string('numdays', '', 331);
+get_string('numdays', '', 332);
+get_string('numdays', '', 333);
+get_string('numdays', '', 334);
+get_string('numdays', '', 335);
+get_string('numdays', '', 336);
+get_string('numdays', '', 337);
+get_string('numdays', '', 338);
+get_string('numdays', '', 339);
+get_string('numdays', '', 340);
+get_string('numdays', '', 341);
+get_string('numdays', '', 342);
+get_string('numdays', '', 343);
+get_string('numdays', '', 344);
+get_string('numdays', '', 345);
+get_string('numdays', '', 346);
+get_string('numdays', '', 347);
+get_string('numdays', '', 348);
+get_string('numdays', '', 349);
+get_string('numdays', '', 350);
+get_string('numdays', '', 351);
+get_string('numdays', '', 352);
+get_string('numdays', '', 353);
+get_string('numdays', '', 354);
+get_string('numdays', '', 355);
+get_string('numdays', '', 356);
+get_string('numdays', '', 357);
+get_string('numdays', '', 358);
+get_string('numdays', '', 359);
+get_string('numdays', '', 360);
+get_string('numdays', '', 361);
+get_string('numdays', '', 362);
+get_string('numdays', '', 363);
+get_string('numdays', '', 364);
+get_string('numdays', '', 365);
+get_string('enrolperiod', '', NULL);
+get_string('expirynotify', '', NULL);
+get_string('notify', '', NULL);
+get_string('coursehelpnotify', '', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('expirynotifystudents', '', NULL);
+get_string('coursehelpexpirynotifystudents', '', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('numdays', '', 1);
+get_string('numdays', '', 2);
+get_string('numdays', '', 3);
+get_string('numdays', '', 4);
+get_string('numdays', '', 5);
+get_string('numdays', '', 6);
+get_string('numdays', '', 7);
+get_string('numdays', '', 8);
+get_string('numdays', '', 9);
+get_string('numdays', '', 10);
+get_string('numdays', '', 11);
+get_string('numdays', '', 12);
+get_string('numdays', '', 13);
+get_string('numdays', '', 14);
+get_string('numdays', '', 15);
+get_string('numdays', '', 16);
+get_string('numdays', '', 17);
+get_string('numdays', '', 18);
+get_string('numdays', '', 19);
+get_string('numdays', '', 20);
+get_string('numdays', '', 21);
+get_string('numdays', '', 22);
+get_string('numdays', '', 23);
+get_string('numdays', '', 24);
+get_string('numdays', '', 25);
+get_string('numdays', '', 26);
+get_string('numdays', '', 27);
+get_string('numdays', '', 28);
+get_string('numdays', '', 29);
+get_string('numdays', '', 30);
+get_string('expirythreshold', '', NULL);
+get_string('coursehelpexpirythreshold', '', NULL);
+get_string('groups', 'group', NULL);
+get_string('groupsnone', 'group', NULL);
+get_string('groupsseparate', 'group', NULL);
+get_string('groupsvisible', 'group', NULL);
+get_string('groupmode', '', NULL);
+get_string('force', '', NULL);
+get_string('coursehelpforce', '', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('availability', '', NULL);
+get_string('courseavailablenot', '', NULL);
+get_string('courseavailable', '', NULL);
+get_string('visible', '', NULL);
+get_string('enrolmentkey', '', NULL);
+get_string('coursehelpenrolmentkey', '', NULL);
+get_string('guestsno', '', NULL);
+get_string('guestsyes', '', NULL);
+get_string('guestskey', '', NULL);
+get_string('opentoguests', '', NULL);
+get_string('language', '', NULL);
+get_string('forceno', '', NULL);
+get_string('forcelanguage', '', NULL);
+get_string('progress', 'completion', NULL);
+get_string('completion', 'completion', NULL);
+get_string('completiondisabled', 'completion', NULL);
+get_string('completionenabled', 'completion', NULL);
+get_string('courserequest', '', NULL);
+get_string('enablecourserequests', 'admin', NULL);
+get_string('configenablecourserequests', 'admin', NULL);
+get_string('defaultrequestcategory', 'admin', NULL);
+get_string('configdefaultrequestcategory', 'admin', NULL);
+get_string('courserequestnotify', 'admin', NULL);
+get_string('configcourserequestnotify2', 'admin', NULL);
+get_string('nobody', '', NULL);
+get_string('site:approvecourse', 'role', NULL);
+get_string('everyonewhocan', 'admin', 'Approve course creation');
+get_string('backups', 'admin', NULL);
+get_string('includemodules', '', NULL);
+get_string('backupincludemoduleshelp', '', NULL);
+get_string('includemoduleuserdata', '', NULL);
+get_string('backupincludemoduleuserdatahelp', '', NULL);
+get_string('metacourse', '', NULL);
+get_string('backupmetacoursehelp', '', NULL);
+get_string('users', '', NULL);
+get_string('backupusershelp', '', NULL);
+get_string('all', '', NULL);
+get_string('course', '', NULL);
+get_string('logs', '', NULL);
+get_string('backuplogshelp', '', NULL);
+get_string('userfiles', '', NULL);
+get_string('backupuserfileshelp', '', NULL);
+get_string('coursefiles', '', NULL);
+get_string('backupcoursefileshelp', '', NULL);
+get_string('sitefiles', '', NULL);
+get_string('backupsitefileshelp', '', NULL);
+get_string('gradebookhistories', 'grades', NULL);
+get_string('backupgradebookhistoryhelp', '', NULL);
+get_string('messages', 'message', NULL);
+get_string('backupmessageshelp', 'message', NULL);
+get_string('blogs', 'blog', NULL);
+get_string('backupblogshelp', 'blog', NULL);
+get_string('all', '', NULL);
+get_string('keep', '', NULL);
+get_string('backupkeephelp', '', NULL);
+get_string('active', '', NULL);
+get_string('backupactivehelp', '', NULL);
+get_string('schedule', '', NULL);
+get_string('backupschedulehelp', '', NULL);
+get_string('executeat', '', NULL);
+get_string('backupexecuteathelp', '', NULL);
+get_string('saveto', '', NULL);
+get_string('backupsavetohelp', '', NULL);
+get_string('experimental', 'admin', NULL);
+get_string('experimentalsettings', 'admin', NULL);
+get_string('enableglobalsearch', 'admin', NULL);
+get_string('configenableglobalsearch', 'admin', NULL);
+get_string('smartpix', 'admin', NULL);
+get_string('configsmartpix', 'admin', NULL);
+get_string('enablehtmlpurifier', 'admin', NULL);
+get_string('configenablehtmlpurifier', 'admin', NULL);
+get_string('experimentalsplitrestore', 'admin', NULL);
+get_string('configexperimentalsplitrestore', 'admin', NULL);
+get_string('dbtransfer', 'dbtransfer', NULL);
+get_string('dbexport', 'dbtransfer', NULL);
+get_string('xmldbeditor', '', NULL);
+get_string('frontpagesettings', 'admin', NULL);
+get_string('fullsitename', '', NULL);
+get_string('shortsitename', '', NULL);
+get_string('frontpagedescription', '', NULL);
+get_string('frontpagedescriptionhelp', '', NULL);
+get_string('frontpage', 'admin', NULL);
+get_string('configfrontpage', 'admin', NULL);
+get_string('frontpageloggedin', 'admin', NULL);
+get_string('configfrontpageloggedin', 'admin', NULL);
+get_string('unlimited', '', NULL);
+get_string('configsitemaxcategorydepth', 'admin', NULL);
+get_string('configsitemaxcategorydepthhelp', 'admin', NULL);
+get_string('sitesection', '', NULL);
+get_string('sitesectionhelp', 'admin', NULL);
+get_string('newsitemsnumber', '', NULL);
+get_string('coursesperpage', 'admin', NULL);
+get_string('configcoursesperpage', 'admin', NULL);
+get_string('allowvisiblecoursesinhiddencategories', 'admin', NULL);
+get_string('configvisiblecourses', 'admin', NULL);
+get_string('none', '', NULL);
+get_string('frontpagedefaultrole', 'admin', NULL);
+get_string('frontpageroles', 'admin', NULL);
+get_string('frontpagebackup', 'admin', NULL);
+get_string('frontpagerestore', 'admin', NULL);
+get_string('frontpagequestions', 'admin', NULL);
+get_string('sitefiles', '', NULL);
+get_string('real', 'grades', NULL);
+get_string('percentage', 'grades', NULL);
+get_string('letter', 'grades', NULL);
+get_string('realpercentage', 'grades', NULL);
+get_string('realletter', 'grades', NULL);
+get_string('letterreal', 'grades', NULL);
+get_string('letterpercentage', 'grades', NULL);
+get_string('percentageletter', 'grades', NULL);
+get_string('percentagereal', 'grades', NULL);
+get_string('generalsettings', 'grades', NULL);
+get_string('gradebookroles', 'admin', NULL);
+get_string('configgradebookroles', 'admin', NULL);
+get_string('profilereport', 'grades', NULL);
+get_string('configprofilereport', 'grades', NULL);
+get_string('aggregationposition', 'grades', NULL);
+get_string('configaggregationposition', 'grades', NULL);
+get_string('positionfirst', 'grades', NULL);
+get_string('positionlast', 'grades', NULL);
+get_string('includescalesinaggregation', 'grades', NULL);
+get_string('configincludescalesinaggregation', 'grades', NULL);
+get_string('hiddenasdate', 'grades', NULL);
+get_string('confighiddenasdate', 'grades', NULL);
+get_string('gradepublishing', 'grades', NULL);
+get_string('configgradepublishing', 'grades', NULL);
+get_string('gradeexportdisplaytype', 'grades', NULL);
+get_string('configgradeexportdisplaytype', 'grades', NULL);
+get_string('gradeexportdecimalpoints', 'grades', NULL);
+get_string('configexportdecimalpoints', 'grades', NULL);
+get_string('navmethod', 'grades', NULL);
+get_string('dropdown', 'grades', NULL);
+get_string('tabs', 'grades', NULL);
+get_string('combo', 'grades', NULL);
+get_string('gradeexport', 'admin', NULL);
+get_string('configgradeexport', 'admin', NULL);
+get_string('gradecategorysettings', 'grades', NULL);
+get_string('hideforcedsettings', 'grades', NULL);
+get_string('confighideforcedsettings', 'grades', NULL);
+get_string('noforce', 'grades', NULL);
+get_string('aggregatemean', 'grades', NULL);
+get_string('aggregateweightedmean', 'grades', NULL);
+get_string('aggregateweightedmean2', 'grades', NULL);
+get_string('aggregateextracreditmean', 'grades', NULL);
+get_string('aggregatemedian', 'grades', NULL);
+get_string('aggregatemin', 'grades', NULL);
+get_string('aggregatemax', 'grades', NULL);
+get_string('aggregatemode', 'grades', NULL);
+get_string('aggregatesum', 'grades', NULL);
+get_string('aggregation', 'grades', NULL);
+get_string('aggregationhelp', 'grades', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('aggregateonlygraded', 'grades', NULL);
+get_string('aggregateonlygradedhelp', 'grades', NULL);
+get_string('aggregateoutcomes', 'grades', NULL);
+get_string('aggregateoutcomeshelp', 'grades', NULL);
+get_string('aggregatesubcats', 'grades', NULL);
+get_string('aggregatesubcatshelp', 'grades', NULL);
+get_string('none', '', NULL);
+get_string('keephigh', 'grades', NULL);
+get_string('keephighhelp', 'grades', NULL);
+get_string('droplow', 'grades', NULL);
+get_string('droplowhelp', 'grades', NULL);
+get_string('gradeitemsettings', 'grades', NULL);
+get_string('gradedisplaytype', 'grades', NULL);
+get_string('configgradedisplaytype', 'grades', NULL);
+get_string('decimalpoints', 'grades', NULL);
+get_string('configdecimalpoints', 'grades', NULL);
+get_string('gradeitemadvanced', 'grades', NULL);
+get_string('configgradeitemadvanced', 'grades', NULL);
+get_string('iteminfo', 'grades', NULL);
+get_string('idnumbermod', '', NULL);
+get_string('gradetype', 'grades', NULL);
+get_string('scale', '', NULL);
+get_string('grademin', 'grades', NULL);
+get_string('grademax', 'grades', NULL);
+get_string('gradepass', 'grades', NULL);
+get_string('plusfactor', 'grades', NULL);
+get_string('multfactor', 'grades', NULL);
+get_string('gradedisplaytype', 'grades', NULL);
+get_string('decimalpoints', 'grades', NULL);
+get_string('hidden', 'grades', NULL);
+get_string('hiddenuntil', 'grades', NULL);
+get_string('locked', 'grades', NULL);
+get_string('locktime', 'grades', NULL);
+get_string('aggregationcoef', 'grades', NULL);
+get_string('parentcategory', 'grades', NULL);
+get_string('scales', '', NULL);
+get_string('outcomes', 'grades', NULL);
+get_string('letters', 'grades', NULL);
+get_string('reportsettings', 'grades', NULL);
+get_string('modulename', 'gradereport_grader', NULL);
+get_string('inherit', 'grades', NULL);
+get_string('percentage', 'grades', NULL);
+get_string('real', 'grades', NULL);
+get_string('letter', 'grades', NULL);
+get_string('inherit', 'grades', NULL);
+get_string('studentsperpage', 'grades', NULL);
+get_string('configstudentsperpage', 'grades', NULL);
+get_string('quickgrading', 'grades', NULL);
+get_string('configquickgrading', 'grades', NULL);
+get_string('quickfeedback', 'grades', NULL);
+get_string('configshowquickfeedback', 'grades', NULL);
+get_string('fixedstudents', 'grades', NULL);
+get_string('configfixedstudents', 'grades', NULL);
+get_string('aggregationview', 'grades', NULL);
+get_string('configaggregationview', 'grades', NULL);
+get_string('full', 'grades', NULL);
+get_string('aggregatesonly', 'grades', NULL);
+get_string('gradesonly', 'grades', NULL);
+get_string('meanselection', 'grades', NULL);
+get_string('configmeanselection', 'grades', NULL);
+get_string('meanall', 'grades', NULL);
+get_string('meangraded', 'grades', NULL);
+get_string('enableajax', 'grades', NULL);
+get_string('configenableajax', 'grades', NULL);
+get_string('showcalculations', 'grades', NULL);
+get_string('configshowcalculations', 'grades', NULL);
+get_string('showeyecons', 'grades', NULL);
+get_string('configshoweyecons', 'grades', NULL);
+get_string('showaverages', 'grades', NULL);
+get_string('configshowaverages', 'grades', NULL);
+get_string('showgroups', 'grades', NULL);
+get_string('configshowgroups', 'grades', NULL);
+get_string('showlocks', 'grades', NULL);
+get_string('configshowlocks', 'grades', NULL);
+get_string('showranges', 'grades', NULL);
+get_string('configshowranges', 'grades', NULL);
+get_string('showuserimage', 'grades', NULL);
+get_string('configshowuserimage', 'grades', NULL);
+get_string('showuseridnumber', 'grades', NULL);
+get_string('configshowuseridnumber', 'grades', NULL);
+get_string('showactivityicons', 'grades', NULL);
+get_string('configshowactivityicons', 'grades', NULL);
+get_string('shownumberofgrades', 'grades', NULL);
+get_string('configshownumberofgrades', 'grades', NULL);
+get_string('averagesdisplaytype', 'grades', NULL);
+get_string('configaveragesdisplaytype', 'grades', NULL);
+get_string('rangesdisplaytype', 'grades', NULL);
+get_string('configrangesdisplaytype', 'grades', NULL);
+get_string('averagesdecimalpoints', 'grades', NULL);
+get_string('configaveragesdecimalpoints', 'grades', NULL);
+get_string('rangesdecimalpoints', 'grades', NULL);
+get_string('configrangesdecimalpoints', 'grades', NULL);
+get_string('modulename', 'gradereport_overview', NULL);
+get_string('showrank', 'grades', NULL);
+get_string('configshowrank', 'grades', NULL);
+get_string('modulename', 'gradereport_stats', NULL);
+get_string('statsshow', 'gradereport_stats', NULL);
+get_string('aggregationposition', 'grades', NULL);
+get_string('configaggregationposition', 'grades', NULL);
+get_string('positionfirst', 'grades', NULL);
+get_string('positionlast', 'grades', NULL);
+get_string('highest', 'gradereport_stats', NULL);
+get_string('stats:stat:highest', 'gradereport_stats', NULL);
+get_string('lowest', 'gradereport_stats', NULL);
+get_string('stats:stat:lowest', 'gradereport_stats', NULL);
+get_string('mean', 'gradereport_stats', NULL);
+get_string('stats:stat:mean', 'gradereport_stats', NULL);
+get_string('median', 'gradereport_stats', NULL);
+get_string('stats:stat:median', 'gradereport_stats', NULL);
+get_string('mode', 'gradereport_stats', NULL);
+get_string('stats:stat:mode', 'gradereport_stats', NULL);
+get_string('pass_percent', 'gradereport_stats', NULL);
+get_string('stats:stat:passpercent', 'gradereport_stats', NULL);
+get_string('standarddeviation', 'gradereport_stats', NULL);
+get_string('stats:stat:standarddeviation', 'gradereport_stats', NULL);
+get_string('showgroups', 'gradereport_stats', NULL);
+get_string('showgroups', 'gradereport_stats', NULL);
+get_string('showranges', 'gradereport_stats', NULL);
+get_string('showranges', 'gradereport_stats', NULL);
+get_string('shownumgrades', 'gradereport_stats', NULL);
+get_string('shownumgrades', 'gradereport_stats', NULL);
+get_string('showscaleitems', 'gradereport_stats', NULL);
+get_string('showscaleitems', 'gradereport_stats', NULL);
+get_string('showvalueitems', 'gradereport_stats', NULL);
+get_string('showvalueitems', 'gradereport_stats', NULL);
+get_string('showinverted', 'gradereport_stats', NULL);
+get_string('showinverted', 'gradereport_stats', NULL);
+get_string('incompleasmin', 'gradereport_stats', NULL);
+get_string('incompleasmin', 'gradereport_stats', NULL);
+get_string('usehidden', 'gradereport_stats', NULL);
+get_string('usehidden', 'gradereport_stats', NULL);
+get_string('uselocked', 'gradereport_stats', NULL);
+get_string('uselocked', 'gradereport_stats', NULL);
+get_string('modulename', 'gradereport_user', NULL);
+get_string('showrank', 'grades', NULL);
+get_string('configshowrank', 'grades', NULL);
+get_string('showpercentage', 'grades', NULL);
+get_string('configshowpercentage', 'grades', NULL);
+get_string('shownohidden', 'grades', NULL);
+get_string('showhiddenuntilonly', 'grades', NULL);
+get_string('showallhidden', 'grades', NULL);
+get_string('showhiddenitems', 'grades', NULL);
+get_string('configshowhiddenitems', 'grades', NULL);
+get_string('importsettings', 'grades', NULL);
+get_string('exportsettings', 'grades', NULL);
+get_string('languagesettings', 'admin', NULL);
+get_string('autolang', 'admin', NULL);
+get_string('configautolang', 'admin', NULL);
+get_string('lang', 'admin', NULL);
+get_string('configlang', 'admin', NULL);
+get_string('langmenu', 'admin', NULL);
+get_string('configlangmenu', 'admin', NULL);
+get_string('langlist', 'admin', NULL);
+get_string('configlanglist', 'admin', NULL);
+get_string('langcache', 'admin', NULL);
+get_string('configlangcache', 'admin', NULL);
+get_string('localetext', 'admin', NULL);
+get_string('configlocale', 'admin', NULL);
+get_string('latinexcelexport', 'admin', NULL);
+get_string('configlatinexcelexport', 'admin', NULL);
+get_string('langedit', 'admin', NULL);
+get_string('langpacks', 'admin', NULL);
+get_string('multilangupgrade', 'admin', NULL);
+get_string('locationsettings', 'admin', NULL);
+get_string('serverlocaltime', '', NULL);
+get_string('timezone', 'admin', NULL);
+get_string('configtimezone', 'admin', NULL);
+get_string('timezonenotforced', 'admin', NULL);
+get_string('forcetimezone', 'admin', NULL);
+get_string('helpforcetimezone', 'admin', NULL);
+get_string('choose', '', NULL);
+get_string('country', 'admin', NULL);
+get_string('configcountry', 'admin', NULL);
+get_string('iplookup', 'admin', NULL);
+get_string('iplookupinfo', 'admin', NULL);
+get_string('geoipfile', 'admin', NULL);
+get_string('configgeoipfile', 'admin', '/var/www/moodledata/geoip/');
+get_string('googlemapkey', 'admin', NULL);
+get_string('configgooglemapkey', 'admin', 'http://tim.moodle.com/moodle');
+get_string('updatetimezones', 'admin', NULL);
+get_string('settings', 'mnet', NULL);
+get_string('mnetpeers', 'mnet', NULL);
+get_string('ssoaccesscontrol', 'mnet', NULL);
+get_string('mnetenrol', 'mnet', NULL);
+get_string('trustedhosts', 'mnet', NULL);
+get_string('ipblocker', 'admin', NULL);
+get_string('allowbeforeblock', 'admin', NULL);
+get_string('allowbeforeblockdesc', 'admin', NULL);
+get_string('allowediplist', 'admin', NULL);
+get_string('blockediplist', 'admin', NULL);
+get_string('webservices', 'admin', NULL);
+get_string('webserviceprotocols', 'admin', NULL);
+get_string('managewsprotocols', 'admin', NULL);
+get_string('managews', 'admin', NULL);
+get_string('webservicesystemsettings', 'admin', NULL);
+get_string('ipwhitelist', 'admin', NULL);
+get_string('webserviceusersettings', 'admin', NULL);
+get_string('managewsusersettings', 'admin', NULL);
+get_string('sitepolicies', 'admin', NULL);
+get_string('protectusernames', 'admin', NULL);
+get_string('configprotectusernames', 'admin', NULL);
+get_string('forcelogin', 'admin', NULL);
+get_string('configforcelogin', 'admin', NULL);
+get_string('forceloginforprofiles', 'admin', NULL);
+get_string('configforceloginforprofiles', 'admin', NULL);
+get_string('opentogoogle', 'admin', NULL);
+get_string('configopentogoogle', 'admin', NULL);
+get_string('serverlimit', 'admin', NULL);
+get_string('maxbytes', 'admin', NULL);
+get_string('configmaxbytes', 'admin', NULL);
+get_string('allowobjectembed', 'admin', NULL);
+get_string('configallowobjectembed', 'admin', NULL);
+get_string('enabletrusttext', 'admin', NULL);
+get_string('configenabletrusttext', 'admin', NULL);
+get_string('maxeditingtime', 'admin', NULL);
+get_string('configmaxeditingtime', 'admin', NULL);
+get_string('numminutes', '', 1);
+get_string('numminutes', '', 5);
+get_string('numminutes', '', 15);
+get_string('numminutes', '', 30);
+get_string('numminutes', '', 45);
+get_string('numminutes', '', 60);
+get_string('fullnamedisplay', 'admin', NULL);
+get_string('configfullnamedisplay', 'admin', NULL);
+get_string('language', '', NULL);
+get_string('firstname', '', NULL);
+get_string('lastname', '', NULL);
+get_string('lastname', '', NULL);
+get_string('firstname', '', NULL);
+get_string('firstname', '', NULL);
+get_string('extendedusernamechars', 'admin', NULL);
+get_string('configextendedusernamechars', 'admin', NULL);
+get_string('sitepolicy', 'admin', NULL);
+get_string('configsitepolicy', 'admin', NULL);
+get_string('keeptagnamecase', 'admin', NULL);
+get_string('configkeeptagnamecase', 'admin', NULL);
+get_string('profilesforenrolledusersonly', 'admin', NULL);
+get_string('configprofilesforenrolledusersonly', 'admin', NULL);
+get_string('cronclionly', 'admin', NULL);
+get_string('configcronclionly', 'admin', NULL);
+get_string('cronremotepassword', 'admin', NULL);
+get_string('configcronremotepassword', 'admin', NULL);
+get_string('passwordpolicy', 'admin', NULL);
+get_string('configpasswordpolicy', 'admin', NULL);
+get_string('minpasswordlength', 'admin', NULL);
+get_string('configminpasswordlength', 'admin', NULL);
+get_string('minpassworddigits', 'admin', NULL);
+get_string('configminpassworddigits', 'admin', NULL);
+get_string('minpasswordlower', 'admin', NULL);
+get_string('configminpasswordlower', 'admin', NULL);
+get_string('minpasswordupper', 'admin', NULL);
+get_string('configminpasswordupper', 'admin', NULL);
+get_string('minpasswordnonalphanum', 'admin', NULL);
+get_string('configminpasswordnonalphanum', 'admin', NULL);
+get_string('disableuserimages', 'admin', NULL);
+get_string('configdisableuserimages', 'admin', NULL);
+get_string('emailchangeconfirmation', 'admin', NULL);
+get_string('configemailchangeconfirmation', 'admin', NULL);
+get_string('httpsecurity', 'admin', NULL);
+get_string('loginhttps', 'admin', NULL);
+get_string('configloginhttps', 'admin', NULL);
+get_string('cookiesecure', 'admin', NULL);
+get_string('configcookiesecure', 'admin', NULL);
+get_string('cookiehttponly', 'admin', NULL);
+get_string('configcookiehttponly', 'admin', NULL);
+get_string('modulesecurity', 'admin', NULL);
+get_string('restrictmodulesfor', 'admin', NULL);
+get_string('configrestrictmodulesfor', 'admin', NULL);
+get_string('restrictbydefault', 'admin', NULL);
+get_string('configrestrictbydefault', 'admin', NULL);
+get_string('defaultallowedmodules', 'admin', NULL);
+get_string('configdefaultallowedmodules', 'admin', NULL);
+get_string('notifications', 'admin', NULL);
+get_string('displayloginfailures', 'admin', NULL);
+get_string('configdisplayloginfailures', 'admin', NULL);
+get_string('nobody', '', NULL);
+get_string('administrators', '', NULL);
+get_string('administratorsandteachers', '', NULL);
+get_string('everybody', '', NULL);
+get_string('notifyloginfailures', 'admin', NULL);
+get_string('confignotifyloginfailures', 'admin', NULL);
+get_string('nobody', '', NULL);
+get_string('site:config', 'role', NULL);
+get_string('everyonewhocan', 'admin', 'Change site configuration');
+get_string('notifyloginthreshold', 'admin', NULL);
+get_string('confignotifyloginthreshold', 'admin', NULL);
+get_string('antivirus', 'admin', NULL);
+get_string('runclamavonupload', 'admin', NULL);
+get_string('configrunclamavonupload', 'admin', NULL);
+get_string('pathtoclam', 'admin', NULL);
+get_string('configpathtoclam', 'admin', NULL);
+get_string('quarantinedir', 'admin', NULL);
+get_string('configquarantinedir', 'admin', NULL);
+get_string('clamfailureonupload', 'admin', NULL);
+get_string('configclamfailureonupload', 'admin', NULL);
+get_string('configclamdonothing', 'admin', NULL);
+get_string('configclamactlikevirus', 'admin', NULL);
+get_string('systempaths', 'admin', NULL);
+get_string('gdversion', 'admin', NULL);
+get_string('configgdversion', 'admin', NULL);
+get_string('gdnot', '', NULL);
+get_string('gd1', '', NULL);
+get_string('gd2', '', NULL);
+get_string('pathtodu', 'admin', NULL);
+get_string('configpathtodu', 'admin', NULL);
+get_string('aspellpath', 'admin', NULL);
+get_string('edhelpaspellpath', '', NULL);
+get_string('mail', 'admin', NULL);
+get_string('smtphosts', 'admin', NULL);
+get_string('configsmtphosts', 'admin', NULL);
+get_string('smtpuser', 'admin', NULL);
+get_string('configsmtpuser', 'admin', NULL);
+get_string('smtppass', 'admin', NULL);
+get_string('configsmtpuser', 'admin', NULL);
+get_string('smtpmaxbulk', 'admin', NULL);
+get_string('configsmtpmaxbulk', 'admin', NULL);
+get_string('noreplyaddress', 'admin', NULL);
+get_string('confignoreplyaddress', 'admin', NULL);
+get_string('digestmailtime', 'admin', NULL);
+get_string('configdigestmailtime', 'admin', NULL);
+get_string('sitemailcharset', 'admin', NULL);
+get_string('configsitemailcharset', 'admin', NULL);
+get_string('allowusermailcharset', 'admin', NULL);
+get_string('configallowusermailcharset', 'admin', NULL);
+get_string('mailnewline', 'admin', NULL);
+get_string('configmailnewline', 'admin', NULL);
+get_string('supportname', 'admin', NULL);
+get_string('configsupportname', 'admin', NULL);
+get_string('supportemail', 'admin', NULL);
+get_string('configsupportemail', 'admin', NULL);
+get_string('supportpage', 'admin', NULL);
+get_string('configsupportpage', 'admin', NULL);
+get_string('sessionhandling', 'admin', NULL);
+get_string('dbsessions', 'admin', NULL);
+get_string('configdbsessions', 'admin', NULL);
+get_string('sessiontimeout', 'admin', NULL);
+get_string('configsessiontimeout', 'admin', NULL);
+get_string('numhours', '', 4);
+get_string('numhours', '', 3);
+get_string('numhours', '', 2);
+get_string('numhours', '', '1.5');
+get_string('numminutes', '', 60);
+get_string('numminutes', '', 45);
+get_string('numminutes', '', 30);
+get_string('numminutes', '', 15);
+get_string('numminutes', '', 5);
+get_string('sessioncookie', 'admin', NULL);
+get_string('configsessioncookie', 'admin', NULL);
+get_string('sessioncookiepath', 'admin', NULL);
+get_string('configsessioncookiepath', 'admin', NULL);
+get_string('sessioncookiedomain', 'admin', NULL);
+get_string('configsessioncookiedomain', 'admin', NULL);
+get_string('debugging', 'admin', NULL);
+get_string('debug', 'admin', NULL);
+get_string('configdebug', 'admin', NULL);
+get_string('debugdisplay', 'admin', NULL);
+get_string('configdebugdisplay', 'admin', NULL);
+get_string('xmlstrictheaders', 'admin', NULL);
+get_string('configxmlstrictheaders', 'admin', NULL);
+get_string('debugsmtp', 'admin', NULL);
+get_string('configdebugsmtp', 'admin', NULL);
+get_string('perfdebug', 'admin', NULL);
+get_string('configperfdebug', 'admin', NULL);
+get_string('stats', '', NULL);
+get_string('statsfirstrun', 'admin', NULL);
+get_string('configstatsfirstrun', 'admin', NULL);
+get_string('none', '', NULL);
+get_string('numweeks', 'moodle', 1);
+get_string('numweeks', 'moodle', 2);
+get_string('numweeks', 'moodle', 3);
+get_string('nummonths', 'moodle', 1);
+get_string('nummonths', 'moodle', 2);
+get_string('nummonths', 'moodle', 3);
+get_string('nummonths', 'moodle', 4);
+get_string('nummonths', 'moodle', 5);
+get_string('nummonths', 'moodle', 6);
+get_string('all', '', NULL);
+get_string('statsmaxruntime', 'admin', NULL);
+get_string('configstatsmaxruntime3', 'admin', NULL);
+get_string('untilcomplete', '', NULL);
+get_string('minutes', '', NULL);
+get_string('minutes', '', NULL);
+get_string('hour', '', NULL);
+get_string('hours', '', NULL);
+get_string('hours', '', NULL);
+get_string('hours', '', NULL);
+get_string('hours', '', NULL);
+get_string('hours', '', NULL);
+get_string('hours', '', NULL);
+get_string('hours', '', NULL);
+get_string('statsruntimedays', 'admin', NULL);
+get_string('configstatsruntimedays', 'admin', NULL);
+get_string('statsruntimestart', 'admin', NULL);
+get_string('configstatsruntimestart', 'admin', NULL);
+get_string('statsuserthreshold', 'admin', NULL);
+get_string('configstatsuserthreshold', 'admin', NULL);
+get_string('statscatdepth', 'admin', NULL);
+get_string('configstatscatdepth', 'admin', NULL);
+get_string('http', 'admin', NULL);
+get_string('framename', 'admin', NULL);
+get_string('configframename', 'admin', NULL);
+get_string('slasharguments', 'admin', NULL);
+get_string('configslasharguments', 'admin', NULL);
+get_string('reverseproxy', 'admin', NULL);
+get_string('getremoteaddrconf', 'admin', NULL);
+get_string('configgetremoteaddrconf', 'admin', NULL);
+get_string('webproxy', 'admin', NULL);
+get_string('webproxyinfo', 'admin', NULL);
+get_string('proxyhost', 'admin', NULL);
+get_string('configproxyhost', 'admin', NULL);
+get_string('proxyport', 'admin', NULL);
+get_string('configproxyport', 'admin', NULL);
+get_string('proxytype', 'admin', NULL);
+get_string('configproxytype', 'admin', NULL);
+get_string('proxyuser', 'admin', NULL);
+get_string('configproxyuser', 'admin', NULL);
+get_string('proxypassword', 'admin', NULL);
+get_string('configproxypassword', 'admin', NULL);
+get_string('proxybypass', 'admin', NULL);
+get_string('configproxybypass', 'admin', NULL);
+get_string('sitemaintenancemode', 'admin', NULL);
+get_string('cleanup', 'admin', NULL);
+get_string('longtimenosee', 'admin', NULL);
+get_string('configlongtimenosee', 'admin', NULL);
+get_string('never', '', NULL);
+get_string('numdays', '', 1000);
+get_string('numdays', '', 365);
+get_string('numdays', '', 180);
+get_string('numdays', '', 150);
+get_string('numdays', '', 120);
+get_string('numdays', '', 90);
+get_string('numdays', '', 60);
+get_string('numdays', '', 30);
+get_string('numdays', '', 21);
+get_string('numdays', '', 14);
+get_string('numdays', '', 7);
+get_string('deleteunconfirmed', 'admin', NULL);
+get_string('configdeleteunconfirmed', 'admin', NULL);
+get_string('never', '', NULL);
+get_string('numdays', '', 7);
+get_string('numdays', '', 6);
+get_string('numdays', '', 5);
+get_string('numdays', '', 4);
+get_string('numdays', '', 3);
+get_string('numdays', '', 2);
+get_string('numdays', '', 1);
+get_string('numhours', '', 12);
+get_string('numhours', '', 6);
+get_string('numhours', '', 1);
+get_string('deleteincompleteusers', 'admin', NULL);
+get_string('configdeleteincompleteusers', 'admin', NULL);
+get_string('never', '', NULL);
+get_string('numdays', '', 7);
+get_string('numdays', '', 6);
+get_string('numdays', '', 5);
+get_string('numdays', '', 4);
+get_string('numdays', '', 3);
+get_string('numdays', '', 2);
+get_string('numdays', '', 1);
+get_string('loglifetime', 'admin', NULL);
+get_string('configloglifetime', 'admin', NULL);
+get_string('neverdeletelogs', '', NULL);
+get_string('numdays', '', 1000);
+get_string('numdays', '', 365);
+get_string('numdays', '', 180);
+get_string('numdays', '', 150);
+get_string('numdays', '', 120);
+get_string('numdays', '', 90);
+get_string('numdays', '', 60);
+get_string('numdays', '', 35);
+get_string('numdays', '', 10);
+get_string('numdays', '', 5);
+get_string('numdays', '', 2);
+get_string('disablegradehistory', 'grades', NULL);
+get_string('configdisablegradehistory', 'grades', NULL);
+get_string('gradehistorylifetime', 'grades', NULL);
+get_string('configgradehistorylifetime', 'grades', NULL);
+get_string('neverdeletehistory', 'grades', NULL);
+get_string('numdays', '', 1000);
+get_string('numdays', '', 365);
+get_string('numdays', '', 180);
+get_string('numdays', '', 150);
+get_string('numdays', '', 120);
+get_string('numdays', '', 90);
+get_string('numdays', '', 60);
+get_string('numdays', '', 30);
+get_string('environment', 'admin', NULL);
+get_string('phpinfo', '', NULL);
+get_string('performance', 'admin', NULL);
+get_string('cachetype', 'admin', NULL);
+get_string('configcachetype', 'admin', NULL);
+get_string('none', '', NULL);
+get_string('rcache', 'admin', NULL);
+get_string('configrcache', 'admin', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('rcachettl', 'admin', NULL);
+get_string('configrcachettl', 'admin', NULL);
+get_string('intcachemax', 'admin', NULL);
+get_string('configintcachemax', 'admin', NULL);
+get_string('memcachedhosts', 'admin', NULL);
+get_string('configmemcachedhosts', 'admin', NULL);
+get_string('memcachedpconn', 'admin', NULL);
+get_string('configmemcachedpconn', 'admin', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('registration', 'admin', NULL);
+get_string('enablegroupings', 'admin', NULL);
+get_string('configenablegroupings', 'admin', NULL);
+get_string('enableoutcomes', 'grades', NULL);
+get_string('configenableoutcomes', 'grades', NULL);
+get_string('usetags', 'admin', NULL);
+get_string('configusetags', 'admin', NULL);
+get_string('enablenotes', 'notes', NULL);
+get_string('configenablenotes', 'notes', NULL);
+get_string('enabled', 'portfolio', NULL);
+get_string('enableddesc', 'portfolio', NULL);
+get_string('enablewebservices', 'admin', NULL);
+get_string('configenablewebservices', 'admin', NULL);
+get_string('messaging', 'admin', NULL);
+get_string('configmessaging', 'admin', NULL);
+get_string('enablestats', 'admin', NULL);
+get_string('configenablestats', 'admin', NULL);
+get_string('enablerssfeeds', 'admin', NULL);
+get_string('configenablerssfeeds', 'admin', NULL);
+get_string('bloglevel', 'admin', NULL);
+get_string('configbloglevel', 'admin', NULL);
+get_string('worldblogs', 'blog', NULL);
+get_string('siteblogs', 'blog', NULL);
+get_string('courseblogs', 'blog', NULL);
+get_string('groupblogs', 'blog', NULL);
+get_string('personalblogs', 'blog', NULL);
+get_string('disableblogs', 'blog', NULL);
+get_string('off', 'mnet', NULL);
+get_string('on', 'mnet', NULL);
+get_string('net', 'mnet', NULL);
+get_string('configmnet', 'mnet', NULL);
+get_string('enablecompletion', 'completion', NULL);
+get_string('configenablecompletion', 'completion', NULL);
+get_string('progresstrackedroles', 'completion', NULL);
+get_string('configprogresstrackedroles', 'completion', NULL);
+get_string('enableavailability', 'condition', NULL);
+get_string('configenableavailability', 'condition', NULL);
+get_string('healthcenter', '', NULL);
+get_string('authentication', 'admin', NULL);
+get_string('accounts', 'admin', NULL);
+get_string('permissions', 'role', NULL);
+get_string('authsettings', 'admin', NULL);
+get_string('authsettings', 'admin', NULL);
+get_string('commonsettings', 'admin', NULL);
+get_string('selfregistration', 'auth', NULL);
+get_string('selfregistration_help', 'auth', NULL);
+get_string('guestloginbutton', 'auth', NULL);
+get_string('showguestlogin', 'auth', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('alternateloginurl', 'auth', NULL);
+get_string('alternatelogin', 'auth', 'http://tim.moodle.com/moodle/login/index.php');
+get_string('forgottenpasswordurl', 'auth', NULL);
+get_string('forgottenpassword', 'auth', NULL);
+get_string('instructions', 'auth', NULL);
+get_string('authinstructions', 'auth', NULL);
+get_string('allowemailaddresses', 'admin', NULL);
+get_string('configallowemailaddresses', 'admin', NULL);
+get_string('denyemailaddresses', 'admin', NULL);
+get_string('configdenyemailaddresses', 'admin', NULL);
+get_string('verifychangedemail', 'admin', NULL);
+get_string('configverifychangedemail', 'admin', NULL);
+get_string('recaptchapublickey', 'admin', NULL);
+get_string('configrecaptchapublickey', 'admin', NULL);
+get_string('recaptchaprivatekey', 'admin', NULL);
+get_string('configrecaptchaprivatekey', 'admin', NULL);
+get_string('auth_castitle', 'auth', NULL);
+get_string('auth_dbtitle', 'auth', NULL);
+get_string('auth_emailtitle', 'auth', NULL);
+get_string('auth_fctitle', 'auth', NULL);
+get_string('auth_imaptitle', 'auth', NULL);
+get_string('auth_ldaptitle', 'auth', NULL);
+get_string('auth_manualtitle', 'auth', NULL);
+get_string('auth_mnettitle', 'auth', NULL);
+get_string('auth_nntptitle', 'auth', NULL);
+get_string('auth_nologintitle', 'auth', NULL);
+get_string('auth_nonetitle', 'auth', NULL);
+get_string('auth_pamtitle', 'auth', NULL);
+get_string('auth_pop3title', 'auth', NULL);
+get_string('auth_radiustitle', 'auth', NULL);
+get_string('auth_shibbolethtitle', 'auth', NULL);
+get_string('userlist', 'admin', NULL);
+get_string('userbulk', 'admin', NULL);
+get_string('addnewuser', '', NULL);
+get_string('uploadusers', '', NULL);
+get_string('uploadpictures', 'admin', NULL);
+get_string('profilefields', 'admin', NULL);
+get_string('userpolicies', 'admin', NULL);
+get_string('notloggedinroleid', 'admin', NULL);
+get_string('confignotloggedinroleid', 'admin', NULL);
+get_string('guestroleid', 'admin', NULL);
+get_string('configguestroleid', 'admin', NULL);
+get_string('defaultuserroleid', 'admin', NULL);
+get_string('configdefaultuserroleid', 'admin', NULL);
+get_string('nodefaultuserrolelists', 'admin', NULL);
+get_string('confignodefaultuserrolelists', 'admin', NULL);
+get_string('defaultcourseroleid', 'admin', NULL);
+get_string('configdefaultcourseroleid', 'admin', NULL);
+get_string('creatornewroleid', 'admin', NULL);
+get_string('configcreatornewroleid', 'admin', NULL);
+get_string('autologinguests', 'admin', NULL);
+get_string('configautologinguests', 'admin', NULL);
+get_string('nonmetacoursesyncroleids', 'admin', NULL);
+get_string('confignonmetacoursesyncroleids', 'admin', NULL);
+get_string('hiddenuserfields', 'admin', NULL);
+get_string('confighiddenuserfields', 'admin', NULL);
+get_string('description', '', NULL);
+get_string('city', '', NULL);
+get_string('country', '', NULL);
+get_string('webpage', '', NULL);
+get_string('icqnumber', '', NULL);
+get_string('skypeid', '', NULL);
+get_string('yahooid', '', NULL);
+get_string('aimid', '', NULL);
+get_string('msnid', '', NULL);
+get_string('firstaccess', '', NULL);
+get_string('lastaccess', '', NULL);
+get_string('mycourses', '', NULL);
+get_string('extrauserselectorfields', 'admin', NULL);
+get_string('configextrauserselectorfields', 'admin', NULL);
+get_string('email', '', NULL);
+get_string('idnumber', '', NULL);
+get_string('username', '', NULL);
+get_string('defineroles', 'role', NULL);
+get_string('assignglobalroles', 'role', NULL);
+get_string('checkglobalpermissions', 'role', NULL);
+get_string('activitymodules', '', NULL);
+get_string('modsettings', 'admin', NULL);
+get_string('modulename', 'assignment', NULL);
+get_string('modulename', 'choice', NULL);
+get_string('modulename', 'data', NULL);
+get_string('modulename', 'forum', NULL);
+get_string('modulename', 'glossary', NULL);
+get_string('modulename', 'label', NULL);
+get_string('modulename', 'resource', NULL);
+get_string('modulename', 'scorm', NULL);
+get_string('modulename', 'survey', NULL);
+get_string('modulename', 'hotpot', NULL);
+get_string('modulename', 'wiki', NULL);
+get_string('modulename', 'lesson', NULL);
+get_string('modulename', 'quiz', NULL);
+get_string('modulename', 'chat', NULL);
+get_string('modulename', 'feedback', NULL);
+get_string('maximumsize', 'assignment', NULL);
+get_string('configmaxbytes', 'assignment', NULL);
+get_string('numwords', '', NULL);
+get_string('numletters', '', NULL);
+get_string('itemstocount', 'assignment', NULL);
+get_string('configitemstocount', 'assignment', NULL);
+get_string('showrecentsubmissions', 'assignment', NULL);
+get_string('configshowrecentsubmissions', 'assignment', NULL);
+get_string('generalconfig', 'chat', NULL);
+get_string('explaingeneralconfig', 'chat', NULL);
+get_string('methodnormal', 'chat', NULL);
+get_string('methoddaemon', 'chat', NULL);
+get_string('method', 'chat', NULL);
+get_string('configmethod', 'chat', NULL);
+get_string('refreshuserlist', 'chat', NULL);
+get_string('configrefreshuserlist', 'chat', NULL);
+get_string('oldping', 'chat', NULL);
+get_string('configoldping', 'chat', NULL);
+get_string('methodnormal', 'chat', NULL);
+get_string('explainmethodnormal', 'chat', NULL);
+get_string('refreshroom', 'chat', NULL);
+get_string('configrefreshroom', 'chat', NULL);
+get_string('normalkeepalive', 'chat', NULL);
+get_string('normalstream', 'chat', NULL);
+get_string('updatemethod', 'chat', NULL);
+get_string('confignormalupdatemode', 'chat', NULL);
+get_string('methoddaemon', 'chat', NULL);
+get_string('explainmethoddaemon', 'chat', NULL);
+get_string('serverhost', 'chat', NULL);
+get_string('configserverhost', 'chat', NULL);
+get_string('serverip', 'chat', NULL);
+get_string('configserverip', 'chat', NULL);
+get_string('serverport', 'chat', NULL);
+get_string('configserverport', 'chat', NULL);
+get_string('servermax', 'chat', NULL);
+get_string('configservermax', 'chat', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('configenablerssfeeds', 'data', NULL);
+get_string('enablerssfeeds', 'admin', NULL);
+get_string('displaymode', 'forum', NULL);
+get_string('configdisplaymode', 'forum', NULL);
+get_string('modeflatoldestfirst', 'forum', NULL);
+get_string('modeflatnewestfirst', 'forum', NULL);
+get_string('modethreaded', 'forum', NULL);
+get_string('modenested', 'forum', NULL);
+get_string('replytouser', 'forum', NULL);
+get_string('configreplytouser', 'forum', NULL);
+get_string('shortpost', 'forum', NULL);
+get_string('configshortpost', 'forum', NULL);
+get_string('longpost', 'forum', NULL);
+get_string('configlongpost', 'forum', NULL);
+get_string('manydiscussions', 'forum', NULL);
+get_string('configmanydiscussions', 'forum', NULL);
+get_string('maxattachmentsize', 'forum', NULL);
+get_string('configmaxbytes', 'forum', NULL);
+get_string('maxattachments', 'forum', NULL);
+get_string('configmaxattachments', 'forum', NULL);
+get_string('trackforum', 'forum', NULL);
+get_string('configtrackreadposts', 'forum', NULL);
+get_string('oldpostdays', 'forum', NULL);
+get_string('configoldpostdays', 'forum', NULL);
+get_string('usermarksread', 'forum', NULL);
+get_string('configusermarksread', 'forum', NULL);
+get_string('cleanreadtime', 'forum', NULL);
+get_string('configcleanreadtime', 'forum', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('configenablerssfeeds', 'forum', NULL);
+get_string('enablerssfeeds', 'admin', NULL);
+get_string('timedposts', 'forum', NULL);
+get_string('configenabletimedposts', 'forum', NULL);
+get_string('logblocked', 'forum', NULL);
+get_string('configlogblocked', 'forum', NULL);
+get_string('ajaxrating', 'forum', NULL);
+get_string('configajaxrating', 'forum', NULL);
+get_string('glossaryleveldefaultsettings', 'glossary', NULL);
+get_string('entbypage', 'glossary', NULL);
+get_string('entbypage', 'glossary', NULL);
+get_string('allowduplicatedentries', 'glossary', NULL);
+get_string('cnfallowdupentries', 'glossary', NULL);
+get_string('allowcomments', 'glossary', NULL);
+get_string('cnfallowcomments', 'glossary', NULL);
+get_string('usedynalink', 'glossary', NULL);
+get_string('cnflinkglossaries', 'glossary', NULL);
+get_string('defaultapproval', 'glossary', NULL);
+get_string('cnfapprovalstatus', 'glossary', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('configenablerssfeeds', 'glossary', NULL);
+get_string('enablerssfeeds', 'admin', NULL);
+get_string('entryleveldefaultsettings', 'glossary', NULL);
+get_string('usedynalink', 'glossary', NULL);
+get_string('cnflinkentry', 'glossary', NULL);
+get_string('casesensitive', 'glossary', NULL);
+get_string('cnfcasesensitive', 'glossary', NULL);
+get_string('fullmatch', 'glossary', NULL);
+get_string('cnffullmatch', 'glossary', NULL);
+get_string('displayformatcontinuous', 'glossary', NULL);
+get_string('displayformatdictionary', 'glossary', NULL);
+get_string('displayformatencyclopedia', 'glossary', NULL);
+get_string('displayformatentrylist', 'glossary', NULL);
+get_string('displayformatfaq', 'glossary', NULL);
+get_string('displayformatfullwithauthor', 'glossary', NULL);
+get_string('displayformatfullwithoutauthor', 'glossary', NULL);
+get_string('edit', '', NULL);
+get_string('edit', '', NULL);
+get_string('hide', '', NULL);
+get_string('edit', '', NULL);
+get_string('edit', '', NULL);
+get_string('hide', '', NULL);
+get_string('edit', '', NULL);
+get_string('edit', '', NULL);
+get_string('hide', '', NULL);
+get_string('edit', '', NULL);
+get_string('edit', '', NULL);
+get_string('hide', '', NULL);
+get_string('edit', '', NULL);
+get_string('edit', '', NULL);
+get_string('hide', '', NULL);
+get_string('edit', '', NULL);
+get_string('edit', '', NULL);
+get_string('hide', '', NULL);
+get_string('edit', '', NULL);
+get_string('edit', '', NULL);
+get_string('hide', '', NULL);
+get_string('displayformatssetup', 'glossary', NULL);
+get_string('showtimes', 'hotpot', NULL);
+get_string('configshowtimes', 'hotpot', NULL);
+get_string('excelencodings', 'hotpot', NULL);
+get_string('configexcelencodings', 'hotpot', NULL);
+get_string('modulename', 'quiz', NULL);
+get_string('configintro', 'quiz', NULL);
+get_string('timelimitsec', 'quiz', NULL);
+get_string('configtimelimitsec', 'quiz', NULL);
+get_string('unlimited', '', NULL);
+get_string('attemptsallowed', 'quiz', NULL);
+get_string('configattemptsallowed', 'quiz', NULL);
+get_string('grademethod', 'quiz', NULL);
+get_string('configgrademethod', 'quiz', NULL);
+get_string('gradehighest', 'quiz', NULL);
+get_string('gradeaverage', 'quiz', NULL);
+get_string('attemptfirst', 'quiz', NULL);
+get_string('attemptlast', 'quiz', NULL);
+get_string('maximumgrade', '', NULL);
+get_string('configmaximumgrade', 'quiz', NULL);
+get_string('shufflequestions', 'quiz', NULL);
+get_string('configshufflequestions', 'quiz', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('never', '', NULL);
+get_string('aftereachquestion', 'quiz', NULL);
+get_string('afternquestions', 'quiz', 2);
+get_string('afternquestions', 'quiz', 3);
+get_string('afternquestions', 'quiz', 4);
+get_string('afternquestions', 'quiz', 5);
+get_string('afternquestions', 'quiz', 6);
+get_string('afternquestions', 'quiz', 7);
+get_string('afternquestions', 'quiz', 8);
+get_string('afternquestions', 'quiz', 9);
+get_string('afternquestions', 'quiz', 10);
+get_string('afternquestions', 'quiz', 11);
+get_string('afternquestions', 'quiz', 12);
+get_string('afternquestions', 'quiz', 13);
+get_string('afternquestions', 'quiz', 14);
+get_string('afternquestions', 'quiz', 15);
+get_string('afternquestions', 'quiz', 16);
+get_string('afternquestions', 'quiz', 17);
+get_string('afternquestions', 'quiz', 18);
+get_string('afternquestions', 'quiz', 19);
+get_string('afternquestions', 'quiz', 20);
+get_string('afternquestions', 'quiz', 21);
+get_string('afternquestions', 'quiz', 22);
+get_string('afternquestions', 'quiz', 23);
+get_string('afternquestions', 'quiz', 24);
+get_string('afternquestions', 'quiz', 25);
+get_string('afternquestions', 'quiz', 26);
+get_string('afternquestions', 'quiz', 27);
+get_string('afternquestions', 'quiz', 28);
+get_string('afternquestions', 'quiz', 29);
+get_string('afternquestions', 'quiz', 30);
+get_string('afternquestions', 'quiz', 31);
+get_string('afternquestions', 'quiz', 32);
+get_string('afternquestions', 'quiz', 33);
+get_string('afternquestions', 'quiz', 34);
+get_string('afternquestions', 'quiz', 35);
+get_string('afternquestions', 'quiz', 36);
+get_string('afternquestions', 'quiz', 37);
+get_string('afternquestions', 'quiz', 38);
+get_string('afternquestions', 'quiz', 39);
+get_string('afternquestions', 'quiz', 40);
+get_string('afternquestions', 'quiz', 41);
+get_string('afternquestions', 'quiz', 42);
+get_string('afternquestions', 'quiz', 43);
+get_string('afternquestions', 'quiz', 44);
+get_string('afternquestions', 'quiz', 45);
+get_string('afternquestions', 'quiz', 46);
+get_string('afternquestions', 'quiz', 47);
+get_string('afternquestions', 'quiz', 48);
+get_string('afternquestions', 'quiz', 49);
+get_string('afternquestions', 'quiz', 50);
+get_string('newpageevery', 'quiz', NULL);
+get_string('confignewpageevery', 'quiz', NULL);
+get_string('shufflewithin', 'quiz', NULL);
+get_string('configshufflewithin', 'quiz', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('adaptive', 'quiz', NULL);
+get_string('configadaptive', 'quiz', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('penaltyscheme', 'quiz', NULL);
+get_string('configpenaltyscheme', 'quiz', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('eachattemptbuildsonthelast', 'quiz', NULL);
+get_string('configeachattemptbuildsonthelast', 'quiz', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('reviewoptions', 'quiz', NULL);
+get_string('configreviewoptions', 'quiz', NULL);
+get_string('showuserpicture', 'quiz', NULL);
+get_string('configshowuserpicture', 'quiz', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('decimalplaces', 'quiz', NULL);
+get_string('configdecimalplaces', 'quiz', NULL);
+get_string('sameasoverall', 'quiz', NULL);
+get_string('decimalplacesquestion', 'quiz', NULL);
+get_string('configdecimalplacesquestion', 'quiz', NULL);
+get_string('requirepassword', 'quiz', NULL);
+get_string('configrequirepassword', 'quiz', NULL);
+get_string('requiresubnet', 'quiz', NULL);
+get_string('configrequiresubnet', 'quiz', NULL);
+get_string('delay1st2nd', 'quiz', NULL);
+get_string('configdelay1st2nd', 'quiz', NULL);
+get_string('delaylater', 'quiz', NULL);
+get_string('configdelaylater', 'quiz', NULL);
+get_string('showinsecurepopup', 'quiz', NULL);
+get_string('configpopup', 'quiz', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('framesize', 'resource', NULL);
+get_string('configframesize', 'resource', NULL);
+get_string('websearchdefault', 'resource', NULL);
+get_string('configwebsearch', 'resource', NULL);
+get_string('resourcedefaulturl', 'resource', NULL);
+get_string('configdefaulturl', 'resource', NULL);
+get_string('password', '', NULL);
+get_string('configsecretphrase', 'resource', NULL);
+get_string('allowlocalfiles', 'resource', NULL);
+get_string('configallowlocalfiles', 'resource', NULL);
+get_string('pagewindow', 'resource', NULL);
+get_string('newwindow', 'resource', NULL);
+get_string('display', 'resource', NULL);
+get_string('configpopup', 'resource', NULL);
+get_string('newresizable', 'resource', NULL);
+get_string('configpopupresizable', 'resource', NULL);
+get_string('newscrollbars', 'resource', NULL);
+get_string('configpopupscrollbars', 'resource', NULL);
+get_string('newdirectories', 'resource', NULL);
+get_string('configpopupdirectories', 'resource', NULL);
+get_string('newlocation', 'resource', NULL);
+get_string('configpopuplocation', 'resource', NULL);
+get_string('newmenubar', 'resource', NULL);
+get_string('configpopupmenubar', 'resource', NULL);
+get_string('newtoolbar', 'resource', NULL);
+get_string('configpopuptoolbar', 'resource', NULL);
+get_string('newstatus', 'resource', NULL);
+get_string('configpopupstatus', 'resource', NULL);
+get_string('newwidth', 'resource', NULL);
+get_string('configpopupwidth', 'resource', NULL);
+get_string('newheight', 'resource', NULL);
+get_string('configpopupheight', 'resource', NULL);
+get_string('autofilerename', 'resource', NULL);
+get_string('configautofilerenamesettings', 'resource', NULL);
+get_string('blockdeletingfile', 'resource', NULL);
+get_string('configblockdeletingfilesettings', 'resource', NULL);
+get_string('no', '', NULL);
+get_string('yes', '', NULL);
+get_string('grademethod', 'scorm', NULL);
+get_string('grademethoddesc', 'scorm', NULL);
+get_string('gradescoes', 'scorm', NULL);
+get_string('gradehighest', 'scorm', NULL);
+get_string('gradeaverage', 'scorm', NULL);
+get_string('gradesum', 'scorm', NULL);
+get_string('maximumgrade', '', NULL);
+get_string('maximumgradedesc', 'scorm', NULL);
+get_string('maximumattempts', 'scorm', NULL);
+get_string('displayattemptstatus', 'scorm', NULL);
+get_string('displayattemptstatusdesc', 'scorm', NULL);
+get_string('displaycoursestructure', 'scorm', NULL);
+get_string('displaycoursestructuredesc', 'scorm', NULL);
+get_string('forcecompleted', 'scorm', NULL);
+get_string('forcecompleteddesc', 'scorm', NULL);
+get_string('forcenewattempt', 'scorm', NULL);
+get_string('forcenewattemptdesc', 'scorm', NULL);
+get_string('lastattemptlock', 'scorm', NULL);
+get_string('lastattemptlockdesc', 'scorm', NULL);
+get_string('whatgrade', 'scorm', NULL);
+get_string('whatgradedesc', 'scorm', NULL);
+get_string('highestattempt', 'scorm', NULL);
+get_string('averageattempt', 'scorm', NULL);
+get_string('firstattempt', 'scorm', NULL);
+get_string('lastattempt', 'scorm', NULL);
+get_string('width', 'scorm', NULL);
+get_string('framewidth', 'scorm', NULL);
+get_string('height', 'scorm', NULL);
+get_string('frameheight', 'scorm', NULL);
+get_string('display', 'scorm', NULL);
+get_string('displaydesc', 'scorm', NULL);
+get_string('iframe', 'scorm', NULL);
+get_string('popup', 'scorm', NULL);
+get_string('resizable', 'scorm', NULL);
+get_string('scrollbars', 'scorm', NULL);
+get_string('directories', 'scorm', NULL);
+get_string('location', 'scorm', NULL);
+get_string('menubar', 'scorm', NULL);
+get_string('toolbar', 'scorm', NULL);
+get_string('status', 'scorm', NULL);
+get_string('skipview', 'scorm', NULL);
+get_string('skipviewdesc', 'scorm', NULL);
+get_string('never', '', NULL);
+get_string('firstaccess', 'scorm', NULL);
+get_string('always', '', NULL);
+get_string('hidebrowse', 'scorm', NULL);
+get_string('hidebrowsedesc', 'scorm', NULL);
+get_string('hidetoc', 'scorm', NULL);
+get_string('hidetocdesc', 'scorm', NULL);
+get_string('sided', 'scorm', NULL);
+get_string('hidden', 'scorm', NULL);
+get_string('popupmenu', 'scorm', NULL);
+get_string('hidenav', 'scorm', NULL);
+get_string('hidenavdesc', 'scorm', NULL);
+get_string('autocontinue', 'scorm', NULL);
+get_string('autocontinuedesc', 'scorm', NULL);
+get_string('updatefreq', 'scorm', NULL);
+get_string('updatefreqdesc', 'scorm', NULL);
+get_string('never', '', NULL);
+get_string('onchanges', 'scorm', NULL);
+get_string('everyday', 'scorm', NULL);
+get_string('everytime', 'scorm', NULL);
+get_string('updatetime', 'scorm', NULL);
+get_string('allowtypeexternal', 'scorm', NULL);
+get_string('allowtypelocalsync', 'scorm', NULL);
+get_string('allowtypeimsrepository', 'scorm', NULL);
+get_string('allowapidebug', 'scorm', NULL);
+get_string('apidebugmask', 'scorm', NULL);
+get_string('blocks', '', NULL);
+get_string('blocksettings', 'admin', NULL);
+get_string('stickyblocks', 'admin', NULL);
+get_string('activities', '', NULL);
+get_string('administration', '', NULL);
+get_string('adminbookmarks', '', NULL);
+get_string('administrationsite', '', NULL);
+get_string('blockmenutitle', 'blog', NULL);
+get_string('blocktagstitle', 'blog', NULL);
+get_string('calendar', 'calendar', NULL);
+get_string('upcomingevents', 'calendar', NULL);
+get_string('courses', '', NULL);
+get_string('pagedescription', 'block_course_summary', NULL);
+get_string('blockname', 'block_glossary_random', NULL);
+get_string('html', 'block_html', NULL);
+get_string('loancalc', 'block_loancalc', NULL);
+get_string('login', '', NULL);
+get_string('blockname', 'block_mentees', NULL);
+get_string('messages', 'message', NULL);
+get_string('mnet_hosts', 'block_mnet_hosts', NULL);
+get_string('latestnews', '', NULL);
+get_string('blockname', 'block_online_users', NULL);
+get_string('people', '', NULL);
+get_string('formaltitle', 'block_quiz_results', NULL);
+get_string('recentactivity', '', NULL);
+get_string('feedstitle', 'block_rss_client', NULL);
+get_string('blockname', 'block_search', NULL);
+get_string('blocktitle', 'block_search_forums', NULL);
+get_string('blockname', 'block_section_links', NULL);
+get_string('mainmenu', '', NULL);
+get_string('blockname', 'block_social_activities', NULL);
+get_string('defaulttile', 'block_tag_flickr', NULL);
+get_string('blockname', 'block_tag_youtube', NULL);
+get_string('blocktagstitle', 'tag', NULL);
+get_string('allcourses', 'block_course_list', NULL);
+get_string('owncourses', 'block_course_list', NULL);
+get_string('adminview', 'block_course_list', NULL);
+get_string('configadminview', 'block_course_list', NULL);
+get_string('hideallcourseslink', 'block_course_list', NULL);
+get_string('confighideallcourseslink', 'block_course_list', NULL);
+get_string('timetosee', 'block_online_users', NULL);
+get_string('configtimetosee', 'block_online_users', NULL);
+get_string('numentries', 'block_rss_client', NULL);
+get_string('clientnumentries', 'block_rss_client', NULL);
+get_string('timeout2', 'block_rss_client', NULL);
+get_string('timeout', 'block_rss_client', NULL);
+get_string('everybody', '', NULL);
+get_string('administrators', '', NULL);
+get_string('administratorsandteachers', '', NULL);
+get_string('submitters2', 'block_rss_client', NULL);
+get_string('submitters', 'block_rss_client', NULL);
+get_string('feedsaddedit', 'block_rss_client', NULL);
+get_string('showcoursetags', 'block_tags', NULL);
+get_string('showcoursetagsdef', 'block_tags', NULL);
+get_string('managefilters', '', NULL);
+get_string('filtersettings', 'admin', NULL);
+get_string('filtersettings', 'admin', NULL);
+get_string('commonsettings', 'admin', NULL);
+get_string('cachetext', 'admin', NULL);
+get_string('configcachetext', 'admin', NULL);
+get_string('numdays', '', 7);
+get_string('numdays', '', 1);
+get_string('numhours', '', 12);
+get_string('numhours', '', 3);
+get_string('numhours', '', 2);
+get_string('numhours', '', 1);
+get_string('numminutes', '', 45);
+get_string('numminutes', '', 30);
+get_string('numminutes', '', 15);
+get_string('numminutes', '', 10);
+get_string('numminutes', '', 9);
+get_string('numminutes', '', 8);
+get_string('numminutes', '', 7);
+get_string('numminutes', '', 6);
+get_string('numminutes', '', 5);
+get_string('numminutes', '', 4);
+get_string('numminutes', '', 3);
+get_string('numminutes', '', 2);
+get_string('numminutes', '', 1);
+get_string('numseconds', '', 30);
+get_string('no', '', NULL);
+get_string('filteruploadedfiles', 'admin', NULL);
+get_string('configfilteruploadedfiles', 'admin', NULL);
+get_string('none', '', NULL);
+get_string('allfiles', '', NULL);
+get_string('htmlfilesonly', '', NULL);
+get_string('filtermatchoneperpage', 'admin', NULL);
+get_string('configfiltermatchoneperpage', 'admin', NULL);
+get_string('filtermatchonepertext', 'admin', NULL);
+get_string('configfiltermatchonepertext', 'admin', NULL);
+get_string('filterall', 'admin', NULL);
+get_string('configfilterall', 'admin', NULL);
+get_string('filtername', 'assignment', NULL);
+get_string('filtername', 'chat', NULL);
+get_string('filtername', 'choice', NULL);
+get_string('filtername', 'data', NULL);
+get_string('filtername', 'feedback', NULL);
+get_string('filtername', 'forum', NULL);
+get_string('filtername', 'glossary', NULL);
+get_string('filtername', 'hotpot', NULL);
+get_string('filtername', 'label', NULL);
+get_string('filtername', 'lesson', NULL);
+get_string('filtername', 'quiz', NULL);
+get_string('filtername', 'resource', NULL);
+get_string('filtername', 'scorm', NULL);
+get_string('filtername', 'survey', NULL);
+get_string('filtername', 'wiki', NULL);
+get_string('filtername', 'activitynames', NULL);
+get_string('filtername', 'algebra', NULL);
+get_string('filtername', 'censor', NULL);
+get_string('filtername', 'emailprotect', NULL);
+get_string('filtername', 'mediaplugin', NULL);
+get_string('filtername', 'multilang', NULL);
+get_string('filtername', 'tex', NULL);
+get_string('filtername', 'tidy', NULL);
+get_string('multilangforceold', 'admin', NULL);
+get_string('mediapluginmp3', 'admin', NULL);
+get_string('mediapluginswf', 'admin', NULL);
+get_string('mediapluginswfnote', 'admin', NULL);
+get_string('mediapluginmov', 'admin', NULL);
+get_string('mediapluginwmv', 'admin', NULL);
+get_string('mediapluginmpg', 'admin', NULL);
+get_string('mediapluginavi', 'admin', NULL);
+get_string('mediapluginflv', 'admin', NULL);
+get_string('mediapluginram', 'admin', NULL);
+get_string('mediapluginrpm', 'admin', NULL);
+get_string('mediapluginrm', 'admin', NULL);
+get_string('mediapluginyoutube', 'admin', NULL);
+get_string('latexsettings', 'admin', NULL);
+get_string('latexpreamble', 'admin', NULL);
+get_string('backgroundcolour', 'admin', NULL);
+get_string('density', 'admin', NULL);
+get_string('density', 'admin', NULL);
+get_string('pathlatex', 'admin', NULL);
+get_string('pathdvips', 'admin', NULL);
+get_string('pathconvert', 'admin', NULL);
+get_string('badwordslist', 'admin', NULL);
+get_string('badwordsconfig', 'admin', NULL);
+get_string('badwordsdefault', 'admin', NULL);
+get_string('portfolios', 'portfolio', NULL);
+get_string('manageportfolios', 'portfolio', NULL);
+get_string('manageportfolios', 'portfolio', NULL);
+get_string('activeportfolios', 'portfolio', NULL);
+get_string('manageportfolio', 'portfolio', NULL);
+get_string('commonsettings', 'admin', NULL);
+get_string('commonsettingsdesc', 'portfolio', NULL);
+get_string('moderatefilesizethreshold', 'portfolio', NULL);
+get_string('moderatefilesizethresholddesc', 'portfolio', NULL);
+get_string('highfilesizethreshold', 'portfolio', NULL);
+get_string('highfilesizethresholddesc', 'portfolio', NULL);
+get_string('moderatedbsizethreshold', 'portfolio', NULL);
+get_string('moderatedbsizethresholddesc', 'portfolio', NULL);
+get_string('highdbsizethreshold', 'portfolio', NULL);
+get_string('highdbsizethresholddesc', 'portfolio', NULL);
+get_string('addnewportfolio', 'portfolio', NULL);
+get_string('deleteportfolio', 'portfolio', NULL);
+get_string('manageportfolios', 'portfolio', NULL);
+get_string('repositories', 'repository', NULL);
+get_string('manage', 'repository', NULL);
+get_string('activerepository', 'repository', NULL);
+get_string('managerepository', 'repository', NULL);
+get_string('commonsettings', 'admin', NULL);
+get_string('cacheexpire', 'repository', NULL);
+get_string('configcacheexpire', 'repository', NULL);
+get_string('addplugin', 'repository', NULL);
+get_string('deleterepository', 'repository', NULL);
+get_string('managerepositories', 'repository', NULL);
+get_string('createrepository', 'repository', NULL);
+get_string('editrepositoryinstance', 'repository', NULL);
+get_string('questiontypes', 'admin', NULL);
+get_string('manageqtypes', 'admin', NULL);
+get_string('sojunit', 'qtype_sojunit', NULL);
+get_string('pathtojava', 'qtype_sojunit', NULL);
+get_string('configpathtojava', 'qtype_sojunit', NULL);
+get_string('pathtojavac', 'qtype_sojunit', NULL);
+get_string('configpathtojavac', 'qtype_sojunit', NULL);
+get_string('pathtojunit', 'qtype_sojunit', NULL);
+get_string('configpathtojunit', 'qtype_sojunit', NULL);
+get_string('backups', 'admin', NULL);
+get_string('capability', 'report_capability', NULL);
+get_string('configlog', 'report_configlog', NULL);
+get_string('courseoverview', 'admin', NULL);
+get_string('log', 'admin', NULL);
+get_string('loglive', 'coursereport_log', NULL);
+get_string('questioninstances', 'report_questioninstances', NULL);
+get_string('reportsecurity', 'report_security', NULL);
+get_string('spamcleaner', 'report_spamcleaner', NULL);
+get_string('stats', 'admin', NULL);
+get_string('systemimages', 'report_systemimages', NULL);
+get_string('simpletest', 'admin', NULL);
+get_string('dbtest', 'admin', NULL);
+get_string('sunday', 'calendar', NULL);
+get_string('monday', 'calendar', NULL);
+get_string('tuesday', 'calendar', NULL);
+get_string('wednesday', 'calendar', NULL);
+get_string('thursday', 'calendar', NULL);
+get_string('friday', 'calendar', NULL);
+get_string('saturday', 'calendar', NULL);
+get_string('locale', '', NULL);
+get_string('thisdirection', '', NULL);
+get_string('blocksediton', '', NULL);
+get_string('youarehere', 'access', NULL);
+get_string('thisdirection', '', NULL);
+get_string('loggedinas', 'moodle', '<a  href="http://tim.moodle.com/moodle/user/view.php?id=2&amp;course=1">Admin User</a>');
+get_string('logout', '', NULL);
+get_string('thisdirection', '', NULL);
+get_string('thisdirection', '', NULL);
+get_string('administrationsite', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderopened', '', NULL);
+get_string('folderclosed', '', NULL);
+get_string('searchinsettings', 'admin', NULL);
+get_string('search', '', NULL);
+get_string('showblocka', 'access', 'Site Administration');
+get_string('hideblocka', 'access', 'Site Administration');
+get_string('skipa', 'access', 'Site Administration');
+get_string('showblocka', 'access', 'Site Administration');
+get_string('hideblocka', 'access', 'Site Administration');
+get_string('adminbookmarks', '', NULL);
+get_string('bookmarkthispage', 'admin', NULL);
+get_string('showblocka', 'access', 'Admin bookmarks');
+get_string('hideblocka', 'access', 'Admin bookmarks');
+get_string('skipa', 'access', 'Admin bookmarks');
+get_string('showblocka', 'access', 'Admin bookmarks');
+get_string('hideblocka', 'access', 'Admin bookmarks');
+get_string('displayerrorswarning', 'admin', NULL);
+get_string('installation', 'install', NULL);
+get_string('helpprefix2', '', 'Installation');
+get_string('newwindow', '', NULL);
+get_string('cronwarning', 'admin', NULL);
+get_string('home', '', NULL);
+get_string('loggedinas', 'moodle', '<a  href="http://tim.moodle.com/moodle/user/view.php?id=2&amp;course=1">Admin User</a>');
+get_string('logout', '', NULL);
+get_string('moodledocslink', '', NULL);
diff --git a/lib/simpletest/get_string_fixtures/pagelogs/admin_index.php_old_get_string.log.php b/lib/simpletest/get_string_fixtures/pagelogs/admin_index.php_old_get_string.log.php
new file mode 100644 (file)
index 0000000..ba1eb44
--- /dev/null
@@ -0,0 +1,2010 @@
+<?php
+// Sequence of get_string calls for page http://tim.moodle.com/moodle/admin/index.php
+old_get_string('locale', '', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('administration', '', NULL);
+old_get_string('activities', '', NULL);
+old_get_string('administration', '', NULL);
+old_get_string('adminbookmarks', '', NULL);
+old_get_string('administrationsite', '', NULL);
+old_get_string('blockmenutitle', 'blog', NULL);
+old_get_string('blocktagstitle', 'blog', NULL);
+old_get_string('calendar', 'calendar', NULL);
+old_get_string('upcomingevents', 'calendar', NULL);
+old_get_string('courses', '', NULL);
+old_get_string('pagedescription', 'block_course_summary', NULL);
+old_get_string('blockname', 'block_glossary_random', NULL);
+old_get_string('html', 'block_html', NULL);
+old_get_string('loancalc', 'block_loancalc', NULL);
+old_get_string('login', '', NULL);
+old_get_string('blockname', 'block_mentees', NULL);
+old_get_string('messages', 'message', NULL);
+old_get_string('mnet_hosts', 'block_mnet_hosts', NULL);
+old_get_string('latestnews', '', NULL);
+old_get_string('blockname', 'block_online_users', NULL);
+old_get_string('people', '', NULL);
+old_get_string('formaltitle', 'block_quiz_results', NULL);
+old_get_string('recentactivity', '', NULL);
+old_get_string('feedstitle', 'block_rss_client', NULL);
+old_get_string('blockname', 'block_search', NULL);
+old_get_string('blocktitle', 'block_search_forums', NULL);
+old_get_string('blockname', 'block_section_links', NULL);
+old_get_string('mainmenu', '', NULL);
+old_get_string('blockname', 'block_social_activities', NULL);
+old_get_string('defaulttile', 'block_tag_flickr', NULL);
+old_get_string('blockname', 'block_tag_youtube', NULL);
+old_get_string('blocktagstitle', 'tag', NULL);
+old_get_string('locale', '', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('administration', '', NULL);
+old_get_string('notifications', '', NULL);
+old_get_string('registration', 'admin', NULL);
+old_get_string('upgradesettings', 'admin', NULL);
+old_get_string('advancedfeatures', 'admin', NULL);
+old_get_string('users', 'admin', NULL);
+old_get_string('courses', 'admin', NULL);
+old_get_string('grades', '', NULL);
+old_get_string('location', 'admin', NULL);
+old_get_string('language', '', NULL);
+old_get_string('plugins', 'admin', NULL);
+old_get_string('security', 'admin', NULL);
+old_get_string('appearance', 'admin', NULL);
+old_get_string('frontpage', 'admin', NULL);
+old_get_string('server', 'admin', NULL);
+old_get_string('net', 'mnet', NULL);
+old_get_string('reports', '', NULL);
+old_get_string('development', 'admin', NULL);
+old_get_string('unsupported', 'admin', NULL);
+old_get_string('searchresults', '', NULL);
+old_get_string('themes', '', NULL);
+old_get_string('themesettings', 'admin', NULL);
+old_get_string('themelist', 'admin', NULL);
+old_get_string('configthemelist', 'admin', NULL);
+old_get_string('allowuserthemes', 'admin', NULL);
+old_get_string('configallowuserthemes', 'admin', NULL);
+old_get_string('allowcoursethemes', 'admin', NULL);
+old_get_string('configallowcoursethemes', 'admin', NULL);
+old_get_string('allowcategorythemes', 'admin', NULL);
+old_get_string('configallowcategorythemes', 'admin', NULL);
+old_get_string('allowuserblockhiding', 'admin', NULL);
+old_get_string('configallowuserblockhiding', 'admin', NULL);
+old_get_string('showblocksonmodpages', 'admin', NULL);
+old_get_string('configshowblocksonmodpages', 'admin', NULL);
+old_get_string('hideactivitytypenavlink', 'admin', NULL);
+old_get_string('confighideactivitytypenavlink', 'admin', NULL);
+old_get_string('hidefromnone', 'admin', NULL);
+old_get_string('hidefromstudents', 'admin', NULL);
+old_get_string('hidefromall', 'admin', NULL);
+old_get_string('themeselector', 'admin', NULL);
+old_get_string('calendarsettings', 'admin', NULL);
+old_get_string('adminseesall', 'admin', NULL);
+old_get_string('helpadminseesall', 'admin', NULL);
+old_get_string('pref_timeformat', 'calendar', NULL);
+old_get_string('explain_site_timeformat', 'calendar', NULL);
+old_get_string('default', 'calendar', NULL);
+old_get_string('timeformat_12', 'calendar', NULL);
+old_get_string('timeformat_24', 'calendar', NULL);
+old_get_string('configstartwday', 'admin', NULL);
+old_get_string('helpstartofweek', 'admin', NULL);
+old_get_string('sunday', 'calendar', NULL);
+old_get_string('monday', 'calendar', NULL);
+old_get_string('tuesday', 'calendar', NULL);
+old_get_string('wednesday', 'calendar', NULL);
+old_get_string('thursday', 'calendar', NULL);
+old_get_string('friday', 'calendar', NULL);
+old_get_string('saturday', 'calendar', NULL);
+old_get_string('calendar_weekend', 'admin', NULL);
+old_get_string('helpweekenddays', 'admin', NULL);
+old_get_string('configlookahead', 'admin', NULL);
+old_get_string('helpupcominglookahead', 'admin', NULL);
+old_get_string('configmaxevents', 'admin', NULL);
+old_get_string('helpupcomingmaxevents', 'admin', NULL);
+old_get_string('enablecalendarexport', 'admin', NULL);
+old_get_string('configenablecalendarexport', 'admin', NULL);
+old_get_string('calendarexportsalt', 'admin', NULL);
+old_get_string('configcalendarexportsalt', 'admin', NULL);
+old_get_string('htmleditor', 'admin', NULL);
+old_get_string('htmleditorsettings', 'admin', NULL);
+old_get_string('defaulthtmleditor', 'admin', NULL);
+old_get_string('usehtmleditor', 'admin', NULL);
+old_get_string('confightmleditor', 'admin', NULL);
+old_get_string('emoticons', 'admin', NULL);
+old_get_string('configemoticons', 'admin', NULL);
+old_get_string('htmlsettings', 'admin', NULL);
+old_get_string('stripalltitletags', 'admin', NULL);
+old_get_string('configstripalltitletags', 'admin', NULL);
+old_get_string('moodledocs', '', NULL);
+old_get_string('docroot', 'admin', NULL);
+old_get_string('configdocroot', 'admin', NULL);
+old_get_string('doctonewwindow', 'admin', NULL);
+old_get_string('configdoctonewwindow', 'admin', NULL);
+old_get_string('mymoodle', 'admin', NULL);
+old_get_string('mymoodleredirect', 'admin', NULL);
+old_get_string('configmymoodleredirect', 'admin', NULL);
+old_get_string('coursemanager', 'admin', NULL);
+old_get_string('coursemanager', 'admin', NULL);
+old_get_string('configcoursemanager', 'admin', NULL);
+old_get_string('ajaxuse', '', NULL);
+old_get_string('enableajax', 'admin', NULL);
+old_get_string('configenableajax', 'admin', NULL);
+old_get_string('useexternalyui', 'admin', NULL);
+old_get_string('configuseexternalyui', 'admin', NULL);
+old_get_string('disablecourseajax', 'admin', NULL);
+old_get_string('configdisablecourseajax', 'admin', NULL);
+old_get_string('managetags', 'tag', NULL);
+old_get_string('coursemgmt', 'admin', NULL);
+old_get_string('enrolments', '', NULL);
+old_get_string('coursesettings', '', NULL);
+old_get_string('formatscorm', 'format_scorm', NULL);
+old_get_string('formatscorm', '', NULL);
+old_get_string('formatsocial', 'format_social', NULL);
+old_get_string('formatsocial', '', NULL);
+old_get_string('formattopics', 'format_topics', NULL);
+old_get_string('formattopics', '', NULL);
+old_get_string('formatweeks', 'format_weeks', NULL);
+old_get_string('formatweeks', '', NULL);
+old_get_string('format', '', NULL);
+old_get_string('coursehelpformat', '', NULL);
+old_get_string('numberweeks', '', NULL);
+old_get_string('coursehelpnumberweeks', '', NULL);
+old_get_string('hiddensectionscollapsed', '', NULL);
+old_get_string('hiddensectionsinvisible', '', NULL);
+old_get_string('hiddensections', '', NULL);
+old_get_string('coursehelphiddensections', '', NULL);
+old_get_string('newsitemsnumber', '', NULL);
+old_get_string('coursehelpnewsitemsnumber', '', NULL);
+old_get_string('showgrades', '', NULL);
+old_get_string('coursehelpshowgrades', '', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('showreports', '', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('sizegb', '', NULL);
+old_get_string('sizemb', '', NULL);
+old_get_string('sizekb', '', NULL);
+old_get_string('sizeb', '', NULL);
+old_get_string('maximumupload', '', NULL);
+old_get_string('coursehelpmaximumupload', '', NULL);
+old_get_string('metacourse', '', NULL);
+old_get_string('coursehelpmetacourse', '', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('enrolments', '', NULL);
+old_get_string('enrolname', 'enrol_manual', NULL);
+old_get_string('sitedefault', '', NULL);
+old_get_string('enrolname', 'enrol_manual', NULL);
+old_get_string('enrolmentplugins', '', NULL);
+old_get_string('coursehelpenrolmentplugins', '', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('enroldate', '', NULL);
+old_get_string('enrollable', '', NULL);
+old_get_string('coursehelpenrollable', '', NULL);
+old_get_string('unlimited', '', NULL);
+old_get_string('numdays', '', 1);
+old_get_string('numdays', '', 2);
+old_get_string('numdays', '', 3);
+old_get_string('numdays', '', 4);
+old_get_string('numdays', '', 5);
+old_get_string('numdays', '', 6);
+old_get_string('numdays', '', 7);
+old_get_string('numdays', '', 8);
+old_get_string('numdays', '', 9);
+old_get_string('numdays', '', 10);
+old_get_string('numdays', '', 11);
+old_get_string('numdays', '', 12);
+old_get_string('numdays', '', 13);
+old_get_string('numdays', '', 14);
+old_get_string('numdays', '', 15);
+old_get_string('numdays', '', 16);
+old_get_string('numdays', '', 17);
+old_get_string('numdays', '', 18);
+old_get_string('numdays', '', 19);
+old_get_string('numdays', '', 20);
+old_get_string('numdays', '', 21);
+old_get_string('numdays', '', 22);
+old_get_string('numdays', '', 23);
+old_get_string('numdays', '', 24);
+old_get_string('numdays', '', 25);
+old_get_string('numdays', '', 26);
+old_get_string('numdays', '', 27);
+old_get_string('numdays', '', 28);
+old_get_string('numdays', '', 29);
+old_get_string('numdays', '', 30);
+old_get_string('numdays', '', 31);
+old_get_string('numdays', '', 32);
+old_get_string('numdays', '', 33);
+old_get_string('numdays', '', 34);
+old_get_string('numdays', '', 35);
+old_get_string('numdays', '', 36);
+old_get_string('numdays', '', 37);
+old_get_string('numdays', '', 38);
+old_get_string('numdays', '', 39);
+old_get_string('numdays', '', 40);
+old_get_string('numdays', '', 41);
+old_get_string('numdays', '', 42);
+old_get_string('numdays', '', 43);
+old_get_string('numdays', '', 44);
+old_get_string('numdays', '', 45);
+old_get_string('numdays', '', 46);
+old_get_string('numdays', '', 47);
+old_get_string('numdays', '', 48);
+old_get_string('numdays', '', 49);
+old_get_string('numdays', '', 50);
+old_get_string('numdays', '', 51);
+old_get_string('numdays', '', 52);
+old_get_string('numdays', '', 53);
+old_get_string('numdays', '', 54);
+old_get_string('numdays', '', 55);
+old_get_string('numdays', '', 56);
+old_get_string('numdays', '', 57);
+old_get_string('numdays', '', 58);
+old_get_string('numdays', '', 59);
+old_get_string('numdays', '', 60);
+old_get_string('numdays', '', 61);
+old_get_string('numdays', '', 62);
+old_get_string('numdays', '', 63);
+old_get_string('numdays', '', 64);
+old_get_string('numdays', '', 65);
+old_get_string('numdays', '', 66);
+old_get_string('numdays', '', 67);
+old_get_string('numdays', '', 68);
+old_get_string('numdays', '', 69);
+old_get_string('numdays', '', 70);
+old_get_string('numdays', '', 71);
+old_get_string('numdays', '', 72);
+old_get_string('numdays', '', 73);
+old_get_string('numdays', '', 74);
+old_get_string('numdays', '', 75);
+old_get_string('numdays', '', 76);
+old_get_string('numdays', '', 77);
+old_get_string('numdays', '', 78);
+old_get_string('numdays', '', 79);
+old_get_string('numdays', '', 80);
+old_get_string('numdays', '', 81);
+old_get_string('numdays', '', 82);
+old_get_string('numdays', '', 83);
+old_get_string('numdays', '', 84);
+old_get_string('numdays', '', 85);
+old_get_string('numdays', '', 86);
+old_get_string('numdays', '', 87);
+old_get_string('numdays', '', 88);
+old_get_string('numdays', '', 89);
+old_get_string('numdays', '', 90);
+old_get_string('numdays', '', 91);
+old_get_string('numdays', '', 92);
+old_get_string('numdays', '', 93);
+old_get_string('numdays', '', 94);
+old_get_string('numdays', '', 95);
+old_get_string('numdays', '', 96);
+old_get_string('numdays', '', 97);
+old_get_string('numdays', '', 98);
+old_get_string('numdays', '', 99);
+old_get_string('numdays', '', 100);
+old_get_string('numdays', '', 101);
+old_get_string('numdays', '', 102);
+old_get_string('numdays', '', 103);
+old_get_string('numdays', '', 104);
+old_get_string('numdays', '', 105);
+old_get_string('numdays', '', 106);
+old_get_string('numdays', '', 107);
+old_get_string('numdays', '', 108);
+old_get_string('numdays', '', 109);
+old_get_string('numdays', '', 110);
+old_get_string('numdays', '', 111);
+old_get_string('numdays', '', 112);
+old_get_string('numdays', '', 113);
+old_get_string('numdays', '', 114);
+old_get_string('numdays', '', 115);
+old_get_string('numdays', '', 116);
+old_get_string('numdays', '', 117);
+old_get_string('numdays', '', 118);
+old_get_string('numdays', '', 119);
+old_get_string('numdays', '', 120);
+old_get_string('numdays', '', 121);
+old_get_string('numdays', '', 122);
+old_get_string('numdays', '', 123);
+old_get_string('numdays', '', 124);
+old_get_string('numdays', '', 125);
+old_get_string('numdays', '', 126);
+old_get_string('numdays', '', 127);
+old_get_string('numdays', '', 128);
+old_get_string('numdays', '', 129);
+old_get_string('numdays', '', 130);
+old_get_string('numdays', '', 131);
+old_get_string('numdays', '', 132);
+old_get_string('numdays', '', 133);
+old_get_string('numdays', '', 134);
+old_get_string('numdays', '', 135);
+old_get_string('numdays', '', 136);
+old_get_string('numdays', '', 137);
+old_get_string('numdays', '', 138);
+old_get_string('numdays', '', 139);
+old_get_string('numdays', '', 140);
+old_get_string('numdays', '', 141);
+old_get_string('numdays', '', 142);
+old_get_string('numdays', '', 143);
+old_get_string('numdays', '', 144);
+old_get_string('numdays', '', 145);
+old_get_string('numdays', '', 146);
+old_get_string('numdays', '', 147);
+old_get_string('numdays', '', 148);
+old_get_string('numdays', '', 149);
+old_get_string('numdays', '', 150);
+old_get_string('numdays', '', 151);
+old_get_string('numdays', '', 152);
+old_get_string('numdays', '', 153);
+old_get_string('numdays', '', 154);
+old_get_string('numdays', '', 155);
+old_get_string('numdays', '', 156);
+old_get_string('numdays', '', 157);
+old_get_string('numdays', '', 158);
+old_get_string('numdays', '', 159);
+old_get_string('numdays', '', 160);
+old_get_string('numdays', '', 161);
+old_get_string('numdays', '', 162);
+old_get_string('numdays', '', 163);
+old_get_string('numdays', '', 164);
+old_get_string('numdays', '', 165);
+old_get_string('numdays', '', 166);
+old_get_string('numdays', '', 167);
+old_get_string('numdays', '', 168);
+old_get_string('numdays', '', 169);
+old_get_string('numdays', '', 170);
+old_get_string('numdays', '', 171);
+old_get_string('numdays', '', 172);
+old_get_string('numdays', '', 173);
+old_get_string('numdays', '', 174);
+old_get_string('numdays', '', 175);
+old_get_string('numdays', '', 176);
+old_get_string('numdays', '', 177);
+old_get_string('numdays', '', 178);
+old_get_string('numdays', '', 179);
+old_get_string('numdays', '', 180);
+old_get_string('numdays', '', 181);
+old_get_string('numdays', '', 182);
+old_get_string('numdays', '', 183);
+old_get_string('numdays', '', 184);
+old_get_string('numdays', '', 185);
+old_get_string('numdays', '', 186);
+old_get_string('numdays', '', 187);
+old_get_string('numdays', '', 188);
+old_get_string('numdays', '', 189);
+old_get_string('numdays', '', 190);
+old_get_string('numdays', '', 191);
+old_get_string('numdays', '', 192);
+old_get_string('numdays', '', 193);
+old_get_string('numdays', '', 194);
+old_get_string('numdays', '', 195);
+old_get_string('numdays', '', 196);
+old_get_string('numdays', '', 197);
+old_get_string('numdays', '', 198);
+old_get_string('numdays', '', 199);
+old_get_string('numdays', '', 200);
+old_get_string('numdays', '', 201);
+old_get_string('numdays', '', 202);
+old_get_string('numdays', '', 203);
+old_get_string('numdays', '', 204);
+old_get_string('numdays', '', 205);
+old_get_string('numdays', '', 206);
+old_get_string('numdays', '', 207);
+old_get_string('numdays', '', 208);
+old_get_string('numdays', '', 209);
+old_get_string('numdays', '', 210);
+old_get_string('numdays', '', 211);
+old_get_string('numdays', '', 212);
+old_get_string('numdays', '', 213);
+old_get_string('numdays', '', 214);
+old_get_string('numdays', '', 215);
+old_get_string('numdays', '', 216);
+old_get_string('numdays', '', 217);
+old_get_string('numdays', '', 218);
+old_get_string('numdays', '', 219);
+old_get_string('numdays', '', 220);
+old_get_string('numdays', '', 221);
+old_get_string('numdays', '', 222);
+old_get_string('numdays', '', 223);
+old_get_string('numdays', '', 224);
+old_get_string('numdays', '', 225);
+old_get_string('numdays', '', 226);
+old_get_string('numdays', '', 227);
+old_get_string('numdays', '', 228);
+old_get_string('numdays', '', 229);
+old_get_string('numdays', '', 230);
+old_get_string('numdays', '', 231);
+old_get_string('numdays', '', 232);
+old_get_string('numdays', '', 233);
+old_get_string('numdays', '', 234);
+old_get_string('numdays', '', 235);
+old_get_string('numdays', '', 236);
+old_get_string('numdays', '', 237);
+old_get_string('numdays', '', 238);
+old_get_string('numdays', '', 239);
+old_get_string('numdays', '', 240);
+old_get_string('numdays', '', 241);
+old_get_string('numdays', '', 242);
+old_get_string('numdays', '', 243);
+old_get_string('numdays', '', 244);
+old_get_string('numdays', '', 245);
+old_get_string('numdays', '', 246);
+old_get_string('numdays', '', 247);
+old_get_string('numdays', '', 248);
+old_get_string('numdays', '', 249);
+old_get_string('numdays', '', 250);
+old_get_string('numdays', '', 251);
+old_get_string('numdays', '', 252);
+old_get_string('numdays', '', 253);
+old_get_string('numdays', '', 254);
+old_get_string('numdays', '', 255);
+old_get_string('numdays', '', 256);
+old_get_string('numdays', '', 257);
+old_get_string('numdays', '', 258);
+old_get_string('numdays', '', 259);
+old_get_string('numdays', '', 260);
+old_get_string('numdays', '', 261);
+old_get_string('numdays', '', 262);
+old_get_string('numdays', '', 263);
+old_get_string('numdays', '', 264);
+old_get_string('numdays', '', 265);
+old_get_string('numdays', '', 266);
+old_get_string('numdays', '', 267);
+old_get_string('numdays', '', 268);
+old_get_string('numdays', '', 269);
+old_get_string('numdays', '', 270);
+old_get_string('numdays', '', 271);
+old_get_string('numdays', '', 272);
+old_get_string('numdays', '', 273);
+old_get_string('numdays', '', 274);
+old_get_string('numdays', '', 275);
+old_get_string('numdays', '', 276);
+old_get_string('numdays', '', 277);
+old_get_string('numdays', '', 278);
+old_get_string('numdays', '', 279);
+old_get_string('numdays', '', 280);
+old_get_string('numdays', '', 281);
+old_get_string('numdays', '', 282);
+old_get_string('numdays', '', 283);
+old_get_string('numdays', '', 284);
+old_get_string('numdays', '', 285);
+old_get_string('numdays', '', 286);
+old_get_string('numdays', '', 287);
+old_get_string('numdays', '', 288);
+old_get_string('numdays', '', 289);
+old_get_string('numdays', '', 290);
+old_get_string('numdays', '', 291);
+old_get_string('numdays', '', 292);
+old_get_string('numdays', '', 293);
+old_get_string('numdays', '', 294);
+old_get_string('numdays', '', 295);
+old_get_string('numdays', '', 296);
+old_get_string('numdays', '', 297);
+old_get_string('numdays', '', 298);
+old_get_string('numdays', '', 299);
+old_get_string('numdays', '', 300);
+old_get_string('numdays', '', 301);
+old_get_string('numdays', '', 302);
+old_get_string('numdays', '', 303);
+old_get_string('numdays', '', 304);
+old_get_string('numdays', '', 305);
+old_get_string('numdays', '', 306);
+old_get_string('numdays', '', 307);
+old_get_string('numdays', '', 308);
+old_get_string('numdays', '', 309);
+old_get_string('numdays', '', 310);
+old_get_string('numdays', '', 311);
+old_get_string('numdays', '', 312);
+old_get_string('numdays', '', 313);
+old_get_string('numdays', '', 314);
+old_get_string('numdays', '', 315);
+old_get_string('numdays', '', 316);
+old_get_string('numdays', '', 317);
+old_get_string('numdays', '', 318);
+old_get_string('numdays', '', 319);
+old_get_string('numdays', '', 320);
+old_get_string('numdays', '', 321);
+old_get_string('numdays', '', 322);
+old_get_string('numdays', '', 323);
+old_get_string('numdays', '', 324);
+old_get_string('numdays', '', 325);
+old_get_string('numdays', '', 326);
+old_get_string('numdays', '', 327);
+old_get_string('numdays', '', 328);
+old_get_string('numdays', '', 329);
+old_get_string('numdays', '', 330);
+old_get_string('numdays', '', 331);
+old_get_string('numdays', '', 332);
+old_get_string('numdays', '', 333);
+old_get_string('numdays', '', 334);
+old_get_string('numdays', '', 335);
+old_get_string('numdays', '', 336);
+old_get_string('numdays', '', 337);
+old_get_string('numdays', '', 338);
+old_get_string('numdays', '', 339);
+old_get_string('numdays', '', 340);
+old_get_string('numdays', '', 341);
+old_get_string('numdays', '', 342);
+old_get_string('numdays', '', 343);
+old_get_string('numdays', '', 344);
+old_get_string('numdays', '', 345);
+old_get_string('numdays', '', 346);
+old_get_string('numdays', '', 347);
+old_get_string('numdays', '', 348);
+old_get_string('numdays', '', 349);
+old_get_string('numdays', '', 350);
+old_get_string('numdays', '', 351);
+old_get_string('numdays', '', 352);
+old_get_string('numdays', '', 353);
+old_get_string('numdays', '', 354);
+old_get_string('numdays', '', 355);
+old_get_string('numdays', '', 356);
+old_get_string('numdays', '', 357);
+old_get_string('numdays', '', 358);
+old_get_string('numdays', '', 359);
+old_get_string('numdays', '', 360);
+old_get_string('numdays', '', 361);
+old_get_string('numdays', '', 362);
+old_get_string('numdays', '', 363);
+old_get_string('numdays', '', 364);
+old_get_string('numdays', '', 365);
+old_get_string('enrolperiod', '', NULL);
+old_get_string('expirynotify', '', NULL);
+old_get_string('notify', '', NULL);
+old_get_string('coursehelpnotify', '', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('expirynotifystudents', '', NULL);
+old_get_string('coursehelpexpirynotifystudents', '', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('numdays', '', 1);
+old_get_string('numdays', '', 2);
+old_get_string('numdays', '', 3);
+old_get_string('numdays', '', 4);
+old_get_string('numdays', '', 5);
+old_get_string('numdays', '', 6);
+old_get_string('numdays', '', 7);
+old_get_string('numdays', '', 8);
+old_get_string('numdays', '', 9);
+old_get_string('numdays', '', 10);
+old_get_string('numdays', '', 11);
+old_get_string('numdays', '', 12);
+old_get_string('numdays', '', 13);
+old_get_string('numdays', '', 14);
+old_get_string('numdays', '', 15);
+old_get_string('numdays', '', 16);
+old_get_string('numdays', '', 17);
+old_get_string('numdays', '', 18);
+old_get_string('numdays', '', 19);
+old_get_string('numdays', '', 20);
+old_get_string('numdays', '', 21);
+old_get_string('numdays', '', 22);
+old_get_string('numdays', '', 23);
+old_get_string('numdays', '', 24);
+old_get_string('numdays', '', 25);
+old_get_string('numdays', '', 26);
+old_get_string('numdays', '', 27);
+old_get_string('numdays', '', 28);
+old_get_string('numdays', '', 29);
+old_get_string('numdays', '', 30);
+old_get_string('expirythreshold', '', NULL);
+old_get_string('coursehelpexpirythreshold', '', NULL);
+old_get_string('groups', 'group', NULL);
+old_get_string('groupsnone', 'group', NULL);
+old_get_string('groupsseparate', 'group', NULL);
+old_get_string('groupsvisible', 'group', NULL);
+old_get_string('groupmode', '', NULL);
+old_get_string('force', '', NULL);
+old_get_string('coursehelpforce', '', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('availability', '', NULL);
+old_get_string('courseavailablenot', '', NULL);
+old_get_string('courseavailable', '', NULL);
+old_get_string('visible', '', NULL);
+old_get_string('enrolmentkey', '', NULL);
+old_get_string('coursehelpenrolmentkey', '', NULL);
+old_get_string('guestsno', '', NULL);
+old_get_string('guestsyes', '', NULL);
+old_get_string('guestskey', '', NULL);
+old_get_string('opentoguests', '', NULL);
+old_get_string('language', '', NULL);
+old_get_string('forceno', '', NULL);
+old_get_string('forcelanguage', '', NULL);
+old_get_string('progress', 'completion', NULL);
+old_get_string('completion', 'completion', NULL);
+old_get_string('completiondisabled', 'completion', NULL);
+old_get_string('completionenabled', 'completion', NULL);
+old_get_string('courserequest', '', NULL);
+old_get_string('enablecourserequests', 'admin', NULL);
+old_get_string('configenablecourserequests', 'admin', NULL);
+old_get_string('defaultrequestcategory', 'admin', NULL);
+old_get_string('configdefaultrequestcategory', 'admin', NULL);
+old_get_string('courserequestnotify', 'admin', NULL);
+old_get_string('configcourserequestnotify2', 'admin', NULL);
+old_get_string('nobody', '', NULL);
+old_get_string('site:approvecourse', 'role', NULL);
+old_get_string('everyonewhocan', 'admin', 'Approve course creation');
+old_get_string('backups', 'admin', NULL);
+old_get_string('includemodules', '', NULL);
+old_get_string('backupincludemoduleshelp', '', NULL);
+old_get_string('includemoduleuserdata', '', NULL);
+old_get_string('backupincludemoduleuserdatahelp', '', NULL);
+old_get_string('metacourse', '', NULL);
+old_get_string('backupmetacoursehelp', '', NULL);
+old_get_string('users', '', NULL);
+old_get_string('backupusershelp', '', NULL);
+old_get_string('all', '', NULL);
+old_get_string('course', '', NULL);
+old_get_string('logs', '', NULL);
+old_get_string('backuplogshelp', '', NULL);
+old_get_string('userfiles', '', NULL);
+old_get_string('backupuserfileshelp', '', NULL);
+old_get_string('coursefiles', '', NULL);
+old_get_string('backupcoursefileshelp', '', NULL);
+old_get_string('sitefiles', '', NULL);
+old_get_string('backupsitefileshelp', '', NULL);
+old_get_string('gradebookhistories', 'grades', NULL);
+old_get_string('backupgradebookhistoryhelp', '', NULL);
+old_get_string('messages', 'message', NULL);
+old_get_string('backupmessageshelp', 'message', NULL);
+old_get_string('blogs', 'blog', NULL);
+old_get_string('backupblogshelp', 'blog', NULL);
+old_get_string('all', '', NULL);
+old_get_string('keep', '', NULL);
+old_get_string('backupkeephelp', '', NULL);
+old_get_string('active', '', NULL);
+old_get_string('backupactivehelp', '', NULL);
+old_get_string('schedule', '', NULL);
+old_get_string('backupschedulehelp', '', NULL);
+old_get_string('executeat', '', NULL);
+old_get_string('backupexecuteathelp', '', NULL);
+old_get_string('saveto', '', NULL);
+old_get_string('backupsavetohelp', '', NULL);
+old_get_string('experimental', 'admin', NULL);
+old_get_string('experimentalsettings', 'admin', NULL);
+old_get_string('enableglobalsearch', 'admin', NULL);
+old_get_string('configenableglobalsearch', 'admin', NULL);
+old_get_string('smartpix', 'admin', NULL);
+old_get_string('configsmartpix', 'admin', NULL);
+old_get_string('enablehtmlpurifier', 'admin', NULL);
+old_get_string('configenablehtmlpurifier', 'admin', NULL);
+old_get_string('experimentalsplitrestore', 'admin', NULL);
+old_get_string('configexperimentalsplitrestore', 'admin', NULL);
+old_get_string('dbtransfer', 'dbtransfer', NULL);
+old_get_string('dbexport', 'dbtransfer', NULL);
+old_get_string('xmldbeditor', '', NULL);
+old_get_string('frontpagesettings', 'admin', NULL);
+old_get_string('fullsitename', '', NULL);
+old_get_string('shortsitename', '', NULL);
+old_get_string('frontpagedescription', '', NULL);
+old_get_string('frontpagedescriptionhelp', '', NULL);
+old_get_string('frontpage', 'admin', NULL);
+old_get_string('configfrontpage', 'admin', NULL);
+old_get_string('frontpageloggedin', 'admin', NULL);
+old_get_string('configfrontpageloggedin', 'admin', NULL);
+old_get_string('unlimited', '', NULL);
+old_get_string('configsitemaxcategorydepth', 'admin', NULL);
+old_get_string('configsitemaxcategorydepthhelp', 'admin', NULL);
+old_get_string('sitesection', '', NULL);
+old_get_string('sitesectionhelp', 'admin', NULL);
+old_get_string('newsitemsnumber', '', NULL);
+old_get_string('coursesperpage', 'admin', NULL);
+old_get_string('configcoursesperpage', 'admin', NULL);
+old_get_string('allowvisiblecoursesinhiddencategories', 'admin', NULL);
+old_get_string('configvisiblecourses', 'admin', NULL);
+old_get_string('none', '', NULL);
+old_get_string('frontpagedefaultrole', 'admin', NULL);
+old_get_string('frontpageroles', 'admin', NULL);
+old_get_string('frontpagebackup', 'admin', NULL);
+old_get_string('frontpagerestore', 'admin', NULL);
+old_get_string('frontpagequestions', 'admin', NULL);
+old_get_string('sitefiles', '', NULL);
+old_get_string('real', 'grades', NULL);
+old_get_string('percentage', 'grades', NULL);
+old_get_string('letter', 'grades', NULL);
+old_get_string('realpercentage', 'grades', NULL);
+old_get_string('realletter', 'grades', NULL);
+old_get_string('letterreal', 'grades', NULL);
+old_get_string('letterpercentage', 'grades', NULL);
+old_get_string('percentageletter', 'grades', NULL);
+old_get_string('percentagereal', 'grades', NULL);
+old_get_string('generalsettings', 'grades', NULL);
+old_get_string('gradebookroles', 'admin', NULL);
+old_get_string('configgradebookroles', 'admin', NULL);
+old_get_string('profilereport', 'grades', NULL);
+old_get_string('configprofilereport', 'grades', NULL);
+old_get_string('aggregationposition', 'grades', NULL);
+old_get_string('configaggregationposition', 'grades', NULL);
+old_get_string('positionfirst', 'grades', NULL);
+old_get_string('positionlast', 'grades', NULL);
+old_get_string('includescalesinaggregation', 'grades', NULL);
+old_get_string('configincludescalesinaggregation', 'grades', NULL);
+old_get_string('hiddenasdate', 'grades', NULL);
+old_get_string('confighiddenasdate', 'grades', NULL);
+old_get_string('gradepublishing', 'grades', NULL);
+old_get_string('configgradepublishing', 'grades', NULL);
+old_get_string('gradeexportdisplaytype', 'grades', NULL);
+old_get_string('configgradeexportdisplaytype', 'grades', NULL);
+old_get_string('gradeexportdecimalpoints', 'grades', NULL);
+old_get_string('configexportdecimalpoints', 'grades', NULL);
+old_get_string('navmethod', 'grades', NULL);
+old_get_string('dropdown', 'grades', NULL);
+old_get_string('tabs', 'grades', NULL);
+old_get_string('combo', 'grades', NULL);
+old_get_string('gradeexport', 'admin', NULL);
+old_get_string('configgradeexport', 'admin', NULL);
+old_get_string('gradecategorysettings', 'grades', NULL);
+old_get_string('hideforcedsettings', 'grades', NULL);
+old_get_string('confighideforcedsettings', 'grades', NULL);
+old_get_string('noforce', 'grades', NULL);
+old_get_string('aggregatemean', 'grades', NULL);
+old_get_string('aggregateweightedmean', 'grades', NULL);
+old_get_string('aggregateweightedmean2', 'grades', NULL);
+old_get_string('aggregateextracreditmean', 'grades', NULL);
+old_get_string('aggregatemedian', 'grades', NULL);
+old_get_string('aggregatemin', 'grades', NULL);
+old_get_string('aggregatemax', 'grades', NULL);
+old_get_string('aggregatemode', 'grades', NULL);
+old_get_string('aggregatesum', 'grades', NULL);
+old_get_string('aggregation', 'grades', NULL);
+old_get_string('aggregationhelp', 'grades', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('aggregateonlygraded', 'grades', NULL);
+old_get_string('aggregateonlygradedhelp', 'grades', NULL);
+old_get_string('aggregateoutcomes', 'grades', NULL);
+old_get_string('aggregateoutcomeshelp', 'grades', NULL);
+old_get_string('aggregatesubcats', 'grades', NULL);
+old_get_string('aggregatesubcatshelp', 'grades', NULL);
+old_get_string('none', '', NULL);
+old_get_string('keephigh', 'grades', NULL);
+old_get_string('keephighhelp', 'grades', NULL);
+old_get_string('droplow', 'grades', NULL);
+old_get_string('droplowhelp', 'grades', NULL);
+old_get_string('gradeitemsettings', 'grades', NULL);
+old_get_string('gradedisplaytype', 'grades', NULL);
+old_get_string('configgradedisplaytype', 'grades', NULL);
+old_get_string('decimalpoints', 'grades', NULL);
+old_get_string('configdecimalpoints', 'grades', NULL);
+old_get_string('gradeitemadvanced', 'grades', NULL);
+old_get_string('configgradeitemadvanced', 'grades', NULL);
+old_get_string('iteminfo', 'grades', NULL);
+old_get_string('idnumbermod', '', NULL);
+old_get_string('gradetype', 'grades', NULL);
+old_get_string('scale', '', NULL);
+old_get_string('grademin', 'grades', NULL);
+old_get_string('grademax', 'grades', NULL);
+old_get_string('gradepass', 'grades', NULL);
+old_get_string('plusfactor', 'grades', NULL);
+old_get_string('multfactor', 'grades', NULL);
+old_get_string('gradedisplaytype', 'grades', NULL);
+old_get_string('decimalpoints', 'grades', NULL);
+old_get_string('hidden', 'grades', NULL);
+old_get_string('hiddenuntil', 'grades', NULL);
+old_get_string('locked', 'grades', NULL);
+old_get_string('locktime', 'grades', NULL);
+old_get_string('aggregationcoef', 'grades', NULL);
+old_get_string('parentcategory', 'grades', NULL);
+old_get_string('scales', '', NULL);
+old_get_string('outcomes', 'grades', NULL);
+old_get_string('letters', 'grades', NULL);
+old_get_string('reportsettings', 'grades', NULL);
+old_get_string('modulename', 'gradereport_grader', NULL);
+old_get_string('inherit', 'grades', NULL);
+old_get_string('percentage', 'grades', NULL);
+old_get_string('real', 'grades', NULL);
+old_get_string('letter', 'grades', NULL);
+old_get_string('inherit', 'grades', NULL);
+old_get_string('studentsperpage', 'grades', NULL);
+old_get_string('configstudentsperpage', 'grades', NULL);
+old_get_string('quickgrading', 'grades', NULL);
+old_get_string('configquickgrading', 'grades', NULL);
+old_get_string('quickfeedback', 'grades', NULL);
+old_get_string('configshowquickfeedback', 'grades', NULL);
+old_get_string('fixedstudents', 'grades', NULL);
+old_get_string('configfixedstudents', 'grades', NULL);
+old_get_string('aggregationview', 'grades', NULL);
+old_get_string('configaggregationview', 'grades', NULL);
+old_get_string('full', 'grades', NULL);
+old_get_string('aggregatesonly', 'grades', NULL);
+old_get_string('gradesonly', 'grades', NULL);
+old_get_string('meanselection', 'grades', NULL);
+old_get_string('configmeanselection', 'grades', NULL);
+old_get_string('meanall', 'grades', NULL);
+old_get_string('meangraded', 'grades', NULL);
+old_get_string('enableajax', 'grades', NULL);
+old_get_string('configenableajax', 'grades', NULL);
+old_get_string('showcalculations', 'grades', NULL);
+old_get_string('configshowcalculations', 'grades', NULL);
+old_get_string('showeyecons', 'grades', NULL);
+old_get_string('configshoweyecons', 'grades', NULL);
+old_get_string('showaverages', 'grades', NULL);
+old_get_string('configshowaverages', 'grades', NULL);
+old_get_string('showgroups', 'grades', NULL);
+old_get_string('configshowgroups', 'grades', NULL);
+old_get_string('showlocks', 'grades', NULL);
+old_get_string('configshowlocks', 'grades', NULL);
+old_get_string('showranges', 'grades', NULL);
+old_get_string('configshowranges', 'grades', NULL);
+old_get_string('showuserimage', 'grades', NULL);
+old_get_string('configshowuserimage', 'grades', NULL);
+old_get_string('showuseridnumber', 'grades', NULL);
+old_get_string('configshowuseridnumber', 'grades', NULL);
+old_get_string('showactivityicons', 'grades', NULL);
+old_get_string('configshowactivityicons', 'grades', NULL);
+old_get_string('shownumberofgrades', 'grades', NULL);
+old_get_string('configshownumberofgrades', 'grades', NULL);
+old_get_string('averagesdisplaytype', 'grades', NULL);
+old_get_string('configaveragesdisplaytype', 'grades', NULL);
+old_get_string('rangesdisplaytype', 'grades', NULL);
+old_get_string('configrangesdisplaytype', 'grades', NULL);
+old_get_string('averagesdecimalpoints', 'grades', NULL);
+old_get_string('configaveragesdecimalpoints', 'grades', NULL);
+old_get_string('rangesdecimalpoints', 'grades', NULL);
+old_get_string('configrangesdecimalpoints', 'grades', NULL);
+old_get_string('modulename', 'gradereport_overview', NULL);
+old_get_string('showrank', 'grades', NULL);
+old_get_string('configshowrank', 'grades', NULL);
+old_get_string('modulename', 'gradereport_stats', NULL);
+old_get_string('statsshow', 'gradereport_stats', NULL);
+old_get_string('aggregationposition', 'grades', NULL);
+old_get_string('configaggregationposition', 'grades', NULL);
+old_get_string('positionfirst', 'grades', NULL);
+old_get_string('positionlast', 'grades', NULL);
+old_get_string('highest', 'gradereport_stats', NULL);
+old_get_string('stats:stat:highest', 'gradereport_stats', NULL);
+old_get_string('lowest', 'gradereport_stats', NULL);
+old_get_string('stats:stat:lowest', 'gradereport_stats', NULL);
+old_get_string('mean', 'gradereport_stats', NULL);
+old_get_string('stats:stat:mean', 'gradereport_stats', NULL);
+old_get_string('median', 'gradereport_stats', NULL);
+old_get_string('stats:stat:median', 'gradereport_stats', NULL);
+old_get_string('mode', 'gradereport_stats', NULL);
+old_get_string('stats:stat:mode', 'gradereport_stats', NULL);
+old_get_string('pass_percent', 'gradereport_stats', NULL);
+old_get_string('stats:stat:passpercent', 'gradereport_stats', NULL);
+old_get_string('standarddeviation', 'gradereport_stats', NULL);
+old_get_string('stats:stat:standarddeviation', 'gradereport_stats', NULL);
+old_get_string('showgroups', 'gradereport_stats', NULL);
+old_get_string('showgroups', 'gradereport_stats', NULL);
+old_get_string('showranges', 'gradereport_stats', NULL);
+old_get_string('showranges', 'gradereport_stats', NULL);
+old_get_string('shownumgrades', 'gradereport_stats', NULL);
+old_get_string('shownumgrades', 'gradereport_stats', NULL);
+old_get_string('showscaleitems', 'gradereport_stats', NULL);
+old_get_string('showscaleitems', 'gradereport_stats', NULL);
+old_get_string('showvalueitems', 'gradereport_stats', NULL);
+old_get_string('showvalueitems', 'gradereport_stats', NULL);
+old_get_string('showinverted', 'gradereport_stats', NULL);
+old_get_string('showinverted', 'gradereport_stats', NULL);
+old_get_string('incompleasmin', 'gradereport_stats', NULL);
+old_get_string('incompleasmin', 'gradereport_stats', NULL);
+old_get_string('usehidden', 'gradereport_stats', NULL);
+old_get_string('usehidden', 'gradereport_stats', NULL);
+old_get_string('uselocked', 'gradereport_stats', NULL);
+old_get_string('uselocked', 'gradereport_stats', NULL);
+old_get_string('modulename', 'gradereport_user', NULL);
+old_get_string('showrank', 'grades', NULL);
+old_get_string('configshowrank', 'grades', NULL);
+old_get_string('showpercentage', 'grades', NULL);
+old_get_string('configshowpercentage', 'grades', NULL);
+old_get_string('shownohidden', 'grades', NULL);
+old_get_string('showhiddenuntilonly', 'grades', NULL);
+old_get_string('showallhidden', 'grades', NULL);
+old_get_string('showhiddenitems', 'grades', NULL);
+old_get_string('configshowhiddenitems', 'grades', NULL);
+old_get_string('importsettings', 'grades', NULL);
+old_get_string('exportsettings', 'grades', NULL);
+old_get_string('languagesettings', 'admin', NULL);
+old_get_string('autolang', 'admin', NULL);
+old_get_string('configautolang', 'admin', NULL);
+old_get_string('lang', 'admin', NULL);
+old_get_string('configlang', 'admin', NULL);
+old_get_string('langmenu', 'admin', NULL);
+old_get_string('configlangmenu', 'admin', NULL);
+old_get_string('langlist', 'admin', NULL);
+old_get_string('configlanglist', 'admin', NULL);
+old_get_string('langcache', 'admin', NULL);
+old_get_string('configlangcache', 'admin', NULL);
+old_get_string('localetext', 'admin', NULL);
+old_get_string('configlocale', 'admin', NULL);
+old_get_string('latinexcelexport', 'admin', NULL);
+old_get_string('configlatinexcelexport', 'admin', NULL);
+old_get_string('langedit', 'admin', NULL);
+old_get_string('langpacks', 'admin', NULL);
+old_get_string('multilangupgrade', 'admin', NULL);
+old_get_string('locationsettings', 'admin', NULL);
+old_get_string('serverlocaltime', '', NULL);
+old_get_string('timezone', 'admin', NULL);
+old_get_string('configtimezone', 'admin', NULL);
+old_get_string('timezonenotforced', 'admin', NULL);
+old_get_string('forcetimezone', 'admin', NULL);
+old_get_string('helpforcetimezone', 'admin', NULL);
+old_get_string('choose', '', NULL);
+old_get_string('country', 'admin', NULL);
+old_get_string('configcountry', 'admin', NULL);
+old_get_string('iplookup', 'admin', NULL);
+old_get_string('iplookupinfo', 'admin', NULL);
+old_get_string('geoipfile', 'admin', NULL);
+old_get_string('configgeoipfile', 'admin', '/var/www/moodledata/geoip/');
+old_get_string('googlemapkey', 'admin', NULL);
+old_get_string('configgooglemapkey', 'admin', 'http://tim.moodle.com/moodle');
+old_get_string('updatetimezones', 'admin', NULL);
+old_get_string('settings', 'mnet', NULL);
+old_get_string('mnetpeers', 'mnet', NULL);
+old_get_string('ssoaccesscontrol', 'mnet', NULL);
+old_get_string('mnetenrol', 'mnet', NULL);
+old_get_string('trustedhosts', 'mnet', NULL);
+old_get_string('ipblocker', 'admin', NULL);
+old_get_string('allowbeforeblock', 'admin', NULL);
+old_get_string('allowbeforeblockdesc', 'admin', NULL);
+old_get_string('allowediplist', 'admin', NULL);
+old_get_string('blockediplist', 'admin', NULL);
+old_get_string('webservices', 'admin', NULL);
+old_get_string('webserviceprotocols', 'admin', NULL);
+old_get_string('managewsprotocols', 'admin', NULL);
+old_get_string('managews', 'admin', NULL);
+old_get_string('webservicesystemsettings', 'admin', NULL);
+old_get_string('ipwhitelist', 'admin', NULL);
+old_get_string('webserviceusersettings', 'admin', NULL);
+old_get_string('managewsusersettings', 'admin', NULL);
+old_get_string('sitepolicies', 'admin', NULL);
+old_get_string('protectusernames', 'admin', NULL);
+old_get_string('configprotectusernames', 'admin', NULL);
+old_get_string('forcelogin', 'admin', NULL);
+old_get_string('configforcelogin', 'admin', NULL);
+old_get_string('forceloginforprofiles', 'admin', NULL);
+old_get_string('configforceloginforprofiles', 'admin', NULL);
+old_get_string('opentogoogle', 'admin', NULL);
+old_get_string('configopentogoogle', 'admin', NULL);
+old_get_string('serverlimit', 'admin', NULL);
+old_get_string('maxbytes', 'admin', NULL);
+old_get_string('configmaxbytes', 'admin', NULL);
+old_get_string('allowobjectembed', 'admin', NULL);
+old_get_string('configallowobjectembed', 'admin', NULL);
+old_get_string('enabletrusttext', 'admin', NULL);
+old_get_string('configenabletrusttext', 'admin', NULL);
+old_get_string('maxeditingtime', 'admin', NULL);
+old_get_string('configmaxeditingtime', 'admin', NULL);
+old_get_string('numminutes', '', 1);
+old_get_string('numminutes', '', 5);
+old_get_string('numminutes', '', 15);
+old_get_string('numminutes', '', 30);
+old_get_string('numminutes', '', 45);
+old_get_string('numminutes', '', 60);
+old_get_string('fullnamedisplay', 'admin', NULL);
+old_get_string('configfullnamedisplay', 'admin', NULL);
+old_get_string('language', '', NULL);
+old_get_string('firstname', '', NULL);
+old_get_string('lastname', '', NULL);
+old_get_string('lastname', '', NULL);
+old_get_string('firstname', '', NULL);
+old_get_string('firstname', '', NULL);
+old_get_string('extendedusernamechars', 'admin', NULL);
+old_get_string('configextendedusernamechars', 'admin', NULL);
+old_get_string('sitepolicy', 'admin', NULL);
+old_get_string('configsitepolicy', 'admin', NULL);
+old_get_string('keeptagnamecase', 'admin', NULL);
+old_get_string('configkeeptagnamecase', 'admin', NULL);
+old_get_string('profilesforenrolledusersonly', 'admin', NULL);
+old_get_string('configprofilesforenrolledusersonly', 'admin', NULL);
+old_get_string('cronclionly', 'admin', NULL);
+old_get_string('configcronclionly', 'admin', NULL);
+old_get_string('cronremotepassword', 'admin', NULL);
+old_get_string('configcronremotepassword', 'admin', NULL);
+old_get_string('passwordpolicy', 'admin', NULL);
+old_get_string('configpasswordpolicy', 'admin', NULL);
+old_get_string('minpasswordlength', 'admin', NULL);
+old_get_string('configminpasswordlength', 'admin', NULL);
+old_get_string('minpassworddigits', 'admin', NULL);
+old_get_string('configminpassworddigits', 'admin', NULL);
+old_get_string('minpasswordlower', 'admin', NULL);
+old_get_string('configminpasswordlower', 'admin', NULL);
+old_get_string('minpasswordupper', 'admin', NULL);
+old_get_string('configminpasswordupper', 'admin', NULL);
+old_get_string('minpasswordnonalphanum', 'admin', NULL);
+old_get_string('configminpasswordnonalphanum', 'admin', NULL);
+old_get_string('disableuserimages', 'admin', NULL);
+old_get_string('configdisableuserimages', 'admin', NULL);
+old_get_string('emailchangeconfirmation', 'admin', NULL);
+old_get_string('configemailchangeconfirmation', 'admin', NULL);
+old_get_string('httpsecurity', 'admin', NULL);
+old_get_string('loginhttps', 'admin', NULL);
+old_get_string('configloginhttps', 'admin', NULL);
+old_get_string('cookiesecure', 'admin', NULL);
+old_get_string('configcookiesecure', 'admin', NULL);
+old_get_string('cookiehttponly', 'admin', NULL);
+old_get_string('configcookiehttponly', 'admin', NULL);
+old_get_string('modulesecurity', 'admin', NULL);
+old_get_string('restrictmodulesfor', 'admin', NULL);
+old_get_string('configrestrictmodulesfor', 'admin', NULL);
+old_get_string('restrictbydefault', 'admin', NULL);
+old_get_string('configrestrictbydefault', 'admin', NULL);
+old_get_string('defaultallowedmodules', 'admin', NULL);
+old_get_string('configdefaultallowedmodules', 'admin', NULL);
+old_get_string('notifications', 'admin', NULL);
+old_get_string('displayloginfailures', 'admin', NULL);
+old_get_string('configdisplayloginfailures', 'admin', NULL);
+old_get_string('nobody', '', NULL);
+old_get_string('administrators', '', NULL);
+old_get_string('administratorsandteachers', '', NULL);
+old_get_string('everybody', '', NULL);
+old_get_string('notifyloginfailures', 'admin', NULL);
+old_get_string('confignotifyloginfailures', 'admin', NULL);
+old_get_string('nobody', '', NULL);
+old_get_string('site:config', 'role', NULL);
+old_get_string('everyonewhocan', 'admin', 'Change site configuration');
+old_get_string('notifyloginthreshold', 'admin', NULL);
+old_get_string('confignotifyloginthreshold', 'admin', NULL);
+old_get_string('antivirus', 'admin', NULL);
+old_get_string('runclamavonupload', 'admin', NULL);
+old_get_string('configrunclamavonupload', 'admin', NULL);
+old_get_string('pathtoclam', 'admin', NULL);
+old_get_string('configpathtoclam', 'admin', NULL);
+old_get_string('quarantinedir', 'admin', NULL);
+old_get_string('configquarantinedir', 'admin', NULL);
+old_get_string('clamfailureonupload', 'admin', NULL);
+old_get_string('configclamfailureonupload', 'admin', NULL);
+old_get_string('configclamdonothing', 'admin', NULL);
+old_get_string('configclamactlikevirus', 'admin', NULL);
+old_get_string('systempaths', 'admin', NULL);
+old_get_string('gdversion', 'admin', NULL);
+old_get_string('configgdversion', 'admin', NULL);
+old_get_string('gdnot', '', NULL);
+old_get_string('gd1', '', NULL);
+old_get_string('gd2', '', NULL);
+old_get_string('pathtodu', 'admin', NULL);
+old_get_string('configpathtodu', 'admin', NULL);
+old_get_string('aspellpath', 'admin', NULL);
+old_get_string('edhelpaspellpath', '', NULL);
+old_get_string('mail', 'admin', NULL);
+old_get_string('smtphosts', 'admin', NULL);
+old_get_string('configsmtphosts', 'admin', NULL);
+old_get_string('smtpuser', 'admin', NULL);
+old_get_string('configsmtpuser', 'admin', NULL);
+old_get_string('smtppass', 'admin', NULL);
+old_get_string('configsmtpuser', 'admin', NULL);
+old_get_string('smtpmaxbulk', 'admin', NULL);
+old_get_string('configsmtpmaxbulk', 'admin', NULL);
+old_get_string('noreplyaddress', 'admin', NULL);
+old_get_string('confignoreplyaddress', 'admin', NULL);
+old_get_string('digestmailtime', 'admin', NULL);
+old_get_string('configdigestmailtime', 'admin', NULL);
+old_get_string('sitemailcharset', 'admin', NULL);
+old_get_string('configsitemailcharset', 'admin', NULL);
+old_get_string('allowusermailcharset', 'admin', NULL);
+old_get_string('configallowusermailcharset', 'admin', NULL);
+old_get_string('mailnewline', 'admin', NULL);
+old_get_string('configmailnewline', 'admin', NULL);
+old_get_string('supportname', 'admin', NULL);
+old_get_string('configsupportname', 'admin', NULL);
+old_get_string('supportemail', 'admin', NULL);
+old_get_string('configsupportemail', 'admin', NULL);
+old_get_string('supportpage', 'admin', NULL);
+old_get_string('configsupportpage', 'admin', NULL);
+old_get_string('sessionhandling', 'admin', NULL);
+old_get_string('dbsessions', 'admin', NULL);
+old_get_string('configdbsessions', 'admin', NULL);
+old_get_string('sessiontimeout', 'admin', NULL);
+old_get_string('configsessiontimeout', 'admin', NULL);
+old_get_string('numhours', '', 4);
+old_get_string('numhours', '', 3);
+old_get_string('numhours', '', 2);
+old_get_string('numhours', '', '1.5');
+old_get_string('numminutes', '', 60);
+old_get_string('numminutes', '', 45);
+old_get_string('numminutes', '', 30);
+old_get_string('numminutes', '', 15);
+old_get_string('numminutes', '', 5);
+old_get_string('sessioncookie', 'admin', NULL);
+old_get_string('configsessioncookie', 'admin', NULL);
+old_get_string('sessioncookiepath', 'admin', NULL);
+old_get_string('configsessioncookiepath', 'admin', NULL);
+old_get_string('sessioncookiedomain', 'admin', NULL);
+old_get_string('configsessioncookiedomain', 'admin', NULL);
+old_get_string('debugging', 'admin', NULL);
+old_get_string('debug', 'admin', NULL);
+old_get_string('configdebug', 'admin', NULL);
+old_get_string('debugdisplay', 'admin', NULL);
+old_get_string('configdebugdisplay', 'admin', NULL);
+old_get_string('xmlstrictheaders', 'admin', NULL);
+old_get_string('configxmlstrictheaders', 'admin', NULL);
+old_get_string('debugsmtp', 'admin', NULL);
+old_get_string('configdebugsmtp', 'admin', NULL);
+old_get_string('perfdebug', 'admin', NULL);
+old_get_string('configperfdebug', 'admin', NULL);
+old_get_string('stats', '', NULL);
+old_get_string('statsfirstrun', 'admin', NULL);
+old_get_string('configstatsfirstrun', 'admin', NULL);
+old_get_string('none', '', NULL);
+old_get_string('numweeks', 'moodle', 1);
+old_get_string('numweeks', 'moodle', 2);
+old_get_string('numweeks', 'moodle', 3);
+old_get_string('nummonths', 'moodle', 1);
+old_get_string('nummonths', 'moodle', 2);
+old_get_string('nummonths', 'moodle', 3);
+old_get_string('nummonths', 'moodle', 4);
+old_get_string('nummonths', 'moodle', 5);
+old_get_string('nummonths', 'moodle', 6);
+old_get_string('all', '', NULL);
+old_get_string('statsmaxruntime', 'admin', NULL);
+old_get_string('configstatsmaxruntime3', 'admin', NULL);
+old_get_string('untilcomplete', '', NULL);
+old_get_string('minutes', '', NULL);
+old_get_string('minutes', '', NULL);
+old_get_string('hour', '', NULL);
+old_get_string('hours', '', NULL);
+old_get_string('hours', '', NULL);
+old_get_string('hours', '', NULL);
+old_get_string('hours', '', NULL);
+old_get_string('hours', '', NULL);
+old_get_string('hours', '', NULL);
+old_get_string('hours', '', NULL);
+old_get_string('statsruntimedays', 'admin', NULL);
+old_get_string('configstatsruntimedays', 'admin', NULL);
+old_get_string('statsruntimestart', 'admin', NULL);
+old_get_string('configstatsruntimestart', 'admin', NULL);
+old_get_string('statsuserthreshold', 'admin', NULL);
+old_get_string('configstatsuserthreshold', 'admin', NULL);
+old_get_string('statscatdepth', 'admin', NULL);
+old_get_string('configstatscatdepth', 'admin', NULL);
+old_get_string('http', 'admin', NULL);
+old_get_string('framename', 'admin', NULL);
+old_get_string('configframename', 'admin', NULL);
+old_get_string('slasharguments', 'admin', NULL);
+old_get_string('configslasharguments', 'admin', NULL);
+old_get_string('reverseproxy', 'admin', NULL);
+old_get_string('getremoteaddrconf', 'admin', NULL);
+old_get_string('configgetremoteaddrconf', 'admin', NULL);
+old_get_string('webproxy', 'admin', NULL);
+old_get_string('webproxyinfo', 'admin', NULL);
+old_get_string('proxyhost', 'admin', NULL);
+old_get_string('configproxyhost', 'admin', NULL);
+old_get_string('proxyport', 'admin', NULL);
+old_get_string('configproxyport', 'admin', NULL);
+old_get_string('proxytype', 'admin', NULL);
+old_get_string('configproxytype', 'admin', NULL);
+old_get_string('proxyuser', 'admin', NULL);
+old_get_string('configproxyuser', 'admin', NULL);
+old_get_string('proxypassword', 'admin', NULL);
+old_get_string('configproxypassword', 'admin', NULL);
+old_get_string('proxybypass', 'admin', NULL);
+old_get_string('configproxybypass', 'admin', NULL);
+old_get_string('sitemaintenancemode', 'admin', NULL);
+old_get_string('cleanup', 'admin', NULL);
+old_get_string('longtimenosee', 'admin', NULL);
+old_get_string('configlongtimenosee', 'admin', NULL);
+old_get_string('never', '', NULL);
+old_get_string('numdays', '', 1000);
+old_get_string('numdays', '', 365);
+old_get_string('numdays', '', 180);
+old_get_string('numdays', '', 150);
+old_get_string('numdays', '', 120);
+old_get_string('numdays', '', 90);
+old_get_string('numdays', '', 60);
+old_get_string('numdays', '', 30);
+old_get_string('numdays', '', 21);
+old_get_string('numdays', '', 14);
+old_get_string('numdays', '', 7);
+old_get_string('deleteunconfirmed', 'admin', NULL);
+old_get_string('configdeleteunconfirmed', 'admin', NULL);
+old_get_string('never', '', NULL);
+old_get_string('numdays', '', 7);
+old_get_string('numdays', '', 6);
+old_get_string('numdays', '', 5);
+old_get_string('numdays', '', 4);
+old_get_string('numdays', '', 3);
+old_get_string('numdays', '', 2);
+old_get_string('numdays', '', 1);
+old_get_string('numhours', '', 12);
+old_get_string('numhours', '', 6);
+old_get_string('numhours', '', 1);
+old_get_string('deleteincompleteusers', 'admin', NULL);
+old_get_string('configdeleteincompleteusers', 'admin', NULL);
+old_get_string('never', '', NULL);
+old_get_string('numdays', '', 7);
+old_get_string('numdays', '', 6);
+old_get_string('numdays', '', 5);
+old_get_string('numdays', '', 4);
+old_get_string('numdays', '', 3);
+old_get_string('numdays', '', 2);
+old_get_string('numdays', '', 1);
+old_get_string('loglifetime', 'admin', NULL);
+old_get_string('configloglifetime', 'admin', NULL);
+old_get_string('neverdeletelogs', '', NULL);
+old_get_string('numdays', '', 1000);
+old_get_string('numdays', '', 365);
+old_get_string('numdays', '', 180);
+old_get_string('numdays', '', 150);
+old_get_string('numdays', '', 120);
+old_get_string('numdays', '', 90);
+old_get_string('numdays', '', 60);
+old_get_string('numdays', '', 35);
+old_get_string('numdays', '', 10);
+old_get_string('numdays', '', 5);
+old_get_string('numdays', '', 2);
+old_get_string('disablegradehistory', 'grades', NULL);
+old_get_string('configdisablegradehistory', 'grades', NULL);
+old_get_string('gradehistorylifetime', 'grades', NULL);
+old_get_string('configgradehistorylifetime', 'grades', NULL);
+old_get_string('neverdeletehistory', 'grades', NULL);
+old_get_string('numdays', '', 1000);
+old_get_string('numdays', '', 365);
+old_get_string('numdays', '', 180);
+old_get_string('numdays', '', 150);
+old_get_string('numdays', '', 120);
+old_get_string('numdays', '', 90);
+old_get_string('numdays', '', 60);
+old_get_string('numdays', '', 30);
+old_get_string('environment', 'admin', NULL);
+old_get_string('phpinfo', '', NULL);
+old_get_string('performance', 'admin', NULL);
+old_get_string('cachetype', 'admin', NULL);
+old_get_string('configcachetype', 'admin', NULL);
+old_get_string('none', '', NULL);
+old_get_string('rcache', 'admin', NULL);
+old_get_string('configrcache', 'admin', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('rcachettl', 'admin', NULL);
+old_get_string('configrcachettl', 'admin', NULL);
+old_get_string('intcachemax', 'admin', NULL);
+old_get_string('configintcachemax', 'admin', NULL);
+old_get_string('memcachedhosts', 'admin', NULL);
+old_get_string('configmemcachedhosts', 'admin', NULL);
+old_get_string('memcachedpconn', 'admin', NULL);
+old_get_string('configmemcachedpconn', 'admin', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('registration', 'admin', NULL);
+old_get_string('enablegroupings', 'admin', NULL);
+old_get_string('configenablegroupings', 'admin', NULL);
+old_get_string('enableoutcomes', 'grades', NULL);
+old_get_string('configenableoutcomes', 'grades', NULL);
+old_get_string('usetags', 'admin', NULL);
+old_get_string('configusetags', 'admin', NULL);
+old_get_string('enablenotes', 'notes', NULL);
+old_get_string('configenablenotes', 'notes', NULL);
+old_get_string('enabled', 'portfolio', NULL);
+old_get_string('enableddesc', 'portfolio', NULL);
+old_get_string('enablewebservices', 'admin', NULL);
+old_get_string('configenablewebservices', 'admin', NULL);
+old_get_string('messaging', 'admin', NULL);
+old_get_string('configmessaging', 'admin', NULL);
+old_get_string('enablestats', 'admin', NULL);
+old_get_string('configenablestats', 'admin', NULL);
+old_get_string('enablerssfeeds', 'admin', NULL);
+old_get_string('configenablerssfeeds', 'admin', NULL);
+old_get_string('bloglevel', 'admin', NULL);
+old_get_string('configbloglevel', 'admin', NULL);
+old_get_string('worldblogs', 'blog', NULL);
+old_get_string('siteblogs', 'blog', NULL);
+old_get_string('courseblogs', 'blog', NULL);
+old_get_string('groupblogs', 'blog', NULL);
+old_get_string('personalblogs', 'blog', NULL);
+old_get_string('disableblogs', 'blog', NULL);
+old_get_string('off', 'mnet', NULL);
+old_get_string('on', 'mnet', NULL);
+old_get_string('net', 'mnet', NULL);
+old_get_string('configmnet', 'mnet', NULL);
+old_get_string('enablecompletion', 'completion', NULL);
+old_get_string('configenablecompletion', 'completion', NULL);
+old_get_string('progresstrackedroles', 'completion', NULL);
+old_get_string('configprogresstrackedroles', 'completion', NULL);
+old_get_string('enableavailability', 'condition', NULL);
+old_get_string('configenableavailability', 'condition', NULL);
+old_get_string('healthcenter', '', NULL);
+old_get_string('authentication', 'admin', NULL);
+old_get_string('accounts', 'admin', NULL);
+old_get_string('permissions', 'role', NULL);
+old_get_string('authsettings', 'admin', NULL);
+old_get_string('authsettings', 'admin', NULL);
+old_get_string('commonsettings', 'admin', NULL);
+old_get_string('selfregistration', 'auth', NULL);
+old_get_string('selfregistration_help', 'auth', NULL);
+old_get_string('guestloginbutton', 'auth', NULL);
+old_get_string('showguestlogin', 'auth', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('alternateloginurl', 'auth', NULL);
+old_get_string('alternatelogin', 'auth', 'http://tim.moodle.com/moodle/login/index.php');
+old_get_string('forgottenpasswordurl', 'auth', NULL);
+old_get_string('forgottenpassword', 'auth', NULL);
+old_get_string('instructions', 'auth', NULL);
+old_get_string('authinstructions', 'auth', NULL);
+old_get_string('allowemailaddresses', 'admin', NULL);
+old_get_string('configallowemailaddresses', 'admin', NULL);
+old_get_string('denyemailaddresses', 'admin', NULL);
+old_get_string('configdenyemailaddresses', 'admin', NULL);
+old_get_string('verifychangedemail', 'admin', NULL);
+old_get_string('configverifychangedemail', 'admin', NULL);
+old_get_string('recaptchapublickey', 'admin', NULL);
+old_get_string('configrecaptchapublickey', 'admin', NULL);
+old_get_string('recaptchaprivatekey', 'admin', NULL);
+old_get_string('configrecaptchaprivatekey', 'admin', NULL);
+old_get_string('auth_castitle', 'auth', NULL);
+old_get_string('auth_dbtitle', 'auth', NULL);
+old_get_string('auth_emailtitle', 'auth', NULL);
+old_get_string('auth_fctitle', 'auth', NULL);
+old_get_string('auth_imaptitle', 'auth', NULL);
+old_get_string('auth_ldaptitle', 'auth', NULL);
+old_get_string('auth_manualtitle', 'auth', NULL);
+old_get_string('auth_mnettitle', 'auth', NULL);
+old_get_string('auth_nntptitle', 'auth', NULL);
+old_get_string('auth_nologintitle', 'auth', NULL);
+old_get_string('auth_nonetitle', 'auth', NULL);
+old_get_string('auth_pamtitle', 'auth', NULL);
+old_get_string('auth_pop3title', 'auth', NULL);
+old_get_string('auth_radiustitle', 'auth', NULL);
+old_get_string('auth_shibbolethtitle', 'auth', NULL);
+old_get_string('userlist', 'admin', NULL);
+old_get_string('userbulk', 'admin', NULL);
+old_get_string('addnewuser', '', NULL);
+old_get_string('uploadusers', '', NULL);
+old_get_string('uploadpictures', 'admin', NULL);
+old_get_string('profilefields', 'admin', NULL);
+old_get_string('userpolicies', 'admin', NULL);
+old_get_string('notloggedinroleid', 'admin', NULL);
+old_get_string('confignotloggedinroleid', 'admin', NULL);
+old_get_string('guestroleid', 'admin', NULL);
+old_get_string('configguestroleid', 'admin', NULL);
+old_get_string('defaultuserroleid', 'admin', NULL);
+old_get_string('configdefaultuserroleid', 'admin', NULL);
+old_get_string('nodefaultuserrolelists', 'admin', NULL);
+old_get_string('confignodefaultuserrolelists', 'admin', NULL);
+old_get_string('defaultcourseroleid', 'admin', NULL);
+old_get_string('configdefaultcourseroleid', 'admin', NULL);
+old_get_string('creatornewroleid', 'admin', NULL);
+old_get_string('configcreatornewroleid', 'admin', NULL);
+old_get_string('autologinguests', 'admin', NULL);
+old_get_string('configautologinguests', 'admin', NULL);
+old_get_string('nonmetacoursesyncroleids', 'admin', NULL);
+old_get_string('confignonmetacoursesyncroleids', 'admin', NULL);
+old_get_string('hiddenuserfields', 'admin', NULL);
+old_get_string('confighiddenuserfields', 'admin', NULL);
+old_get_string('description', '', NULL);
+old_get_string('city', '', NULL);
+old_get_string('country', '', NULL);
+old_get_string('webpage', '', NULL);
+old_get_string('icqnumber', '', NULL);
+old_get_string('skypeid', '', NULL);
+old_get_string('yahooid', '', NULL);
+old_get_string('aimid', '', NULL);
+old_get_string('msnid', '', NULL);
+old_get_string('firstaccess', '', NULL);
+old_get_string('lastaccess', '', NULL);
+old_get_string('mycourses', '', NULL);
+old_get_string('extrauserselectorfields', 'admin', NULL);
+old_get_string('configextrauserselectorfields', 'admin', NULL);
+old_get_string('email', '', NULL);
+old_get_string('idnumber', '', NULL);
+old_get_string('username', '', NULL);
+old_get_string('defineroles', 'role', NULL);
+old_get_string('assignglobalroles', 'role', NULL);
+old_get_string('checkglobalpermissions', 'role', NULL);
+old_get_string('activitymodules', '', NULL);
+old_get_string('modsettings', 'admin', NULL);
+old_get_string('modulename', 'assignment', NULL);
+old_get_string('modulename', 'choice', NULL);
+old_get_string('modulename', 'data', NULL);
+old_get_string('modulename', 'forum', NULL);
+old_get_string('modulename', 'glossary', NULL);
+old_get_string('modulename', 'label', NULL);
+old_get_string('modulename', 'resource', NULL);
+old_get_string('modulename', 'scorm', NULL);
+old_get_string('modulename', 'survey', NULL);
+old_get_string('modulename', 'hotpot', NULL);
+old_get_string('modulename', 'wiki', NULL);
+old_get_string('modulename', 'lesson', NULL);
+old_get_string('modulename', 'quiz', NULL);
+old_get_string('modulename', 'chat', NULL);
+old_get_string('modulename', 'feedback', NULL);
+old_get_string('maximumsize', 'assignment', NULL);
+old_get_string('configmaxbytes', 'assignment', NULL);
+old_get_string('numwords', '', NULL);
+old_get_string('numletters', '', NULL);
+old_get_string('itemstocount', 'assignment', NULL);
+old_get_string('configitemstocount', 'assignment', NULL);
+old_get_string('showrecentsubmissions', 'assignment', NULL);
+old_get_string('configshowrecentsubmissions', 'assignment', NULL);
+old_get_string('generalconfig', 'chat', NULL);
+old_get_string('explaingeneralconfig', 'chat', NULL);
+old_get_string('methodnormal', 'chat', NULL);
+old_get_string('methoddaemon', 'chat', NULL);
+old_get_string('method', 'chat', NULL);
+old_get_string('configmethod', 'chat', NULL);
+old_get_string('refreshuserlist', 'chat', NULL);
+old_get_string('configrefreshuserlist', 'chat', NULL);
+old_get_string('oldping', 'chat', NULL);
+old_get_string('configoldping', 'chat', NULL);
+old_get_string('methodnormal', 'chat', NULL);
+old_get_string('explainmethodnormal', 'chat', NULL);
+old_get_string('refreshroom', 'chat', NULL);
+old_get_string('configrefreshroom', 'chat', NULL);
+old_get_string('normalkeepalive', 'chat', NULL);
+old_get_string('normalstream', 'chat', NULL);
+old_get_string('updatemethod', 'chat', NULL);
+old_get_string('confignormalupdatemode', 'chat', NULL);
+old_get_string('methoddaemon', 'chat', NULL);
+old_get_string('explainmethoddaemon', 'chat', NULL);
+old_get_string('serverhost', 'chat', NULL);
+old_get_string('configserverhost', 'chat', NULL);
+old_get_string('serverip', 'chat', NULL);
+old_get_string('configserverip', 'chat', NULL);
+old_get_string('serverport', 'chat', NULL);
+old_get_string('configserverport', 'chat', NULL);
+old_get_string('servermax', 'chat', NULL);
+old_get_string('configservermax', 'chat', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('configenablerssfeeds', 'data', NULL);
+old_get_string('enablerssfeeds', 'admin', NULL);
+old_get_string('displaymode', 'forum', NULL);
+old_get_string('configdisplaymode', 'forum', NULL);
+old_get_string('modeflatoldestfirst', 'forum', NULL);
+old_get_string('modeflatnewestfirst', 'forum', NULL);
+old_get_string('modethreaded', 'forum', NULL);
+old_get_string('modenested', 'forum', NULL);
+old_get_string('replytouser', 'forum', NULL);
+old_get_string('configreplytouser', 'forum', NULL);
+old_get_string('shortpost', 'forum', NULL);
+old_get_string('configshortpost', 'forum', NULL);
+old_get_string('longpost', 'forum', NULL);
+old_get_string('configlongpost', 'forum', NULL);
+old_get_string('manydiscussions', 'forum', NULL);
+old_get_string('configmanydiscussions', 'forum', NULL);
+old_get_string('maxattachmentsize', 'forum', NULL);
+old_get_string('configmaxbytes', 'forum', NULL);
+old_get_string('maxattachments', 'forum', NULL);
+old_get_string('configmaxattachments', 'forum', NULL);
+old_get_string('trackforum', 'forum', NULL);
+old_get_string('configtrackreadposts', 'forum', NULL);
+old_get_string('oldpostdays', 'forum', NULL);
+old_get_string('configoldpostdays', 'forum', NULL);
+old_get_string('usermarksread', 'forum', NULL);
+old_get_string('configusermarksread', 'forum', NULL);
+old_get_string('cleanreadtime', 'forum', NULL);
+old_get_string('configcleanreadtime', 'forum', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('configenablerssfeeds', 'forum', NULL);
+old_get_string('enablerssfeeds', 'admin', NULL);
+old_get_string('timedposts', 'forum', NULL);
+old_get_string('configenabletimedposts', 'forum', NULL);
+old_get_string('logblocked', 'forum', NULL);
+old_get_string('configlogblocked', 'forum', NULL);
+old_get_string('ajaxrating', 'forum', NULL);
+old_get_string('configajaxrating', 'forum', NULL);
+old_get_string('glossaryleveldefaultsettings', 'glossary', NULL);
+old_get_string('entbypage', 'glossary', NULL);
+old_get_string('entbypage', 'glossary', NULL);
+old_get_string('allowduplicatedentries', 'glossary', NULL);
+old_get_string('cnfallowdupentries', 'glossary', NULL);
+old_get_string('allowcomments', 'glossary', NULL);
+old_get_string('cnfallowcomments', 'glossary', NULL);
+old_get_string('usedynalink', 'glossary', NULL);
+old_get_string('cnflinkglossaries', 'glossary', NULL);
+old_get_string('defaultapproval', 'glossary', NULL);
+old_get_string('cnfapprovalstatus', 'glossary', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('configenablerssfeeds', 'glossary', NULL);
+old_get_string('enablerssfeeds', 'admin', NULL);
+old_get_string('entryleveldefaultsettings', 'glossary', NULL);
+old_get_string('usedynalink', 'glossary', NULL);
+old_get_string('cnflinkentry', 'glossary', NULL);
+old_get_string('casesensitive', 'glossary', NULL);
+old_get_string('cnfcasesensitive', 'glossary', NULL);
+old_get_string('fullmatch', 'glossary', NULL);
+old_get_string('cnffullmatch', 'glossary', NULL);
+old_get_string('displayformatcontinuous', 'glossary', NULL);
+old_get_string('displayformatdictionary', 'glossary', NULL);
+old_get_string('displayformatencyclopedia', 'glossary', NULL);
+old_get_string('displayformatentrylist', 'glossary', NULL);
+old_get_string('displayformatfaq', 'glossary', NULL);
+old_get_string('displayformatfullwithauthor', 'glossary', NULL);
+old_get_string('displayformatfullwithoutauthor', 'glossary', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('edit', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('displayformatssetup', 'glossary', NULL);
+old_get_string('showtimes', 'hotpot', NULL);
+old_get_string('configshowtimes', 'hotpot', NULL);
+old_get_string('excelencodings', 'hotpot', NULL);
+old_get_string('configexcelencodings', 'hotpot', NULL);
+old_get_string('modulename', 'quiz', NULL);
+old_get_string('configintro', 'quiz', NULL);
+old_get_string('timelimitsec', 'quiz', NULL);
+old_get_string('configtimelimitsec', 'quiz', NULL);
+old_get_string('unlimited', '', NULL);
+old_get_string('attemptsallowed', 'quiz', NULL);
+old_get_string('configattemptsallowed', 'quiz', NULL);
+old_get_string('grademethod', 'quiz', NULL);
+old_get_string('configgrademethod', 'quiz', NULL);
+old_get_string('gradehighest', 'quiz', NULL);
+old_get_string('gradeaverage', 'quiz', NULL);
+old_get_string('attemptfirst', 'quiz', NULL);
+old_get_string('attemptlast', 'quiz', NULL);
+old_get_string('maximumgrade', '', NULL);
+old_get_string('configmaximumgrade', 'quiz', NULL);
+old_get_string('shufflequestions', 'quiz', NULL);
+old_get_string('configshufflequestions', 'quiz', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('never', '', NULL);
+old_get_string('aftereachquestion', 'quiz', NULL);
+old_get_string('afternquestions', 'quiz', 2);
+old_get_string('afternquestions', 'quiz', 3);
+old_get_string('afternquestions', 'quiz', 4);
+old_get_string('afternquestions', 'quiz', 5);
+old_get_string('afternquestions', 'quiz', 6);
+old_get_string('afternquestions', 'quiz', 7);
+old_get_string('afternquestions', 'quiz', 8);
+old_get_string('afternquestions', 'quiz', 9);
+old_get_string('afternquestions', 'quiz', 10);
+old_get_string('afternquestions', 'quiz', 11);
+old_get_string('afternquestions', 'quiz', 12);
+old_get_string('afternquestions', 'quiz', 13);
+old_get_string('afternquestions', 'quiz', 14);
+old_get_string('afternquestions', 'quiz', 15);
+old_get_string('afternquestions', 'quiz', 16);
+old_get_string('afternquestions', 'quiz', 17);
+old_get_string('afternquestions', 'quiz', 18);
+old_get_string('afternquestions', 'quiz', 19);
+old_get_string('afternquestions', 'quiz', 20);
+old_get_string('afternquestions', 'quiz', 21);
+old_get_string('afternquestions', 'quiz', 22);
+old_get_string('afternquestions', 'quiz', 23);
+old_get_string('afternquestions', 'quiz', 24);
+old_get_string('afternquestions', 'quiz', 25);
+old_get_string('afternquestions', 'quiz', 26);
+old_get_string('afternquestions', 'quiz', 27);
+old_get_string('afternquestions', 'quiz', 28);
+old_get_string('afternquestions', 'quiz', 29);
+old_get_string('afternquestions', 'quiz', 30);
+old_get_string('afternquestions', 'quiz', 31);
+old_get_string('afternquestions', 'quiz', 32);
+old_get_string('afternquestions', 'quiz', 33);
+old_get_string('afternquestions', 'quiz', 34);
+old_get_string('afternquestions', 'quiz', 35);
+old_get_string('afternquestions', 'quiz', 36);
+old_get_string('afternquestions', 'quiz', 37);
+old_get_string('afternquestions', 'quiz', 38);
+old_get_string('afternquestions', 'quiz', 39);
+old_get_string('afternquestions', 'quiz', 40);
+old_get_string('afternquestions', 'quiz', 41);
+old_get_string('afternquestions', 'quiz', 42);
+old_get_string('afternquestions', 'quiz', 43);
+old_get_string('afternquestions', 'quiz', 44);
+old_get_string('afternquestions', 'quiz', 45);
+old_get_string('afternquestions', 'quiz', 46);
+old_get_string('afternquestions', 'quiz', 47);
+old_get_string('afternquestions', 'quiz', 48);
+old_get_string('afternquestions', 'quiz', 49);
+old_get_string('afternquestions', 'quiz', 50);
+old_get_string('newpageevery', 'quiz', NULL);
+old_get_string('confignewpageevery', 'quiz', NULL);
+old_get_string('shufflewithin', 'quiz', NULL);
+old_get_string('configshufflewithin', 'quiz', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('adaptive', 'quiz', NULL);
+old_get_string('configadaptive', 'quiz', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('penaltyscheme', 'quiz', NULL);
+old_get_string('configpenaltyscheme', 'quiz', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('eachattemptbuildsonthelast', 'quiz', NULL);
+old_get_string('configeachattemptbuildsonthelast', 'quiz', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('reviewoptions', 'quiz', NULL);
+old_get_string('configreviewoptions', 'quiz', NULL);
+old_get_string('showuserpicture', 'quiz', NULL);
+old_get_string('configshowuserpicture', 'quiz', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('decimalplaces', 'quiz', NULL);
+old_get_string('configdecimalplaces', 'quiz', NULL);
+old_get_string('sameasoverall', 'quiz', NULL);
+old_get_string('decimalplacesquestion', 'quiz', NULL);
+old_get_string('configdecimalplacesquestion', 'quiz', NULL);
+old_get_string('requirepassword', 'quiz', NULL);
+old_get_string('configrequirepassword', 'quiz', NULL);
+old_get_string('requiresubnet', 'quiz', NULL);
+old_get_string('configrequiresubnet', 'quiz', NULL);
+old_get_string('delay1st2nd', 'quiz', NULL);
+old_get_string('configdelay1st2nd', 'quiz', NULL);
+old_get_string('delaylater', 'quiz', NULL);
+old_get_string('configdelaylater', 'quiz', NULL);
+old_get_string('showinsecurepopup', 'quiz', NULL);
+old_get_string('configpopup', 'quiz', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('framesize', 'resource', NULL);
+old_get_string('configframesize', 'resource', NULL);
+old_get_string('websearchdefault', 'resource', NULL);
+old_get_string('configwebsearch', 'resource', NULL);
+old_get_string('resourcedefaulturl', 'resource', NULL);
+old_get_string('configdefaulturl', 'resource', NULL);
+old_get_string('password', '', NULL);
+old_get_string('configsecretphrase', 'resource', NULL);
+old_get_string('allowlocalfiles', 'resource', NULL);
+old_get_string('configallowlocalfiles', 'resource', NULL);
+old_get_string('pagewindow', 'resource', NULL);
+old_get_string('newwindow', 'resource', NULL);
+old_get_string('display', 'resource', NULL);
+old_get_string('configpopup', 'resource', NULL);
+old_get_string('newresizable', 'resource', NULL);
+old_get_string('configpopupresizable', 'resource', NULL);
+old_get_string('newscrollbars', 'resource', NULL);
+old_get_string('configpopupscrollbars', 'resource', NULL);
+old_get_string('newdirectories', 'resource', NULL);
+old_get_string('configpopupdirectories', 'resource', NULL);
+old_get_string('newlocation', 'resource', NULL);
+old_get_string('configpopuplocation', 'resource', NULL);
+old_get_string('newmenubar', 'resource', NULL);
+old_get_string('configpopupmenubar', 'resource', NULL);
+old_get_string('newtoolbar', 'resource', NULL);
+old_get_string('configpopuptoolbar', 'resource', NULL);
+old_get_string('newstatus', 'resource', NULL);
+old_get_string('configpopupstatus', 'resource', NULL);
+old_get_string('newwidth', 'resource', NULL);
+old_get_string('configpopupwidth', 'resource', NULL);
+old_get_string('newheight', 'resource', NULL);
+old_get_string('configpopupheight', 'resource', NULL);
+old_get_string('autofilerename', 'resource', NULL);
+old_get_string('configautofilerenamesettings', 'resource', NULL);
+old_get_string('blockdeletingfile', 'resource', NULL);
+old_get_string('configblockdeletingfilesettings', 'resource', NULL);
+old_get_string('no', '', NULL);
+old_get_string('yes', '', NULL);
+old_get_string('grademethod', 'scorm', NULL);
+old_get_string('grademethoddesc', 'scorm', NULL);
+old_get_string('gradescoes', 'scorm', NULL);
+old_get_string('gradehighest', 'scorm', NULL);
+old_get_string('gradeaverage', 'scorm', NULL);
+old_get_string('gradesum', 'scorm', NULL);
+old_get_string('maximumgrade', '', NULL);
+old_get_string('maximumgradedesc', 'scorm', NULL);
+old_get_string('maximumattempts', 'scorm', NULL);
+old_get_string('displayattemptstatus', 'scorm', NULL);
+old_get_string('displayattemptstatusdesc', 'scorm', NULL);
+old_get_string('displaycoursestructure', 'scorm', NULL);
+old_get_string('displaycoursestructuredesc', 'scorm', NULL);
+old_get_string('forcecompleted', 'scorm', NULL);
+old_get_string('forcecompleteddesc', 'scorm', NULL);
+old_get_string('forcenewattempt', 'scorm', NULL);
+old_get_string('forcenewattemptdesc', 'scorm', NULL);
+old_get_string('lastattemptlock', 'scorm', NULL);
+old_get_string('lastattemptlockdesc', 'scorm', NULL);
+old_get_string('whatgrade', 'scorm', NULL);
+old_get_string('whatgradedesc', 'scorm', NULL);
+old_get_string('highestattempt', 'scorm', NULL);
+old_get_string('averageattempt', 'scorm', NULL);
+old_get_string('firstattempt', 'scorm', NULL);
+old_get_string('lastattempt', 'scorm', NULL);
+old_get_string('width', 'scorm', NULL);
+old_get_string('framewidth', 'scorm', NULL);
+old_get_string('height', 'scorm', NULL);
+old_get_string('frameheight', 'scorm', NULL);
+old_get_string('display', 'scorm', NULL);
+old_get_string('displaydesc', 'scorm', NULL);
+old_get_string('iframe', 'scorm', NULL);
+old_get_string('popup', 'scorm', NULL);
+old_get_string('resizable', 'scorm', NULL);
+old_get_string('scrollbars', 'scorm', NULL);
+old_get_string('directories', 'scorm', NULL);
+old_get_string('location', 'scorm', NULL);
+old_get_string('menubar', 'scorm', NULL);
+old_get_string('toolbar', 'scorm', NULL);
+old_get_string('status', 'scorm', NULL);
+old_get_string('skipview', 'scorm', NULL);
+old_get_string('skipviewdesc', 'scorm', NULL);
+old_get_string('never', '', NULL);
+old_get_string('firstaccess', 'scorm', NULL);
+old_get_string('always', '', NULL);
+old_get_string('hidebrowse', 'scorm', NULL);
+old_get_string('hidebrowsedesc', 'scorm', NULL);
+old_get_string('hidetoc', 'scorm', NULL);
+old_get_string('hidetocdesc', 'scorm', NULL);
+old_get_string('sided', 'scorm', NULL);
+old_get_string('hidden', 'scorm', NULL);
+old_get_string('popupmenu', 'scorm', NULL);
+old_get_string('hidenav', 'scorm', NULL);
+old_get_string('hidenavdesc', 'scorm', NULL);
+old_get_string('autocontinue', 'scorm', NULL);
+old_get_string('autocontinuedesc', 'scorm', NULL);
+old_get_string('updatefreq', 'scorm', NULL);
+old_get_string('updatefreqdesc', 'scorm', NULL);
+old_get_string('never', '', NULL);
+old_get_string('onchanges', 'scorm', NULL);
+old_get_string('everyday', 'scorm', NULL);
+old_get_string('everytime', 'scorm', NULL);
+old_get_string('updatetime', 'scorm', NULL);
+old_get_string('allowtypeexternal', 'scorm', NULL);
+old_get_string('allowtypelocalsync', 'scorm', NULL);
+old_get_string('allowtypeimsrepository', 'scorm', NULL);
+old_get_string('allowapidebug', 'scorm', NULL);
+old_get_string('apidebugmask', 'scorm', NULL);
+old_get_string('blocks', '', NULL);
+old_get_string('blocksettings', 'admin', NULL);
+old_get_string('stickyblocks', 'admin', NULL);
+old_get_string('activities', '', NULL);
+old_get_string('administration', '', NULL);
+old_get_string('adminbookmarks', '', NULL);
+old_get_string('administrationsite', '', NULL);
+old_get_string('blockmenutitle', 'blog', NULL);
+old_get_string('blocktagstitle', 'blog', NULL);
+old_get_string('calendar', 'calendar', NULL);
+old_get_string('upcomingevents', 'calendar', NULL);
+old_get_string('courses', '', NULL);
+old_get_string('pagedescription', 'block_course_summary', NULL);
+old_get_string('blockname', 'block_glossary_random', NULL);
+old_get_string('html', 'block_html', NULL);
+old_get_string('loancalc', 'block_loancalc', NULL);
+old_get_string('login', '', NULL);
+old_get_string('blockname', 'block_mentees', NULL);
+old_get_string('messages', 'message', NULL);
+old_get_string('mnet_hosts', 'block_mnet_hosts', NULL);
+old_get_string('latestnews', '', NULL);
+old_get_string('blockname', 'block_online_users', NULL);
+old_get_string('people', '', NULL);
+old_get_string('formaltitle', 'block_quiz_results', NULL);
+old_get_string('recentactivity', '', NULL);
+old_get_string('feedstitle', 'block_rss_client', NULL);
+old_get_string('blockname', 'block_search', NULL);
+old_get_string('blocktitle', 'block_search_forums', NULL);
+old_get_string('blockname', 'block_section_links', NULL);
+old_get_string('mainmenu', '', NULL);
+old_get_string('blockname', 'block_social_activities', NULL);
+old_get_string('defaulttile', 'block_tag_flickr', NULL);
+old_get_string('blockname', 'block_tag_youtube', NULL);
+old_get_string('blocktagstitle', 'tag', NULL);
+old_get_string('allcourses', 'block_course_list', NULL);
+old_get_string('owncourses', 'block_course_list', NULL);
+old_get_string('adminview', 'block_course_list', NULL);
+old_get_string('configadminview', 'block_course_list', NULL);
+old_get_string('hideallcourseslink', 'block_course_list', NULL);
+old_get_string('confighideallcourseslink', 'block_course_list', NULL);
+old_get_string('timetosee', 'block_online_users', NULL);
+old_get_string('configtimetosee', 'block_online_users', NULL);
+old_get_string('numentries', 'block_rss_client', NULL);
+old_get_string('clientnumentries', 'block_rss_client', NULL);
+old_get_string('timeout2', 'block_rss_client', NULL);
+old_get_string('timeout', 'block_rss_client', NULL);
+old_get_string('everybody', '', NULL);
+old_get_string('administrators', '', NULL);
+old_get_string('administratorsandteachers', '', NULL);
+old_get_string('submitters2', 'block_rss_client', NULL);
+old_get_string('submitters', 'block_rss_client', NULL);
+old_get_string('feedsaddedit', 'block_rss_client', NULL);
+old_get_string('showcoursetags', 'block_tags', NULL);
+old_get_string('showcoursetagsdef', 'block_tags', NULL);
+old_get_string('managefilters', '', NULL);
+old_get_string('filtersettings', 'admin', NULL);
+old_get_string('filtersettings', 'admin', NULL);
+old_get_string('commonsettings', 'admin', NULL);
+old_get_string('cachetext', 'admin', NULL);
+old_get_string('configcachetext', 'admin', NULL);
+old_get_string('numdays', '', 7);
+old_get_string('numdays', '', 1);
+old_get_string('numhours', '', 12);
+old_get_string('numhours', '', 3);
+old_get_string('numhours', '', 2);
+old_get_string('numhours', '', 1);
+old_get_string('numminutes', '', 45);
+old_get_string('numminutes', '', 30);
+old_get_string('numminutes', '', 15);
+old_get_string('numminutes', '', 10);
+old_get_string('numminutes', '', 9);
+old_get_string('numminutes', '', 8);
+old_get_string('numminutes', '', 7);
+old_get_string('numminutes', '', 6);
+old_get_string('numminutes', '', 5);
+old_get_string('numminutes', '', 4);
+old_get_string('numminutes', '', 3);
+old_get_string('numminutes', '', 2);
+old_get_string('numminutes', '', 1);
+old_get_string('numseconds', '', 30);
+old_get_string('no', '', NULL);
+old_get_string('filteruploadedfiles', 'admin', NULL);
+old_get_string('configfilteruploadedfiles', 'admin', NULL);
+old_get_string('none', '', NULL);
+old_get_string('allfiles', '', NULL);
+old_get_string('htmlfilesonly', '', NULL);
+old_get_string('filtermatchoneperpage', 'admin', NULL);
+old_get_string('configfiltermatchoneperpage', 'admin', NULL);
+old_get_string('filtermatchonepertext', 'admin', NULL);
+old_get_string('configfiltermatchonepertext', 'admin', NULL);
+old_get_string('filterall', 'admin', NULL);
+old_get_string('configfilterall', 'admin', NULL);
+old_get_string('filtername', 'assignment', NULL);
+old_get_string('filtername', 'chat', NULL);
+old_get_string('filtername', 'choice', NULL);
+old_get_string('filtername', 'data', NULL);
+old_get_string('filtername', 'feedback', NULL);
+old_get_string('filtername', 'forum', NULL);
+old_get_string('filtername', 'glossary', NULL);
+old_get_string('filtername', 'hotpot', NULL);
+old_get_string('filtername', 'label', NULL);
+old_get_string('filtername', 'lesson', NULL);
+old_get_string('filtername', 'quiz', NULL);
+old_get_string('filtername', 'resource', NULL);
+old_get_string('filtername', 'scorm', NULL);
+old_get_string('filtername', 'survey', NULL);
+old_get_string('filtername', 'wiki', NULL);
+old_get_string('filtername', 'activitynames', NULL);
+old_get_string('filtername', 'algebra', NULL);
+old_get_string('filtername', 'censor', NULL);
+old_get_string('filtername', 'emailprotect', NULL);
+old_get_string('filtername', 'mediaplugin', NULL);
+old_get_string('filtername', 'multilang', NULL);
+old_get_string('filtername', 'tex', NULL);
+old_get_string('filtername', 'tidy', NULL);
+old_get_string('multilangforceold', 'admin', NULL);
+old_get_string('mediapluginmp3', 'admin', NULL);
+old_get_string('mediapluginswf', 'admin', NULL);
+old_get_string('mediapluginswfnote', 'admin', NULL);
+old_get_string('mediapluginmov', 'admin', NULL);
+old_get_string('mediapluginwmv', 'admin', NULL);
+old_get_string('mediapluginmpg', 'admin', NULL);
+old_get_string('mediapluginavi', 'admin', NULL);
+old_get_string('mediapluginflv', 'admin', NULL);
+old_get_string('mediapluginram', 'admin', NULL);
+old_get_string('mediapluginrpm', 'admin', NULL);
+old_get_string('mediapluginrm', 'admin', NULL);
+old_get_string('mediapluginyoutube', 'admin', NULL);
+old_get_string('latexsettings', 'admin', NULL);
+old_get_string('latexpreamble', 'admin', NULL);
+old_get_string('backgroundcolour', 'admin', NULL);
+old_get_string('density', 'admin', NULL);
+old_get_string('density', 'admin', NULL);
+old_get_string('pathlatex', 'admin', NULL);
+old_get_string('pathdvips', 'admin', NULL);
+old_get_string('pathconvert', 'admin', NULL);
+old_get_string('badwordslist', 'admin', NULL);
+old_get_string('badwordsconfig', 'admin', NULL);
+old_get_string('badwordsdefault', 'admin', NULL);
+old_get_string('portfolios', 'portfolio', NULL);
+old_get_string('manageportfolios', 'portfolio', NULL);
+old_get_string('manageportfolios', 'portfolio', NULL);
+old_get_string('activeportfolios', 'portfolio', NULL);
+old_get_string('manageportfolio', 'portfolio', NULL);
+old_get_string('commonsettings', 'admin', NULL);
+old_get_string('commonsettingsdesc', 'portfolio', NULL);
+old_get_string('moderatefilesizethreshold', 'portfolio', NULL);
+old_get_string('moderatefilesizethresholddesc', 'portfolio', NULL);
+old_get_string('highfilesizethreshold', 'portfolio', NULL);
+old_get_string('highfilesizethresholddesc', 'portfolio', NULL);
+old_get_string('moderatedbsizethreshold', 'portfolio', NULL);
+old_get_string('moderatedbsizethresholddesc', 'portfolio', NULL);
+old_get_string('highdbsizethreshold', 'portfolio', NULL);
+old_get_string('highdbsizethresholddesc', 'portfolio', NULL);
+old_get_string('addnewportfolio', 'portfolio', NULL);
+old_get_string('deleteportfolio', 'portfolio', NULL);
+old_get_string('manageportfolios', 'portfolio', NULL);
+old_get_string('repositories', 'repository', NULL);
+old_get_string('manage', 'repository', NULL);
+old_get_string('activerepository', 'repository', NULL);
+old_get_string('managerepository', 'repository', NULL);
+old_get_string('commonsettings', 'admin', NULL);
+old_get_string('cacheexpire', 'repository', NULL);
+old_get_string('configcacheexpire', 'repository', NULL);
+old_get_string('addplugin', 'repository', NULL);
+old_get_string('deleterepository', 'repository', NULL);
+old_get_string('managerepositories', 'repository', NULL);
+old_get_string('createrepository', 'repository', NULL);
+old_get_string('editrepositoryinstance', 'repository', NULL);
+old_get_string('questiontypes', 'admin', NULL);
+old_get_string('manageqtypes', 'admin', NULL);
+old_get_string('sojunit', 'qtype_sojunit', NULL);
+old_get_string('pathtojava', 'qtype_sojunit', NULL);
+old_get_string('configpathtojava', 'qtype_sojunit', NULL);
+old_get_string('pathtojavac', 'qtype_sojunit', NULL);
+old_get_string('configpathtojavac', 'qtype_sojunit', NULL);
+old_get_string('pathtojunit', 'qtype_sojunit', NULL);
+old_get_string('configpathtojunit', 'qtype_sojunit', NULL);
+old_get_string('backups', 'admin', NULL);
+old_get_string('capability', 'report_capability', NULL);
+old_get_string('configlog', 'report_configlog', NULL);
+old_get_string('courseoverview', 'admin', NULL);
+old_get_string('log', 'admin', NULL);
+old_get_string('loglive', 'coursereport_log', NULL);
+old_get_string('questioninstances', 'report_questioninstances', NULL);
+old_get_string('reportsecurity', 'report_security', NULL);
+old_get_string('spamcleaner', 'report_spamcleaner', NULL);
+old_get_string('stats', 'admin', NULL);
+old_get_string('systemimages', 'report_systemimages', NULL);
+old_get_string('simpletest', 'admin', NULL);
+old_get_string('dbtest', 'admin', NULL);
+old_get_string('sunday', 'calendar', NULL);
+old_get_string('monday', 'calendar', NULL);
+old_get_string('tuesday', 'calendar', NULL);
+old_get_string('wednesday', 'calendar', NULL);
+old_get_string('thursday', 'calendar', NULL);
+old_get_string('friday', 'calendar', NULL);
+old_get_string('saturday', 'calendar', NULL);
+old_get_string('locale', '', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('blocksediton', '', NULL);
+old_get_string('youarehere', 'access', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('loggedinas', 'moodle', '<a  href="http://tim.moodle.com/moodle/user/view.php?id=2&amp;course=1">Admin User</a>');
+old_get_string('logout', '', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('administrationsite', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderopened', '', NULL);
+old_get_string('folderclosed', '', NULL);
+old_get_string('searchinsettings', 'admin', NULL);
+old_get_string('search', '', NULL);
+old_get_string('showblocka', 'access', 'Site Administration');
+old_get_string('hideblocka', 'access', 'Site Administration');
+old_get_string('skipa', 'access', 'Site Administration');
+old_get_string('showblocka', 'access', 'Site Administration');
+old_get_string('hideblocka', 'access', 'Site Administration');
+old_get_string('adminbookmarks', '', NULL);
+old_get_string('bookmarkthispage', 'admin', NULL);
+old_get_string('showblocka', 'access', 'Admin bookmarks');
+old_get_string('hideblocka', 'access', 'Admin bookmarks');
+old_get_string('skipa', 'access', 'Admin bookmarks');
+old_get_string('showblocka', 'access', 'Admin bookmarks');
+old_get_string('hideblocka', 'access', 'Admin bookmarks');
+old_get_string('displayerrorswarning', 'admin', NULL);
+old_get_string('installation', 'install', NULL);
+old_get_string('helpprefix2', '', 'Installation');
+old_get_string('newwindow', '', NULL);
+old_get_string('cronwarning', 'admin', NULL);
+old_get_string('home', '', NULL);
+old_get_string('loggedinas', 'moodle', '<a  href="http://tim.moodle.com/moodle/user/view.php?id=2&amp;course=1">Admin User</a>');
+old_get_string('logout', '', NULL);
+old_get_string('moodledocslink', '', NULL);
diff --git a/lib/simpletest/get_string_fixtures/pagelogs/course_view.php_get_string.log.php b/lib/simpletest/get_string_fixtures/pagelogs/course_view.php_get_string.log.php
new file mode 100644 (file)
index 0000000..c5f812d
--- /dev/null
@@ -0,0 +1,353 @@
+<?php
+// Sequence of get_string calls for page http://tim.moodle.com/moodle/course/view.php?id=2&edit=1&sesskey=1NzQu8osJ5
+get_string('locale', '', NULL);
+get_string('thisdirection', '', NULL);
+get_string('locale', '', NULL);
+get_string('thisdirection', '', NULL);
+get_string('course', '', NULL);
+get_string('youarehere', 'access', NULL);
+get_string('thisdirection', '', NULL);
+get_string('switchroleto', '', NULL);
+get_string('switchroleto', '', NULL);
+get_string('go', '', NULL);
+get_string('helpprefix2', '', 'Switch role to');
+get_string('newwindow', '', NULL);
+get_string('turneditingoff', '', NULL);
+get_string('loggedinas', 'moodle', '<a  href="http://tim.moodle.com/moodle/user/view.php?id=2&amp;course=2">Admin User</a>');
+get_string('logout', '', NULL);
+get_string('thisdirection', '', NULL);
+get_string('thisdirection', '', NULL);
+get_string('tocontent', 'access', NULL);
+get_string('modulenameplural', 'forum', NULL);
+get_string('modulenameplural', 'quiz', NULL);
+get_string('modulenameplural', 'choice', NULL);
+get_string('modulename', 'assignment', NULL);
+get_string('modulenameplural', 'assignment', NULL);
+get_string('modulename', 'choice', NULL);
+get_string('modulenameplural', 'choice', NULL);
+get_string('modulename', 'data', NULL);
+get_string('modulenameplural', 'data', NULL);
+get_string('modulename', 'forum', NULL);
+get_string('modulenameplural', 'forum', NULL);
+get_string('modulename', 'glossary', NULL);
+get_string('modulenameplural', 'glossary', NULL);
+get_string('modulename', 'label', NULL);
+get_string('modulenameplural', 'label', NULL);
+get_string('modulename', 'resource', NULL);
+get_string('modulenameplural', 'resource', NULL);
+get_string('modulename', 'scorm', NULL);
+get_string('modulenameplural', 'scorm', NULL);
+get_string('modulename', 'survey', NULL);
+get_string('modulenameplural', 'survey', NULL);
+get_string('modulename', 'lesson', NULL);
+get_string('modulenameplural', 'lesson', NULL);
+get_string('modulename', 'quiz', NULL);
+get_string('modulenameplural', 'quiz', NULL);
+get_string('modulename', 'chat', NULL);
+get_string('modulenameplural', 'chat', NULL);
+get_string('modulename', 'feedback', NULL);
+get_string('modulenameplural', 'feedback', NULL);
+get_string('editsummary', '', NULL);
+get_string('add', '', NULL);
+get_string('activities', '', NULL);
+get_string('showallweeks', '', NULL);
+get_string('week', '', NULL);
+get_string('groups', '', NULL);
+get_string('groupmy', '', NULL);
+get_string('hideweekfromothers', '', NULL);
+get_string('showweekfromothers', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('people', '', NULL);
+get_string('listofallpeople', '', NULL);
+get_string('participants', '', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('listofallpeople', '', NULL);
+get_string('participants', '', NULL);
+get_string('showblocka', 'access', 'People');
+get_string('hideblocka', 'access', 'People');
+get_string('skipa', 'access', 'People');
+get_string('showblocka', 'access', 'People');
+get_string('hideblocka', 'access', 'People');
+get_string('activities', '', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('showblocka', 'access', 'Activities');
+get_string('hideblocka', 'access', 'Activities');
+get_string('skipa', 'access', 'Activities');
+get_string('showblocka', 'access', 'Activities');
+get_string('hideblocka', 'access', 'Activities');
+get_string('blocktitle', 'block_search_forums', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('advancedsearch', 'block_search_forums', NULL);
+get_string('search', '', NULL);
+get_string('helpprefix2', '', 'Advanced search');
+get_string('newwindow', '', NULL);
+get_string('showblocka', 'access', 'Search Forums');
+get_string('hideblocka', 'access', 'Search Forums');
+get_string('skipa', 'access', 'Search Forums');
+get_string('showblocka', 'access', 'Search Forums');
+get_string('hideblocka', 'access', 'Search Forums');
+get_string('administration', '', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('turneditingoff', '', NULL);
+get_string('settings', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('grades', '', NULL);
+get_string('outcomes', 'grades', NULL);
+get_string('groups', '', NULL);
+get_string('backup', '', NULL);
+get_string('restore', '', NULL);
+get_string('import', '', NULL);
+get_string('reset', '', NULL);
+get_string('reports', '', NULL);
+get_string('questions', 'quiz', NULL);
+get_string('files', '', NULL);
+get_string('profile', '', NULL);
+get_string('showblocka', 'access', 'Administration');
+get_string('hideblocka', 'access', 'Administration');
+get_string('skipa', 'access', 'Administration');
+get_string('showblocka', 'access', 'Administration');
+get_string('hideblocka', 'access', 'Administration');
+get_string('courses', '', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('coursecategory', '', NULL);
+get_string('fulllistofcourses', '', NULL);
+get_string('categories', '', NULL);
+get_string('showblocka', 'access', 'Course categories');
+get_string('hideblocka', 'access', 'Course categories');
+get_string('skipa', 'access', 'Course categories');
+get_string('showblocka', 'access', 'Course categories');
+get_string('hideblocka', 'access', 'Course categories');
+get_string('latestnews', '', NULL);
+get_string('addanewtopic', 'forum', NULL);
+get_string('strftimerecent', '', NULL);
+get_string('more', 'forum', NULL);
+get_string('oldertopics', 'forum', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('showblocka', 'access', 'Latest News');
+get_string('hideblocka', 'access', 'Latest News');
+get_string('skipa', 'access', 'Latest News');
+get_string('showblocka', 'access', 'Latest News');
+get_string('hideblocka', 'access', 'Latest News');
+get_string('blockname', 'block_online_users', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('periodnminutes', 'block_online_users', 5);
+get_string('day', '', NULL);
+get_string('days', '', NULL);
+get_string('hour', '', NULL);
+get_string('hours', '', NULL);
+get_string('min', '', NULL);
+get_string('mins', '', NULL);
+get_string('sec', '', NULL);
+get_string('secs', '', NULL);
+get_string('year', '', NULL);
+get_string('years', '', NULL);
+get_string('showblocka', 'access', 'Online Users');
+get_string('hideblocka', 'access', 'Online Users');
+get_string('skipa', 'access', 'Online Users');
+get_string('showblocka', 'access', 'Online Users');
+get_string('hideblocka', 'access', 'Online Users');
+get_string('recentactivity', '', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('strftimedaydatetime', 'langconfig', NULL);
+get_string('activitysince', '', 'Wednesday, 25 March 2009, 02:39 PM');
+get_string('recentactivityreport', '', NULL);
+get_string('publishanonymous', 'choice', NULL);
+get_string('publishnames', 'choice', NULL);
+get_string('publishnot', 'choice', NULL);
+get_string('publishafteranswer', 'choice', NULL);
+get_string('publishafterclose', 'choice', NULL);
+get_string('publishalways', 'choice', NULL);
+get_string('displayhorizontal', 'choice', NULL);
+get_string('displayvertical', 'choice', NULL);
+get_string('nothingnew', '', NULL);
+get_string('showblocka', 'access', 'Recent Activity');
+get_string('hideblocka', 'access', 'Recent Activity');
+get_string('skipa', 'access', 'Recent Activity');
+get_string('showblocka', 'access', 'Recent Activity');
+get_string('hideblocka', 'access', 'Recent Activity');
+get_string('feedstitle', 'block_rss_client', NULL);
+get_string('remotenewsfeed', 'block_rss_client', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('feedsconfigurenewinstance', 'block_rss_client', NULL);
+get_string('feedsconfigurenewinstance', 'block_rss_client', NULL);
+get_string('showblocka', 'access', 'Remote News Feed');
+get_string('hideblocka', 'access', 'Remote News Feed');
+get_string('skipa', 'access', 'Remote News Feed');
+get_string('showblocka', 'access', 'Remote News Feed');
+get_string('hideblocka', 'access', 'Remote News Feed');
+get_string('html', 'block_html', NULL);
+get_string('newhtmlblock', 'block_html', NULL);
+get_string('delete', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('configuration', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('showblocka', 'access', '(new HTML block)');
+get_string('hideblocka', 'access', '(new HTML block)');
+get_string('skipa', 'access', '(new HTML block)');
+get_string('showblocka', 'access', '(new HTML block)');
+get_string('hideblocka', 'access', '(new HTML block)');
+get_string('blocks', '', NULL);
+get_string('add', '', NULL);
+get_string('adminbookmarks', '', NULL);
+get_string('blockmenutitle', 'blog', NULL);
+get_string('blocktagstitle', 'blog', NULL);
+get_string('calendar', 'calendar', NULL);
+get_string('upcomingevents', 'calendar', NULL);
+get_string('pagedescription', 'block_course_summary', NULL);
+get_string('blockname', 'block_glossary_random', NULL);
+get_string('html', 'block_html', NULL);
+get_string('loancalc', 'block_loancalc', NULL);
+get_string('blockname', 'block_mentees', NULL);
+get_string('messages', 'message', NULL);
+get_string('mnet_hosts', 'block_mnet_hosts', NULL);
+get_string('formaltitle', 'block_quiz_results', NULL);
+get_string('feedstitle', 'block_rss_client', NULL);
+get_string('blockname', 'block_search', NULL);
+get_string('blockname', 'block_section_links', NULL);
+get_string('blocktagstitle', 'tag', NULL);
+get_string('skipa', 'access', '');
+get_string('showblocka', 'access', '');
+get_string('hideblocka', 'access', '');
+get_string('weeklyoutline', '', NULL);
+get_string('assignroles', 'role', NULL);
+get_string('delete', '', NULL);
+get_string('move', '', NULL);
+get_string('moveup', '', NULL);
+get_string('movedown', '', NULL);
+get_string('moveright', '', NULL);
+get_string('moveleft', '', NULL);
+get_string('update', '', NULL);
+get_string('duplicate', '', NULL);
+get_string('hide', '', NULL);
+get_string('show', '', NULL);
+get_string('clicktochange', '', NULL);
+get_string('forcedmode', '', NULL);
+get_string('groupsnone', '', NULL);
+get_string('groupsseparate', '', NULL);
+get_string('groupsvisible', '', NULL);
+get_string('modulenameplural', 'assignment', NULL);
+get_string('typeupload', 'assignment', NULL);
+get_string('typeonline', 'assignment', NULL);
+get_string('typeuploadsingle', 'assignment', NULL);
+get_string('typeoffline', 'assignment', NULL);
+get_string('resourcetypelabel', 'resource', NULL);
+get_string('resourcetypetext', 'resource', NULL);
+get_string('resourcetypehtml', 'resource', NULL);
+get_string('resourcetypefile', 'resource', NULL);
+get_string('resourcetypedirectory', 'resource', NULL);
+get_string('resourcetypeims', 'resource', NULL);
+get_string('addactivity', '', NULL);
+get_string('addresource', '', NULL);
+get_string('helpprefix2', '', 'Add a resource');
+get_string('newwindow', '', NULL);
+get_string('helpprefix2', '', 'Add an activity');
+get_string('newwindow', '', NULL);
+get_string('strftimedateshort', '', NULL);
+get_string('showonlyweek', '', 1);
+get_string('addactivity', '', NULL);
+get_string('addresource', '', NULL);
+get_string('helpprefix2', '', 'Add a resource');
+get_string('newwindow', '', NULL);
+get_string('helpprefix2', '', 'Add an activity');
+get_string('newwindow', '', NULL);
+get_string('showonlyweek', '', 2);
+get_string('addactivity', '', NULL);
+get_string('addresource', '', NULL);
+get_string('helpprefix2', '', 'Add a resource');
+get_string('newwindow', '', NULL);
+get_string('helpprefix2', '', 'Add an activity');
+get_string('newwindow', '', NULL);
+get_string('currentweek', 'access', NULL);
+get_string('showonlyweek', '', 3);
+get_string('addactivity', '', NULL);
+get_string('addresource', '', NULL);
+get_string('helpprefix2', '', 'Add a resource');
+get_string('newwindow', '', NULL);
+get_string('helpprefix2', '', 'Add an activity');
+get_string('newwindow', '', NULL);
+get_string('home', '', NULL);
+get_string('loggedinas', 'moodle', '<a  href="http://tim.moodle.com/moodle/user/view.php?id=2&amp;course=2">Admin User</a>');
+get_string('logout', '', NULL);
+get_string('sizegb', '', NULL);
+get_string('sizemb', '', NULL);
+get_string('sizekb', '', NULL);
+get_string('sizeb', '', NULL);
+get_string('moodledocslink', '', NULL);
diff --git a/lib/simpletest/get_string_fixtures/pagelogs/course_view.php_old_get_string.log.php b/lib/simpletest/get_string_fixtures/pagelogs/course_view.php_old_get_string.log.php
new file mode 100644 (file)
index 0000000..e669403
--- /dev/null
@@ -0,0 +1,353 @@
+<?php
+// Sequence of get_string calls for page http://tim.moodle.com/moodle/course/view.php?id=2&edit=1&sesskey=1NzQu8osJ5
+old_get_string('locale', '', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('locale', '', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('course', '', NULL);
+old_get_string('youarehere', 'access', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('switchroleto', '', NULL);
+old_get_string('switchroleto', '', NULL);
+old_get_string('go', '', NULL);
+old_get_string('helpprefix2', '', 'Switch role to');
+old_get_string('newwindow', '', NULL);
+old_get_string('turneditingoff', '', NULL);
+old_get_string('loggedinas', 'moodle', '<a  href="http://tim.moodle.com/moodle/user/view.php?id=2&amp;course=2">Admin User</a>');
+old_get_string('logout', '', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('thisdirection', '', NULL);
+old_get_string('tocontent', 'access', NULL);
+old_get_string('modulenameplural', 'forum', NULL);
+old_get_string('modulenameplural', 'quiz', NULL);
+old_get_string('modulenameplural', 'choice', NULL);
+old_get_string('modulename', 'assignment', NULL);
+old_get_string('modulenameplural', 'assignment', NULL);
+old_get_string('modulename', 'choice', NULL);
+old_get_string('modulenameplural', 'choice', NULL);
+old_get_string('modulename', 'data', NULL);
+old_get_string('modulenameplural', 'data', NULL);
+old_get_string('modulename', 'forum', NULL);
+old_get_string('modulenameplural', 'forum', NULL);
+old_get_string('modulename', 'glossary', NULL);
+old_get_string('modulenameplural', 'glossary', NULL);
+old_get_string('modulename', 'label', NULL);
+old_get_string('modulenameplural', 'label', NULL);
+old_get_string('modulename', 'resource', NULL);
+old_get_string('modulenameplural', 'resource', NULL);
+old_get_string('modulename', 'scorm', NULL);
+old_get_string('modulenameplural', 'scorm', NULL);
+old_get_string('modulename', 'survey', NULL);
+old_get_string('modulenameplural', 'survey', NULL);
+old_get_string('modulename', 'lesson', NULL);
+old_get_string('modulenameplural', 'lesson', NULL);
+old_get_string('modulename', 'quiz', NULL);
+old_get_string('modulenameplural', 'quiz', NULL);
+old_get_string('modulename', 'chat', NULL);
+old_get_string('modulenameplural', 'chat', NULL);
+old_get_string('modulename', 'feedback', NULL);
+old_get_string('modulenameplural', 'feedback', NULL);
+old_get_string('editsummary', '', NULL);
+old_get_string('add', '', NULL);
+old_get_string('activities', '', NULL);
+old_get_string('showallweeks', '', NULL);
+old_get_string('week', '', NULL);
+old_get_string('groups', '', NULL);
+old_get_string('groupmy', '', NULL);
+old_get_string('hideweekfromothers', '', NULL);
+old_get_string('showweekfromothers', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('people', '', NULL);
+old_get_string('listofallpeople', '', NULL);
+old_get_string('participants', '', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('listofallpeople', '', NULL);
+old_get_string('participants', '', NULL);
+old_get_string('showblocka', 'access', 'People');
+old_get_string('hideblocka', 'access', 'People');
+old_get_string('skipa', 'access', 'People');
+old_get_string('showblocka', 'access', 'People');
+old_get_string('hideblocka', 'access', 'People');
+old_get_string('activities', '', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('showblocka', 'access', 'Activities');
+old_get_string('hideblocka', 'access', 'Activities');
+old_get_string('skipa', 'access', 'Activities');
+old_get_string('showblocka', 'access', 'Activities');
+old_get_string('hideblocka', 'access', 'Activities');
+old_get_string('blocktitle', 'block_search_forums', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('advancedsearch', 'block_search_forums', NULL);
+old_get_string('search', '', NULL);
+old_get_string('helpprefix2', '', 'Advanced search');
+old_get_string('newwindow', '', NULL);
+old_get_string('showblocka', 'access', 'Search Forums');
+old_get_string('hideblocka', 'access', 'Search Forums');
+old_get_string('skipa', 'access', 'Search Forums');
+old_get_string('showblocka', 'access', 'Search Forums');
+old_get_string('hideblocka', 'access', 'Search Forums');
+old_get_string('administration', '', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('turneditingoff', '', NULL);
+old_get_string('settings', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('grades', '', NULL);
+old_get_string('outcomes', 'grades', NULL);
+old_get_string('groups', '', NULL);
+old_get_string('backup', '', NULL);
+old_get_string('restore', '', NULL);
+old_get_string('import', '', NULL);
+old_get_string('reset', '', NULL);
+old_get_string('reports', '', NULL);
+old_get_string('questions', 'quiz', NULL);
+old_get_string('files', '', NULL);
+old_get_string('profile', '', NULL);
+old_get_string('showblocka', 'access', 'Administration');
+old_get_string('hideblocka', 'access', 'Administration');
+old_get_string('skipa', 'access', 'Administration');
+old_get_string('showblocka', 'access', 'Administration');
+old_get_string('hideblocka', 'access', 'Administration');
+old_get_string('courses', '', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('coursecategory', '', NULL);
+old_get_string('fulllistofcourses', '', NULL);
+old_get_string('categories', '', NULL);
+old_get_string('showblocka', 'access', 'Course categories');
+old_get_string('hideblocka', 'access', 'Course categories');
+old_get_string('skipa', 'access', 'Course categories');
+old_get_string('showblocka', 'access', 'Course categories');
+old_get_string('hideblocka', 'access', 'Course categories');
+old_get_string('latestnews', '', NULL);
+old_get_string('addanewtopic', 'forum', NULL);
+old_get_string('strftimerecent', '', NULL);
+old_get_string('more', 'forum', NULL);
+old_get_string('oldertopics', 'forum', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('showblocka', 'access', 'Latest News');
+old_get_string('hideblocka', 'access', 'Latest News');
+old_get_string('skipa', 'access', 'Latest News');
+old_get_string('showblocka', 'access', 'Latest News');
+old_get_string('hideblocka', 'access', 'Latest News');
+old_get_string('blockname', 'block_online_users', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('periodnminutes', 'block_online_users', 5);
+old_get_string('day', '', NULL);
+old_get_string('days', '', NULL);
+old_get_string('hour', '', NULL);
+old_get_string('hours', '', NULL);
+old_get_string('min', '', NULL);
+old_get_string('mins', '', NULL);
+old_get_string('sec', '', NULL);
+old_get_string('secs', '', NULL);
+old_get_string('year', '', NULL);
+old_get_string('years', '', NULL);
+old_get_string('showblocka', 'access', 'Online Users');
+old_get_string('hideblocka', 'access', 'Online Users');
+old_get_string('skipa', 'access', 'Online Users');
+old_get_string('showblocka', 'access', 'Online Users');
+old_get_string('hideblocka', 'access', 'Online Users');
+old_get_string('recentactivity', '', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('strftimedaydatetime', 'langconfig', NULL);
+old_get_string('activitysince', '', 'Wednesday, 25 March 2009, 02:39 PM');
+old_get_string('recentactivityreport', '', NULL);
+old_get_string('publishanonymous', 'choice', NULL);
+old_get_string('publishnames', 'choice', NULL);
+old_get_string('publishnot', 'choice', NULL);
+old_get_string('publishafteranswer', 'choice', NULL);
+old_get_string('publishafterclose', 'choice', NULL);
+old_get_string('publishalways', 'choice', NULL);
+old_get_string('displayhorizontal', 'choice', NULL);
+old_get_string('displayvertical', 'choice', NULL);
+old_get_string('nothingnew', '', NULL);
+old_get_string('showblocka', 'access', 'Recent Activity');
+old_get_string('hideblocka', 'access', 'Recent Activity');
+old_get_string('skipa', 'access', 'Recent Activity');
+old_get_string('showblocka', 'access', 'Recent Activity');
+old_get_string('hideblocka', 'access', 'Recent Activity');
+old_get_string('feedstitle', 'block_rss_client', NULL);
+old_get_string('remotenewsfeed', 'block_rss_client', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('feedsconfigurenewinstance', 'block_rss_client', NULL);
+old_get_string('feedsconfigurenewinstance', 'block_rss_client', NULL);
+old_get_string('showblocka', 'access', 'Remote News Feed');
+old_get_string('hideblocka', 'access', 'Remote News Feed');
+old_get_string('skipa', 'access', 'Remote News Feed');
+old_get_string('showblocka', 'access', 'Remote News Feed');
+old_get_string('hideblocka', 'access', 'Remote News Feed');
+old_get_string('html', 'block_html', NULL);
+old_get_string('newhtmlblock', 'block_html', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('configuration', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('showblocka', 'access', '(new HTML block)');
+old_get_string('hideblocka', 'access', '(new HTML block)');
+old_get_string('skipa', 'access', '(new HTML block)');
+old_get_string('showblocka', 'access', '(new HTML block)');
+old_get_string('hideblocka', 'access', '(new HTML block)');
+old_get_string('blocks', '', NULL);
+old_get_string('add', '', NULL);
+old_get_string('adminbookmarks', '', NULL);
+old_get_string('blockmenutitle', 'blog', NULL);
+old_get_string('blocktagstitle', 'blog', NULL);
+old_get_string('calendar', 'calendar', NULL);
+old_get_string('upcomingevents', 'calendar', NULL);
+old_get_string('pagedescription', 'block_course_summary', NULL);
+old_get_string('blockname', 'block_glossary_random', NULL);
+old_get_string('html', 'block_html', NULL);
+old_get_string('loancalc', 'block_loancalc', NULL);
+old_get_string('blockname', 'block_mentees', NULL);
+old_get_string('messages', 'message', NULL);
+old_get_string('mnet_hosts', 'block_mnet_hosts', NULL);
+old_get_string('formaltitle', 'block_quiz_results', NULL);
+old_get_string('feedstitle', 'block_rss_client', NULL);
+old_get_string('blockname', 'block_search', NULL);
+old_get_string('blockname', 'block_section_links', NULL);
+old_get_string('blocktagstitle', 'tag', NULL);
+old_get_string('skipa', 'access', '');
+old_get_string('showblocka', 'access', '');
+old_get_string('hideblocka', 'access', '');
+old_get_string('weeklyoutline', '', NULL);
+old_get_string('assignroles', 'role', NULL);
+old_get_string('delete', '', NULL);
+old_get_string('move', '', NULL);
+old_get_string('moveup', '', NULL);
+old_get_string('movedown', '', NULL);
+old_get_string('moveright', '', NULL);
+old_get_string('moveleft', '', NULL);
+old_get_string('update', '', NULL);
+old_get_string('duplicate', '', NULL);
+old_get_string('hide', '', NULL);
+old_get_string('show', '', NULL);
+old_get_string('clicktochange', '', NULL);
+old_get_string('forcedmode', '', NULL);
+old_get_string('groupsnone', '', NULL);
+old_get_string('groupsseparate', '', NULL);
+old_get_string('groupsvisible', '', NULL);
+old_get_string('modulenameplural', 'assignment', NULL);
+old_get_string('typeupload', 'assignment', NULL);
+old_get_string('typeonline', 'assignment', NULL);
+old_get_string('typeuploadsingle', 'assignment', NULL);
+old_get_string('typeoffline', 'assignment', NULL);
+old_get_string('resourcetypelabel', 'resource', NULL);
+old_get_string('resourcetypetext', 'resource', NULL);
+old_get_string('resourcetypehtml', 'resource', NULL);
+old_get_string('resourcetypefile', 'resource', NULL);
+old_get_string('resourcetypedirectory', 'resource', NULL);
+old_get_string('resourcetypeims', 'resource', NULL);
+old_get_string('addactivity', '', NULL);
+old_get_string('addresource', '', NULL);
+old_get_string('helpprefix2', '', 'Add a resource');
+old_get_string('newwindow', '', NULL);
+old_get_string('helpprefix2', '', 'Add an activity');
+old_get_string('newwindow', '', NULL);
+old_get_string('strftimedateshort', '', NULL);
+old_get_string('showonlyweek', '', 1);
+old_get_string('addactivity', '', NULL);
+old_get_string('addresource', '', NULL);
+old_get_string('helpprefix2', '', 'Add a resource');
+old_get_string('newwindow', '', NULL);
+old_get_string('helpprefix2', '', 'Add an activity');
+old_get_string('newwindow', '', NULL);
+old_get_string('showonlyweek', '', 2);
+old_get_string('addactivity', '', NULL);
+old_get_string('addresource', '', NULL);
+old_get_string('helpprefix2', '', 'Add a resource');
+old_get_string('newwindow', '', NULL);
+old_get_string('helpprefix2', '', 'Add an activity');
+old_get_string('newwindow', '', NULL);
+old_get_string('currentweek', 'access', NULL);
+old_get_string('showonlyweek', '', 3);
+old_get_string('addactivity', '', NULL);
+old_get_string('addresource', '', NULL);
+old_get_string('helpprefix2', '', 'Add a resource');
+old_get_string('newwindow', '', NULL);
+old_get_string('helpprefix2', '', 'Add an activity');
+old_get_string('newwindow', '', NULL);
+old_get_string('home', '', NULL);
+old_get_string('loggedinas', 'moodle', '<a  href="http://tim.moodle.com/moodle/user/view.php?id=2&amp;course=2">Admin User</a>');
+old_get_string('logout', '', NULL);
+old_get_string('sizegb', '', NULL);
+old_get_string('sizemb', '', NULL);
+old_get_string('sizekb', '', NULL);
+old_get_string('sizeb', '', NULL);
+old_get_string('moodledocslink', '', NULL);
diff --git a/lib/simpletest/get_string_fixtures/pagelogs/empty.log.php b/lib/simpletest/get_string_fixtures/pagelogs/empty.log.php
new file mode 100644 (file)
index 0000000..860a37d
--- /dev/null
@@ -0,0 +1,2 @@
+<?php
+// Blank file, like the real ones, so we can time doing nothing for comparison.
diff --git a/lib/simpletest/getstringperformancetester.php b/lib/simpletest/getstringperformancetester.php
new file mode 100644 (file)
index 0000000..4d23672
--- /dev/null
@@ -0,0 +1,626 @@
+<?php // $Id$
+
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// NOTICE OF COPYRIGHT                                                   //
+//                                                                       //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
+//          http://moodle.org                                            //
+//                                                                       //
+// Copyright (C) 1999 onwards Martin Dougiamas  http://dougiamas.com     //
+//                                                                       //
+// This program is free software; you can redistribute it and/or modify  //
+// it under the terms of the GNU General Public License as published by  //
+// the Free Software Foundation; either version 2 of the License, or     //
+// (at your option) any later version.                                   //
+//                                                                       //
+// This program is distributed in the hope that it will be useful,       //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of        //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //
+// GNU General Public License for more details:                          //
+//                                                                       //
+//          http://www.gnu.org/copyleft/gpl.html                         //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+
+/**
+ * A simple test script that hammers get_string, and times how long it takes.
+ *
+ * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
+ * @package moodlecore
+ *//** */
+
+require_once(dirname(__FILE__) . '/../../config.php');
+require_once($CFG->libdir . '/moodlelib.php');
+
+define('NUM_CALLS', 20000);
+define('NUM_REPITITIONS', 3);
+$TEST_LANGUAGES = array('en_utf8', 'fr_utf8', 'fr_ca_utf8', 'nonexistant');
+
+require_login();
+require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
+
+$title = 'get_string performance test';
+print_header($title, $title, build_navigation($title));
+
+$installedlangs = get_list_of_languages();
+$requiredlangs = $TEST_LANGUAGES;
+array_pop($requiredlangs);
+foreach ($requiredlangs as $lang) {
+    if (!isset($installedlangs[$lang])) {
+        notify('You must install the following language packs to run these test: ' . implode(', ', $requiredlangs));
+        print_footer();
+        die;
+    }
+}
+
+time_for_loop();
+print_heading('Timing calling functions');
+time_function_call('dummy_function');
+time_function_call('simple_eval');
+time_function_call('simple_eval_with_interp');
+time_function_call('sprintf_eval');
+time_function_call('sprintf_eval_with_interp');
+time_function_call('strtr_eval');
+time_function_call('strtr_eval_with_interp');
+time_function_call('proposed');
+time_function_call('proposed_with_interp');
+time_log_file('empty.log.php');
+
+unset($COURSE->lang);
+if (isset($SESSION->lang)) {
+    $originalsessionlang = $SESSION->lang;
+} else {
+    $originalsessionlang = null;
+}
+try {
+
+    foreach ($TEST_LANGUAGES as $lang) {
+        print_heading("Language '$lang'");
+        $SESSION->lang = $lang;
+
+        time_log_file('admin_index.php_get_string.log.php');
+        time_log_file('course_view.php_get_string.log.php');
+        time_log_file('admin_index.php_old_get_string.log.php');
+        time_log_file('course_view.php_old_get_string.log.php');
+
+//        test_one_case('info', '', null);
+//        test_one_case('attemptquiznow', 'quiz', null);
+//        $a = new stdClass;
+//        $a->firstname = 'Martin';
+//        $a->lastname = 'Dougiamas';
+//        test_one_case('fullnamedisplay', '', $a);
+//        test_one_case('stringthatdoesnotexistinanyfile', 'qtype_shortanswer', null);
+    }
+
+} catch(Exception $e) { // Did they really leave finally out of PHP?
+    if (is_null($originalsessionlang)) {
+        unset($SESSION->lang);
+    } else {
+        $SESSION->lang = $originalsessionlang;
+    }
+}
+
+print_footer();
+
+/**
+ * plays back one of the files recored by turning on the logging option in string_manager.
+ * @param $filename
+ * @return unknown_type
+ */
+function time_log_file($filename) {
+    global $CFG;
+    print_heading("Playing back calls from $filename", '', 3);
+    $fullpath = $CFG->libdir . '/simpletest/get_string_fixtures/pagelogs/' . $filename;
+    for ($i = 0; $i < NUM_REPITITIONS; ++$i) {
+        set_time_limit(60);
+        $startime = microtime(true);
+        include($fullpath);
+        $duration = microtime(true) - $startime;
+        echo '<p>Time for ' . $filename . ': <b>' . format_float($duration, 3) . "s</b>.</p>\n";
+        flush();
+    }
+}
+
+/**
+ * Repeat one call to get_string NUM_CALLS times.
+ * @param $string
+ * @param $module
+ * @param $a
+ */
+function test_one_case($string, $module, $a) {
+    print_heading("get_string('$string', '$module', " . print_r($a, true) . ")", '', 3);
+    echo '<p>Resulting string: ' . get_string($string, $module, $a) . "</p>\n";
+    for ($i = 0; $i < NUM_REPITITIONS; ++$i) {
+        set_time_limit(60);
+        $startime = microtime(true);
+        for ($j = 0; $j < NUM_CALLS; $j++) {
+            get_string($string, $module, $a);
+        }
+        $duration = microtime(true) - $startime;
+        print_result_line($duration, 'calls to get_string');
+    }
+}
+
+function time_for_loop() {
+    print_heading('Timing an empty for loop');
+    $startime = microtime(true);
+    for ($i = 0; $i < NUM_CALLS; $i++) {
+    }
+    $duration = microtime(true) - $startime;
+    print_result_line($duration, 'trips through an empty for loop', 'iterations per second');
+}
+
+function simple_eval($string, $module, $a) {
+    $result = '';
+    $code = '$result = "Language string";';
+    if (eval($code) === FALSE) { // Means parse error.
+        debugging('Parse error while trying to load string "'.$identifier.'" from file "' . $langfile . '".', DEBUG_DEVELOPER);
+    }
+    return $result;
+}
+function simple_eval_with_interp($string, $module, $a) {
+    $result = '';
+    $code = '$result = "Language string $a->field.";';
+    if (eval($code) === FALSE) { // Means parse error.
+        debugging('Parse error while trying to load string "'.$identifier.'" from file "' . $langfile . '".', DEBUG_DEVELOPER);
+    }
+    return $result;
+}
+function sprintf_eval($string, $module, $a) {
+    $result = '';
+    $code = '$result = sprintf("Language string");';
+    if (eval($code) === FALSE) { // Means parse error.
+        debugging('Parse error while trying to load string "'.$identifier.'" from file "' . $langfile . '".', DEBUG_DEVELOPER);
+    }
+    return $result;
+    }
+function sprintf_eval_with_interp($string, $module, $a) {
+    $result = '';
+    $code = '$result = sprintf("Language string $a->field.");';
+    if (eval($code) === FALSE) { // Means parse error.
+        debugging('Parse error while trying to load string "'.$identifier.'" from file "' . $langfile . '".', DEBUG_DEVELOPER);
+    }
+    return $result;
+}
+function strtr_eval($string, $module, $a) {
+    $result = '';
+    $code = '$result = strtr("Language string", "", "");';
+    if (eval($code) === FALSE) { // Means parse error.
+        debugging('Parse error while trying to load string "'.$identifier.'" from file "' . $langfile . '".', DEBUG_DEVELOPER);
+    }
+    return $result;
+}
+function strtr_eval_with_interp($string, $module, $a) {
+    $result = '';
+    $code = '$result = strtr("Language string $a->field.", "", "");';
+    if (eval($code) === FALSE) { // Means parse error.
+        debugging('Parse error while trying to load string "'.$identifier.'" from file "' . $langfile . '".', DEBUG_DEVELOPER);
+    }
+    return $result;
+}
+function proposed($string, $module, $a) {
+    $result = 'Language string';
+    if (strpos($result, '$') !== false) {
+        $code = '$result = strtr("' . $result . '", "", "");';
+        if (eval($code) === FALSE) { // Means parse error.
+            debugging('Parse error while trying to load string "'.$identifier.'" from file "' . $langfile . '".', DEBUG_DEVELOPER);
+        }
+    }
+    return $result;
+}
+function proposed_with_interp($string, $module, $a) {
+    $result = 'Language string $a->field.';
+    if (strpos($result, '$') !== false) {
+        $code = '$result = strtr("' . $result . '", "", "");';
+        if (eval($code) === FALSE) { // Means parse error.
+            debugging('Parse error while trying to load string "'.$identifier.'" from file "' . $langfile . '".', DEBUG_DEVELOPER);
+        }
+    }
+    return $result;
+}
+function dummy_function($string, $module, $a) {
+}
+function time_function_call($functionname) {
+    $string = 'string';
+    $module = 'module';
+    $a = new stdClass;
+    $a->field = 'value';
+    $startime = microtime(true);
+    for ($i = 0; $i < NUM_CALLS; $i++) {
+        $functionname($string, $module, $a);
+    }
+    $duration = microtime(true) - $startime;
+    print_result_line($duration, 'calls to ' . $functionname);
+}
+
+function print_result_line($duration, $action1, $action2 = 'calls per second') {
+    echo '<p>Time for ' . format_float(NUM_CALLS, 0) . ' ' . $action1 . ': <b>' .
+            format_float($duration, 3) . 's</b> which is ' .
+            format_float((NUM_CALLS / $duration), 0) . ' ' . $action2 . ".</p>\n";
+    flush();
+}
+
+// =============================================================================
+// The rest of this file is the old implementation of get_string, with get_string
+// renamed to old_get_string, so we can do comparative timings.
+
+/**
+ * fix up the optional data in get_string()/print_string() etc
+ * ensure possible sprintf() format characters are escaped correctly
+ * needs to handle arbitrary strings and objects
+ * @param mixed $a An object, string or number that can be used
+ * @return mixed the supplied parameter 'cleaned'
+ */
+function clean_getstring_data( $a ) {
+    if (is_string($a)) {
+        return str_replace( '%','%%',$a );
+    }
+    elseif (is_object($a)) {
+        $a_vars = get_object_vars( $a );
+        $new_a_vars = array();
+        foreach ($a_vars as $fname => $a_var) {
+            $new_a_vars[$fname] = clean_getstring_data( $a_var );
+        }
+        return (object)$new_a_vars;
+    }
+    else {
+        return $a;
+    }
+}
+
+/**
+ * @return array places to look for lang strings based on the prefix to the
+ * module name. For example qtype_ in question/type. Used by get_string and
+ * help.php.
+ */
+function places_to_search_for_lang_strings() {
+    global $CFG;
+
+    return array(
+        '__exceptions' => array('moodle', 'langconfig'),
+        'assignment_' => array('mod/assignment/type'),
+        'auth_' => array('auth'),
+        'block_' => array('blocks'),
+        'datafield_' => array('mod/data/field'),
+        'datapreset_' => array('mod/data/preset'),
+        'enrol_' => array('enrol'),
+        'filter_' => array('filter'),
+        'format_' => array('course/format'),
+        'quiz_' => array('mod/quiz/report'),
+        'qtype_' => array('question/type'),
+        'qformat_' => array('question/format'),
+        'report_' => array($CFG->admin.'/report', 'course/report'),
+        'repository_'=>array('repository'),
+        'resource_' => array('mod/resource/type'),
+        'gradereport_' => array('grade/report'),
+        'gradeimport_' => array('grade/import'),
+        'gradeexport_' => array('grade/export'),
+        'profilefield_' => array('user/profile/field'),
+        'portfolio_' => array('portfolio/type'),
+        '' => array('mod')
+    );
+}
+
+/**
+ * Returns a localized string.
+ *
+ * Returns the translated string specified by $identifier as
+ * for $module.  Uses the same format files as STphp.
+ * $a is an object, string or number that can be used
+ * within translation strings
+ *
+ * eg "hello \$a->firstname \$a->lastname"
+ * or "hello \$a"
+ *
+ * If you would like to directly echo the localized string use
+ * the function {@link print_string()}
+ *
+ * Example usage of this function involves finding the string you would
+ * like a local equivalent of and using its identifier and module information
+ * to retrive it.<br/>
+ * If you open moodle/lang/en/moodle.php and look near line 1031
+ * you will find a string to prompt a user for their word for student
+ * <code>
+ * $string['wordforstudent'] = 'Your word for Student';
+ * </code>
+ * So if you want to display the string 'Your word for student'
+ * in any language that supports it on your site
+ * you just need to use the identifier 'wordforstudent'
+ * <code>
+ * $mystring = '<strong>'. get_string('wordforstudent') .'</strong>';
+or
+ * </code>
+ * If the string you want is in another file you'd take a slightly
+ * different approach. Looking in moodle/lang/en/calendar.php you find
+ * around line 75:
+ * <code>
+ * $string['typecourse'] = 'Course event';
+ * </code>
+ * If you want to display the string "Course event" in any language
+ * supported you would use the identifier 'typecourse' and the module 'calendar'
+ * (because it is in the file calendar.php):
+ * <code>
+ * $mystring = '<h1>'. get_string('typecourse', 'calendar') .'</h1>';
+ * </code>
+ *
+ * As a last resort, should the identifier fail to map to a string
+ * the returned string will be [[ $identifier ]]
+ *
+ * @uses $CFG
+ * @param string $identifier The key identifier for the localized string
+ * @param string $module The module where the key identifier is stored,
+ *      usually expressed as the filename in the language pack without the
+ *      .php on the end but can also be written as mod/forum or grade/export/xls.
+ *      If none is specified then moodle.php is used.
+ * @param mixed $a An object, string or number that can be used
+ *      within translation strings
+ * @param array $extralocations DEPRICATED. An array of strings with other
+ *      locations to look for string files. This used to be used by plugins so
+ *      they could package their language strings in the plugin folder, however,
+ *      There is now a better way to achieve this. See
+ *      http://docs.moodle.org/en/Development:Places_to_search_for_lang_strings.
+ * @return string The localized string.
+ */
+function old_get_string($identifier, $module='', $a=NULL, $extralocations=NULL) {
+    global $CFG;
+
+/// originally these special strings were stored in moodle.php now we are only in langconfig.php
+    $langconfigstrs = array('alphabet', 'backupnameformat', 'decsep', 'firstdayofweek', 'listsep', 'locale',
+                            'localewin', 'localewincharset', 'oldcharset', 'parentlanguage',
+                            'strftimedate', 'strftimedateshort', 'strftimedatefullshort', 'strftimedatetime',
+                            'strftimedaydate', 'strftimedaydatetime', 'strftimedayshort', 'strftimedaytime',
+                            'strftimemonthyear', 'strftimerecent', 'strftimerecentfull', 'strftimetime',
+                            'thischarset', 'thisdirection', 'thislanguage', 'strftimedatetimeshort', 'thousandssep');
+
+    $filetocheck = 'langconfig.php';
+    $defaultlang = 'en_utf8';
+    if (in_array($identifier, $langconfigstrs)) {
+        $module = 'langconfig';  //This strings are under langconfig.php for 1.6 lang packs
+    }
+
+    $lang = current_language();
+
+    if ($module == '') {
+        $module = 'moodle';
+    }
+
+/// If the "module" is actually a pathname, then automatically derive the proper module name
+    if (strpos($module, '/') !== false) {
+        $modulepath = split('/', $module);
+
+        switch ($modulepath[0]) {
+
+            case 'mod':
+                $module = $modulepath[1];
+            break;
+
+            case 'blocks':
+            case 'block':
+                $module = 'block_'.$modulepath[1];
+            break;
+
+            case 'enrol':
+                $module = 'enrol_'.$modulepath[1];
+            break;
+
+            case 'format':
+                $module = 'format_'.$modulepath[1];
+            break;
+
+            case 'grade':
+                $module = 'grade'.$modulepath[1].'_'.$modulepath[2];
+            break;
+        }
+    }
+
+/// if $a happens to have % in it, double it so sprintf() doesn't break
+    if ($a) {
+        $a = clean_getstring_data( $a );
+    }
+
+/// Define the two or three major locations of language strings for this module
+    $locations = array();
+
+    if (!empty($extralocations)) {
+        // This is an old, deprecated mechanism that predates the
+        // places_to_search_for_lang_strings mechanism that comes later in
+        // this function. So tell people who use it to change.
+        debugging('The fourth, $extralocations parameter to get_string is deprecated. ' .
+                'See http://docs.moodle.org/en/Development:Places_to_search_for_lang_strings ' .
+                'for a better way to package language strings with your plugin.', DEBUG_DEVELOPER);
+        if (is_array($extralocations)) {
+            $locations += $extralocations;
+        } else if (is_string($extralocations)) {
+            $locations[] = $extralocations;
+        } else {
+            debugging('Bad lang path provided');
+        }
+    }
+
+    if (!empty($CFG->running_installer) and $lang !== 'en_utf8') {
+        static $stringnames = null;
+        if (!$stringnames) {
+            $stringnames = file($CFG->dirroot.'/install/stringnames.txt');
+            $stringnames = array_map('trim', $stringnames);
+        }
+        if (array_search($identifier, $stringnames) !== false) {
+            $module = 'installer';
+            $filetocheck = 'installer.php';
+            $defaultlang = 'en_utf8';
+            $locations[] = $CFG->dirroot.'/install/lang/';
+        }
+    }
+
+    $locations[] = $CFG->dataroot.'/lang/';
+    $locations[] = $CFG->dirroot.'/lang/';
+    $locations[] = $CFG->dirroot.'/local/lang/';
+
+/// Add extra places to look for strings for particular plugin types.
+    $rules = places_to_search_for_lang_strings();
+    $exceptions = $rules['__exceptions'];
+    unset($rules['__exceptions']);
+
+    if (!in_array($module, $exceptions)) {
+        $dividerpos = strpos($module, '_');
+        if ($dividerpos === false) {
+            $type = '';
+            $plugin = $module;
+        } else {
+            $type = substr($module, 0, $dividerpos + 1);
+            $plugin = substr($module, $dividerpos + 1);
+        }
+        if (!empty($rules[$type])) {
+            foreach ($rules[$type] as $location) {
+                $locations[] = $CFG->dirroot . "/$location/$plugin/lang/";
+            }
+        }
+    }
+
+/// First check all the normal locations for the string in the current language
+    $resultstring = '';
+    foreach ($locations as $location) {
+        $locallangfile = $location.$lang.'_local'.'/'.$module.'.php';    //first, see if there's a local file
+        if (file_exists($locallangfile)) {
+            if ($result = get_string_from_file($identifier, $locallangfile, "\$resultstring")) {
+                if (eval($result) === FALSE) {
+                    trigger_error('Lang error: '.$identifier.':'.$locallangfile, E_USER_NOTICE);
+                }
+                return $resultstring;
+            }
+        }
+        //if local directory not found, or particular string does not exist in local direcotry
+        $langfile = $location.$lang.'/'.$module.'.php';
+        if (file_exists($langfile)) {
+            if ($result = get_string_from_file($identifier, $langfile, "\$resultstring")) {
+                if (eval($result) === FALSE) {
+                    trigger_error('Lang error: '.$identifier.':'.$langfile, E_USER_NOTICE);
+                }
+                return $resultstring;
+            }
+       }
+    }
+
+/// If the preferred language was English (utf8) we can abort now
+/// saving some checks beacuse it's the only "root" lang
+    if ($lang == 'en_utf8') {
+        return '[['. $identifier .']]';
+    }
+
+/// Is a parent language defined?  If so, try to find this string in a parent language file
+
+    foreach ($locations as $location) {
+        $langfile = $location.$lang.'/'.$filetocheck;
+        if (file_exists($langfile)) {
+            if ($result = get_string_from_file('parentlanguage', $langfile, "\$parentlang")) {
+                if (eval($result) === FALSE) {
+                    trigger_error('Lang error: '.$identifier.':'.$langfile, E_USER_NOTICE);
+                }
+                if (!empty($parentlang) and strpos($parentlang, '<') === false) {   // found it!
+
+                    //first, see if there's a local file for parent
+                    $locallangfile = $location.$parentlang.'_local'.'/'.$module.'.php';
+                    if (file_exists($locallangfile)) {
+                        if ($result = get_string_from_file($identifier, $locallangfile, "\$resultstring")) {
+                            if (eval($result) === FALSE) {
+                                trigger_error('Lang error: '.$identifier.':'.$locallangfile, E_USER_NOTICE);
+                            }
+                            return $resultstring;
+                        }
+                    }
+
+                    //if local directory not found, or particular string does not exist in local direcotry
+                    $langfile = $location.$parentlang.'/'.$module.'.php';
+                    if (file_exists($langfile)) {
+                        if ($result = get_string_from_file($identifier, $langfile, "\$resultstring")) {
+                            eval($result);
+                            return $resultstring;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+/// Our only remaining option is to try English
+
+    foreach ($locations as $location) {
+        $locallangfile = $location.$defaultlang.'_local/'.$module.'.php';    //first, see if there's a local file
+        if (file_exists($locallangfile)) {
+            if ($result = get_string_from_file($identifier, $locallangfile, "\$resultstring")) {
+                eval($result);
+                return $resultstring;
+            }
+        }
+
+        //if local_en not found, or string not found in local_en
+        $langfile = $location.$defaultlang.'/'.$module.'.php';
+
+        if (file_exists($langfile)) {
+            if ($result = get_string_from_file($identifier, $langfile, "\$resultstring")) {
+                eval($result);
+                return $resultstring;
+            }
+        }
+    }
+
+/// And, because under 1.6 en is defined as en_utf8 child, me must try
+/// if it hasn't been queried before.
+    if ($defaultlang  == 'en') {
+        $defaultlang = 'en_utf8';
+        foreach ($locations as $location) {
+            $locallangfile = $location.$defaultlang.'_local/'.$module.'.php';    //first, see if there's a local file
+            if (file_exists($locallangfile)) {
+                if ($result = get_string_from_file($identifier, $locallangfile, "\$resultstring")) {
+                    eval($result);
+                    return $resultstring;
+                }
+            }
+
+            //if local_en not found, or string not found in local_en
+            $langfile = $location.$defaultlang.'/'.$module.'.php';
+
+            if (file_exists($langfile)) {
+                if ($result = get_string_from_file($identifier, $langfile, "\$resultstring")) {
+                    eval($result);
+                    return $resultstring;
+                }
+            }
+        }
+    }
+
+    return '[['.$identifier.']]';  // Last resort
+}
+
+/**
+ * This function is only used from {@link get_string()}.
+ *
+ * @internal Only used from get_string, not meant to be public API
+ * @param string $identifier ?
+ * @param string $langfile ?
+ * @param string $destination ?
+ * @return string|false ?
+ * @staticvar array $strings Localized strings
+ * @access private
+ * @todo Finish documenting this function.
+ */
+function get_string_from_file($identifier, $langfile, $destination) {
+
+    static $strings;    // Keep the strings cached in memory.
+
+    if (empty($strings[$langfile])) {
+        $string = array();
+        include ($langfile);
+        $strings[$langfile] = $string;
+    } else {
+        $string = &$strings[$langfile];
+    }
+
+    if (!isset ($string[$identifier])) {
+        return false;
+    }
+
+    return $destination .'= sprintf("'. $string[$identifier] .'");';
+}
+
+?>
\ No newline at end of file
index 4300698b9afbaba257a59fe9a13559992b9eff2f..f3bcdb779d355a73d14dff7239f89472969ba093 100644 (file)
@@ -26,6 +26,8 @@
 /**
  * Unit tests for (some of) ../moodlelib.php.
  *
+ * Note, tests for get_string are in the separate file testgetstring.php.
+ *
  * @copyright &copy; 2006 The Open University
  * @author T.J.Hunt@open.ac.uk
  * @author nicolas@moodle.com
@@ -68,12 +70,6 @@ class moodlelib_test extends UnitTestCase {
             )
         );
 
-    function setUp() {
-    }
-
-    function tearDown() {
-    }
-
     function test_cleanremoteaddr() {
         //IPv4
         $this->assertEqual(cleanremoteaddr('1023.121.234.1'), null);
diff --git a/lib/simpletest/teststringmanager.php b/lib/simpletest/teststringmanager.php
new file mode 100644 (file)
index 0000000..b091e7f
--- /dev/null
@@ -0,0 +1,291 @@
+<?php // $Id$
+
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// NOTICE OF COPYRIGHT                                                   //
+//                                                                       //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
+//          http://moodle.org                                            //
+//                                                                       //
+// Copyright (C) 1999 onwards Martin Dougiamas  http://dougiamas.com     //
+//                                                                       //
+// This program is free software; you can redistribute it and/or modify  //
+// it under the terms of the GNU General Public License as published by  //
+// the Free Software Foundation; either version 2 of the License, or     //
+// (at your option) any later version.                                   //
+//                                                                       //
+// This program is distributed in the hope that it will be useful,       //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of        //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //
+// GNU General Public License for more details:                          //
+//                                                                       //
+//          http://www.gnu.org/copyleft/gpl.html                         //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+
+/**
+ * Tests for get_string in ../moodlelib.php.
+ *
+ * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
+ * @package moodlecore
+ */
+
+if (!defined('MOODLE_INTERNAL')) {
+    die('Direct access to this script is forbidden.');    ///  It must be included from a Moodle page
+}
+
+require_once($CFG->libdir . '/moodlelib.php');
+
+/**
+ * Test subclass that makes all the protected methods we want to test pubic.
+ */
+class testable_string_manager extends string_manager {
+    public function __construct($dirroot, $dataroot, $admin, $runninginstaller) {
+        parent::__construct($dirroot, $dataroot, $admin, $runninginstaller);
+    }
+    public function locations_to_search($module) {
+        return parent::locations_to_search($module);
+    }
+    public function parse_module_name($module) {
+        return parent::parse_module_name($module);
+    }
+    public function get_parent_language($lang) {
+        return parent::get_parent_language($lang);
+    }
+    public function load_lang_file($langfile) {
+        return parent::load_lang_file($langfile);
+    }
+    public function get_string_from_file($identifier, $langfile, $a) {
+        return parent::get_string_from_file($identifier, $langfile, $a);
+    }
+}
+
+/*
+These tests use a shared fixture comprising language files in 
+./get_string_fixtures/moodle, which the test class treats as $CFG->dirroot and
+./get_string_fixtures/moodledata, which the test class treats as $CFG->dataroot.
+
+The files we have, and their contents, are
+
+.../moodle/lang/en_utf8/moodle.php:
+$string['test'] = 'Test';
+$string['locallyoverridden'] = 'Not used';
+
+.../moodle/lang/en_utf8/test.php:
+$string['hello'] = 'Hello \'world\'!';
+$string['hellox'] = 'Hello $a!';
+$string['results'] = 'Dear $a->firstname $a->lastname,\n\nOn test \"$a->testname\" you scored $a->grade%% which earns you \$100.';
+
+.../moodle/lang/en_utf8_local/moodle.php:
+$string['locallyoverridden'] = 'Should see this';
+
+.../moodledata/lang/fr_ca_utf8/langconfig.php
+$string['parentlanguage'] = 'fr_utf8';
+
+.../moodledata/lang/es_ar_utf8/langconfig.php
+$string['parentlanguage'] = 'es_utf8';
+
+.../moodle/lang/es_ar_utf8_local/langconfig.php
+$string['parentlanguage'] = 'es_mx_utf8';
+
+.../moodledata/lang/fr_utf8/test.php
+$string['hello'] = 'Bonjour tout le monde!';
+$string['hellox'] = 'Bonjour $a!';
+
+.../moodledata/lang/fr_ca_utf8/test.php
+$string['hello'] = 'Bonjour Québec!';
+
+.../moodle/blocks/mrbs/lang/en_utf8/block_mrbs.php:
+$string['yes'] = 'Yes';
+
+.../moodle/blocks/mrbs/lang/fr_utf8/block_mrbs.php:
+$string['yes'] = 'Oui';
+
+*/
+
+class string_manager_test extends UnitTestCase {
+    protected $originallang;
+    protected $basedir;
+    protected $stringmanager;
+
+    public function setUp() {
+        global $CFG, $SESSION;
+        if (isset($SESSION->lang)) {
+            $this->originallang = $SESSION->lang;
+        } else {
+            $this->originallang = null;
+        }
+        $this->basedir = $CFG->libdir . '/simpletest/get_string_fixtures/';
+        $this->stringmanager = new testable_string_manager($this->basedir . 'moodle',
+                $this->basedir . 'moodledata', 'adminpath', false);
+    }
+
+    public function tearDown() {
+        global $SESSION;
+        if (is_null($this->originallang)) {
+            unset($SESSION->lang);
+        } else {
+            $SESSION->lang = $this->originallang;
+        }
+    }
+
+    public function test_locations_to_search_moodle() {
+        $this->assertEqual($this->stringmanager->locations_to_search('moodle'), array(
+            $this->basedir . 'moodle/lang/' => '',
+            $this->basedir . 'moodledata/lang/' => '',
+        ));
+    }
+
+    public function test_locations_to_search_langconfig() {
+            $this->assertEqual($this->stringmanager->locations_to_search('langconfig'), array(
+            $this->basedir . 'moodle/lang/' => '',
+            $this->basedir . 'moodledata/lang/' => '',
+        ));
+    }
+
+    public function test_locations_to_search_module() {
+        $this->assertEqual($this->stringmanager->locations_to_search('forum'), array(
+            $this->basedir . 'moodle/lang/' => 'forum/',
+            $this->basedir . 'moodledata/lang/' => 'forum/',
+            $this->basedir . 'moodle/mod/forum/lang/' => 'forum/',
+        ));
+    }
+
+    public function test_locations_to_search_question_type() {
+        $this->assertEqual($this->stringmanager->locations_to_search('qtype_matrix'), array(
+            $this->basedir . 'moodle/lang/' => 'qtype_matrix/',
+            $this->basedir . 'moodledata/lang/' => 'qtype_matrix/',
+            $this->basedir . 'moodle/question/type/matrix/lang/' => 'matrix/',
+        ));
+    }
+
+    public function test_locations_to_search_local() {
+        $this->assertEqual($this->stringmanager->locations_to_search('local'), array(
+            $this->basedir . 'moodle/lang/' => 'local/',
+            $this->basedir . 'moodledata/lang/' => 'local/',
+            $this->basedir . 'moodle/local/lang/' => 'local/',
+        ));
+    }
+
+    public function test_locations_to_search_report() {
+        $this->assertEqual($this->stringmanager->locations_to_search('report_super'), array(
+            $this->basedir . 'moodle/lang/' => 'report_super/',
+            $this->basedir . 'moodledata/lang/' => 'report_super/',
+            $this->basedir . 'moodle/adminpath/report/super/lang/' => 'super/',
+            $this->basedir . 'moodle/course/report/super/lang/' => 'super/',
+        ));
+    }
+
+    public function test_parse_module_name_module() {
+        $this->assertEqual($this->stringmanager->parse_module_name('forum'),
+                array('', 'forum'));
+    }
+
+    public function test_parse_module_name_grade_report() {
+        $this->assertEqual($this->stringmanager->parse_module_name('gradereport_magic'),
+                array('gradereport_', 'magic'));
+    }
+
+    public function test_get_parent_language_normal() {
+        // This is a standard case with parent language defined in
+        // moodledata/lang/fr_ca_utf8/langconfig.php. From the shared fixture:
+        //
+        //.../moodledata/lang/fr_ca_utf8/langconfig.php
+        //$string['parentlanguage'] = 'fr_utf8';
+        $this->assertEqual($this->stringmanager->get_parent_language('fr_ca_utf8'), 'fr_utf8');
+    }
+
+    public function test_get_parent_language_local_override() {
+        // This is an artificial case where the parent from moodledata/lang/es_ar_utf8 is overridden by
+        // a custom file in moodle/lang/es_ar_utf8_local. From the shared fixture:
+        //
+        //.../moodledata/lang/es_ar_utf8/langconfig.php
+        //$string['parentlanguage'] = 'es_utf8';
+        //
+        //.../moodle/lang/es_ar_utf8_local/langconfig.php
+        //$string['parentlanguage'] = 'es_mx_utf8';
+        $this->assertEqual($this->stringmanager->get_parent_language('es_ar_utf8'), 'es_mx_utf8');
+    }
+
+    public function test_load_lang_file() {
+        // From, the shared fixture:
+        //
+        //.../moodle/lang/en_utf8/test.php:
+        //$string['hello'] = 'Hello \'world\'!';
+        //$string['hellox'] = 'Hello $a!';
+        //$string['results'] = 'Dear $a->firstname $a->lastname,\n\nOn test \"$a->testname\" you scored $a->grade%% which earns you \$100.';
+        $this->assertEqual($this->stringmanager->load_lang_file($this->basedir . 'moodle/lang/en_utf8/test.php'), array(
+                'hello' => "Hello 'world'!",
+                'hellox' => 'Hello $a!',
+                'results' => 'Dear $a->firstname $a->lastname,\n\nOn test \"$a->testname\" you scored $a->grade%% which earns you \$100.',
+        ));
+    }
+
+    public function test_get_string_from_file_simple() {
+        // From the shared fixture:
+        //.../moodle/lang/en_utf8/test.php:
+        //$string['hello'] = 'Hello \'world\'!';
+        // ...
+        $this->assertEqual($this->stringmanager->get_string_from_file(
+                'hello', $this->basedir . 'moodle/lang/en_utf8/test.php', NULL),
+                "Hello 'world'!");
+    }
+
+    public function test_get_string_from_file_simple_interp_with_special_chars() {
+        // From the shared fixture:
+        //.../moodle/lang/en_utf8/test.php:
+        // ...
+        //$string['hellox'] = 'Hello $a!';
+        // ...
+        $this->assertEqual($this->stringmanager->get_string_from_file(
+                'hellox', $this->basedir . 'moodle/lang/en_utf8/test.php', 'Fred. $100 = 100%'),
+                "Hello Fred. $100 = 100%!");
+    }
+
+    public function test_get_string_from_file_complex_interp() {
+        // From the shared fixture:
+        //.../moodle/lang/en_utf8/test.php:
+        // ...
+        //$string['results'] = 'Dear $a->firstname $a->lastname,\n\nOn test \"$a->testname\" you scored $a->grade%% which earns you \$100.';
+        $a = new stdClass;
+        $a->firstname = 'Tim';
+        $a->lastname = 'Hunt';
+        $a->testname = 'The song "\'Right\' said Fred"';
+        $a->grade = 75;
+        $this->assertEqual($this->stringmanager->get_string_from_file(
+                'results', $this->basedir . 'moodle/lang/en_utf8/test.php', $a),
+                "Dear Tim Hunt,\n\nOn test \"The song \"'Right' said Fred\"\" you scored 75% which earns you $100.");
+    }
+
+    public function test_default_lang() {
+        global $SESSION;
+        $SESSION->lang = 'en_utf8';
+        $this->assertEqual($this->stringmanager->get_string('test'), 'Test');
+        $this->assertEqual($this->stringmanager->get_string('hello', 'test'), "Hello 'world'!");
+        $this->assertEqual($this->stringmanager->get_string('hellox', 'test', 'Tim'), 'Hello Tim!');
+        $this->assertEqual($this->stringmanager->get_string('yes', 'block_mrbs'), 'Yes');
+        $this->assertEqual($this->stringmanager->get_string('stringnotdefinedanywhere'), '[[stringnotdefinedanywhere]]');
+    }
+
+    public function test_non_default_no_parent() {
+        global $SESSION;
+        $SESSION->lang = 'fr_utf8';
+        $this->assertEqual($this->stringmanager->get_string('test'), 'Test');
+        $this->assertEqual($this->stringmanager->get_string('hello', 'test'), 'Bonjour tout le monde!');
+        $this->assertEqual($this->stringmanager->get_string('hellox', 'test', 'Jean-Paul'), 'Bonjour Jean-Paul!');
+        $this->assertEqual($this->stringmanager->get_string('yes', 'block_mrbs'), 'Oui');
+        $this->assertEqual($this->stringmanager->get_string('stringnotdefinedanywhere'), '[[stringnotdefinedanywhere]]');
+    }
+
+    public function test_lang_with_parent() {
+        global $SESSION;
+        $SESSION->lang = 'fr_ca_utf8';
+        $this->assertEqual($this->stringmanager->get_string('test'), 'Test');
+        $this->assertEqual($this->stringmanager->get_string('hello', 'test'), 'Bonjour Québec!');
+        $this->assertEqual($this->stringmanager->get_string('hellox', 'test', 'Jean-Paul'), 'Bonjour Jean-Paul!');
+        $this->assertEqual($this->stringmanager->get_string('yes', 'block_mrbs'), 'Oui');
+        $this->assertEqual($this->stringmanager->get_string('stringnotdefinedanywhere'), '[[stringnotdefinedanywhere]]');
+    }
+}
+
+?>