Seite 1 von 2

[erledigt]phpbb sprachzuweisung

Verfasst: 17.11.2006 16:35
von Ambience
Hallo,

also ich sitze hier gerade vor einem Problem. Will mein Gästebuch auf sprachdateien und templatesystem umbauen.

Nun häng ich aber bei den sprachdateien.

Wo wird in phpBB die sprache aus der datenbank geholt? Ich nehme an functions.php habe dort aber nichts gefunden und/oder bin zu blöd.

und wie funktioniert das, das man auf anderen seiten wie z.b. faq die lang_faq hat?

Aber ich denke ich war nur irgendwie ein wenig zu blöd richtig zu suchen.

ps. Nehme meine Inspiration von phpBB^^

Verfasst: 17.11.2006 17:46
von Jensemann
Die Sprache kommt nicht aus der Datenbank, sondern aus lang_*.php. Diese Dateien sind einfacher PHP-Code, deswegen die Endung, mit einem assoziativen Array (Name als Index, kein Integer). Diese Dateien werden mittels des PHP-Konstrukts include() inkludiert, womit dir dieses As-Array im Code zur Verfügung steht. Anstatt von echo "Hallo Welt"; schreibst du nun eben echo $lang["Hello_World"]; weil du in der lang_*.php geschrieben hast $lang["Hello_World"] = "Hallo Welt";

Das ganze findest du nicht in functions.php. sondern im common.php, IIRC

Verfasst: 17.11.2006 18:32
von larsneo
alternative möglichkeiten wären defines (performance) bzw. gettext (bessere i8n) - in bezug auf templating ist imho smarty eine gute wahl.

Verfasst: 18.11.2006 12:34
von Ambience
nein, ich mein das anders.

also in der datenbank steht:

default_lang und als wert hat das z.b. german

dann werden ja aus der language/lang_german/lang_main.php die sachen geholt. oder so in der richtung.

Nun ich möchte gerne wissen, wo das genau ist. also auf der faq seite wird ja eine andere lang_* datei benutzt als auf der index.

Meine genaue Frage wäre:
Wo wird zum ersten mal die sprache geholt. also aus der datenbank in der common. wo werden dann die dateien geincludet`? und wie läuft das mit der faq seite, das da die lang_faq.php geholt wird?

evtl. hab ich mich jetzt ein wenig besser ausgedrückt.

ok, habs nun selber gefunden:

Code: Alles auswählen

//
// Load the appropriate faq file
//
if( isset($HTTP_GET_VARS['mode']) )
{
	switch( $HTTP_GET_VARS['mode'] )
	{
		case 'bbcode':
			$lang_file = 'lang_bbcode';
			$l_title = $lang['BBCode_guide'];
			break;
		default:
			$lang_file = 'lang_faq';
			$l_title = $lang['FAQ'];
			break;
	}
}
else
{
	$lang_file = 'lang_faq';
	$l_title = $lang['FAQ'];
}
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/' . $lang_file . '.' . $phpEx);
aber wo wird in der index.php die sprache geholt?

Verfasst: 18.11.2006 12:40
von Jan500
hi

in der inculdes/functions.php

die function init_userprefs()

für die faq ist dieser code verantwortlich in der faq.php
//
// Load the appropriate faq file
//
if( isset($HTTP_GET_VARS['mode']) )
{
switch( $HTTP_GET_VARS['mode'] )
{
case 'bbcode':
$lang_file = 'lang_bbcode';
$l_title = $lang['BBCode_guide'];
break;
default:
$lang_file = 'lang_faq';
$l_title = $lang['FAQ'];
break;
}
}
else
{
$lang_file = 'lang_faq';
$l_title = $lang['FAQ'];
}
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/' . $lang_file . '.' . $phpEx);
gruß jan

Verfasst: 18.11.2006 12:43
von Ambience
vielen dank. dann habe ich wohl falsch gesucht. hatte sowas in der art wie setup_lang gesucht. gibt ja auch eine setup_style function.

Danke

Verfasst: 18.11.2006 12:43
von Olli Oberhausen
functions.php > function init_userprefs()

Code: Alles auswählen

function init_userprefs($userdata)
{
	global $board_config, $theme, $images;
	global $template, $lang, $phpEx, $phpbb_root_path, $db;
	global $nav_links;

	if ( $userdata['user_id'] != ANONYMOUS )
	{
		if ( !empty($userdata['user_lang']))
		{
			$default_lang = phpbb_ltrim(basename(phpbb_rtrim($userdata['user_lang'])), "'");
		}

	}
	else
	{
		$default_lang = phpbb_ltrim(basename(phpbb_rtrim($board_config['default_lang'])), "'");
	}

	$board_config['default_lang'] = $default_lang;

	include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx);

	if ( defined('IN_ADMIN') )
	{
		if( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.'.$phpEx)) )
		{
			$board_config['default_lang'] = 'english';
		}

		include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx);
	}


	return;
}
Die funktion hab ich der Übersicht halber gekürzt...

Olli

Verfasst: 18.11.2006 12:45
von Ambience
danke

so hab mal ein wenig rumgespielt:

Code: Alles auswählen

function setup_guestbook()
{
  global $greatbook_config, $greatbook_root_path, $phpEx;
  
  $default_lang = $greatbook_config['language'];
  
  if (!file_exists($greatbook_root_path . 'language/' . $default_lang . '/lang_main.' . $phpEx))
  {
    //
    // alternate language for guestbook
    //
    $default_lang = 'de';
  }
  
  if (!file_exists($greatbook_root_path . 'language/' . $default_lang . '/lang_main.' . $phpEx))
  {
    die('Keine valide language datei gefunden');
  }
  
  include($greatbook_root_path . 'language/' . $default_lang . '/lang_main.' . $phpEx);
}
ehm ja. Wie komm ich jetzt auserhalb dieser funktion an meine language variablen?

Verfasst: 18.11.2006 19:46
von Ambience
also ich meine ich hab das wie bei phpbb... aber trotzdem komme ich nicht an $lang['Index'] heran. was läuft an meiner funktion den falsch, was in der von Olli´s nicht so ist?

Verfasst: 18.11.2006 20:53
von fanrpg
Normalerweise müsste das so funktionieren.. evt. mal $lang mit in die globals aufnehmen

Code: Alles auswählen

global $greatbook_config, $greatbook_root_path, $phpEx, $lang;