2012-03-28 12 views
1

wie geht es euch? Ich versuche, mein PHP-Skript viele Sprachen akzeptieren zu lassen, und gebe dem Administrator die Möglichkeit, die Sätze im Skript zu ändern.Phrasen MySQL in zwei Sprachen

So fand ich, dass viele Leute die Phrasen in der Datenbank speichern, aber meine Frage ist, muss ich alle Sätze aus meiner Datenbank jedes Mal auswählen, wenn ich eine Seite öffne? oder was muss ich machen?

 Phrase      EN       FR 
     ----------------------------------------------------------------------- 
     err_no_page   There was an error.   il y avait une erreur. 

auf jeder Seite Ich brauche vielleicht Phrasen zu verwenden, was ist die perfekte Methode, um sie aus der Datenbank zu erhalten, ohne der Server anstrengend.

Vielen Dank im Voraus.

+0

Ich würde in gettext() und .po-Dateien suchen. – Interrobang

+0

@Interrobang Ich denke 'gettext' ist nicht Multithread umweltfreundlich. –

Antwort

2

Sie sollten Ihre Datenbank wie folgt normalisieren:

SÄTZE

ID DESCRIPTION 
---- ---------------- 
1  'err_no_page' 
2  'another phrase' 

ÜBERSETZUNGEN

ID PHRASE_ID LANGUAGE_ID TRANSLATION 
-- --------- ----------- ------------------------- 
1  1   'en'   'There was an error.' 
2  1   'fr'   'il y avait une erreur.' 
3  2   'en'   'etc' 

Dann können Sie einfach alle auswählen, die Übersetzungen für eine einzelne Sprache direkt:

Der Vorteil dieser Vorgehensweise besteht darin, dass Sie problemlos weitere Sprachen hinzufügen können, ohne die Struktur Ihrer Datenbank zu ändern. Wenn diese Ausdrücke häufig verwendet werden (wie sie wahrscheinlich in einer Web-App sind), sollten Sie sie beim Starten der Anwendung in eine Art In-Memory-Dictionary-Cache einlesen, anstatt sie aus der Datenbank abzurufen für jede Seite laden.

EDIT

überprüfen Sie die PHP-Modul memcache für einen möglichen Ausweg aus Ihrem Cache zu implementieren.

+0

Das ist nett, aber es ist in Ordnung, eine 40 Sätze pro Seite aufzurufen? ** 40 WÄHLEN **? oder sollte ich alle Sätze auf Englisch auswählen und dann das Programm entscheiden lassen? Vielen Dank. –

+0

Ich verstehe, aber könnten Sie einen Hinweis auf den Wörterbuch-Cache geben? meinst du XML? –

+0

Schauen Sie sich das memcache PHP-Modul an - http://php.net/manual/en/book.memcache.php –

0

Ich hoffe, dass Sie die Website nicht in allen Sätzen gleichzeitig zeigen.

Es ist also besser, eine Option irgendwo vor Ort zu geben, um die Sprache zu ändern, und die Abfrage so auszuführen, dass Phrasen nur in der ausgewählten Sprache abgerufen werden, anstatt alle auszuwählen.