Funktion der Wechsel zwischen singular und plural?
Suche ich eine Funktion, die, gegeben ein string-switches singular/plural. Eigentlich brauche ich nicht für Englisch, aber ich brauche für einige andere Europäische Sprachen.
Gibt es keine Funktion, die machen die tricks? (in einem gegebenen string zu konvertieren und die Sprache?)
Dank
Was andere Europäische Sprache?
Hier ya go:
Der trick mit den vielen Sprachen ist, die einen plural nicht nur auf das Substantiv, wie Englisch fügt ein 's', die Artikel und Adjektive sind auch pluralisiert. Angesichts der Schwierigkeiten, die bei der Analyse natürlicher Sprache zu verknüpfen Substantive mit den richtigen Modifikatoren, die meiste software, die ich bin mir bewusst, der speichert nur die manuelle übersetzungen der beiden plural und nicht plural.
Axel: ... schlägt für Dinge wie
Dieser ist für die englische Sprache, aber es könnte Ihnen etwas inspiration: github.com/flourishlib/flourish-classes/blob/master/...
Hier ya go:
$result = (preg_match('~s$~i', $string) > 0) ? rtrim($string, 's') : sprintf('%ss', $string);
. 😛Der trick mit den vielen Sprachen ist, die einen plural nicht nur auf das Substantiv, wie Englisch fügt ein 's', die Artikel und Adjektive sind auch pluralisiert. Angesichts der Schwierigkeiten, die bei der Analyse natürlicher Sprache zu verknüpfen Substantive mit den richtigen Modifikatoren, die meiste software, die ich bin mir bewusst, der speichert nur die manuelle übersetzungen der beiden plural und nicht plural.
Axel: ... schlägt für Dinge wie
box
, loss
und viele mehr 😉Dieser ist für die englische Sprache, aber es könnte Ihnen etwas inspiration: github.com/flourishlib/flourish-classes/blob/master/...
InformationsquelleAutor dynamic | 2011-01-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt keine eingebaute Funktion in PHP für diese Art von operation. Es gibt jedoch einige tools, die Sie verwenden können, um zu helfen Ihr Ziel zu erreichen.
Es ist eine inoffizielle Google Dictionary API enthält Informationen über Pluralformen. Lesen Sie mehr über diese Methode hier. Sie müssen zum Parsen eines JSON-Objekts finden Sie die entsprechenden Elemente und diese Art und Weise neigt dazu, ein bisschen langsam.
Die andere Methode, die in den Sinn kommt, ist die Verwendung von aspell, oder einer seiner verwandten. Ich bin mir nicht sicher, wie genau die Wörterbücher für andere Sprachen als Englisch, aber ich habe aspell zu erweitern, Begriffe in Ihren verschiedenen Formen.
Ich weiß, das ist nicht die hilfreichste Antwort, aber ich hoffe, es gibt Ihnen eine Allgemeine Richtung zu suchen.
Die Google-API scheint nicht aktiv zu sein, nicht mehr.
InformationsquelleAutor thetaiko
Hier ist meine handy-Funktion:
Standardmäßig, es fügt nur das 's' nach dem string. Zum Beispiel:
Diesem echo '0 posts', '1 post', '2 posts', '3 Beiträge", etc. Aber Sie können auch tun:
Welches echo '0 Antworten', '1 Antwort', '2 Antworten', '3 Antworten" usw. Oder alternativ:
Und es funktioniert für einige andere Sprachen auch. Zum Beispiel, in Spanisch mache ich:
Welches echo '0 comentarios', '1 comentario', '2 comentarios', '3 comentarios', etc. Oder, wenn das hinzufügen eines " s " ist nicht der Weg, dann:
Welches echo '0 canciones', '1 canción', '2 canciones', '3 canciones', etc.
Das ist wirklich schön. Kompakter version:
function plural( $amount, $singular = '', $plural = 's' ) { return ( $amount == 1 ) ? $singular : $plural; }
Das funktioniert nicht mit dynamischen Werten. Was passiert, wenn die singular - /plural-Wort nicht bekannt?
InformationsquelleAutor Sophivorus
Dies ist nicht einfach: jede Sprache hat Ihre eigenen Regeln für die Bildung von Pluralformen der Substantive. In Englisch ist es eher, dass Sie "-s" am Ende eines Wortes, es sei denn, es endet in "-x", "-s", "-z", "-sh", "ch", in dem Fall fügen Sie "-es". Aber dann gibt es "Maus"=>"Mäuse", "Schaf"=>"Schaf" usw.
Das erste, was zu tun ist, dann ist es, herauszufinden, was die Regel(N) sind für die Bildung des plural aus dem singular in der Sprache(s) Sie wollen, mit zu arbeiten. Aber das ist nicht die ganze Lösung. Ein weiteres problem ist das erkennen von Nomen. Wenn Sie ein Substantiv, und konvertieren Sie es von singular zu plural, nicht zu schwer, aber wenn Sie ein Stück freien text, und Sie haben, um den Substantiven im singular und konvertieren Sie Sie in plural, das ist viel schwieriger. Sie können Listen von Substantiven, aber natürlich einige Wörter können Nomen und Verben ("jagen", "Fischen", "Pause" usw.) so, dann müssen Sie analysieren den text zu identifizieren, den Substantiven.
Es ist ein großes problem. Wahrscheinlich gibt es ein KI-system gibt, die das tun würden, was Sie brauchen, aber ich kann mir nicht vorstellen, es werde alles kostenlos, der alles tut.
auch googeln es gibt eine coulpe der Funktion, die funktioniert der trick in php, das problem ist, Sie arbeiten nur für Englisch. Ich brauche es für die anderen europäischen Sprache.
Ich codiert eine für Portugiesisch, korrekt behandelt weiblich / Männlich Inflationen.
Axel: ich weiß nicht, portugiesischen, gibt es eine klare Regel, um zu bestimmen, ob ein Wort maskulin oder feminin ist?
Eine klare Regel? Würde ich so nicht sagen, Nein. Ich musste kaufen ein "prontuário" (übersetzung "Diagramm" - mehr oder weniger ein Wörterbuch für Grammatik-Regeln) zu entdecken, dass einige pluralizations, hängt von der Art des Schließens diphtonge. Meine Umsetzung ist nicht perfekt - es gelang mir nur zum aufblasen, die meisten der Wörter, nicht alle Worte - das wäre eine sehr schwere Aufgabe.
InformationsquelleAutor Ben
Nur Auf Englisch-Lösung
Hier ist eine PHP-Klasse, hat einwandfrei funktioniert für mich so weit:
http://kuwamoto.org/2007/12/17/improved-pluralizing-in-php-actionscript-and-ror/
Hier ist es, als ein Kern im Falle, dass die Seite verschwindet:
https://gist.github.com/tbrianjones/ba0460cc1d55f357e00b
Dies ist eine kleine Klasse und könnte leicht und schnell umgewandelt werden in andere Sprachen.
InformationsquelleAutor T. Brian Jones
Hier ist eine kurze Funktion, die ich normalerweise für weniger komplexe Szenarien:
Obwohl für eine komplexere Lösung, die Sie gehen können mit @T. Brian Jones' Lösung
InformationsquelleAutor user28864
Ich mag die Antwort von James Constantino. Einfach und effizient, und Sie sind sich sicher, dass Meister jedem Fall, in jeder Sprache. Man muss mehr code schreiben (zweimal der Allgemeine Teil des Wortes, nämlich).
Mag ich auch, natürlich, die TBrianJones Lösung, aber es funktioniert nur mit englischen (wie Sie ist. Ich kann leicht erweitern, es für meine üblichen europäischen Sprachen, Deutsch, Französisch, Spanisch, Italienisch und Portugiesisch). Vielen Dank für es. Wenn Sie wissen, die Häufigkeit der Wörter, die verwendet werden, können Sie optimieren durch die Neuorganisation der Linien.
Auch Felipe ' s Vorschlag ist gut, und btw plebiscited.
Aber in jeder Lösung habe ich gefunden, was ich halte für einen Fehler: jede Verwendung der Singularform nur für den Wert 1, und der plural-form, für jeden anderen Fall. Das ist natürlich falsch, für negative Werte, aber auch-zumindest in Französisch-- für Werte streng niedriger als 2.
So, hier ist mein Vorschlag, unter James ' s code als Basis, optimiert:
So ein code wie
geben
korrekt ist.
Der null-Wert ist, kann ich nicht verstehen, der Grund für einen plural, da es, ist nicht das Objekt, aber vielleicht angelsächsische Eingeborenen verwendet werden.
HTH, M.
InformationsquelleAutor Madmarsu
Ich habe eine multilanguage-Lösung.
Rufen Sie die Funktion etwa so:
Hoffe, das hilft!
Ihr Zustand ist nicht richtig für viele Sprachen), die Russen, zum Beispiel, verwendet die Dritte form (Genitiv) für 5-19 🙂 [1 сайт, 2 сайта, 5 сайтов]
Abgesehen von vielen Sprachen haben weit mehr komplexe plural-Regeln, diesen code ironischerweise auch nicht funktioniert, Philippinisch, wie in deinem Beispiel...
InformationsquelleAutor James Constantino
Können Sie versuchen, die folgenden,
InformationsquelleAutor Bengala
Kam ich auf eine ziemlich einfache Lösung für so etwas. Dies hängt jedoch einige Vorkenntnisse von PHP als auch eine benutzerdefinierte mySQLi Klasse, die gefunden werden können hier (das erklärt meine Verwendung von
num_rows
.In meinem Fall, ich brauchte, um nach oben ziehen eine Anzahl von Notizen aus einer Datenbank und sagen "1 Notiz", und dann das Wort "Noten" für alles, was nach 1, als auch etwas zu sagen: "0 Anmerkungen".
Ziehen aus der Datenbank und nicht eine Zählung, die ich hatte, zu verwenden:
$total_notes = $database->num_rows("SELECT notes_id FROM $notes_db");
Und dann den code auf der echo-Wert...
InformationsquelleAutor Robert Dewitt