Paul: array

Moin,
welche array-Variante ist zu bevorzugen wenn ich einige dutzend Einträge habe:

$translation['title']['de'] = 'Produktkatalog';  
$translation['title']['en'] = 'product catalogue';  
$translation['text']['de'] = 'Hallo';  
$translation['text']['en'] = 'Hello';  
...  
echo $translation[$meinElement][$meineSprache];
$translation['title'] = array ('de' => 'Produktkatalog', 'en' => 'product catalogue');  
$translation['text'] = array ('de' => 'Hallo', 'en' => 'Hello');  
...  
echo $translation[$meinElement][$meineSprache];
$title = array ('de' => 'Produktkatalog', 'en' => 'product catalogue');  
$text = array ('de' => 'Hallo', 'en' => 'Hello');  
  
...  
echo $meinElement[$meineSprache];

Hauptaugenmerk: Performance, Erweiterbarkeit

Macht PHP intern bei 1) und 2) evtl. sowieso das gleiche?
Paul

  1. Du hängst dich hier an Schreibweise auf, viel wichtiger ist aber die Struktur. Für meine Begriffe sind alle schlecht - wichtiger ist imho als Wurzel die Sprache zu verwenden und dann erst die Termini. Wenn du eine neue Sprache hinzufügst oder eine bestehende entfernst, tust du dir viel leichter.

    Und abgesehen davon würde ich das auf jeden Fall als Baum schreiben - sauber eingerückt und sortiert.

    $lang = array(  
      'de' => array(  
        'title' => 'foo',  
        'text'  => 'bar',  
      ),  
      'en' => array(  
        'title' => 'baz',  
        'text'  => 'qux',  
      ),  
    );
    
    1. Hi!

      Du hängst dich hier an Schreibweise auf, viel wichtiger ist aber die Struktur. Für meine Begriffe sind alle schlecht - wichtiger ist imho als Wurzel die Sprache zu verwenden und dann erst die Termini. Wenn du eine neue Sprache hinzufügst oder eine bestehende entfernst, tust du dir viel leichter.

      Das kann man so oder so sehen. Wenn man später einen Begriff hinzufügen will, klappert man stattdessen alle Sprachen einzeln ab. In deiner Variante bilden die Sprachen eine Einheit, in der ursprünglichen sind es die Begriffe.

      Und abgesehen davon würde ich das auf jeden Fall als Baum schreiben - sauber eingerückt und sortiert.

      Wierum auch immer, auf diese Weise ist es gut und übersichtlich. Ansonsten werden sich die Schreibweisen nichts weiter nehmen. Unterschiede gehen im Grundrauschen unter. Außerdem muss man das sowieso auf der konkreten Hard- und Software messen. Caches werden eine signifikante Rolle spielen. Messungen am besten praxistauglich vornehmen, also zum Beispiel wieviel komplette Requests pro Zeiteinheit können abgearbeitet werden. Tools wie Apaches "ab" können dabei helfen.

      Lo!

      1. Du hängst dich hier an Schreibweise auf, viel wichtiger ist aber die Struktur. Für meine Begriffe sind alle schlecht - wichtiger ist imho als Wurzel die Sprache zu verwenden und dann erst die Termini. Wenn du eine neue Sprache hinzufügst oder eine bestehende entfernst, tust du dir viel leichter.

        Das kann man so oder so sehen. Wenn man später einen Begriff hinzufügen will, klappert man stattdessen alle Sprachen einzeln ab. In deiner Variante bilden die Sprachen eine Einheit, in der ursprünglichen sind es die Begriffe.

        Das ist richtig, in der Praxis ist aber die Variante mit einem Ast pro Sprache und einer Sprache als Default wesentlich einfacher handzuhaben.

        Wordpress, MediaWiki, TYPO3, OXID - viele große Projekte handhaben das so. Spontan fällt mir aber keines ein, dass es anders macht.

        Beim Inhalt selbst - also Fließtexte, die ein Redakteur warten kann, sind aber mit einer Paralleldarstellung wesentlich einfacher zu Pflegen. Aber das ist denke ich hier nicht das Thema.

        1. Hi!

          Das kann man so oder so sehen. Wenn man später einen Begriff hinzufügen will, klappert man stattdessen alle Sprachen einzeln ab. In deiner Variante bilden die Sprachen eine Einheit, in der ursprünglichen sind es die Begriffe.
          Das ist richtig, in der Praxis ist aber die Variante mit einem Ast pro Sprache und einer Sprache als Default wesentlich einfacher handzuhaben.
          Wordpress, MediaWiki, TYPO3, OXID - viele große Projekte handhaben das so. Spontan fällt mir aber keines ein, dass es anders macht.

          Weil hier die Pflegearbeit ausgelagert wird. Eine Person behandelt in der Regel eine Sprache. Und wenn Änderungen kommen, werden diese vielleicht extra zum Übersetzen gegeben. Doch in einem kleinen nicht öffentlichen Projekt sieht die Sachlage vielleicht ganz anders aus. Da macht einer alles und für ihn ist es möglicherweise einfacher, die Begriffe beisammen zu haben.

          Lo!

          1. Weil hier die Pflegearbeit ausgelagert wird. Eine Person behandelt in der Regel eine Sprache. Und wenn Änderungen kommen, werden diese vielleicht extra zum Übersetzen gegeben. Doch in einem kleinen nicht öffentlichen Projekt sieht die Sachlage vielleicht ganz anders aus. Da macht einer alles und für ihn ist es möglicherweise einfacher, die Begriffe beisammen zu haben.

            Das ist sicher richtig, aber für meine Begriffe ist es immer sinnvoll, etwas skalierbar zu halten. Ich hab' schon Hotelwebsites gemacht, die hatten zuerst zwei Sprachen und etwa 10 Unterseiten und jetzt hunderte Seiten und über 10 Sprachen.

            Wenn man da von Anfang an mitdenkt, spart man sich später viel Arbeit. Einige Dinge die man _immer_ im Hinterkopf halten sollte:

            • Was ist, wenn irgendwann "chinesisch oder arabisch" dazukommt?

            Konsequent UTF-8 zu verwenden bricht niemandem etwas ab - das geht automatisch - spätestens wenn eine "exotische" Sprache dazukommt, wird man das aber begrüßen.

            • Was ist, wenn ein Menüpunkt dazukommt?

            Eine kleine Site "mit 5 Menüpunkten die sich nie ändern werden" haben wir alle schon gemacht. Hardcodiert mit einer schönen grafischen Schrift. Jetzt kommt aber nach 2 Jahren ein 6. Menüpunkt dazu - das Fireworks-File gibt ist nicht aufzufinden, keiner weiß welche Schriftart das ist. Aus dem Grund mache ich selbst winzige Websites mit einem "enorm komplizierten CMS" - da ist so ein Task dann in 2 Minuten erledigt - mit etwa 1 Stunde Mehraufwand am Anfang, den man Locker in der Kalkulation unterbringt.

            1. Danke an Euch alle. Sehr informativ.

              Paul

  2. Macht PHP intern bei 1) und 2) evtl. sowieso das gleiche?

    Und um deine Frage auch zu beantworten: ja, das ist dasselbe.

    1. Hi!

      Macht PHP intern bei 1) und 2) evtl. sowieso das gleiche?
      Und um deine Frage auch zu beantworten: ja, das ist dasselbe.

      Im Ergebnis ja, aber ansonsten nicht. Schon die Anzahl der Zuweisungen inklusive des Raussuchens der Variablen im Speicher sind unterschiedlich. Dabei können sich Unterschiede ergeben. Aber, die wird man sicher nicht merken.

      Lo!

  3. Wusste ich doch, dass mir das bekannt vorkommt :)
    http://forum.de.selfhtml.org/archiv/2011/2/t203078/

    Bist du derselbe Paul? :)