Pluralization of english nouns

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

  • Pluralization of english nouns

    Hallo Zusammen,

    ein kleines Problemchen bzw. ein Code Smell, der mich schon länger in meiner ZF-Mutation nervt.

    Und zwar: Aus Tabellennamen erstelle ich dynamisch Module und Items, die wiederum mit generischen Controllern und Actions dargestellt werden. Zum Beispiel aus der Tabelle shop_products wird das Modul Shop, dass einen Product-Controller hat, der generalisiert list-, view-, edit-, add-, delete- und eine ganze Reihe mehr Actions enthält. Weder das Modul noch den Controller muss ich physisch erstellen. Man beachte nun, dass der Tabellenname "products" beinhaltet (also Plural) während der Controller (und ach später in der URL-Route) Product heißt. Das halte ich für sinnig, denn im Controller fackel ich (in den allermeisten Fällen) nur Aktionen auf einen Datensatz ab.

    Wie dem auch sei. Wir wissen, dass es leider nicht immer reicht ein S an den Singular eines Nomens zu hängen um ein Plural draus zu machen. Bisher hab ich das ignoriert, was dazu führt, dass ich Tabellennamen wie "news_entrys" oder "bladiblubb_childs" habe. Beides falsch. Im ersten Fall kann man noch sagen, dass man halt auf ein y am Ende prüfen könnte. Aber child und children ist unregelmäßig, und das ist nur das, was mir als erstes eingefallen ist. Spontan kommen mir da noch eine ganze Menge mehr in den Sinn, zum Beispiel alles, was sowohl im Plural als auch im Singular gleich ist: Glasses, Trousers, Jeans.

    Wie gesagt, das nervt mich an und ich würde das gerne beheben. Leider kommt mir keine Vernünftige und vor allem Robuste Methode in den Sinn, wie man das anstellen könnte. Meine beste Idee (und bisher auch der beste Ansatz den ich dazu im Netz finden konnte) war dieses Stückchen Python: Smart pluralisation (English) ActiveState Code

    Aber irgendwie ist das IMHO immer noch nicht das gelbe vom Ei! Also richte ich mich eines der wenigen Male fragend an die Community! Mal sehen was euer Hirnschmalz so hergibt

    Cheers,

    Cem
    Zuletzt geändert von unset; 19.11.2009, 00:37.
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

  • #2
    Hallo,

    ich hab das in den Fällen, wo ich damit konfrontiert war, so gelöst, dass ich die Pluralisierung durch Zusammensetzung mit einem der folgenden Worte gebildet hab:
    • ...Array
    • ...List
    • ...Elements
    • ...Items
    • ...Set
    • ...Collection


    Das ist zwar nicht so elegant wie ein natürlicher (und korrekter) Plural, aber genau so sinnvoll und verständlich.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Den Umweg bin ich auch gegangen, wenn irgendwas nach außen hin Sichtbar war. Aber um ehrlich zu sein, will ich mir in Zukunft aber eigentlich keine Gedanken mehr darum machen, ob ich ein Nomen habe, dass das System "pluralisieren" kann.
      [FONT="Helvetica"]twitter.com/unset[/FONT]

      Shitstorm Podcast – Wöchentliches Auskotzen

      Kommentar


      • #4
        Wikipedia: English plural wäre meine erste Anlaufstelle.
        Das gibt schon einiges an „Regeln” her, an die man sich halten kann.
        Darum, die Sonderfälle in Form von Listen vorzuhalten, die zuerst abgeprüft werden, führt wohl kaum ein Weg vorbei.


        Ob sich der Aufwand lohnt, wäre eine andere Frage.
        Sowohl vom algorithmischen her als auch von der Rechenzeit, die dafür draufgeht, wenn du das jedes Mal dynamisch und on-the-fly machst, scheint mir eine in der Applikation hinterlegte Liste, in der Singular und Plural abgelegt werden, vielleicht doch der bessere Weg. Klar, die will beim Anlegen einer neuen Tabelle jedes mal ergänzt werden ... aber diesen vertretbar geringen Aufwand durch x Zeilen an Code zu ersetzen, scheint mir die Materialkosten der Kanonenkugel nicht wert, wenn ich den Spatz auch einfach erschlagen kann ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Warum die Tabellen nicht einfach mit der Einzahl benennen? Dass eine Tabelle normalerweise mehr als einen Eintrag enthält, sollte wohl selbstverständlich sein und bedarf keiner Hervorhebung mittels Mehrzahl. IMHO.

          Kommentar


          • #6
            Weiß ich ehrlich gesagt auch nicht mehr –*aber ich befürchte, da habe ich mir am Anfang was bei gedacht

            Am Ende werde ich es wahrscheinlich tatsächlich mit allen gefundenen Regeln, eine Sonderfallliste und einem Cache lösen.
            [FONT="Helvetica"]twitter.com/unset[/FONT]

            Shitstorm Podcast – Wöchentliches Auskotzen

            Kommentar


            • #7
              Du brauchst die Bezeichner überall im Singular, aber der Tabellenname, den kaum jemand zu Gesicht bekommt, soll unbedingt im Plural sein? Wozu?

              Wenn für diese Kleinigkeit ein Haufen Code und Lookup-Tabellen existieren, stinkt das noch viel mehr als der Singular in der DB.

              Kommentar


              • #8
                Ne, das war schon ein bisschen anders, gestern hab ich das aus dem Kopf niedergeschrieben, ohne das Dingen vor mir gesehen zu haben –*da hab ich mich ein bisschen vertan. Konkret sieht es so aus, dass der Controller und die Tabellen im Plural, die Modelle (auch die virtuellen) in der Einzahl hinterlegt sind. Das begründet sich daraus, dass auch sonst alles stets im Singular benannt wird –*und das soll auch bitteschön weiter so bleiben (und ja, mir ist klar das Controller hier ein Sonderfall sind). Prinzipiell geht es ja hier auch nicht um das Design sondern um ein konkretes Problem –*das Design hab ich ja nur des leichteren Verstehens halber kurz angerissen.
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  Was spricht gegen "nur Singular"? Aus Tabelle show_product wird Modul Show und Controller Product oder ShowModule und ProductController ...

                  Kommentar


                  • #10
                    Spontan fällt mir nicht mehr ein, was ich mir dabei gedacht habe …*abgesehen davon, dass das Design nach wie vor nicht das Thema ist
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Wie so oft wäre das Thema erledigt, das eigentliche Problem würde nicht mehr existieren, wenn du alles im Singular machst. Deshalb finde ich es legitim, so vom Thema abzuweichen.

                      Im Prinzip ist es vergleichbar mit dem Problem "wo kann meine Applikation temporäre Dateien ablegen". Korrekterweise im tmp-Dir. Aber wo ist das und hat sie Schreibzugriff? Muss sie die Dateien selbst wieder löschen oder macht das das OS?
                      Statt viel Code zu schreiben, kann man auch einfach bei der Installation ein eigenes tmp/ als Unterverzeichnis der Applikation anlegen. Alles was die App da reinschreibt, muss sie auch selbst wieder löschen. Kein if, kein switch, keine Abhängigkeiten vom OS oder sonstwas. Weniger Code, selber Effekt.

                      Einziges Manko: Wenn der User sein tmp-Dir leert, gewinnt er nicht das Maximum an Plattenplatz.
                      Manko bei dir: Wenn mal ein Entwickler in die DB schaut, erkennt er nicht, dass show_product eine 1:N Verknüpfung ist, sondern hält es evtl. für 1:1. Aber passiert das wirklich? Und wenn schon, ist es ein Problem? Kann man das notfalls nicht auch mit einem Tabellenkommentar erschlagen?

                      Kommentar


                      • #12
                        Hier gibt es ein Stückchen Code zum Pluralisieren unter der MIT-Lizenz. Nutze diesen auch in einem internen Generator-Projekt und habe bisher keine Probleme feststellen können.

                        Edit als Argument gegen Tabellennamen in Singular: Eine Tabelle enthält mehrere Datensätze, stellt also definitiv einen Plural dar.
                        Zuletzt geändert von PHP-Desaster; 19.11.2009, 17:18.

                        Kommentar


                        • #13
                          Zitat von PHP-Desaster Beitrag anzeigen
                          Edit als Argument gegen Tabellennamen in Singular: Eine Tabelle enthält mehrere Datensätze, stellt also definitiv einen Plural dar.
                          Kann man so oder so argumentieren. Man kann auch sagen dass es eine Tabelle vom Typ Person ist.

                          Ich persönlich find es einfach einfacher, als wenn man ständig irgendwo zwischen Einzahl und Mehrzahl herummappen muss. Modell "person" == Tabelle "person". Ist doch viel einfacher.

                          Du sagst ja auch nicht Äpfelkuchen, nur weil mehr als ein Apfel drin ist, oder?

                          Kommentar


                          • #14
                            Zitat von h3ll Beitrag anzeigen
                            Du sagst ja auch nicht Äpfelkuchen, nur weil mehr als ein Apfel drin ist, oder?
                            Aber man sagt Wörterbuch ;-)
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Kommentar


                            • #15
                              Aber warum sich das Leben unnötig schwer machen? Wie die Datenbanktabelle heißt sieht nur der Programmierer, und dem kanns ja ziemlich egal sein ob ein s dahinter steht oder nicht. Der Endbenutzer bekommt das eh niemals zu Gesicht.
                              Zuletzt geändert von h3ll; 19.11.2009, 18:07.

                              Kommentar

                              Lädt...
                              X