Ich habe an einer .NET-Bibliothek gearbeitet, um die Internationalisierung einer Anwendung zu unterstützen. Es ist in C # geschrieben, heißt SmartFormat und ist Open-Source auf GitHub.
Es enthält Grammatikalische Anzahl Regeln für mehrere Sprachen, die anhand der Vorlage und des Gebietsschemas die richtige Singular / Pluralform bestimmen. Die Regeln wurden von den Unicode-Sprachenpluralregeln erhalten.
Wenn Sie einen Ausdruck mit Wörtern übersetzen, die von einer Menge abhängen (wie Substantive, Verben und Adjektive), geben Sie die verschiedenen Formulare an, und der Formatierer wählt anhand dieser Regeln das richtige Formular aus.
Ein Beispiel in Englisch: (Beachten Sie, dass die Syntax fast identisch mit String.Format
ist)
Ich möchte Komponententests für viele der unterstützten Sprachen schreiben. Ich spreche jedoch nur Englisch und Spanisch (beide haben die gleichen grammatikalischen Regeln).
Was sind einige gute nicht-englische Testsätze, die für diese Komponententests verwendet werden können?
Ich suche nach ähnlichen Ausdrücken wie "There {0:is:are} {0} {0:item:items} remaining."
. Beachten Sie, dass dieses Beispiel abhängig von der Menge ein bestimmtes Verb und Nomen erfordert.
Ein Hinweis zur Syntax :
Diese Bibliothek sucht nach :
abgegrenzten Wörtern und wählt anhand der für das Gebietsschema definierten Regeln das richtige Wort aus. Zum Beispiel gibt es auf Polnisch drei Pluralformen für das Wort "Datei": 1 "plik", 2-4 "pliki", 5-21 "plików". Also würden Sie alle 3 Formulare in der Formatzeichenfolge angeben: "{0} {0:plik:pliki:plików}"
.
Die Wörter werden typischerweise vom kleinsten möglichen Wert zum größten sortiert, wie zum Beispiel "{0:zero:one:two:few:many:other}"
, wie von Unicode Language Plural Regeln .
Zusätzliche Informationen zu diesem Code wurden hier besprochen: Lokalisierung von Singular / Plural-Wörtern - Was sind die verschiedenen Sprachregeln für grammatikalische Zahlen?
Ich möchte mit der ungefähren türkischen Übersetzung Ihrer Beispielphrase beitragen, damit Sie den Fall testen können, in dem die Anzahl der möglichen Formen gleich 1 ist;)
{0} nesne kaldı.
= ({0} items remaining.)
Obwohl türkische Wörter regelmäßig mit Suffixen pluralisiert werden, werden Pluralformen niemals verwendet, wenn die Anzahl der Elemente angegeben wird. Also sollte das obige in jedem Fall gleich gemacht werden:
1 nesne kaldı.
2 nesne kaldı.
42 nesne kaldı.
Wenn die Zählung jedoch nicht explizit angegeben wird, kann es grammatikalisch wichtig werden, anzugeben, ob wir über ein oder mehrere Elemente sprechen. Die Nachricht " Do you want to delete the selected item(s)?
" sollte also wie folgt aussehen:
Seçili nesneyi silmek istiyor musunuz?
(wenn Elementanzahl = 1)
Seçili nesneleri silmek istiyor musunuz?
(wenn Artikelanzahl & gt; 1)
Also ich denke, das Format dafür wäre:
Seçili {0:nesneyi:nesneleri} silmek istiyor musunuz?
Tags und Links .net c# localization string-formatting internationalization