Dynamik

Chili-Joe

Mitglied
Ich habe zwei MySQL-Tabellen.
In einer Tabelle (Texte) gibt es die Spalten "beschreibung_de" und "beschreibung_en".
In einer der anderen (Besucher) wird die IP und das Sprach-Kürzel gelagert.

$row->beschreibung_de --> Das "de" oder "en" dient hierbei als Sprach-Kürzel...

Welche Möglichkeiten habe ich um die zur Sprache passende Spalte auszulesen?
Die Lösung sollte dynamisch sein, weil geplant ist noch mehr Sprachen zu integrieren.
 
Die mir einfachste bekannte Lösung wäre, den Sprach-Code dem Spaltenbezeichner bei der Definition der MySQL-Abfrage und auch bei der Auswertung der Ergebnisse anzuhängen. Dies wird mit dem Arbeiten der mysql_fetch_array()-Funktion besonders leicht.
 
Für eine dynamische Lösung würde ich eine andere und vor allem normale Tabellenstruktur vorschlagen:
Du bleibst bei eine Benutzertabelle, in der Du allerdings nur eine ID für das gewünschte Sprachkürzel ablegst.
Dann machst Du eine Tabelle "Sprachen" mit einer ID, dem Kürzel und ggf. einer ausgeschrieben Schreibweise der Sprache und was Dir sonst noch so einfällt.
Dann machst Du eine Tabelle "Texte". Darin legst Du eine ID und einen identifizierenden Text ab. Der kann entweder ein Kürzel sein oder auch schon der fertige Text in der Sprache des Admin. Dieser dient zum schnelleren erkennen und ggf. Übersetzen durch einen Menschen.
Dann machst Du eine Tabelle "Uebersetzungen". Diese bekommt eine ID, eine Sprachen_ID und eine Texte_ID und dazu natürlich der übersetzte Text in der jeweiligen Sprache.

So eine Lösung, die natürlich nur eine von vielen Beispielen ist (viele Wege füren zur normalen Datenbank), ist extrem dynamisch und vor allem erweiterbar.

Möglich wäre auch die Trennung von Benutzern und ihren präferierten Sprachen in zwei Tabellen mit einer Gewichtung, so dass, sollte eine Übersetzung noch nicht vorliegen, die nächstbeste Sprache gewählt werden kann.

Ebenso können aus so einer Tabellenstruktur Links für, zu dem entsprechenden Text, vorhandene Übersetzungen generiert werden.

Gruß hpvw
 
Danke erstmal an euch beide...
Die Idee von dir, hpvw, ist keine schlechte, jedoch leider nicht das, was ich suche...

Das Beispiel von mir ebend war fiktiv...

Hier jetzt mal der Auszug aus meiner PHP-Datei:

PHP:
$get_report_categories=mysql_query("select * from report_categories where active='1' order by weight");

while ($report_categories=mysql_fetch_object($get_report_categories))
{
echo"$report_categories->name_de";
}

Wie vorhin erwähnt, würde es gern so haben, dass das "de" bei $report_categories->name_de dynamisch ist. Ich habe aber leider nicht die geringste Ahnung wie ich das bewerkstelligen soll...
 
Dann würde ich mit [phpf]mysql_fetch_assoc[/phpf] anstatt [phpf]mysql_fetch_object[/phpf] arbeiten:
PHP:
//Sprache:
$lang="de";

$get_report_categories=mysql_query("select * from report_categories where active='1' order by weight");

while ($report_categories=mysql_fetch_assoc($get_report_categories))
{
echo $report_categories["name_".$lang];
}
 
Zurück