it-swarm.com.de

i18N und Formulardesign

Ich versuche, ein Webformular zu entwerfen, das die Internationalisierung unterstützt (i18n). Das Formular wird Teil einer großen Event-Management-Software sein. Benutzer melden sich an, erstellen Ereignisse (wie Konferenzen, Roadshows usw.). Mehrere Texteingabefelder müssen i18n unterstützen, um das Ereignis in verschiedenen Sprachen darzustellen. Zum Beispiel kann der Veranstaltungstitel in Englisch, Französisch, Deutsch usw. sowie in der Tagesordnung, der Zusammenfassung usw. präsentiert werden. Es gibt eine Primär- oder Standardsprache (abhängig vom Standort des Kunden) und zwei oder (viele) mehr zusätzliche Sprachen zur Auswahl.

Ich kann mir zwei Strategien oder Szenarien vorstellen, die funktionieren könnten:

  1. Der Client öffnet das Formular und findet die vorgewählte Standardsprache. Nehmen wir an, sie beschließt, von Französisch nach Deutsch zu wechseln. Dies könnte sofort ein erneutes Laden des Formulars auslösen. Von da an ist jeder Text, den sie eingeben könnte, an das entsprechende Gebietsschema gebunden, dh an das ausgewählte Gebietsschema. Wenn sie eine andere Sprache auswählt, wird erneut ein erneutes Laden des Formulars ausgelöst (alle Textfelder werden geleert). Die Idee ist, das vollständige Formular für jede ausgewählte Sprache gleichzeitig zu bearbeiten.

  2. Dieser Ansatz "verbessert" jedes i18n-Texteingabeformularfeld (mithilfe von JS/jQuery). Wieder öffnet der Client das Formular und wählt eine oder mehrere Sprachen aus (mithilfe von Kontrollkästchen). Dadurch werden automatisch zusätzliche Eingabetextfelder unterhalb des Eingabefelds hinzugefügt, das die Primärsprache darstellt. Jetzt geben die Clients einige Inhalte in jedes Formularfeld ein. Wenn der Client "Französisch" deaktiviert, werden alle entsprechenden Formularfelder entfernt. Es gibt kein erneutes Laden von Formularen, nur das Hinzufügen und Entfernen zusätzlicher Felder für Texteingabeformulare (jQuery magic :)

Gibt es eine bessere Möglichkeit, die Komplexität zu reduzieren und die Benutzererfahrung bei der Eingabe von i18n-Formularen zu verbessern?

5
simou

Das Problem, das ich mit dem zweiten Ansatz habe, ist, dass er eine Reihe zusätzlicher Felder hinzufügt (wenn ich Ihre Frage richtig verstehe, verdoppelt sich die Anzahl der Felder buchstäblich). . Dies kann dem Benutzer einige Probleme bereiten, da er sorgfältig auswählen muss, in welches Feld er die Daten eingibt. Auch wenn er nicht vorsichtig ist, kann er die Daten für das Tagesordnungsfeld in das Feld für den Ereignistitel wie dieses eingeben

mockup

bmml source herunterladen - Wireframes erstellt mit Balsamiq Mockups

Ein weiteres interessantes Problem, das mir aufgefallen ist (beim Spielen mit Google Übersetzer), ist, dass Sprachen dasselbe Wort verwenden, um etwas zu bezeichnen, zum Beispiel das Wort für Agenda auf Niederländisch das gleiche wie das der englischen dh Agenda. Daher kann es den Benutzer verwirren, wenn zwei Tagesordnungen auf dem Formular angezeigt werden (vorausgesetzt, er hat Niederländisch als Übersetzungssprache aus dem Englischen ausgewählt).

Ich würde empfehlen, mit Ansatz 1 fortzufahren, aber wenn möglich, stellen Sie bei der Auswahl einer neuen Sprache sicher, dass der eingegebene Inhalt bereits beim erneuten Laden des Formulars in das Formular eingegeben wurde, wenn der Benutzer bereits vorhandene Inhalte eingegeben hat. Wenn dies aufgrund der Schwierigkeit, zu bestimmen, wann die Daten gespeichert werden sollen, nicht möglich ist, können Sie einen Ansatz wählen, bei dem der Benutzer zuerst die Sprache auswählen muss und dann nur die Formularfelder angezeigt werden. Dies stellt sicher, dass ihm im Voraus die Sprache seiner Wahl präsentiert wird. So würde es ungefähr so ​​aussehen:

mockup

bmml Quelle herunterladen

Wenn Sie diesen Ansatz wählen möchten, würde ich empfehlen, den Standardwert in der Dropdown-Liste auf den Wert festzulegen, der durch das Gebietsschema der Person festgelegt wird

1
Mervin

Verwenden Sie eine Seite mit Benutzereinstellungen, auf der Sie eine Sprache auswählen können. Verwenden Sie PHP und MySQL, um die Einstellungen zu speichern. Der Rest ist noch einfacher. Zum Beispiel "If (Lang ==" de ") {Include (de.inc);} Else {Include (en .inc);} "

0
andywhizwang