Zur Navigation

Script lokalisieren [2]

11 Jörg Kruse

Ich dachte zuerst, das wäre eine einmalige Sache:

Dazu müßte ich zunächst mal sämtliche Beschriftungen in meinem Skript aufspüren und durch Variablen ersetzen.

Ein PHP-Script, das sich selbst dynamisch verändert, halte ich ehrlich gesagt keine gute Idee.

Lokalisierungen könnte man z.B. so machen, dass in einem Verzeichnis /lang Dateien en.php, de.php etc. liegen und das Script dann abhängig von der Sprache $lang die betreffende Datei lädt:

include ('/lang/' . $lang . '.php');

In den Sprach-Dateien werden die Sprach-Variablen definiert, z.B.:

en.php
$lang_dictionary = 'Dictionary';
$lang_please_select = 'Please select!';

de.php
$lang_dictionary = 'Wörterbuch';
$lang_please_select = 'Bitte auswählen!';

Diese Variablen kannst du dann entsprechend in das Hautpscript einfügen

<h1><?php echo $lang_dictionary ?></h1>
<p><?php echo $lang_please_select ?></p>

12.10.2015 18:32 | geändert: 12.10.2015 18:34

12 Ranma (Gast)

Genau dieses Grauen wollte ich trickreich vermeiden oder umgehen. Nicht nur, weil das viele zusätzliche Dateien bedeutet, die alle mit include() oder seinen Verwandten eingelesen werden müssen, sondern auch, weil Wörterbuchdatenbanken oft unvollständig sind. Viele Netzseiten werden lokalisiert. Oft wird dafür die Hilfe von Nutzern in Anspruch genommen. Das ist zwar sinnvoll, aber oft ist dann die Lokalisierung nur halb durchgeführt. In der deutschen Version fällt das oft nicht so auf, weil die Lokalisierung da schnell zu über neunzig Prozent abgeschlossen ist. Für andere Versionen gibt es oft weniger aktive Nutzer und die Lokalisierung bleibt auf dreißig, vierzig oder fünfzig Prozent stehen. Manche Netzseiten geben den Fortschritt an, daher weiß ich das. Wahrscheinlich dient die Angabe des Fortschrittes dazu, mehr Nutzer zur Mitarbeit zu motivieren. Mein Versuch der Motivation wäre, die Änderungen sofort zu übernehmen, so daß sich sofort ein Erfolgserlebnis bei jedem Teilnehmer einstellt.

Aber eigentlich macht es keinen großen Unterschied, ob der Inhalt für eine Variable aus einer Datei oder aus einer Datenbank geholt wird? So wie ich den Sinn der Datenbanken bisher verstanden habe, sind die dazu da, das Gleiche zu tun, was man auch mit Dateien machen könnte, nur sehr viel schneller. Das teilt die Aufgabe in zwei Unteraufgaben auf. Einmal die Variablen mit Inhalten aufzufüllen, dann trotzdem und natürlich vorher festzustellen, welche Wörter in meinem Skript durch Variablen ersetzt werden müssen. Ich verändere viel zu viel, um das vorher wissen zu können. Also muß ich das nachträglich herausfinden.
Ranma

13.10.2015 09:39

13 Jörg Kruse

Aber eigentlich macht es keinen großen Unterschied, ob der Inhalt für eine Variable aus einer Datei oder aus einer Datenbank geholt wird?

Ja, du kannst die Werte natürlich auch aus einer Datenbank holen.

13.10.2015 15:51

14 Forum

Ein Beitrag aus diesem Thread wurde in einen neuen Thread verschoben:

Teilen von Themen

19.10.2015 14:34

15 Ranma (Gast)


Ein PHP-Script, das sich selbst dynamisch verändert, halte ich ehrlich gesagt keine gute Idee.

Warum denn nicht?
Ranma

20.10.2015 02:22

16 Jörg Kruse

Weil es eine heikle Angelegenheit ist, Programm-Code dynamisch zu verändern. Wenn, dann würde ich Programm-Code und Daten sauber trennen und nur die Daten ändern.

Man ist als Programmierer doch bestrebt, den Code robust zu halten, um Seiteneffekte weitgehend auszuschließen. Darum hält man den Code auch möglichst einfach und kapselt ihn in Funktionen und Klassen.

Wenn der Code sich jetzt selbst über irgendwelche Regexe ändern soll, dann ist das für mich das genaue Gegenteil von robuster Programmierung - das ist so, als ob jemand sein Haus auf Treibsand bauen möchte.

20.10.2015 17:38 | geändert: 20.10.2015 17:40

17 Ranma (Gast)

Wenn du wüßtest wie das für mich klingt, vor allem das:


Darum hält man den Code auch möglichst einfach und kapselt ihn in Funktionen und Klassen.

Bahnhof. Keine Ahnung wovon du redest. Solche Sätze werden auch für die Beschreibung von objektorientierter Programmierung verwendet. Eine weitere Sache, die ich nicht beherrsche, weil ich kein Programmierer bin. Aber dafür konnte ich den Texten von erfahrenen Programmierern schon entnehmen, wieso die objektorientierte Programmierung entwickelt wurde. Das war nicht, um Code einfach zu halten. Das war, um Programmierer schnell im hire-and-fire-Verfahren austauschen zu können. Es ist ein Verfahren, um Teile programmieren zu können, ohne das gesamte Programm zu kennen. Der Programmierer braucht nichtmal zu wissen, wozu das Programm am Ende dienen soll. Das heißt, das Verfahren ist umständlich und für mich ohne jeden Nutzen. Ich hoffe, du wolltest nicht vorschlagen, daß ich anfange, auf diese Weise zu programmieren. Schließlich versuche ich nur zu programmieren, weil es wegen des Mangels an Programmierern (die Industrie nennt das die Software-Krise) niemand für mich machen würde. Aber ich bin mir nichtmal sicher, ob du überhaupt auf objektorientierte Programmierung anspielen wolltest.

Also an Einfachhalten von Code ist bei mir nicht zu denken. Obwohl ich glaube, daß ich langsam so etwas wie einen eigenen Programmierstil entwickle. Der ist geprägt, von Arrays, FOREACH-Schleifen und RegExen. Falls das bereits einen Programmierstil ausmacht. Falls nicht, dann bin ich noch lange nicht so weit.


Wenn der Code sich jetzt selbst über irgendwelche Regexe ändern soll, dann ist das für mich das genaue Gegenteil von robuster Programmierung - das ist so, als ob jemand sein Haus auf Treibsand bauen möchte.

Wenigstens verstehe ich die Metapher. Ingenieure bauen tatsächlich auf unsicherem Grund, zum Beispiel die Stadt St. Petersburg oder die Qinghai-Tibet-Eisenbahnlinie. Das fand auch nicht jeder gut, trotzdem scheint das zu funktionieren.

Allerdings hätte ich nicht gedacht, daß sich selbst ändernder Code total unüblich wäre. Mir erscheint das eher als eine Weiterentwicklung wie die von hohen Programmiersprachen, die den Quelltext erst in C und von dort aus noch in Assembler übersetzen, bevor er schließlich zu Maschinensprache wird, wo er dann endlich ausgeführt werden kann. Ich hatte mit der Methode nichts Obskures vor, sondern nur das Skript über die Einbeziehung einer Datenbanktabelle (und neuerer Einträge dort) aktuell zu halten. Dann würde ich die Methode vielleicht noch verwenden wollen, um aus einer Linkliste die inzwischen toten Links auszusortieren. Bisher nur eine Idee, aber die hielt ich nichtmal für originell, sondern für sicherlich schon von vielen Programmierern umgesetzt. Solche Sachen halt und wirklich nichts Obskures.
Ranma

21.10.2015 03:00

18 Jörg Kruse

Wie ich bereits oben geschrieben habe:

Wenn, dann würde ich Programm-Code und Daten sauber trennen und nur die Daten ändern.

Als Programmieranfänger würde ich erstmal den festen Grund suchen, auch wenn es hier und da erstmal umständlicher erscheint. Ein wackeliger Boden kann einem auf lange Sicht sehr viel Probleme bereiten.

Ein Compiler übersetzt Programmiercode, ja - aber das ist eben alles andere als eine triviale Angelegenheit. Und Compiler sind nun mal unumgänglich, sofern wir in höheren Programmiersprachen programmieren wollen.

Was das Objektorientierte Programmieren (OOP) anbelangt:

Bei größeren Projekten empfiehlt es sich durchaus, objektorientiert zu programmieren. Schwierig und von daher aufwendig ist das Erlernen von OOP - aber wenn man sich da mal reingepfuchst hat, erleichtert es so einiges.

Ich verstehe aber, dass du erstmal loslegen möchtest, und nicht erst irgendwelche abstrakten Programmierparadigemen lernen möchtest, die du momentan noch gar nicht einschätzen kannst.

Dieses Forum habe habe ich auch prozedural programmiert, weil ich beim Beginn auch noch ein Anfänger war und es so einfacher war. Dadurch ist die Forensoftware nach Jahren der Entwicklung allerdings auch schwerer zu erweitern und zu pflegen. Aber möglicherweise hätte ich gar nicht erst angefangen, wenn ich mich erst noch in OOP hätte reinknien müssen. Vermutlich ist es besser, sich damit erst zu beschäftigen, wenn man mit dem prozeduralen Stil ausreichend Erfahrung gesammelt hat und damit auch an seine Grenzen gestoßen ist.

21.10.2015 20:38 | geändert: 21.10.2015 20:39

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]