[quote=“darkicewow”][…]
@ white tiger ich weiß nnicht ob ich so dumm bin aber irgendwie wenn ich dein code benutzt bleibt meine seite weiß. habe natürlich auch ein ordner lang angelgt und en.php, de.php usw da rein gelegt[/quote]Naja… entweder haste was falsch angepasst, oder aber in der en.php etc. etwas falsch drinn^^ Die Art und weise wie ich den Include Prüfe hat den Nachteil das alle Fehler in der includeten Datei komplett abgestellt werden.
Kannst ja mal die @s vor “include” und “require” wegnehmen [size=85](falls du “include/require” noch drin hast)[/size]
Nachtrag [size=85](@ 5:12 AM)[/size]:
müsste ich jetzt nen gutes size=85[/size] und dennoch flexibles Lang system erstellen, würds ungefähr so aussehn:
<?php
$lang = 'xx';
/////////////////
$_lang = array();
if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']))
foreach(explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']) as $tmplang)
{
$tmplang = explode(';',$tmplang);
$tmplang = $tmplang[0];
// if(preg_match('/^[\w-]*$/',$tmplang) && is_file(__DIR__.'/.lang/'.$tmplang.'.lang.php'))
if(strpos($tmplang,0x2f) === FALSE && strpos($tmplang,0x5c) === FALSE && is_file(__DIR__.'/.lang/'.$tmplang.'.lang.php'))
{
$lang = $tmplang;
break;
}
}
define('LANG_DEF',$lang);
require(__DIR__.'/.lang/'.LANG_DEF.'.lang.php');
if(!empty($_GET['lang']))
{
$tmplang = strtolower($_GET['lang']);
// if(preg_match('/^[\w-]*$/',$tmplang) && is_file(__DIR__.'/.lang/'.$tmplang.'.lang.php'))
if(strpos($tmplang,0x2f) === FALSE && strpos($tmplang,0x5c) === FALSE && is_file(__DIR__.'/.lang/'.$tmplang.'.lang.php'))
{
$lang = $tmplang;
}
}
define('LANG',$lang);
if(LANG != LANG_DEF)
{
// define('LANG_LNK','lang='.LANG);
require(__DIR__.'/.lang/'.LANG.'.lang.php');
}
// else
// define('LANG_LNK','');
define('LANG_LNK','lang='.LANG);
function lang($id)
{
global $_lang;
if(isset($_lang[LANG][$id]))
return $_lang[LANG][$id];
elseif(isset($_lang[LANG_DEF][$id]))
return $_lang[LANG_DEF][$id];
return '|lang error|';
}
function langx($id)
{
global $_lang;
$args=func_num_args();
$str = Null;
if(isset($_lang[LANG][$id]))
$str = $_lang[LANG][$id];
elseif(isset($_lang[LANG_DEF][$id]))
$str = $_lang[LANG_DEF][$id];
else return '|lang error|';
for($i=1;$i<$args;$i++)
{
$str = str_replace('%'.$i.'%',func_get_arg($i),$str);
}
return $str;
}
?>
Beispiel: test.white-tiger.xe.cx/lang.inc.php [size=85](bei mir ists z.B. automatisch auf English, default ist übrigens xx nur wird das vermutlich niemand bekommen solange man EN oder DE als Sprache hat^^)[/size][code]<!doctype html>
<?php
if(isset($_GET['op']))
{
echo ''.lang(200).'
body{margin:0;}
a img{border:0;}
'.lang(202).lang(203).'
'.lang(101).'';
}
else
{
echo ''.lang(100).'
body{margin:0;}
a img{border:0;}
'.lang(102).date(lang(10)).lang(103).date(lang(11)).lang(104).langx('test_langx',1,2,lang('test_langx_3'),4,5,6,7,8,lang('test_langx_9'),10,lang('test_langx_damn')).lang('donno').lang('op').'
'.lang(201).''.lang('btw_vaild');
}
?>
[/code]Ne Sprach Datei sieht z.B. so aus:[code]<?php
// GLOBAL (everywhere needed, not just for one page eg.
$_lang[$lang][10]='D, d M Y';
$_lang[$lang][11]='h:i:s A';
// Main Page
$_lang[$lang][100]='Main Page';
$_lang[$lang][101]='click to go to "Main Page"';
$_lang[$lang][102]='Welcome to this demonstration

Today is: ';
$_lang[$lang][103]=' and it\'s ';
$_lang[$lang][104]='
';
$_lang[$lang]['donno']='I don\'t know what i should say now (or better write)... maybe just nothing at all

';
$_lang[$lang]['op']='
Just test another page^^
';
$_lang[$lang]['btw_vaild']='
btw... this page is vaild HTML5

';
// Other Page
$_lang[$lang][200]='Other Page';
$_lang[$lang][201]='click to go to "Other Page"';
$_lang[$lang][202]='THIS IS OTHERPAGEAAAAAAAAAAAAAAAAAAAA!
';
$_lang[$lang][203]='
¿WTF? let\'s get the hell outta here!
';
// Tests
$_lang[$lang]['test_langx_3']='three';
$_lang[$lang]['test_langx_9']='nine';
$_lang[$lang]['test_langx_damn']='ah fuck off!';
$_lang[$lang]['test_langx']='
lang_ext(\'langx\', %1%, %2%, \'%3%\', %4%, %5%, %6%, %7%, %8%, \'%9%\', %10%, %1%%1%, %2%%1%... %11%)
';
?>[/code]in der Deutschen fehlt z.B. [i]202[/i] und [i]'test_langx'[/i] wesshalb das englische genommen wird. Wie gesagt das hier ist nen erweiterbares System daher teils doch recht Komplex^^
Ich, für mich, würde eigentlich immer eher Statisch arbeiten... daher keine "Default" Sprache als Fallback, demnach auch keine Funktion sowie das laden 2er Sprachen etc. Wobei [i]langx()[/i] doch recht nützlich ist wenn man etwas einfügen will und die Position net immer gleich ist :wink:
Ansonsten muss man sich halt auch entscheiden,
[ul][li]ob man die alternativen LANG_LNKs möchte daher wenn nicht extra ausgewählt, das die Links "neutral" bleiben. [size=85](also unverändert, ohne lang=)[/size][/li]
[li]Oder die Alternative Sicherheitsprüfung mit nem Regulären Ausdruck der nur A-Z sowie _ und - erlaubt, wobei "/" sowie "\" prüfen reichen sollte, solange ich nichts übersehn / überdacht hab xD[/li][/ul]
@darkicewow
versuch durchzusteigen xD Wobei das kein großes Problem sein sollte.
An dem Example solltest du dich net unbedingt zu sehr orientieren^^ Zahlen als "id"s dürften schneller sein als Strings, nicht nur weil weniger zu parsen ist
Jedoch kann man halt auch Strings nutzen was für uns Menschen wiederum einfacher ist 
Wobei ein Language System allgemein die Übersichtlichkeit reduziert, außer man hat eines wie bei Miranda z.B. [size=85](miranda-im.de/mediawiki/index.ph … atei:XFire)[/size] bei welchem der komplette Text an eine Funktion übergeben wird, die falls vorhanden die Übersetzung ausspuckt und ansonsten das ganze unverändert.
Allerdings ist dies net wirklich performant weshalb es dann leider weg fällt, eben weil es Übersichtlich ist xD
PS: Verbesserungsvorschläge gerne genommen, immerhin ists spät demnach eventuell etwas verpeilt oder man kann etwas allgemein verbessern z.B. im Sinne Geschwindigkeit etc.
PPS: dat Beispiel isn Beispiel, ignoriert es xD