GetXMLTree( $fname ); if (file_exists($fname)){ $xmlstring = file_get_contents($fname); } else { echo 'FILE DOES NOT EXIST: ' . $fname; return 0; } // replace new lines in string values with pipes $xmlstring = preg_replace( "/([^>] *)\\r\\n/m", "\\1|", $xmlstring ); $langxml = $xmlparser->GetXMLTreeFromString( $xmlstring ); //echo "
";
		
		// process forms
		foreach ( $langxml['APPLICATION'][0]['FORMS'][0]['FORM'] as $form ) {
			$formID = $form["ATTRIBUTES"]["ID"];
			$array[$formID] = getValue($form["ATTRIBUTES"]["CAPTION"]);
					
			if ( count( $form['ITEM'] ) ) {
				foreach ( $form['ITEM'] as $item ) {
					if ( strval($item['ATTRIBUTES']['CLASS']) == "tcombobox" || 
						strval($item['ATTRIBUTES']['CLASS']) == "tcustomlistview" ||
						strval($item['ATTRIBUTES']['CLASS']) == "tchecklistbox" ||
						strval($item['ATTRIBUTES']['CLASS']) == "tadvancedheaderlist" ) {
						// this item is a complex (multiline) item with multiple subitems
						$array[$formID."_".$item['ATTRIBUTES']['ID']] = getValue($item['ATTRIBUTES']['ITEMSTEXT']);
					}
					else {
						$array[$formID."_".$item['ATTRIBUTES']['ID']] = getValue($item['ATTRIBUTES']['CAPTION']);
					}
				}
			}
		}
                   
		// process menu items
			foreach ( $langxml['APPLICATION'][0]['MENU'][0]['SECTION'] as $menu ) {
			$menuID = $menu["ATTRIBUTES"]["ID"];
			if($menuID=='advanced'){
				if ( count( $menu['ITEM'] ) ) {
					foreach ( $menu['ITEM'] as $item ) {
						$array["TTntMenuItems_".$item['ATTRIBUTES']['ID']] = getValue($item['ATTRIBUTES']['TITLE']);
					}
				}
			}
		}
		
		// process global strings
		foreach ( $langxml['APPLICATION'][0]['STRINGS'][0]['STRING'] as $string ) {
			$stringID = $string["ATTRIBUTES"]["ID"];
			if ( count( $string['ITEM'] ) ) {
				foreach ( $string['ITEM'] as $item ) {
					$array[$stringID."_".$item['ATTRIBUTES']['ID']] = getValue($item['ATTRIBUTES']['VALUE']);
				}
			}
		}

		return $array;		
	}
	

	/* ---------------------------------------------------------------------------------------
	 SaveALang function takes a flat array of strings containing the language data and writes
	 them down into a php file as a definition of that array.
	--------------------------------------------------------------------------------------- */
	function SaveALang( $array, $fname )
	{
		if ( ($fh = fopen( $fname, "wt" ) ) === FALSE ) return -1;
		
		fprintf( $fh, " "\\\\", "\"" => "\\\"" );
		
		foreach ( $array as $key => $val ) {
			$id = strtr( $key, $replacement );
			$string = strtr( $val, $replacement );
			fprintf( $fh, '$alang["%s"] = "%s";'."\n", $id, $string );
		}
		
		fprintf( $fh, "?>" );
		fclose( $fh );  
		
		return 0;
	}
	
	function ConvertOne($langFN,$alangFN)
	{
		// load the .XML
  	$lang = LoadLang( $langFN );
	 //echo "
"; print_r( $lang ); echo "
"; // save as .HTML if ( SaveALang( $lang, $alangFN ) ) echo "Unable to save the language data.
"; else echo "Language file '$langFN' successfully converted to '$alangFN'.
"; } function ConvertDir($in,$ou) { if ($dh = opendir($in)) { while (($file = readdir($dh)) !== false) { if (filetype($in . $file)!='dir') continue; if ($file[0]=='.') continue; echo "\n\n".$file."\n"; if(!is_dir($ou.$file)) mkdir($ou.$file); ConvertOne($in.$file.'\data.xml',$ou.$file.'\alang.html'); } closedir($dh); } } $langFN = "data.xml"; $alangFN = "alang.html"; if ( isset($lang) && strlen($lang) ) $langFN = $lang; if ( isset($alang) && strlen($alang) ) $alangFN = $alang; if ( isset($argv[1]) && strlen($argv[1]) ) $inputDir = $argv[1]; if ( isset($argv[2]) && strlen($argv[2]) ) $outputDir = $argv[2]; if( $inputDir && $outputDir) { if(is_dir($inputDir)) ConvertDir($inputDir,$outputDir); else ConvertOne($inputDir,$outputDir); } else ConvertOne($langFN,$alangFN); ?>