Pagina 1 van 1

Language Settings mod geschikt maken voor alle files

Geplaatst: 13 feb 2005, 14:31
door Bee
Ik wil graag gebruik maken van de Language settings mod, gemaakt door Ptirhiik, die ook wordt gebruikt bij veel van zijn mods. Echter, deze werkt alleen voor lang_extend_*.php , lang_extend_admin_*.php , lang_main.php en lang_admin.php

Nu vermoed ik dat het aan te passen is in admin_lang_extend.php, en dan in een van de volgende drie functies

Code: Selecteer alles

function lang_extend_get_countries()
{
	global $phpbb_root_path, $phpEx;

	// get all countries installed
	$countries = array();
	$dir = @opendir($phpbb_root_path . './language');
	while ( $file = @readdir($dir) )
	{
		if ( preg_match('#^lang_#i', $file) && !is_file($phpbb_root_path . './language/' . $file) && !is_link($phpbb_root_path . './language/' . $file) )
		{
			$filename = trim( str_replace('lang_', '', $file) );
			$displayname = preg_replace("/^(.*?)_(.*)$/", "\\1 [ \\2 ]", $filename);
			$displayname = preg_replace("/\[(.*?)_(.*)\]/", "[ \\1 - \\2 ]", $displayname);
			$countries[$file] = ucfirst($displayname);
		}
	}
	@closedir($dir);
	@asort($countries);

	return $countries;
}

function lang_extend_get_packs()
{
	global $phpbb_root_path, $phpEx;
	global $countries;

	// get all the extensions installed
	$packs = array();
	@reset($countries);
	while ( list($country_dir, $country_name) = @each($countries) )
	{
		$dir = @opendir( $phpbb_root_path . './language/' . $country_dir );
		while ( $file = @readdir($dir) )
		{
			if( preg_match("/^lang_extend_.*?\." . $phpEx . "$/", $file) )
			{
				$displayname = trim( str_replace(".$phpEx", '', str_replace('lang_extend_', '', $file)) );
				$packs[$file] = $displayname;
			}
		}
		@closedir($dir);
	}
	$packs['lang'] = '_phpBB';
	$packs['custom'] = '_custom';
	@asort($packs);

	return $packs;
}

function lang_extend_read_one_pack($country_dir, $pack_file, &$entries)
{
	global $phpbb_root_path, $phpEx;
	global $countries, $packs;

	// get filename
	$file = $phpbb_root_path . './language/' . $country_dir . '/' . $pack_file;

	// process first admin then standard keys
	for ( $i=0; $i < 2; $i++ )
	{
		$lang_extend_admin = ($i==0);

		// fix the filename for standard keys
		if ($pack_file == 'lang')
		{
			$file = $phpbb_root_path . './language/' . $country_dir . '/' . ($lang_extend_admin ? 'lang_admin.' : 'lang_main.') . $phpEx;
		}
		// fix the filename for custom keys
		if ($pack_file == 'custom')
		{
			$file = $phpbb_root_path . './language/' . $country_dir . '/' . 'lang_extend.' . $phpEx;
		}

		// process
		$lang = array();
		@include($file);
		@reset($lang);
		while ( list($key_main, $data) = @each($lang) )
		{
			$custom = ($pack_file == 'custom');
			$first = !is_array($data);
			while ( ( is_array($data) && (list($key_sub, $value) = @each($data)) ) || $first )
			{
				$first = false;
				if ( !is_array($data) )
				{
					$key_sub = '';
					$value = $data;
				}
				$pack = $pack_file;
				$original = '';
				if ( $custom && isset($entries['pack'][$key_main][$key_sub]) )
				{
					$pack = $entries['pack'][$key_main][$key_sub];
					$original = $entries['pack'][$key_main][$key_sub][$country_dir];
				}
				$entries['pack'][$key_main][$key_sub] = $pack;
				$entries['value'][$key_main][$key_sub][$country_dir] = $value;
				$entries['original'][$key_main][$key_sub][$country_dir] = $original;
				$entries['admin'][$key_main][$key_sub] = $lang_extend_admin;
				// status : 0=original, 1=modified, 2=added
				$entries['status'][$key_main][$key_sub][$country_dir] = ( !$custom ? 0 : ( ($pack != $pack_file) ? 1 : 2 ) );
			}
		}
	}
}
Maar wat precies moet ik nu aanpassen?

Geplaatst: 13 feb 2005, 14:36
door Paul
Das nog niet zo simpel. Je moet de laatste functie helemaal verbouwen. Die eerste twee een klein beetje. Ik zal er zo ff naar kijken :)

Geplaatst: 13 feb 2005, 14:43
door Bee
Ik dacht zelf het volgende:

Code: Selecteer alles

function lang_extend_get_packs() 
{ 
   global $phpbb_root_path, $phpEx; 
   global $countries; 

   // get all the extensions installed 
   $packs = array(); 
   @reset($countries); 
   while ( list($country_dir, $country_name) = @each($countries) ) 
   { 
      $dir = @opendir( $phpbb_root_path . './language/' . $country_dir ); 
      while ( $file = @readdir($dir) ) 
      { 
         if( preg_match("/^lang_.*?\." . $phpEx . "$/", $file) ) 
         { 
            $displayname = trim( str_replace(".$phpEx", '', str_replace('lang_extend_', '', $file)) ); 
            $packs[$file] = $displayname; 
         } 
      } 
      @closedir($dir); 
   } 
   $packs['lang'] = '_phpBB'; 
   $packs['custom'] = '_custom'; 
   @asort($packs); 

   return $packs; 
} 
zodat hij alle files zou pakken, en niet alleen de lang_extend_*.php , maar gaat hij dan niet de mist in omdat hij ook de lang_main.php en lang_admin.php en de FAQ bestanden te pakken neemt, terwijl hij daar niet mee overweg kan.

Geplaatst: 13 feb 2005, 14:44
door Paul
Dat is zo, maar je moet ook naar die laatste functie kijken. Die leest namelijk de bestanden uit.