Sprache ändern

11/19/2015 14:38 The_Dentist#1
Hallo,

ich habe folgende Frage,

und zwar habe ich eine Startseite mit News geschrieben, diese News werden aus einer Datenbank ausgelesen. Die News werden in Deutsch und Englisch gespeichert.

An der Seite hat man nun die Möglichkeit die Sprache zu ändern.
Die Seite wird in Deutsch geladen und per url.de../datei.php?lang=de die Sprache übergeben.

PHP Code:
$lang $_GET['lang'];
            echo 
"Die Sprache ist: " .$lang;
            
                
//Datenbank Config
                
                //DB - Connect
                
                
                
$abfrage "SELECT * FROM news ORDER BY id DESC";    
                
$ergebnis =  $conn->query($abfrage);                
                if(
$lang "de"){                
                echo 
"<table>";
                while(
$row mysqli_fetch_object($ergebnis))
                {
                   echo 
"<tr>";
                   echo 
"<th>",$row->ueberschrift,"</th>";
                   echo 
"</tr>";
                   echo 
"<tr>";
                   echo 
"<td>",$row->nachricht,"</td>";
                   echo 
"</tr>";
                   echo 
"<tr> ";
                   echo 
"<td>",$row->datum,"</td>";
                   echo 
"</tr>";
                   echo 
"<tr><td>&nbsp;</td></tr>";
                }
                echo 
"</table>";
                    
                }
                else{
                echo 
"<table>";
                while(
$row mysqli_fetch_object($ergebnis))
                {
                  echo 
"<tr>";
                   echo 
"<th>",$row->heading,"</th>";
                   echo 
"</tr>";
                    echo 
"<tr>";
                  echo 
"<td>",$row->message,"</td>";
                   echo 
"</tr>";
                   echo 
"<tr> ";
                   echo 
"<td>",$row->datum,"</td>";
                   echo 
"</tr>";
                   echo 
"<tr><td>&nbsp;</td></tr>";
                }
                echo 
"</table>";
                
                }
                
                
            
$conn->close(); 
Das Script erkennt zwar die Sprachen Änderung, aber es werden nicht die anderen Inhalte geladen.

Kann mir dabei einer helfen?

Danke!!!
Gruß

€dit:

Sprachwechsel soll so aussehen:
PHP Code:
   <div class="inhalt_l">
            <
h3>Attention!</h3>
            <
u>Sprache:</u>
            <
ul>
               <
li class="ger"><a href="?lang=de" class="active">Deutsch</a></li>
               <
li class="eng"><a href="?lang=en"  hreflang="en" lang="en">English</a></li>
            </
ul>
         </
div
11/19/2015 14:53 ComputerBaer#2
Da ist dein Fehler:
Code:
if($lang = "de") {
11/19/2015 14:59 The_Dentist#3
Quote:
Originally Posted by ComputerBaer View Post
Da ist dein Fehler:
Code:
if($lang = "de") {
oh, wie peinlich!
Ich danke Dir.
Jetzt gehts auch.

Gruß
11/19/2015 16:09 Devsome#4
Ich würde dir empfehlen die Sprache in eine Datei zuladen z.B. json oder yml.
So muss nichts aus der Datenbank gelesen werden ;)
11/19/2015 21:28 mastermo#5
Quote:
Originally Posted by Devsome View Post
Ich würde dir empfehlen die Sprache in eine Datei zuladen z.B. json oder yml.
So muss nichts aus der Datenbank gelesen werden ;)
Macht wenig Sinn, denn so müsste er die News jedes Mal dort eintragen. Genau hierfür wurde SQL gemacht, wieso also nen WorkAround?

Ich würd einfach die Inhalte beider Sprachen in einer SQL Datenbank hinterlegen mit nem DE/ENG Eintrag und den einfach mit auslesen lassen.
11/19/2015 23:26 Devsome#6
Quote:
Originally Posted by mastermo View Post
Macht wenig Sinn, denn so müsste er die News jedes Mal dort eintragen. Genau hierfür wurde SQL gemacht, wieso also nen WorkAround?

Ich würd einfach die Inhalte beider Sprachen in einer SQL Datenbank hinterlegen mit nem DE/ENG Eintrag und den einfach mit auslesen lassen.
Dann verbessere ich meine Aussage.
Datenbank macht Sinn bei unterschiedlichen Sachen z.B. Produkten, News...

Eine yaml- oder json Datei würde ich anlegen wenn man viele gleiche Übersetungen hat, diese dann vor der Anwedung alle einmal einlesen in einem array oder wie man mag.
So kann man ganz einfach die mehreren Sprachen die gleich in den Datein aufgebaut ist verbessern. (Lohnt sich bei Sachen die man nicht mehr oder selten ändern muss z.B. Kategorien, Labels, Links ...)

//Update: Baut man sich eine Funktion die in einem bestimmten Ordner Datein ausliest, kann man ganz einfach eine weitere Sprache hinzufügen ;)
11/26/2015 22:45 mastermo#7
Quote:
//Update: Baut man sich eine Funktion die in einem bestimmten Ordner Datein ausliest, kann man ganz einfach eine weitere Sprache hinzufügen
Das geht mit Datenbanken auch. Dazu musst du nur 2-3 Variablen hinzufügen ;)
In Bezug auf den Content macht SQL deutlich mehr Sinn, denn alles außerhalb des Textes können auch als PHP Variable eingefügt werden.
11/27/2015 07:47 Ravenstorm#8
Für seine News-Funktion würde ich ebenfalls mit SQL arbeiten. Allerdings besteht die Seite warscheinlich nicht nur aus den News Blöcken sondern ein weniger mehr (Header, Sidebar gehe ich davon aus)
Für solch "statischen" Content ist es wie Devsome bereits sagte um einiges einfacher z.B. eine JSON datei anzulegen mit den einzel definierten Sprachen welche die Texte 2 - 3 dimensional wiedergeben bsp

Code:
 "title": {
        "en": "Hello",
        "de": "Guten Tag",
        "jp": "こんにちは",
        "fr": "salut"
    }
Somit erhällt man eben ein einfach ansprechbares einheitliches Konstrukt. Wie man es macht ist einem ja selbst überlassen.

Bin zwar schon etwas länger kein Web-Dev mehr allerdings würde ich dir persönlich empfehlen eine Globale Variable zu bauen welche die Sprache eindeutig widerspiegelt, die kannst du dann z.B. in den Header-Include der beim MVC sowieso anfällt mit einbauen.