CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
Off Topic Area Hierein gehört alles, was nichts mit PHP, MySQL, Apache oder ähnlichem zu tun hat |
25.08.2004, 16:14:30
|
Junior Member
|
|
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
|
|
Hi c4,
eventuell noch ein weiterer Vorschlag:
Speichere die Texte in einer Tabelle mit folgendem Aufbau:
id
text_de
text_en
text_fr
.
.
.
So siehst Du z.B. in phpmyadmin sehr schnell, wo noch eine Übersetzung fehlt. Beim einrichten einer neuen Sprache fügst Du einfach an die Tabelle ein neues Feld an.
Die SQL- Abfrage mußt Du natürlich auch nicht jedesmal angeben, wenn Du dann den Spaltennamen ("text_de") in einer Variablen speicherst.
Ich hab' obiges System aber bisher nur für extrem geringe Textmengen angewendet und weiß nicht, ob dies auch für größere Mengen geeignet ist.
HTH,
Andy
|
25.08.2004, 16:32:27
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Irgendwie finde ich an Deiner Idee nur ein was zu bemängeln, Taucher: Da die Sprache via URL oder Cookie übergeben wird, muss die Abfrage zu deren Richtigkeit per Hand erfolgen. Also auch mit manueller Wartung. Nicht schön, aber auch nicht dramatisch.
|
25.08.2004, 16:39:35
|
Member
|
|
Registriert seit: Oct 2002
Ort: ch
Beiträge: 822
|
|
das muss sie auch bei der anderen methode. Bei deiner methode mit der language_id musst du ja auch die ID auf dessen korrektheit testen.
An der idee gefällt mir, dass dann die id's PRIMARY wären, was doch ein wenig an zeit einspart. Wie MySQL auf die x-fache Datenmenge pro eintrag reagiert weiss ich nicht (x sei die anzahl sprachen).
Geändert von Gweilo (25.08.2004 um 16:41:45 Uhr)
|
25.08.2004, 16:44:29
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Zitat:
Original geschrieben von Gweilo
das muss sie auch bei der anderen methode. Bei deiner methode mit der language_id musst du ja auch die ID auf dessen korrektheit testen.
An der idee gefällt mir, dass dann die id's PRIMARY wären, was doch ein wenig an zeit einspart. Wie MySQL auf die x-fache Datenmenge pro eintrag reagiert weiss ich nicht (x sei die anzahl sprachen).
|
Ja, das mit der ID gefällt mir auch daran.
Die Überprüfung, ob eine Sprache in der DB vorhanden ist, hätte man mit den bisherigen Ideen via MySQL-Abfragen können/müssen!
MySQL wird bei 10 eingetragenen Sprache nicht das zehnfache rausholen, als wenn nur 1 drin ist. Warum? SELECT text_$lang FROM cmd_... ;)
|
25.08.2004, 16:56:00
|
Member
|
|
Registriert seit: Oct 2002
Ort: ch
Beiträge: 822
|
|
Zitat:
Original geschrieben von _c_4_
MySQL wird bei 10 eingetragenen Sprache nicht das zehnfache rausholen, als wenn nur 1 drin ist. Warum? SELECT text_$lang FROM cmd_... ;)
|
rausholen nicht, aber finden. Ein TEXT feld hat immerhin bis zu 64 kb. Ich bin eben nicht sicher, ob da alle sprachen durchlaufen werden müssen beim suchen, oder ob mysql die position (der einzelnen felder) gespeichert hat. Und text_lang zu indexieren kommt auch nicht wirklich in frage, da sonst für jede einzelne sprache zusätzlich ein index gespeichert werden muss, was sich durchaus aufsummieren kann.
Geändert von Gweilo (25.08.2004 um 17:29:07 Uhr)
|
25.08.2004, 19:38:01
|
Anfänger
|
|
Registriert seit: Apr 2004
Beiträge: 13
|
|
Da ich persönlich gerne PEAR_Config benutze, habe ich es mir angewöhnt, solche Dinge mit einem Array (oder INI-File) mit Direktiven und Werten zu schreiben und diese Arrays dann in einzelne Sprachfiles zu schreiben, die dann bei bedarf eingebunden werden.
Beispiele:
PHP-Array
PHP-Code:
$lang['user']['name'] = "Username";
$lang['user']['passwd'] = "Passwort";
...
$lang['mail']['send'] = "Senden";
...
Ini-File
Code:
[user]
name=Username
passwd=Passwort
[mail]
send=Senden
Hat in meinen Augen den Vorteil gegenüber einer Datenbank-Lösung, das man schon/auch Texte einbinden kann, wenn keine Datenbank connected ist (kommt ja auch mal vor - z.B. bei der Fehlermeldung "Konnte Datenbankverbindung nicht herstellen!") ;-)
Greets,
marco
|
25.08.2004, 20:47:49
|
Anfänger
|
|
Registriert seit: Jul 2004
Ort: Frankfurt am Main
Alter: 40
Beiträge: 43
|
|
Hi,
ich kenne verschiedene Ansätze um das Problem in PHP anzugehen. Je nach Zweck mehr oder weniger sinnvoll.
Also deine Idee mit Datenbank / Textdatei (ist ja dann egal, von wo man liest) ist sicher gut für Applikationen mit vielen Dialogen und dynamsichen Inhalten. Sagen wir mal ein Shop oder ein CMS wo auch Inhalte mehrsprachig sind.
Wenn du mit Templates arbeitest, kannst du das meißte über die Templates regeln "tplname.de_DE.tpl" oder so.
Wenn es eher um das geht, was direkt aus dem Quellcode kommt... also Fehlermeldungen und so kann ich i18n empfehlen. Setzt aber Shell Zugriff auf dem Server voraus und evtl. root rechte. Und man muss nach änderungen sozusagen "kompilieren". Infos gibts hier.
Hoffe, das hilft dir weiter :)
simon
|
26.08.2004, 07:52:29
|
Junior Member
|
|
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
|
|
Hi c4,
noch eine Ergänzung zu meinem Beitrag von gestern:
Wenn Du es so machst, wie ich vorgeschlagen habe benötigst Du insgesamt 3 Tabellen.
Eine, um die Seiten/Stellen zu speichern, in der die Texte erscheinen können, eine als Zwischentabelle und eine mit den Texten (n:m- Beziehung).
Was auch klar sein sollte ist, daß Du die text- Felder mit NULL definieren solltest oder als Default Wert " " (Space-Taste) einsetzt.
Ein weiterer Hinweis: Speichere die möglichen Texte, egal wo, nicht in zu kleinen Portionen. Es ist m.E. sinnvoller, diese zumindest Absatzweise zu speichern als Satzweise. Ausnahme sind natürlich Buttons, Links,... ;-)
HTH,
Andy
|
26.08.2004, 08:24:21
|
Member
|
|
Registriert seit: Oct 2002
Ort: ch
Beiträge: 822
|
|
Zitat:
Original geschrieben von diver-network
Eine, um die Seiten/Stellen zu speichern, in der die Texte erscheinen können, eine als Zwischentabelle ...
|
also eine art rechte-verteilung der texte, oder was genau meinst du damit?
Und wozu ist die Zwischentabelle da?
|
26.08.2004, 09:18:55
|
Junior Member
|
|
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
|
|
Hi,
der (Beispiel-) Text "Übersetzung noch nicht vorhanden" kann ja auf mehreren Seiten auftauchen.
Daher eine n:m- Beziehung zwischen den Tabellen "Texte" und "Seiten".
n:m- Beziehungen benötigen immer eine Zwischentabelle, in der mindestens die ids (PRIMARY KEYs, "pk") der Haupttabellen als FOREIGN KEYs ("fk") gespeichert werden. Zusätzlich empfohlen ist natürlich noch eine eindeutige ID für die Zwischentabelle, wobei dies nicht nötig ist, da das Paar "fk1" + "fk2" immer eineindeutig ist.
Eine weitere Info, die man in diese Zwischentabelle reinschreiben könnte, ist z.B. die Information, daß der Text auf der Seite 1 in der Farbe rot, auf der Seite 2 in grün erscheinen soll. Ist zwar jetzt ein schlechtes Beispiel, da man sowas im Quelltext macht aber mir fällt gerade nichts besseres ein.
Was meinst Du mit "rechte-verteilung der Texte"? Obwohl, man könnte die Info "freigegeben" in der Zwischentabelle speichern, um kurzfristig einen Text für eine Seite sperren zu können.
HTH,
Andy
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:52:36 Uhr.
|