php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.04.2006, 17:58  
Neuer Benutzer
 
Registriert seit: 10.04.2006
Beiträge: 21
m.phillipsburg
Standard mehrsprachig

Hallo,

ich möchte eine Webseite Mehrsprachig aufbauen. Am besten so, daß ich nachher für jede Sprache eine datei habe, wie es auch in vielen CMS-Systemen gehandhabt wird. Gibt es dazu irgendwo eine Doku, ich habe nichts gefunden.

Oder kann mir wer auf die Sprüunge helfen wie ich beispielsweise ein Wort, das in für das es eine Variable gibt die in der Sprachdatei gespeichert ist auf der Webseite zum anzeigen bekomme.


Gruß Nixdorf
m.phillipsburg ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.04.2006, 18:01  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Bleibt eigentlich deiner Fantasie überlassen wie du das löst.
Mit einer Datenbank, mit einem XML, mit einem PHP-Array, mit mehrsprachigen Templates, ..
Wobei ich auf die Datenbank setzen würde, je nach Größe der zu übersetzenden Website aber auch XML ganz ok ist.
Zergling-new ist offline  
Alt 19.04.2006, 20:08  
Neuer Benutzer
 
Registriert seit: 10.04.2006
Beiträge: 21
m.phillipsburg
Standard

wie war das denn bei mysql, kann ich da nicht bei texten nur max. 250 zeichen nehmen, wenn ich jetzt aber texte auf den seiten habe die größer sind?

Bei einer Datenbank bräuchte ich dann ja auch für jede kleine Textausgabe eine mysql-abfrage der Datenbank. Mach das sinn? wo hat es den vorteile?

Gruß Nixdorf
m.phillipsburg ist offline  
Alt 20.04.2006, 09:24  
Erfahrener Benutzer
 
Benutzerbild von stefanjann
 
Registriert seit: 02.08.2005
Beiträge: 252
PHP-Kenntnisse:
Fortgeschritten
stefanjann
Standard

Das Problem bei XML ist, dass du wahrscheinlich das ganze XML in den Speicher laden musst um bestimmte Bereiche auszulesen. Das kann gerade bei größeren Texten viel Speicher fressen und auch zum Platzen bringen (in der Theorie).

Bei einer Datenbank ist es (fast) egal wieviel drinnen steht. Ob 10000 oder nur 5 Datensätze, es bleibt bei einer einfachen Anfrage
Code:
SELECT de FROM sprache WHERE kuerzel='anmeldetext' LIMIT 1;
Und wenn man mehr braucht, kann man ja zusammenfassen.
Code:
SELECT de FROM sprache WHERE ((kuerzel='anmeldetext') OR (kuerzel='loginbutton') OR (kuerzel='benutzername') OR (kuerzel='passwort'));
und schon hast du alles zusammen. Und das mit den 250 Zeichen ist Blödsinn. Ein Varchar kann 255 Zeichen fassen und wir haben ja auch noch Datentypen wie z.B. TEXT oder MEDIUMTEXT. Die MySQL-Referenz zeigt dir alle Möglichkeiten auf.

Ein XML hat den Vorteil, dass man diesen als Datei mitliefern kann und wenn man ein CMS auf mehreren Homepages benutzen möchte, die Datei einfach mitkopiert. Eine Datenbank muß erst erstellt werden. Ein XML kann somit schnell auf vielen Seiten aktualisiert werden indem man die XML-Datei einfach reinkopiert. Und wenn man plötzlich ne Sprache mehr hat, einfach nur die Datei rein. Das ist bei einer Datenbank schwerer (neue Spalte erstellen und dann die Spalte füllen, per DUMP oder Schnittstelle, etc)

Damit die XML-Dateien nicht zu groß werden kann man ja auf mehere XML-Dateien aufteilen.
Code:
standard.de.xml
standard.en.xml
gaestebuch.de.xml
gaestebuch.en.xml
bildergalerie.de.xml
bildergalerie.en.xml
....
Und man lädt nur die XML-Datei die man gerade braucht. Reine Definitionssache.

Im Endeffekt ist es eine Frage wie große dein Projekt ist und was (in dem Falle) schneller geht. Ich persönlich habe meine CMS-Systeme auf vielen vielen Homepages und daher eine XML-Lösung mit mehreren kleinen Dateien. Auch weil ich den Übersetzern dann nur die deutsche Datei geben muß und ich dann eine ausländische Datei zurückbekomme um die ich mich nicht mehr kümmern muß, da XML genaue Vorlagen definiert.

Beispiel einer meiner XML-Dateien:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<SPRACHE lang="de">
 <VOK id="bildbrowser_titel">Bildbrowser</VOK>
 <VOK id="bildbrowser_preview">Vorschau</VOK>
 <VOK id="bildbrowser_piclist">Bilderliste</VOK>
 <VOK id="bildbrowser_path">Pfad</VOK>
</SPRACHE>
__________________
SELECT * benutze ich nur um den Post kurz zu halten.
stefanjann ist offline  
Alt 20.04.2006, 09:34  
Neuer Benutzer
 
Registriert seit: 31.12.2005
Beiträge: 16
.fox
Standard

Ich würd's auch mit einer Datenbank lösen...

Die Struktur vllt so?
Code:
langcode	| varname		| value
-------------------------------------
de			| START_TITLE  | zB Titel der HP
-> klasse / funktion zum abfragen

Code:
class lang
{
	[...]
	function get($varname)
	{
		mysql_query('...');
		[...]
	}
}

Eignet sich m.E. aber nur für größere Projekte :wink:
.fox ist offline  
Alt 20.04.2006, 09:44  
Erfahrener Benutzer
 
Benutzerbild von stefanjann
 
Registriert seit: 02.08.2005
Beiträge: 252
PHP-Kenntnisse:
Fortgeschritten
stefanjann
Standard

Ich würde die Struktur eher so vorschlagen:
Code:
id | kuerzel | de | en | ...
-----------------------------
1 | titel | Meine Homepage | my homepage | ....
2 | hallo | hallo | hello | .....
3 | ja | ja | yes | ...
4 | nein | nein | no | ....
Kommt eine Sprache hinzu => eine Spalte mehr und alle Felder sind definiert.
MYSQL:
Code:
SELECT de AS inhalt FROM sprache WHERE kuerzel='hallo' LIMIT 1;
// oder
SELECT en AS inhalt FROM sprache WHERE kuerzel='hallo' LIMIT 1;
ergibt immer in "inhalt" das Feld das ich brauche. Ist bei Erweiterungen leichter zu Handeln.
Ein Abfragenm ob die Sprache vorhanden ist kann man dann durch
Code:
SELECT pt FROM sprache LIMIT 1;
sehr eifnach erledigt werden.

Aber auch das ist jetzt wieder eine Frage der Überzeugung.

Gruß,
Stefan
__________________
SELECT * benutze ich nur um den Post kurz zu halten.
stefanjann ist offline  
Alt 25.01.2010, 00:46  
Erfahrener Benutzer
 
Registriert seit: 02.03.2008
Beiträge: 351
robydog befindet sich auf einem aufstrebenden Ast
Standard

ist zwahr schon älter dieser beitrag aber ich hab dazu noch ne frage

was macht denn nun mehr sinn wenn man die variante mit der DB nimmt
Am Anfang gleich die ganzen Texte aus der DB auslesen und dann an ort und stelle verwenden oder überall dort wo man was braucht ne neue abfrage zu machen von dem satz oder wort was man braucht?
robydog ist offline  
Alt 25.01.2010, 00:52  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wenn du es wirklich über eine Datenbank lösen möchtest würde ich die Daten am Anfang einmal auslesen. Für jede Übersetzung eine neue Abfrage würde nen ganz schönen Aufwand bedeuten. Da wäre es denke ich von der Performance her besser einfach einen einzigen Query der etwas mehr zurückgibt abzusenden.

Die Frage ist ob du vielleicht diesen Query eingrenzen kannst damit du nicht wirklich ALLE Wert brauchst. Aber das könnte schwer werden denke ich.

Hinweis:
Beim nächsten mal bitte einen eigenen Thread aufmachen. Im Archiv rumschreiben macht keinen Spass
Flor1an ist offline  
Alt 25.01.2010, 00:58  
Erfahrener Benutzer
 
Registriert seit: 02.03.2008
Beiträge: 351
robydog befindet sich auf einem aufstrebenden Ast
Standard

ok danke werde ich machen. dachte ist sinnvoller als ein neuer aufzumachen
robydog ist offline  
 

« Auf 1000 Aufrunden | - »

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Länderliste Mehrsprachig Beitragsarchiv 3 30.06.2005 19:09
mehrsprachig PHP Tipps 2005 1 02.06.2005 13:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php multilingual xml, php mehrsprachigkeit xml, mehrsprachig html, mysql mehrsprachige datenbank get lang, xml mehrsprachig, xml mehrsprachige internetseite, php mehrsprachige website array, mehrsprachige website datenbank oder datei, multilingual php datenbank füllen tutorial, php mysql mehrsprachig, html mehrprachig, mehrsprachige website php, mehrsprachigjeit xml oder datenbank, mehrsprachigkeit datei oder datenbank, mehrsprachige php xml tutorial, php script mehrsprachigkeit xml, mehrsprachige homepage xml, multilingual php datei oder datenbank, mehrsprachig website php array datenbank, website zweisprachig xml

Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.