Umgang mit Pluralformen in Activity Pub-Lokalisierungsstrings

Ich habe einige Zeichenfolgen im ActivityPub-Plugin bemerkt, die meiner Meinung nach pluralisiert werden müssen.

Der erste Beitrag eines neuen Themas wird %{delay_minutes} Minuten nach dem Posten veröffentlicht

discourse-activity-pub/config/locales/client.en.yml at a49ec5c4f5acac28bafbc1c57c57161c067e8f6e · discourse/discourse-activity-pub · GitHub
Wenn delay_minutes 1 ist, sollte es “1 Minute” heißen.

“Beitrag Nr. %{post_number} veröffentlichen und in %{minutes} Minuten an die Follower der Gruppenakteure liefern.”

discourse-activity-pub/config/locales/client.en.yml at a49ec5c4f5acac28bafbc1c57c57161c067e8f6e · discourse/discourse-activity-pub · GitHub
Gleiches wie oben.

“Veröffentliche %{count} unveröffentlichte Beiträge im Thema Nr. %{topic_id}. Beiträge werden nicht an die Follower der Gruppenakteure geliefert.”

discourse-activity-pub/config/locales/client.en.yml at a49ec5c4f5acac28bafbc1c57c57161c067e8f6e · discourse/discourse-activity-pub · GitHub

Wenn nur 1 Beitrag unveröffentlicht ist, würden Sie sagen: “Veröffentliche 1 unveröffentlichten Beitrag im Thema Nr. %{topic_id}. Der Beitrag wird nicht an die Follower der Gruppenakteure geliefert.”

“%{min_length} bis %{max_length} Buchstaben, Zahlen, Bindestriche oder Unterstriche.”

discourse-activity-pub/config/locales/client.en.yml at a49ec5c4f5acac28bafbc1c57c57161c067e8f6e · discourse/discourse-activity-pub · GitHub
Ich denke, dies hängt von max_length ab. Wenn max_length 1 ist, würden Sie sagen “Buchstabe, Zahl, Bindestrich oder Unterstrich”. Aber ich bin mir nicht sicher, ob es andere Sprachen gibt, bei denen auch min_length relevant ist.

“Benutzername muss %{min_length} bis %{max_length} Buchstaben, Zahlen, Bindestriche oder Unterstriche lang sein.”

discourse-activity-pub/config/locales/server.en.yml at a49ec5c4f5acac28bafbc1c57c57161c067e8f6e · discourse/discourse-activity-pub · GitHub
Gleiches wie oben.

“%{count} von %{total} Beiträgen in diesem Thema sind veröffentlicht.”

discourse-activity-pub/config/locales/client.en.yml at a49ec5c4f5acac28bafbc1c57c57161c067e8f6e · discourse/discourse-activity-pub · GitHub
Dieser ist etwas komplexer, da er von zwei Variablen abhängt: count und total. Zum Beispiel:

  • 1 von 1 Beitrag in diesem Thema ist veröffentlicht
  • 1 von 3 Beiträgen in diesem Thema ist veröffentlicht
  • 2 von 3 Beiträgen in diesem Thema sind veröffentlicht
4 „Gefällt mir“

Entschuldigung für die Verzögerung, Moin, dies sollte die meisten Punkte abdecken: DEV: Update pluralization for some strings by pmusaraj · Pull Request #262 · discourse/discourse-activity-pub · GitHub

Für diese beiden lasse ich die Strings unverändert. Eine Website wäre falsch konfiguriert, wenn Benutzernamen auf 1 Zeichen beschränkt wären … keine Notwendigkeit zur Änderung.

1 „Gefällt mir“

Was ist mit Websites, bei denen ein Benutzername 11 Zeichen hat? Es gibt Sprachen, bei denen die Version für 1 auch für 11 verwendet wird. Und wie funktioniert das für Sprachen mit mehr als einer Pluralform, wenn Sie keine im Englischen anbieten? Können Übersetzer diese verschiedenen Pluralformen trotzdem eingeben?

1 „Gefällt mir“

Hmm, würde 11 in diesen Sprachen als Singular betrachtet werden?

1 „Gefällt mir“

Es gibt Sprachen, die für Zahlen, die auf eins enden, eine eigene Form für „eins“ verwenden. (Ich bin mir nicht sicher, ob 11 das beste Beispiel war). Und sie haben auch mehr Formen als „eins“ und „andere“, sodass selbst bei nur unterschiedlichen Anzahlen größer als 1 unterschiedliche Übersetzungen erforderlich sind, die von der genauen Anzahl abhängen.

Deutsch gehört nicht dazu, daher wissen einige Ihrer Kollegen wahrscheinlich besser Bescheid als ich.

1 „Gefällt mir“

Ich habe ein wenig Schwierigkeiten mit der Übersetzung: Wählt Discourse Singular und Plural basierend auf count oder total?
Nach meinem Verständnis ist es normalerweise count.
Aber ich kann nicht herausfinden, wie ich den Fall behandeln soll, dass count 1 ist und total 3 ist. Ich bekomme etwas wie „1 von 3 Beitrag in diesem Thema ist veröffentlicht“. Ich kann das beheben, indem ich „posts“ verwende: „1 von 3 Beitragen in diesem Thema ist veröffentlicht“. Aber dann funktioniert es nicht, wenn total 1 ist. :exploding_head:

Vielleicht brauchen wir in diesem Fall Message Format support for localization?

Das ist etwas, was wir als Ingenieursenglisch bezeichnen. Eine solche Form sollte niemals verwendet werden. Es sollte eher so etwas sein wie der/dieser Beitrag wird veröffentlicht. Oder Thema, wenn mögliche nachfolgende Beiträge automatisch veröffentlicht werden.

Eine ähnliche Situation, zumindest im Finnischen, ist, dass die Zahl Eins (eigentlich jede Zahl zwischen 0 und 9) ausgeschrieben werden sollte und keine Ziffern verwendet werden. Aber ein ziemlich gängiges Konzept ist es, one anstelle von 1 zu schreiben, und größere Zahlen werden als Ziffern geschrieben.

Etwas wie 1 post ist immer dazu verdammt, etwas zu sein, das englischsprachige Entwickler verwenden, weil sie zu faul sind, einen menschlichen Stil zu verwenden – fast entschuldige, dass ich das laut sage. Und allgemeiner gesagt: Es wird eher als amerikanische Art und Weise angesehen, als diese Art und Weise in Überschriften und Texten zu verwenden. :smirking_face:

Es geht nicht darum, faul zu sein. Die Verwendung des Platzhalters für die Zahl ist sehr wichtig. Wie ich oben erklärt habe, gibt es Sprachen, in denen man auch „21 Beiträge“ sagt, genauso wie man „1 Beitrag“ sagt. Wenn der englische Text „one“ anstelle von %{count} verwenden würde, wäre es für einen Übersetzer sehr einfach, dies zu übersetzen, und dann würde die Zahl nicht durch die tatsächliche Anzahl ersetzt, was zu „one post“ führt, wenn die Anzahl tatsächlich 21 ist.
Daher gibt es einen Grund, warum die Zahlen verwendet werden. Siehe auch: Always use %{count} variable when translating pluralized strings

Übrigens ist es auch im Deutschen sehr hilfreich, da es Probleme wie diese vermeidet.

Ich habe Mühe zu glauben, dass das Coden auf einem so niedrigen Niveau ist, dass es unmöglich ist, %(count) durch ein Wort zu ersetzen, wenn %(count) = 1. Ich bin mir ziemlich sicher, dass ich solche Platzhalter in reinen Text umgewandelt habe, wenn die lokale Übersetzung unterschiedliche Optionen für Singular und Plural liefert.

Das meine ich mit Faulheit und Ingenieursenglisch. Intern müssen Variablen und Platzhalter verwendet werden, aber diese sollten in eine menschenlesbare und native Form umgewandelt werden. Schließlich sind es die Endbenutzer, die Software verwenden, keine Ingenieure…

Ja, ich weiß. Das ist eine breitere und größere Frage, als nur zu überlegen, wie man 1 von 3… oder 1 von 1… übersetzt. Aber mein tiefster Punkt ist, dass man sich über solche Dinge keine Gedanken machen müsste (abgesehen von den unzähligen Unterschieden zwischen Sprachen).

Aber sicher, vielleicht leben wir in einer Welt, in der wir komplexe KIs haben können, aber es gibt keine Lösung, um Situationen wie 1 von 1 zu vermeiden :joy:

Es ist ziemlich themenfremd, da es in diesem Thema darum ging, jede Möglichkeit zuzulassen, eine andere Singular- und Pluralversion für diese Texte zu haben.

Aber vielleicht könnten Sie 1 überall in der Benutzeroberfläche auf Englisch durch „one“ ersetzen.
Das funktioniert jedoch im Deutschen nicht so einfach. Das Problem ist, dass sich das Wort für „eins“ im Deutschen je nach Fall, Geschlecht und grammatikalischer Rolle ändert.

Zum Beispiel:

  • Das Thema bleibt einen Monat lang offen. → Das Thema ist noch einen Monat geöffnet.
  • Das Thema wird in einem Monat geschlossen. → Das Thema wird in einem Monat geschlossen.
  • Ein Monat ist vergangen. → Ein Monat ist vergangen.

Während es auch im Deutschen üblich ist, Zahlen als Wörter zu schreiben, ist die korrekte Handhabung grammatikalisch komplex.
Sie können nicht einfach die Zahl „1“ durch das Wort „eins“ ersetzen, da diese Form niemals vor einem Substantiv verwendet wird und die richtige Wortform vom grammatikalischen Fall abhängt.

Mit anderen Worten, die Verwendung von Wörtern anstelle von Ziffern würde für Übersetzer viel mehr Arbeit bedeuten.
Sie könnten nicht einfach einen Platzhalter wie %{duration} verwenden, der in allen Kontexten zu „einem Monat“, „einer Woche“ oder „einem Tag“ erweitert wird.
Anstatt drei Zeitdauern und drei Sätzen bräuchten Sie eine separate Version für jede mögliche grammatikalische Kombination – was die Textmenge potenziell mehrmals vervielfachen würde.

1 „Gefällt mir“

Danke für den Link. Ich sehe beim Lesen des Codes und beim Betrachten anderer Sprachen wie Arabisch, dass Sprachen ihre eigenen Überschreibungen bereitstellen können, auch wenn die englische Zeichenfolge über die Varianten hinweg gleich ist. So hat Arabisch beispielsweise separate Regeln, wenn die Anzahl 2 ist, und ich sehe two: in Zeichenfolgen auf Arabisch verwendet, die nicht auf Englisch definiert sind. Für 1/11 kann die Sprache, die eine Regel hat, diese Variante bereitstellen. Es ist nicht notwendig, sie auf Englisch zu definieren, soweit ich das beurteilen kann.

Danke, dass Sie sich damit beschäftigt haben. Ich habe nicht den Kontext für diese Zeichenfolge, aber wenn Sie einen PR mit der Änderung einreichen möchten, schaue ich ihn mir gerne an. Danke.

Können Sie erklären, wie das in Crowdin gemacht werden kann?
Das sehe ich in Crowdin, wenn ich discourse_activity_pub.actor.warning.invalid_username ins Arabische übersetzen möchte

Ich habe das Menü zum Eingeben der Pluralversionen schon einmal gesehen. Zum Beispiel bei js.user.password.too_short

Aber meiner Erfahrung nach können Sie diese verschiedenen Versionen nur hinzufügen, wenn die Pluralformen auch in Englisch definiert sind.

Ich auch nicht. Das letzte Mal, als ich mir die Texte von ActivityPub angesehen habe, war im April, als ich dieses Thema erstellt habe. Jetzt habe ich einfach die Platzhalter während der Übersetzung ersetzt, weil es sonst sehr schwierig ist, die Worte zu wählen. Das war, als ich bemerkte, dass “1 von 3 Beiträgen in diesem Thema veröffentlicht wird” mir falsch vorkam - nicht nur auf Deutsch, sondern auch auf Englisch.