Antworten auf deine Fragen:
Neues Thema erstellen

Sprachauswahl und -ausgabe schlägt fehl

SWFP

SWFP Mitglied

Hi,

ich wollte eine mehrsprachige Website bauen und hab dann das Sprachscritp programmiert. Ich habe es, um es zu testen, in eine einfach Funktion eingebaut, doch ich finde den Fehler immer noch nicht.

PHP:
//Sprachauswahl
$lang = "de"

//Sprachausgabe
function language() {
if ($lang == "de" ) {
echo "Deutsch"; }
elseif ($lang == "en" )
echo "Englisch";
elseif ($lang == "fr" )
echo "Französich";
else
echo "Keine Sprache ausgewählt";
}

language ();

Kann mir da jemand helfen?

MfG
 

Robbyn-

PHP / Flex Programmierer

AW: Sprachauswahl und -ausgabe schlägt fehl

Semikolon hinter dem:

PHP:
$lang = "de"

fehlt und du musst die Variabel $lang mit als Parameter der Funktion übergeben:

PHP:
//Sprachauswahl
$lang = "de";

//Sprachausgabe
function language($lang) 
{
	if ($lang == "de" ) {
	echo "Deutsch"; }
	elseif ($lang == "en" )
	echo "Englisch";
	elseif ($lang == "fr" )
	echo "Französich";
	else
	echo "Keine Sprache ausgewählt";
}

language($lang);
 

SWFP

SWFP Mitglied

AW: Sprachauswahl und -ausgabe schlägt fehl

Danke. Jetzt funktionierts.

Ich habe etwas weitergemacht, stoße dann aber auf den nächsten Fehler:

PHP:
//Sprachausgabe
function language2($lang) {
if ($lang == "de" ) {
$Text_de = file("home_de.txt");
foreach($Text_de as $ausgabe) }
elseif ($lang == "en" )
$Text_de = file("home_en.txt");
foreach($Text_de as $ausgabe)
elseif ($lang == "fr" )
$Text_de = file("home_fr.txt");
foreach($Text_de as $ausgabe)
else
echo "Keine Sprache ausgewählt";
}

language2 ($lang);

Wo ist hier nun der Fehler?
 
Zuletzt bearbeitet:

Robbyn-

PHP / Flex Programmierer

AW: Sprachauswahl und -ausgabe schlägt fehl

Ich habe keine Ahnung was du dort versuchst zu machen, wieso versuchst du deine Ausgabe mit einer foreach Schleife durchlaufen zu lassen?

Das foreach ist nebenbei auch falsch geschrieben, das wäre schon einmal ein Fehler, dann weiß das foreach auch nicht was es durchgehen soll, er bekommt einfach nur einen text hin geschmissen, was soll er da durchgehen?
 

hub

nicht ganz neu hier

AW: Sprachauswahl und -ausgabe schlägt fehl

Moin moin,
diese Funktion ergibt keinen Sinn, vielleicht kannst du kurz beschreiben, was da genau passieren soll (wir könnten ja raten :) , aber ob das Sinn macht? ). Wie Robbyn schon sagt - foreach ist so eingesetzt funktionslos ...


Gruß Ulli
 

SWFP

SWFP Mitglied

AW: Sprachauswahl und -ausgabe schlägt fehl

Also, das gehört zu einer längeren Funktion:

  1. Die Sprache wird ausgewählt und in einer Session gespeichert- Kein Problem.
  2. Den jeweiligen Seitentext habe ich in eine Textdatei ausgelagert und die einzelnen Elemente (Überschrift, Textabsatz, etc.) durch einen '|' getrennt.
  3. Die entsprechende Datei (z.B. home_de.txt oder home_en.txt) soll nun eben über das Script welches nach der passenden if-Anweisung kommt aufgerufen werden. -Sonst kann mir ja auch jemand sagen, wie ich die Funktion geschickt kürzen kann, damit sie nicht durch die if- und elseif- anweisung unterbrochen wird.
  4. Dann geht das eigentliche Script los:
    PHP:
    {
       $ausgabe = stripslashes($ausgabe);
       $zerlegen = explode("|", $ausgabe);
    
       echo "
       <h1 id='dreamed'>$zerlegen[0]</h1>
       <p>$zerlegen[1]</p>";
       }
    So wird dann der in der Textdatei befindliche Text passend in die Seite eingebunden.

Vielleicht schütteln jetzt einige mit dem Kopf- ich weiß es ja nicht-. Vielleicht wird jetzt einer sagen, achso. Und dann kommt von irgendwoher: So macht man das aber gar nicht. Mann, ist der doof!
Das möchte ich jetzt lieber vorwegnehmen, um das ganze abzukürzen:
Sollte ich bereits vom Denkansatz völlig falsch an die Sache herangegangen sein, bitte ich dies zu entschuldigen und mir die richtige Herangehensweise sachlich zu erklären. Ich lerne ja noch und tue das gerne, aber da ich mir viel selbst beibringe, bleiben da immer mal wieder größere oder kleinere Kleinigkeiten unbeachtet.
 

SWFP

SWFP Mitglied

AW: Sprachauswahl und -ausgabe schlägt fehl

Oh, das kann natürlich sein. Aber wenn ich ein ähnliches Script bei einem Gästebuch verwende funktioniert es einwandfrei.
 

Duddle

Posting-Frequenz: 14µHz

AW: Sprachauswahl und -ausgabe schlägt fehl

Ich lerne ja noch und tue das gerne, aber da ich mir viel selbst beibringe, bleiben da immer mal wieder größere oder kleinere Kleinigkeiten unbeachtet.
Gewöhn dir an, erst den Minimalfall einzubauen und zu testen. Beispielsweise solltest du erstmal eine Sprache korrekt implementieren. Wenn dessen Ausgabe wie gewünscht funktioniert erweiterst du das System. So siehst du auch gleich, wo sich Code mglw. doppelt, wo du also abstrahieren kannst. Zusätzlich hilft diese Vorgehensweise beim Debuggen: 10 Zeilen sind leichter zu entfriemeln als 50.

Zweitens solltest du dir angewöhnen, mit Rückgabewerten zu arbeiten. Im Moment kann language2() nur eines: ausgeben. Was aber, wenn du in Zukunft den gleichen Text vor der Ausgabe noch bearbeiten willst? Modifizierst du dann language2(), wobei alle vorigen Benutzungen auch geändert werden? Kopierst du language2() zu language2_modified() oder so, was zu Code-Dopplungen führt? In diesem Fall wäre die beste Lösung, language2() beispielsweise auf das Laden der Sprache zu beschränken und das erzeugte Array im Rückgabewert zu übergeben. Dann kann der aufrufende Code entscheiden, was damit zu machen ist.

Angewandt auf dein Beispiel könnte ein Minimalfall mit Rückgabewerten so aussehen:

PHP:
<?php

function load_language($lang) {
  $fileToLoad = "home_de.txt";
  if($lang == "de") {
    $fileToLoad = "home_de.txt";
  }
  return file($fileToLoad);
}
$lang = "de";
$sprachdaten = load_language($lang);
foreach($sprachdaten as $zeile) {
  echo $zeile;
}
?>
Ja, das kann man natürlich noch kürzer formulieren, aber ich wollte nur eine Variante aufzeigen.


Duddle
 

hub

nicht ganz neu hier

AW: Sprachauswahl und -ausgabe schlägt fehl

Moin moin,
dein Denkansatz ist doch garnich so schlecht ...
Also nach deinem Entwurf erstmal den richtigen Text laden und dann trennen um die Parts anzuzeigen (vorausgesetzt, ich habe dich richtig verstanden):
PHP:
function language2($lang) {
// den passenden Text holen
  if ($lang == "de" ) {
    $Text_de = file("home_de.txt");
  elseif ($lang == "en" )
    $Text_de = file("home_en.txt");
  elseif ($lang == "fr" )
    $Text_de = file("home_fr.txt");
  else // hier würde ich nen "default-text" laden 
    $Text_de = file("default_txt.txt");
 
// hier trennen ...
   $txt = implode(' ', $Text_de);
   $ausgabe = stripslashes($txt); 
   $ausgabe = stripslashes($Text_de); 
   $zerlegen = explode("|", $ausgabe); 
 
// ... und anzeigen oder im Array für weitere Verarbeitung zurückgeben
// z.B. return $zerlegen;
   echo "<h1 id='dreamed'>$zerlegen[0]</h1> 
   <p>$zerlegen[1]</p>"; 
}
Das Ganze ließe sich sicher auch verkürzen, aber so entspricht es deinen Vorstellungen un lässt sich besser nachvollziehen.

Gruß Ulli
** ok. zu langsam :(
 
Zuletzt bearbeitet:

SWFP

SWFP Mitglied

AW: Sprachauswahl und -ausgabe schlägt fehl

Danke, das erste funktioniert schon mal soweit. Doch beim zweiten wird das Script fast gänzlich so wie es ist ausgegeben.
 

SWFP

SWFP Mitglied

AW: Sprachauswahl und -ausgabe schlägt fehl

Das kommt raus:
function language2($lang) { // den passenden Text holen if ($lang == "de" ) { $Text_de = file("home_de.txt"); elseif ($lang == "en" ) $Text_de = file("home_en.txt"); elseif ($lang == "fr" ) $Text_de = file("home_fr.txt"); else // hier würde ich nen "default-text" laden $Text_de = file("default_txt.txt"); // hier trennen ... $ausgabe = stripslashes($Text_de); $zerlegen = explode("|", $ausgabe); // ... und anzeigen oder im Array für weitere Verarbeitung zurückgeben // z.B. return $zerlegen; echo "
$zerlegen[0]

$zerlegen[1]

"; }
 

hub

nicht ganz neu hier

AW: Sprachauswahl und -ausgabe schlägt fehl

Sorry. Die Klammern stimmten nicht. Hier nochmal getestet:
PHP:
function language2($lang) {
  if ($lang == "de" ) {
    $Text_de = file("home_de.txt");
  }elseif ($lang == "en" ) {
    $Text_de = file("home_en.txt");
  }elseif ($lang == "fr" ) {
    $Text_de = file("home_fr.txt");
  }else
    $Text_de = file("default_txt.txt");
  $txt = implode(' ', $Text_de);
  $ausgabe = stripslashes($txt);
  $zerlegen = explode("|", $ausgabe);
   echo "<h1 id='dreamed'>$zerlegen[0]</h1>
   <p>$zerlegen[1]</p>";
}
 

hub

nicht ganz neu hier

AW: Sprachauswahl und -ausgabe schlägt fehl

Ok, das habe ich nicht bedacht, da ich annahm, es wäre ein Part aus deinem Script. Das ganze muss in
PHP:
<?php
...
?>
eingeschlossen sein.
 

SWFP

SWFP Mitglied

AW: Sprachauswahl und -ausgabe schlägt fehl

Du brauchst dich nicht zu entschuldigen, da hätte ich auch selbst drauf kommen können.

Leider krieg ich dann folgende Fehlercodes:
  1. Warning: file(default_txt.txt) [function.file]: failed to open stream: No such file or directory in /users/bunte-ecke/www/Ecken/Hedi Pictures/home III.php on line 11

  2. Warning: implode() [function.implode]: Invalid arguments passed in /users/bunte-ecke/www/Ecken/Hedi Pictures/home III.php on line 12

Beim ersten muss ich wohl nur die Datei 'default_txt.txt erstellen, richtig?
 
Zuletzt bearbeitet:

hub

nicht ganz neu hier

AW: Sprachauswahl und -ausgabe schlägt fehl

Jo, das ist richtig. Der default_text war ein Vorschlag meinerseits den du durch einen Text deiner Wahl ersetzen musst - so wie eine default-sprache - z.B. mit "home_de.txt".
Ich denke mir, das ist besser als eine Fehlermeldung.
 

SWFP

SWFP Mitglied

AW: Sprachauswahl und -ausgabe schlägt fehl

Okay. Kein Problem. Aber dann haben wir das Problem immer noch, richtig?
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben