Echo and display values from database

Hallo Experten,

ich möchte meine Webseite übersetzten, deshalb will ich den Inhalt in die DB speichern. 
Ohne Inhalt ist es jedoch später schwer im Code herauszufinden wo dann welcher Inhalt gestanden ist, da man ja nicht die angezeigten Echos/Inhalte anzeigen kann?
Oder gibt es ein Tool, dass es erlaubt die bestimmte echos anzuzeigen, wärend man am Code arbeitet?

Lg,
Chris

Lieber Chris,

das ist doch schon wieder so eine Kauderwelschfrage.

ich möchte meine Webseite übersetzten, deshalb will ich den
Inhalt in die DB speichern. 

Der Zusammenhang zwischen Übersetzung und Datenbank erschließt sich mir nicht.

Ohne Inhalt ist es jedoch später schwer im Code herauszufinden
wo dann welcher Inhalt gestanden ist, da man ja nicht die
angezeigten Echos/Inhalte anzeigen kann?

Ich kann nicht folgen. Willst du HTML oder gar PHP in die Datenbank schreiben? Mach mal ein Minimalbeispiel.

Oder gibt es ein Tool, dass es erlaubt die bestimmte echos
anzuzeigen, wärend man am Code arbeitet?

Äh, wat?

Lg,
Chris

Ehrlich, Chris. Das nervt schon ein bisschen, dass du immer wieder so anfängst und man dir jeden Informationsbrocken mühsam aus der Nase ziehen muss. Ein guter Programmierer muss immer in der Lage sein, seine Probleme klar verständlich - in einem Minimalbeispiel - auszudrücken.

Hallo Günter,

danke für die AW.

Hier ein Bsp:
$text = $DB_con->prepare(„Select * FROM tbl_english WHERE :sublink = ?“)
$text->execute(array(’:sublink’ => $sublink));
$data = $text->fetch(PDO::FETCH_ASSOC);

Im PHP File:

echo $data[‚1‘]; // erster Text, hier sieht man aber nicht was ausgelesen wird da die Info in der ersten Spalte mit dem Reihe = Sublink verbunden ist.
echo $data[‚2‘]; //zweiter Text

Der Text ist der, der normalerweise im Browser angezeigt wird.
Jedoch wird er nicht im Skript sichtbar, da dort ja nur der php code $data[‚1‘] sichtbar ist.
Wenn man dann nicht alles beschriftet weiß man dann nie wo welcher Text gestanden ist.
Oder gibt es dafür ein Tool außer den Browser der im Code den Text anzeigt?

Lg,
Chris

Hallo Chris,

Hier ein Bsp:
$text = $DB_con->prepare("Select * FROM tbl_english WHERE

sublink = ?")

$text->execute(array(’:sublink’ => $sublink));
$data = $text->fetch(PDO::FETCH_ASSOC);

Bis hier ist soweit alles klar …":sublink" als TableSpaltenname zu wählen ist zwar unkonventionell, aber gut …(wie kommst du darauf???)!

Im PHP File:

echo $data[‚1‘]; // erster Text, hier sieht man aber nicht
was ausgelesen wird da die Info in der ersten Spalte mit dem
Reihe = Sublink verbunden ist.
echo $data[‚2‘]; //zweiter Text

Was heisst das „$data[‚1‘]“? Ist das der Index oder der Key, wenn Key warum heisst der „1“ als string, wenn nein index als „1“???

Der Text ist der, der normalerweise im Browser angezeigt wird.
Jedoch wird er nicht im Skript sichtbar, da dort ja nur der
php code $data[‚1‘] sichtbar ist.
Wenn man dann nicht alles beschriftet weiß man dann nie wo
welcher Text gestanden ist.
Oder gibt es dafür ein Tool außer den Browser der im Code den
Text anzeigt?

Sorry Chris, aber man versteht dich nicht…ich hab es versucht, aber ich weiss nicht was du machst und möchtest…so wie du es beschreibst -> ergibt das so gar keinen Sinn (auch dein Spaltenname „:sublink“ und das in PDO…da wirst du am Ende überhaupt nicht mehr durchblicken!)

Ich bin grad ratlos, ich weiss echt nicht wie ich dir helfen kann (Buch Tipp???)

Allgemein warum möchtest du eine Übersetzung/Mehrsprachigkeit aus der Datenbank? Die Frage solltest du dir zuerst stellen und nicht die „Kopf durch die Wand“ - Methode.

1 Like

Hallo XXD,

danke auch für deine AW.
Sry ich hab mit sublink den Dateinamen gemeint.

Wieso übersetzen von der Datenbank?
Eine Tabelle ist dann Deutsch die zweite dann Englisch,…
Je nach Sprache wird dann die passende Tabelle ausgelesen.

Der Google translater schafft es ja nicht mal den Login richtig zu übersetzten (in manchen Sprachen). Deshalb ist es doch sicher gut die Seite zu übersetzen?
Oder gibt es da bessere Übersetzungsmöglichkeiten?

Lg,
Chris

Hallo Chris,

Hallo XXD,

danke auch für deine AW.
Sry ich hab mit sublink den Dateinamen gemeint.

Wieso übersetzen von der Datenbank?
Eine Tabelle ist dann Deutsch die zweite dann Englisch,…
Je nach Sprache wird dann die passende Tabelle ausgelesen.

Übersetzung aus der Datenbank

Der Google translater schafft es ja nicht mal den Login
richtig zu übersetzten (in manchen Sprachen). Deshalb ist es
doch sicher gut die Seite zu übersetzen?

Klar, aber nicht über die Datenbank (du hattest doch deinen worst-case-Fall beschrieben…so und so viele User soll deine Anwendung aushalten) dafür ist eine DB keine gute Wahl (könnte man machen, jedoch müsstest du dann mit Cache arbeiten und das wird nicht so einfach das umzusetzen), besser Finger weg davon … ->

Oder gibt es da bessere Übersetzungsmöglichkeiten?

…Dateibasiert, entweder als xml, json, yaml oder ini bzw. php includes. Hier hast du die Wahl das Serverseitig oder Clienseitig zu tun.

Ich würde das Clientseitig machen und als Format json wählen (ist ein Weg).

Gruß

Ich würde das Clientseitig machen und als Format json wählen
(ist ein Weg).

Ich würde das Serverseitig machen, etwas mit php include, weil du sonst einem Nutzer mit deaktiviertem Javascript gar keine Inhalte ausliefern kannst, es sei denn, du lieferst Serverseitig immer eine Sprache per default aus. Allerdings ist letzteres performanceseitig suboptimal, weil du bei fremdsprachiger Darstellung die Seite im Prinzip doppelt lädst, was die Serverlast erhöht.

Mach es dir ganz einfach, indem du deine übersetzten GUI-Texte in eine Konfigurationsdatei packst und diese an den entsprechenden Stellen ausgibst.

http://www.bitrepository.com/php-how-to-add-multi-la…

So machen es übrigens viele open source PHP-Anwendungen auch. Das hat den charme, dass du viele verschiedene Übersetzungen anbieten kannst, indem du einfach von irgendwem diese Konfigurationsdatei übersetzen lässt.

So wirds gemacht:

http://www.bitrepository.com/php-how-to-add-multi-la…

Günther

P.S: Sehr gut, Chris! Du hast nicht am eigenen Ansatz geklebt, sondern nach Alternativen gefragt.

Hallo Guenther,

danke für die Ansätze.
Klingt für mich logisch aber ich seh noch immer nicht den klaren Vorteil darin.
Welches Programm übersetzt dann den Inhalt?
Wenn es eine Person übersetzten muss ist es ein schwerer Nachteil, da die Person dann PHP können muss.

Mein Beschriebener Fall liest den Text aus der DB aus. Daher könnte ich einfach eine weitere DB erstellen worin der Inhalt steht und diese dann von einer Person übersetzen lassen.
Nach der Überarbeitung gibt es eine weitere Sprache…
Nachteil bei meiner Variante ist das ich jeden Text kommentieren müsste was was ist… (Ähnlich wie die Variante von dir).

Ich bin immer gerne bereit etwas zu lernen und für Verbesserungsvorschläge offen.
Die vorgeschlagene PHP Variante ist am FTP und nicht in der DB was auf längere Sicht die Seite schneller macht. Aber welchen Vorteil bringt es noch?

Lg und danke,
Chris

Hallo Günther,

Ich würde das Clientseitig machen und als Format json wählen
(ist ein Weg).

Ich würde das Serverseitig machen, etwas mit php include, weil
du sonst einem Nutzer mit deaktiviertem Javascript gar keine
Inhalte ausliefern kannst,

Das ist zwar theoretisch richtig und auch sollte man sich im Lernprozess befinden -> sollte man erst einmal lernen, wie löse ich so was serverseitig. Jedoch in der Praxis würde ich den Anteil an Usern mit deaktiviertem Javascript auf 1-2% schätzen. Die Frage muss jeder für sich selbst beantworten (welche Verluste entstehen und kann ich das tolerieren) und selbst die ca. 2% können auch Ausnahmen hinzufügen, wenn sie eine Seite benutzen möchten.

Generell ist die Regel, dem User sollten keine Nachteile entstehen, also die Seite muss auch ohne Javascript bedienbar sein, jedoch kann man mit (noscript) den User darauf hinweisen, dass mit Javascript besondere Features freigeschalten werden und eine Mehrsprachigkeit würde ich als so ein Feature sehen, der Vorteil ist die Performance.

Hallo Chris,

Klingt für mich logisch aber ich seh noch immer nicht den
klaren Vorteil darin.

Datenbank entlasten!

Welches Programm übersetzt dann den Inhalt?

Deins!? Hast du dir den Link von Günther mal genau durchgelesen?

Wenn es eine Person übersetzten muss ist es ein schwerer
Nachteil, da die Person dann PHP können muss.

Dann könntest du das serverseitig auch per ini machen oder du erstellst eine lang_de_DE.php und andere die das Übersetzen nehmen die Datei als Vorlage und ersetzen nur die Strings ist prinzipiell das gleiche wie mit einer ini (Hier musst du auch eine Vorlage erstellen -> Namenskonvention).
Bsp ini:

JACTION\_ADMIN="Konfiguration"
JACTION\_ADMIN\_GLOBAL="Super Benutzer"
JACTION\_COMPONENT\_SETTINGS="Einstellung der Komponente"
JACTION\_CREATE="Erstellen"
JACTION\_DELETE="Löschen"
JACTION\_EDIT="Bearbeiten"
JACTION\_EDITOWN="Eigene Inhalte bearbeiten"
JACTION\_EDITSTATE="Status bearbeiten"
JACTION\_LOGIN\_ADMIN="Adminanmeldung"
JACTION\_LOGIN\_SITE="Siteanmeldung"
JACTION\_MANAGE="Administrationszugriff"

Mein Beschriebener Fall liest den Text aus der DB aus. Daher
könnte ich einfach eine weitere DB erstellen worin der Inhalt
steht und diese dann von einer Person übersetzen lassen.

Vergiss das mit der Datenbank.

Nach der Überarbeitung gibt es eine weitere Sprache…
Nachteil bei meiner Variante ist das ich jeden Text
kommentieren müsste was was ist… (Ähnlich wie die Variante
von dir).

Das „was ist was“ so funktioniert nun mal programmieren, man muss sich auf eine Konvention einigen.