Malcolm Beck`s: Internationlaisierung, UI Translation, wohin mit den Daten und in welcher Form?

Beitrag lesen

Hallo, werte Gemeinde,

Ich hab ein Entscheidungsproblemchen. Ich hab mir ein kleines DB-Tool geschrieben, welches mir hilft, UI Content (also Strings und Meldungen, die ich innerhalb von Scripten brauche, oder auch marginaler Content im Template) zu übersetzen und zu verwalten. Das Tool läuft soweit auch ziemlich gut, ich kann Daten in Sekunden eingeben und mit wenigen Klicks auch relativ brauchbar mit Google übersetzen und bspw. mit Bing vergleichen, verschiedene Projekte verwalten, die unterschiedliche Sprachen anbieten usw.

Zum Entwickeln greife ich direkt auf die Daten in der DB zu. Für den produktiven Einsatz hatte ich mich, als ich anfing, das Tool zu programmieren, für PHP-Klassen mit Namespace entschieden, die nach der Verwaltung mit dem Tool generiert werden müssen (so das dieser Content im produktiven Einsatz ohne Datenbank zur Verfügung steht). Was auch wunderbar funzt, aber mittlerweile bin ich mir nicht mehr sicher, ob ich es bei Klassen belassen soll, oder ob ich die Daten einfach in PHP-Dateien als normale Arrays speichern soll. Die letzten Jahre über hatte ich es immer so gemacht, wie ich es in Felix Riesterers internationalem Gästebuch abgeguckt hatte, also mit separaten XML-Dateien für jede Sprache, aber das ist eine einzige Katastrophe (vor allem, wenn man viele Sprachen unterstützen und ständig neue Daten einpflegen muss, eine Katastrophe), davon will ich ganz weg. Ich will bei PHP bleiben, da ich auch mit PHP programmiere.

Beispieldaten sehen so aus (und für die bräuchte ich Hilfe, sowohl bei der Struktur als auch der Daten):

Orderstruktur der generierten Klassen:

/index.php
/src/ycore/strings/
                   /de.php
                   /ar.php
                   /en.php
                   /tr.php
                   // usw.

Wären die Daten in einem „/view/strings/“ Ordner besser aufgehoben?

Und in den Dateien steht dann.

<?php // de.php

  namespace Ycore;

  class de {

   public function __construct() {
     $this->ystr = $this->provideStrings ();
   }

   private function provideStrings () {
     return array ("formular" => array (
                                        "error" => array (
                                                          "categories" => "Kategorien",
                                                          "msg" => "Ein fehler ist aufgetreten",
                                                   ),
                                        "success" => "Bingo! Alle Eingaben sind richtig!",
                                 ),
                   "test" => "Erster Test mit blanker Tabelle"
                 );
      }
}

Ich weiss nicht mehr, wie ich auf Klassen kam. Ich erhoffte mir wohl einen Vorteil durch Autoload (Namespace bringt hier irgendwie überhaupt nichts). Aber Autoload kann man ja auch auf normale Scripte mit Arrays anwenden. Also, Vorschläge? Wo und wie speichert ihr solchen Content? Und neee, PHP get_text() kann ich leider nicht verwenden, absolut keine Alternative.

--
Hosen sind Blau