Sprachwechsel bei dynamischen Inhalten?

Kalma

Erfahrenes Mitglied
Halli Hallo,

ich habe eine Frage. Ich arbeite an einem Projekt, was später vielleicht auch einen Sprachwechsel haben soll....

Das Problem ist, dass eigentlich alle Inhalte aus der Datenbank kommen.
Gibt es dort eine Möglichkeit, einen Sprachwechsel durchzuführen, außer alle Inhalte einzeln zu speichern?


mfG
David
 
Das Problem ist, dass eigentlich alle Inhalte aus der Datenbank kommen.
Gibt es dort eine Möglichkeit, einen Sprachwechsel durchzuführen, außer alle Inhalte einzeln zu speichern?

Warum ist das ein Problem? Das ist doch sehr gut wenn die Daten aus der Datenbank kommen.
Wenn ein Sprache sauber und koreckt übersetz werden soll dann kommste sowie so nicht darum die Textsachen und Menü sachen zu Speichern.(Eben für jede Sprache einmal)

Oder wie hast du dir das sonst vorgestellt das die Seite erst dann online Übersetz werden soll? Sowie bei bei Google Translater.Wo dann alles falsch dort steht oder aus dem zusammen hang gerießen ist.

Mfg Splasch
 
sorry, war zu früh am Morgen - hatte die Frage falsch verstanden.

Bitte Beitrag von mir löschen - Danke!


Beste Grüße,
preko
 
Zuletzt bearbeitet:
Du wirst nicht darum herum kommen, deine Inhalte selber zu übersetzen. Die Lösung, die verschiedenen Sprachen dann aus der Datenbank zu holen, ist dann eigentlich gut.

Ich hab das allerdings früher so gelöst, dass für jede Sprache ein eigenes Konstantenfile hatte, welches je nach Sprachwahl dann eingebunden wurde. Das heisst: Jegliche Textausgabe auf der Seite steht als Konstante im Quelltext und wird dann zur Laufzeit eingebunden.

Bsp:
PHP:
//german.const.php
define("CONST_WELLCOME", "Willkommen");
define("CONST_GOODBYE", "Auf wiedersehen");

//french.const.php
define("CONST_WELLCOME", "Bienvenu");
define("CONST_GOODBYE", "Au revoir");

//english.const.php
define("CONST_WELLCOME", "Wellcome");
define("CONST_GOODBYE", "Good bye");

Auf der Seite siehts dann halt so aus:
PHP:
switch($_SESSION['language'])  {
    case "ger": include_once("german.const.php");
    break;
    case "fra": include_once("french.const.php");
    break;
    case "eng": include_once("english.const.php");
    break;
    default: include_once("german.const.php");
}

//Auf der Seite dann irgendwo:
<p><?php echo CONST_WELLCOME." ".$_SESSION['UserName']; ?></p>
<p><?php echo CONST_GOODBYE." ".$_SESSION['UserName']; ?></p>

Grusse
De Igäl
 
Guten Morgen,

das Thema ist ja schon etwas her, aber was solls.

Habe das jetz so angegangen, ich frage besser gleich, bevor ich mir die Arbeit mache.

Ich habe ja Smarty Templates und mache das jetzt so.

Eine Konstante für die Sprache LANGUAGE, ist de oder en.
Dann wird so das Template angezeigt:

PHP:
$tpl->display('index_'.LANGUAGE.'.tpl');

Das heißt, ich habe immer 2 Templates im Ordner.
index_de.tpl
index_en.tpl

Ebenso in der Datenbank, z.B. News

news_id
news_author
news_de_title
news_en_title
news_de_text
news_en_text
news_date

Ist das gut so?
 
Datenbank würde ich eher so machen:

Eine Tabelle:

news_id
news_author
news_date

Noch eine Tabelle:

news_id
news_title
news_text
news_lang => hier dann die Sprache, kannst du zum Beispiel ein enum mit de/en machen...

Dann brauchst du auch nurnoch ein Template:

PHP:
$tpl->display('index_.tpl');

Denn du lässt je nach Sprachauswahl immer die passende Zeilen aus der DB holen.

Man kann das auch ganz anders lösen. So ist das relativ leicht und ausserdem kann man
so dann später weitere Sprachen hinzufügen.
 
Aber wie ist das dann mit statischem Text, zum Beispiel ein Text der nicht aus der Datenbank kommt?
 
Statische Texte (Impressum etc.) könntest du doch auch in der Datenbank ablegen.
Dann hast du das auch mehrsprachig und kannst das sogar bequem über ein Webinterface (Adminbereich) online editieren.

z.B.:

Tabelle1
content_id
content_author
content_date


Tabelle2
content_id
content_title
content_text
content_lang
 
Also im Prinzip nen kleines CMS.

Dann könnte man doch, um das ganze sehr variabel für die Gestaltung zu machen, sowas in der Art machen:

Ich gebe im Editor ein:
Code:
News

Willkommen auf meiner Seite blablabla

[Modul: News]

Und so weiter

Edit sagt noch, dass das [Modul: News] alle News einbinden soll ;)

Oder nicht?
 
Zuletzt bearbeitet:
Für statische texte kannst du auch für jede sprache ne xml datei anlegen...
Und den Platzhalter mit den werten füllen...
 
Zurück