Entsprechender Artikel (a / an) in String.Format

8

Ich suche nach einer kultursensiblen Art, ein Substantiv richtig in einen Satz einzufügen, während ich den entsprechenden Artikel verwende (a / an). Es könnte String.Format oder möglicherweise etwas anderes verwenden, wenn die entsprechende Methode an anderer Stelle existiert.

Zum Beispiel:

Basissatz: "Sie betrachten ein / ein {0}"

Dies sollte folgendermaßen formatiert sein: "Sie betrachten eine Karotte" oder "Sie betrachten ein Ei."

Ich mache das gerade, indem ich manuell das erste Zeichen des einzufügenden Wortes überprüfe und dann manuell "a" oder "an" einfüge. Aber ich bin besorgt, dass dies mich einschränken könnte, wenn die Anwendung in anderen Sprachen lokalisiert ist.

Gibt es eine Best Practice für die Lösung dieses Problems?

LÖSUNG: Es scheint, dass das Problem bis zu dem Punkt kompliziert ist, dass kein Dienstprogramm oder Framework existiert, um dieses Problem in der Art und Weise zu lösen, wie ich es ursprünglich formulierte. Es scheint, dass die beste Lösung (in meiner Situation) ist, den Artikel zusammen mit dem Substantiv in der Datenbank zu speichern, so dass die Übersetzer die Kontrolle haben können, die sie brauchen. Danke für alle Vorschläge!

    
DivisionByZorro 05.05.2009, 16:47
quelle

6 Antworten

4

Neben dem von lc (eine Stunde, ein Hut) festgestellten Problem sind die Grammatikregeln in verschiedenen Sprachen sehr unterschiedlich. Zum Beispiel wechseln viele lateinische Sprachen Artikel von Substantiven, basierend auf dem "Geschlecht" und der "Nummer" des Substantivs, was manchmal aus den letzten Zeichen des Wortes abgeleitet werden kann, aber das gleiche Problem wie Englisch hat ... es gibt viele Ausnahmen.

Wenn Sie über das Lokalisieren einer Schnittstelle sprechen, würde ich den Artikel mit dem Substantiv für das Schnittstellenelement in jeder Sprache speichern. Wenn Sie Benutzereingaben verarbeiten, sehe ich keinen einfachen Weg dazu.

    
Gary.Ray 05.05.2009, 16:56
quelle
9

Das Problem ist sogar in Englisch, a-vs-an wird nicht durch den start Buchstaben bestimmt, sondern durch den start Sound . Sie können eine ziemlich gute Annahme auf Englisch basierend auf dem Anfangsbuchstaben machen, aber es gibt einige Ausnahmen (z.B. "Stunde", "Benutzer").

Am besten ist es, auf die Aussprache eines Wortes zugreifen zu können, um wählen zu können.

Abgesehen davon, ist die nächste beste Lösung, eine Liste mit häufigen Ausnahmen zu erstellen und dann den Rest zu erraten.

Aus Wikipedia :

  

Die Wahl von "a" oder "an" ist   bestimmt durch phonetische Regeln eher   als durch Buchstabierkonvention. "An" ist   in Sprache eingesetzt, um die zu entfernen   peinlicher Glottalstop (momentan still   Pause), die sonst erforderlich ist   zwischen "a" und einem folgenden Wort, z.B.   "eine Röntgenaufnahme" ... Das Folgende   Absätze sind Rechtschreibregeln für "ein"   das kann verwendet werden, wenn die phonetische Regel   wird nicht verstanden.

    
lc. 05.05.2009 16:48
quelle
3

In den Tagen von alten Text-Adventure-Computerspielen war ein Weg, dies zu lösen, "a" zu machen, " ein "," der "usw. Teil des tatsächlichen Namens der Sache. Wenn in diesen Spielen "eine Mailbox" angezeigt wird, gibt es keine intelligente KI, um das "a" zu bestimmen. Der Name des Objekts ist "ein Postfach". In einigen Spielen könnte es "Du öffnest eine Mailbox" sagen, was dumm klingt, und in anderen könnte es "Du öffnest die Mailbox" sagen, was bedeutet, dass ein anderer Name des Objekts eingegeben wurde, um in verschiedenen grammatikalischen Kontexten verwendet zu werden. Ich schlage vor, dass Sie diese Route statt der Route, auf der Sie jetzt sind, gehen.

    
bzlm 05.05.2009 17:10
quelle
2

Andere Sprachen haben ähnliche Probleme, aber in verschiedenen Kontexten, zum Beispiel abhängig vom Geschlecht der Objekte oder der tatsächlichen Anzahl der Objekte (Und einige Sprachen unterscheiden nicht nur zwischen ein und zwei Objekten, sondern die Grammatik unterscheidet sich für eins, zwei oder mehr als zwei Objekte auf Russisch).

Um ein Beispiel aus der deutschen Sprache zu verwenden:

Das Äquivalent von "Sie betrachten ein (n) X" wäre:

"Du siehst ein X" oder "Du siehst eine X" oder "Du siehst einen X"

abhängig vom Geschlecht des Objekts X. Und das Geschlecht eines Objekts ist etwas, das man nicht erraten kann, es ist mit dem Namen des Objekts nur auf der Grundlage der historischen Tradition verknüpft.

Es gibt also keine einfache Möglichkeit, solche Unterscheidungen in den meisten Sprachen zu implementieren. Mein Rat wäre, immer Formulierungen zu verwenden, die in allen Fällen funktionieren, z. B.

"Sie betrachten ein Objekt vom Typ X"
oder "Sie betrachten ein (n) X"
oder "Du schaust auf ein X"

    
NineBerry 05.05.2009 16:59
quelle
1

Wie ist das kultursensibel? Was du versuchst zu tun only macht auf Englisch Sinn. Andere Sprachen erfordern möglicherweise völlig andere Satzänderungen. Einige können das Substantiv ändern, einige können die Satzstruktur ändern, manche können die Wörter neu anordnen und so weiter.

Was Sie versuchen, wird brechen, wenn es in anderen Sprachen lokalisiert wird. Es gibt keine automatische Möglichkeit, dies zu lösen.

Betrachten Sie als einfaches Beispiel, was passiert, wenn Sie versuchen, "the {something}" zu schreiben. Im Englischen wird einfach ein Wort mit "the" vorangestellt und alles ist gut. In Französisch, Präfix es mit le, la oder les, je nach Geschlecht und ob es Plural ist oder nicht. In Dänisch fügen Sie stattdessen ein Suffix "en" oder "et" hinzu. Wo also die Worttabelle in "bord" übersetzt wird, wird "the table" zu "bordet". Und "Stuhl" (stol) wird "gestohlen".

Der einzige sinnvolle Weg ist, dem Übersetzer die Kontrolle über den ganzen -Satz zu geben. Gehen Sie nicht davon aus, dass Sie hier und da ein paar kulturabhängige Wörter einfügen können.

In der Praxis besteht die beste Lösung darin, zu akzeptieren, dass Ihre Anwendung nicht einfach lokalisiert werden kann. Vielleicht können Sie sicherstellen, dass es für einige Schlüsselsprachen möglich ist, und ansonsten das Problem ignorieren. Wenn Sie die Anwendung später in die Sprache X übersetzen müssen, müssen Sie mit dem Übersetzer die erforderlichen Änderungen im Anwendungscode vornehmen.

Alternativ müssten Sie den Versuch, Sätze selbst zu konstruieren, komplett aufgeben. Die einzige Möglichkeit, um sicherzustellen, dass ein Satz korrekt ist, besteht darin, dass ein Übersetzer den ganzen -Satz schreibt. Und natürlich verursacht das Probleme, wenn Sie einzelne Wörter austauschen können.

    
jalf 05.05.2009 17:09
quelle
0

Es gibt eine Bibliothek mit dem Namen .NET-Beugung , die für die Pluralisierung / Singularisierung verwendet wird und die möglicherweise auf dieselbe Weise repurposiert oder erweitert werden kann für so etwas. Was Sie hier suchen, ist eine allgemeine Regel, die Sie dann mit Ausnahmen optimieren können ... zum Beispiel Wörter, die mit Buchstabenkombinationen beginnen, die allgemein als Vokale ausgesprochen werden. Obwohl dies nicht unbedingt kultursensibel ist, sollte es zumindest auf Englisch gelingen.

    
BenAlabaster 05.05.2009 16:57
quelle