Seite 1 von 2

Sprachdateien in php?

Verfasst: 11.09.2008 13:38
von Pato
Hi..

und zwar bin ich grad ein wenig am php rumprobieren...
und möchte gerne zwei sprachdateien Deutsch und Englisch nutzen. Immoment hab ich nur eine (DE), jedoch funktioniert es irgendwie nicht... woran liegt das?

index.php

Code: Alles auswählen

<?php

include("language/lang_de.php");

include("style/index_body.html");

$lang->assign_vars(array(
 "L_HALLO" => "$lang[Hallo]",
));

?>
index_body.html

Code: Alles auswählen

{L_HALLO}
lang_de.php

Code: Alles auswählen

<?php

$lang = array_merge($lang, array(
"Hallo" => 'Hallo und Herzlich Willkommen,',
));

?>
Kann mir einer vielleicht helfen?

MfG Pato

Verfasst: 11.09.2008 14:09
von PhilippK
Dir ist aber schon bewusst, dass die Template-Funktion nicht von PHP mitgeliefert wird sondern durch phpBB?
Ich würde mich erst mal mit den Grundlagen zu PHP-Ausgaben beschäftigen...

Viele Grüße,

Philipp

Verfasst: 11.09.2008 15:51
von Boecki91
Du willst das nicht auf phpBB Basis machen oder?

Dann versuche es mal damit:

Code: Alles auswählen

<?php
// index.php

include('./lang_de.php');
// include('./lang_en.php');

echo $lang['welcome'];
?>

Code: Alles auswählen

<?php
// lang_de.php

$lang = array(
    'welcome' => 'Willkommen auf dieser Seite'
);

?>
Zwar ist da jetzt kein Templatesystem dabei aber so etw3as wie Smarty kann man ja noch einbauen.

Wenn es doch phpBB3 bassiert sein soll lese mal http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten

Ach ja ein gutes PHP-Tutorial sollte den Einstieg erleichtern, man fängt bei einfachen Dingen an und nach einiger Zeit kann man sich dann an ein komplexes Sxstem wie phpBB wagen und es sich anschauen, versuchen es zumindest teilweise zu verstehen und dann für seine Zwecke zu erweitern...

Verfasst: 12.09.2008 21:09
von Pato
Hi,..

ne, es soll ein separates php sein... also nicht eins was mit phpbb läuft.

danke @boechi91
Die funktion mit echo hab ich schon ausprobiert und hat auch bereits funktioniert...
ich möchte aber gern so ein ähnliches templates system benutzen mit navi und body. Und möchte gern das Ergebnis was ich per echo bekomm in die templates als z.B. {blubb} eingeben, damit ich das Ergebnis ins Layout einfügen kann.
Ich weiß, dass ich HTML auch in php nutzen kann,... aber das ist mir zu umständlich...

Code: Alles auswählen

<?php 
// index.php 

include('./lang_de.php'); 
include('./lang_en.php'); 

echo $lang['welcome']; 
?> 
Wenn ich beide sprachdateien include hab ich ja das problem, dass er ja nicht weiß welche Sprache er einfügen soll oder net?
Es soll zwei links DE und EN geben, wo der Benutzer die Möglichkeit hat die Sprache zu ändern... das prinzip glaub ich hab ich verstanden, nur es funktioniert bei mir mit der umgang nicht...

if DE... include lang_de
else include lang_en

oder so ähnlich oder wie stell ich das intelligent an? *fG*

Ja, ich sollte vielleicht wirklich php lernen, jedoch hab ich schon mehrere PHP-Tutorial durch gemacht und irgendwie war das mir immer einwenig zu hoch und hab den überblick verlohren... ^^

MfG Pato

Verfasst: 12.09.2008 21:44
von Boecki91
Naja die PHP-Grundlagen solltest du drauf haben:
http://de.php.net/manual/de/language.co ... ctures.php

Die frage ist natürlich nach was du unterscheiden willst und kannst, am einfachsten wäre ein Drop-Down Menü (Formular) das jedesmal die ausgewählte Sprache mit übermittelt.


Zum Thema Template-System, schaue dir einfach mal Smarty an.

Mache aber nicht den Fehler und fange an das Programm im Template zu schreiben, Trenne also so strikt wie möglich zwischen Logik und Aussehen.

Ich weiß auch nicht ob du das auf deinem jetzigem Kenntnisstand, überhaupt verstehst, momentan scheinst du mehr Copy&Paste zu machen als eigenen Code zu schreiben und zu verstehen.

Verfasst: 13.09.2008 15:24
von cYbercOsmOnauT
Nützlich wäre dann auch dies hier:
Smarty

Verfasst: 13.09.2008 16:19
von Pato
Hi, danke, aber wozu brauch ich das smarty? Ist ja wieder so ein komplet system... so viel extra zeug brauch ich ja nicht oder??? Hab es nur mal grob überflogen...

zurück zu mein problem,...

Code: Alles auswählen

$language = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
	switch($language) {
    case 'de': include('language/lang_de.php');
    break;
    case 'en': include('language/lang_en.php');
    break;
    default: include('language/lang_en.php');
    }
Hab es mal so ausprobiert... das einzige Problem ist, das er bei mir die englische sprachdatei läd anstelle von deutschen,... kann natürlich auch an ein falsch konfigurierten pc liegen... ich weiß es nicht... eigentlich ist es richtig konfiguriert. naja,... ich möchte aber doch noch die funktion haben, dass der benutzer separat die sprachdatei ändern kann...

"?langauge=de" oder so ähnlich... wie stell ich das an?

Verfasst: 13.09.2008 16:57
von Boecki91
Sicher das es an den Browser bzw PC Einstellungen liegt?
Es könnte ja auch das Script fehlerhaft sein.
Lege als default mal de fest und beobachte das Ergebnis...

Dumm, anscheinend werden weder de noch en erkannt und immer die Standard-Sprache genommen, doch wie kommt das?

Teste doch mal nen bisschen rum...

Was ist eigendlich in
$_SERVER["HTTP_ACCEPT_LANGUAGE"] gespeichert?

Code: Alles auswählen

echo $_SERVER["HTTP_ACCEPT_LANGUAGE"];
Danach schaust ob das was da raus kommt gleich "de" oder "en" ist :o :D

Da du ja nichts fertiges haben willst gebe ich auch keinen Link zu einer kompletten Spracherkennungs-Funktion. 8)
EDIT:
Aber den genaue Aufbau kann ich ja mal rein reichen: http://www.w3.org/Protocols/rfc2616/rfc ... ml#sec14.4



Nun zu Smarty bzw Template-Systemen, willst du das ernsthaft selbst programmieren?

Ich selbst versuche möglichst viel selbst zu machen, doch bei manchen Dingen wie z.B. einem Forum lohnt es sich nicht, weil es bereits etwas kostenloses gibt das ich selbst verändern kann und weit über meine Minimalkriterien liegt. So ähnlich sehe ich das auch bei Templatesystemen.
Schaue dir mal str_replace, preg_replace etc auf php.net an, damit liese sich das {IRGENDWAS} nach "etwas" umwandeln realisieren....

Edit:

Ich hab noch was vergessen:
Das hast du überlesen
Boecki91 hat geschrieben: am einfachsten wäre ein Drop-Down Menü (Formular) das jedesmal die ausgewählte Sprache mit übermittelt.
das wäre dann das mit dem language=xy
http://www.php.net/manual/de/tutorial.forms.php

Verfasst: 14.09.2008 03:01
von cYbercOsmOnauT
Pato hat geschrieben:Hi, danke, aber wozu brauch ich das smarty?
Smarty ist eine Template-Engine. Damit kannst Du wieder so wie bei phpBB mit Templatevariablen udgl. arbeiten. Smarty ist ungleich mächtiger als die Engine von phpBB. Wurde bis vor kurzem von php.net programmiert und ist nun eigenständig.

Verfasst: 14.09.2008 18:53
von Valerion
http://tut.php-q.net/template.html
Hier wird Smarty vorgestellt und erklärt(Das ganze ist übrigens ein ziemlich gutes PHP-Tutorial).
eine Möglichkeit für's Sprache ändern:

Code: Alles auswählen

<form method="GET" action ="<?php $PHP_SELF ?>
<select name="language"> 
<option value="de">Deutsch</option>
<option value="en">English</option>
</select>
Das PHP-Script(Am Anfang der Datei):

Code: Alles auswählen

<?php
switch($_GET['language'])
{
case 'de': include('language/lang_de.php');  
break; 
case 'en': include('language/lang_en.php'); 
    break; 
    default: include('language/lang_en.php'); //Legt die Standardsprache fest(Kann auch lang_de sein)
}
?>
Zu deinem Problem: Schreib mal echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; ein und sag uns das Ergebnis.
(Müsste die Sprache ausgeben)