You are not logged in.

Sani9000

Member

  • "Sani9000" is male
  • "Sani9000" started this thread

Posts: 1,470

Location: Niedersachsen

  • Send private message

1

Tuesday, January 19th 2010, 10:27pm

Verbesserung der Sprachvariablen: Singular und plural

Papa Papillon machte mir per PN einen Vorschlag, der mir sehr Sinnvoll erschien,
daher möchte ich Euch den Inhalt in diesem Thema zur Verfügung stellen.
----------------------------------------------------------------------------------------

Folgende Konstruktionen sollten vermieden werden:

Insgesamt {#$items} Mitglied{if $items != 1}er{/if}

Insgesamt 0 Mitglieder anwesend
Insgesamt 1 Mitglied anwesend
Insgesamt 2 Mitglieder anwesend

Auch wenn es verständlich ist: das ist veraltetes Programmiererdeutsch. Bei 1 und 2 gibt es kein insgesamt.

Oder noch schlimmer: Es ist 1 CronJob(s) gestartet. Es sind 4 CronJob(s) gestartet.

Es sollten so wenig sprachakrobatische Formeln wie möglich in die Sprachvariablen eingebaut werden.

Wo Sprachvariablen in Zusammenhang mit einer berechneten Zahl verwendet werden, sind je eine Variable zu definieren für die Mengen Null, Einzahl und Mehrzahl:

1. 0 = wcf.category.variableNull
2. 1 = wcf.category.variableSingular
3. 2 und mehr = wcf.category.variablePlural

Damit können leicht lesbare Variablen in korrektem Deutsch gebildet werden:

Kein Mitglied anwesend.
Ein Mitglied anwesend.
Insgesamt 2 Mitglieder anwesend.
wbb3addons.de - Plugins für das WoltLab Burning Board und das WoltLab Community Framework

2

Tuesday, February 2nd 2010, 10:47am

Die Reaktionen

Dieser Beitrag hat im Hintergrund viele spannende Dialoge ausgelöst. Offensichtlich haben viele Entwickler zum ersten Mal daran gedacht, dass die korrekte Übersetzung von Sprachvariablen gar nicht so einfach ist. Eine Minderheit kann sich gar nicht mit dem Gedanken anfreunden, mehrere Sprachvariablen für »den gleichen Ausdruck« bereitzustellen.
Ein Kompromiss, mit dem auch die Übersetzer leben können, wird aber allgemein akzeptiert:

Wo Sprachvariablen in Zusammenhang mit einer berechneten Zahl verwendet werden, sind mögliche Varianten für die Mengen Null, Einzahl und Mehrzahl unzerstückelt einzubauen:

Anstatt: {if $savedAvatars == 1}Ein Avatar wurde{else}{#$savedAvatars} Avatare wurden{/if} erfolgreich gespeichert.
Richtig: {if $savedAvatars == 1}Ein Avatar wurde erfolgreich gespeichert.{else}{#$savedAvatars} Avatare wurden erfolgreich gespeichert.{/if}

Anstatt: {if $poll->votes == 0}Noch keine Stimme{else}Insgesamt {#$poll->votes} Stimme{if $poll->votes > 1}n{/if}{/if} abgegeben.
Richtig: {if $poll->votes == 0}Noch keine Stimme abgegeben.{else}{if $poll->votes == 1}Eine Stimme abgegeben.{else}{#$poll->votes} Stimmen abgegeben.{/if}{/if}{/if}

So ist die Übersetzung in allen Sprachen möglich!
8)

Ph99Ph

Member

  • "Ph99Ph" is male

Posts: 420

Location: Deutschlandsberg, Steiermark, Österreich

  • Send private message

3

Tuesday, February 2nd 2010, 3:49pm

Richtig: {if $poll->votes == 0}Noch keine Stimme abgegeben.{else}{if $poll->votes == 1}Eine Stimme abgegeben.{else}{#$poll->votes} Stimmen abgegeben.{/if}{/if}{/if}

Dieser Templatecode kann nicht funktionieren!
Richtig: {if $poll->votes == 0}Noch keine Stimme abgegeben.{else if $poll->votes == 1}Eine Stimme abgegeben.{else}{#$poll->votes} Stimmen abgegeben.{/if}

dtdesign

WoltLab Developer

  • "dtdesign" is male

Posts: 4,732

Location: Berlin

  • Send private message

4

Wednesday, February 3rd 2010, 12:55am

So ist die Übersetzung in allen Sprachen möglich!

Das ist Unsinn, du kannst die Sprachvariablen beliebig anlegen und bei der Übersetzung auch beliebig den Templatecode einsetzen. Deine "richtigen" Varianten sind nur unnötig lang, da bestimmte Satzteile sich wiederholen. Wenn ein Übersetzer so eine simple Logik nicht versteht, sollte er um Hilfe fragen oder auf Grund von Inkompetenz aufhören!
Alexander Ebert
Developer WoltLab® GmbH


Hawkes

Member

  • "Hawkes" is male

Posts: 5,962

Location: Konstanz

Occupation: Student (Physik)

  • Send private message

5

Wednesday, February 3rd 2010, 7:45am

Find ich auch absolut unnötig mehrere redundante Sprachvariablen zu definieren. Dann kann man sich Teplatescripting in Sprachvariablen gleich sparen :D
Kein Support von Plugins per PN, Mail oder IM! Alte Plugins, die ich nicht mehr im Plugin-Store anbiete, werden nicht mehr supportet. Bitte von Anfragen absehen.
Meine Plugins und Projekte

Tr3kk3r

Member

  • "Tr3kk3r" is male

Posts: 5,549

Location: Ruhrpott

Occupation: Student

  • Send private message

6

Wednesday, February 3rd 2010, 2:30pm

ich hab meinen Beitrag oben gelöscht, weil ich die Diskussion, die hier entsteht, so eigentlich nicht führen wollte, sonst heißt es wieder, die Entwickler nehmen zu wenig Rücksicht auf andere ;)

Aber im Prinzip habt ihr Recht, redundante Sprachvariablen sind Schwachsinn. So ganz unrecht hat Papa Papillon allerdings auch nicht, "Insgesamt 0 von 0 Einträgen" ist auch nicht gerade schön. Ich sehe es hier allerdings auch eher die Aufgabe WoltLabs, die Sprachvariablen anders zu gestalten, weil ich mich an die Vorgaben von Wl halte und auch deren Formulierungen verwende. Wie sieht das denn aus, wenn eine Software am Ende dutzende verschiedene Schreib-Stile enthält, nur weil jeder meint, er wüsste es jetzt aber besser? Ist das dann wirklich benutzerfreundlich, wenn ein ähnlicher Sachverhalt in 3 Plugins drei mal total unterschiedlich ausgedrückt wird? Ich glaube nicht.
Best regards,
Sebastian Teumert

7

Monday, December 5th 2011, 2:22pm

Wie soll man nun am besten vorgehen? So wie es Ph99Ph in Beitrag 3 geschrieben hat?

Gruß

Netzwerg

Member

  • "Netzwerg" is male

Posts: 5,549

Location: Ruhrpott

Occupation: Student

  • Send private message

8

Monday, December 5th 2011, 2:27pm

Wie soll man nun am besten vorgehen? So wie es Ph99Ph in Beitrag 3 geschrieben hat?

Gruß

Ich halte mich daran, wie die Sprachvariablen im restlichen WCF gestaltet werden. Ist Imho aufgrund der konsitenz auch angeraten.

Änderungen kannst du ja im Zuge des WCF 2.0 gerne einbringen ;)
Best regards,
Sebastian Teumert

Alexander Ebert

WoltLab Developer

  • "Alexander Ebert" is male

Posts: 4,732

Location: Berlin

  • Send private message

9

Monday, December 5th 2011, 3:03pm

{if $savedAvatars == 1}Ein Avatar wurde{else}{#$savedAvatars} Avatare wurden{/if} erfolgreich gespeichert.

{if $poll->votes == 0}Noch keine Stimme{else}Insgesamt {#$poll->votes} Stimme{if $poll->votes > 1}n{/if}{/if} abgegeben.

Diese beiden Konstrukte werden als korrekt angesehen und werden exakt so auch von uns verwendet. Beim 2. Beispiel wäre die Aufteilung in zwei Sprachvariablen (Keine Stimmen und Anzahl der Stimmen) sinnvoll, so wird es ebenfalls bei uns praktiziert. Bei Unklarheiten sollte man sich direkt an WCF bzw. WBB orientieren, dann ist auch die notwendige Konsistenz gewährleistet.
Alexander Ebert
Developer WoltLab® GmbH