Mehrsprachige Website-Management - Code Review Stapelaustausch

Während dies einwandfrei funktioniert, bin ich nicht sicher, ob dies der richtige Weg ist, es zu tun. Ich fand nicht viele Anleitungen, wie dies mit OOP zu tun, damit ich die folgenden Zweifel haben:







  1. Ist das eine richtige Art und Weise, es zu tun?
  2. ist dieser Code wartbar?
  3. wäre es sinnvoll, eine Tabelle in der Datenbank mit den verschiedenen Sprachen zu erstellen?
  4. Ich bin immer noch kämpfen, „abstrakte Klassen“ zu verstehen. Wäre dies der Fall sein, eine abstrakte Klasse language.php zu erstellen und dann verlängern (ich hoffe, dass dies die richtige Terminologie ist), dass die Klasse mit anderen Sprachen Klasse (german.php. Italian.php usw.).

Sie haben einen guten Anfang gemacht, aber die switch-Anweisung in userLanguage () fühlt sich einfach nicht richtig von einer objektorientierten Perspektive:

Eine Klasse namens Sprache sollte eine einzige Sprache dar, die allgemein genug ist, alle Fälle passen: aber im Moment, welche Sprache sie vertritt, hat es die Definitionen aller von ihnen eingeklemmt gerade in diese einer Methode.







Lösung 1: Einfache Konfigurationsdatei

parse_ini_file () ist ein sehr leistungsfähiges kleines Tool, das genau das tut, was Sie erwarten. Mit Hilfe einer einfachen Datei wie diese, die wir en.ini nennen wollen:

Sie können einfach verwenden: parse_ini_file ( ‚en.ini‘) ein Array zurück genau wie in Ihrer Switch-Anweisung, die für andere (Nicht-Programmierer) viel einfacher für Sie zu lesen und schreiben. Und wenn Sie werden dann fortzusetzen, um die Dateien mit diesem Stil zu nennen, könnte man userLanguage (), um so etwas wie reduzieren:

Lösung 2: Abstrakte Klasse

Als Ihr Array grundsätzlich als Getter-Methoden handeln, eine abstrakte Sprache Klasse sollten alle Sprachkomponenten haben Sie in es brauchen, etwa so:

Alternativ können Sie diese Stile kombinieren und eine Singleton-Sprache mit Getter-Methoden haben das Array zugreifen, d.h .:

Was die Vorteile beider bieten. Persönlich aber, es sei denn, Sie mehr Sprachen auf Hinzufügen in sehr naher Zukunft planen, glaube ich, Lösung # 2 am besten zu Ihnen passen.

mit einigen Unterschieden

Zum Beispiel statt aus Konstanten wie PAGE_TITLE, verwenden Sie die reale Zeichenfolge in Ihrer Muttersprache.

Also meine en_nz.ini Datei sieht wie folgt aus

Meine fr_fr.ini Datei sieht wie folgt aus

Ein weiterer Vorteil ist, wenn Sie mehrere Programmiersprachen verwenden, die INI-Datei von der, unabhängig ist.

Sie können auch wie einschließlich Argumente in die Saiten fortgeschrittenere Sachen tun

Dann, wenn Sie die Zeichenfolge in Ihrer Seite machen







In Verbindung stehende Artikel