Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Gettext Pluralformen parsen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Gettext Pluralformen parsen

    Hallo,

    ob dies eine Anfängerfrage oder eine Profi-Frage ist, entscheide ich später. Ich habe es erstmal hier gepostet.

    Also, es geht um folgendes: ich möchte einen GNU-Gettext-Parser in PHP realisieren.
    Warum? Aus drei Gründen:
    - Die Gettext-Erweiterung von PHP ist garstig und funktioniert auch nur bei Gettext-Support auf dem System usw. usf.
    - PHP-Gettext gefällt mir nicht
    - Und last but not least wollte ich es einfach mal gemacht haben

    Nun zu meinem Problem: an sich gibt es keine Fragen, doch an einer Stelle hakt es ein wenig und frage nun, ob jemand eine bessere Idee hat.
    Und zwar geht es um die Pluralformen. Es soll geprüft werden, ob der Plural benutzt werden soll oder nicht.
    So einfach Formen wie beim Deutschen:
    Code:
    nplurals=2; plural=n != 1;
    sind ja noch einfach zu parsen.
    Bei Pluralformen wie im Russischen
    Code:
    nplurals=3;    plural=n%10==1 && n%100!=11 ? 0 : (n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
    wird es dann schon komplizierter.

    In PHP-Gettext ist das per [MAN]eval[/MAN] gelöst und das war auch das erste, was mir einfiel, doch bin ich nicht sonderlich der eval ()-Fan.
    Das beste, was mir einfiel war, diese Formen per Whitelist zu prüfen und dann per eval zu parsen. Das ist allerdings auch nicht unbedingt das Gelbe vom Ei.
    Fällt euch etwas besseres ein?
    Refining Linux: “Performing Push Backups – Part 1: rdiff-backup


  • #2
    Ich bin damit nicht vertraut, was musst du da oben parsen? Woher stammen die Daten, wer parset das?

    eval() ist garstig wenn du nicht weisst was du tust oder wenn es anfaellig fuer Manipulation ist. Aber vielleicht ist das einer der Punkte, wo eval() mal Sinn macht, weil die alternative Implementierung langsamer und aufgeblaehter waere.
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      Zitat von Chriz Beitrag anzeigen
      Ich bin damit nicht vertraut, was musst du da oben parsen? Woher stammen die Daten, wer parset das?
      Diese Code-Schnipsel, die ich gepostet habe, sind in der MO-Datei enthalten und beinhalten einen boolschen Ausdruck (das hinter plural=). Ist dieser wahr (true), so wird angenommen, dass es sich um Plural handelt. n steht dabei als Platzhalter für eine Zahl. Im Skript könnte man n dann durch $n ersetzen und diesen Ausdruck mit eval parsen.

      Aber ich bin ganz deiner Meinung:
      Zitat von Chriz Beitrag anzeigen
      eval() ist garstig wenn du nicht weisst was du tust oder wenn es anfaellig fuer Manipulation ist. Aber vielleicht ist das einer der Punkte, wo eval() mal Sinn macht, weil die alternative Implementierung langsamer und aufgeblaehter waere.
      Ich mag eval nicht, aber ich denke, bevor ich alles manuell parse, was meine Skriptlaufzeit wohl in die Jahre ziehen würde, könnte ich eval verwenden.
      Und hier eben meine Frage: fällt jemandem ein performanter Weg ohne eval ein (muss aber in PHP realisierbar sein)? Ich möchte jetzt keine Codes, sondern nur Denkansätze für ein performantes Parsing o.ä.

      Ich hätte nie gedacht, dass ich einmal dorthin kommen würde, dass eval sinnvoll sei.
      Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

      Kommentar


      • #4
        Ich denke, dann setze ich eval ein. Parsen wäre sehr aufwendig, da man auch die Klammerung beachten müsste.
        Nun gut, wenn noch jemandem etwas schlaues einfällt, dann darf er sich gerne melden, ich markiere den Thread erstmal als erledigt.
        Ich hoffe, dass ich nicht noch in andere Situationen komme, in denen eval einmal sinnvoll sein sollte.
        Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

        Kommentar

        Lädt...
        X