Speichern der Sprache in URL oder Session oder anderem

8

Ich entwickle eine mehrsprachige Website und frage mich, wie die vom Benutzer gewählte Sprache am besten gespeichert werden kann.

Entweder via QueryString oder in Session..oder anderen Optionen?

    
TimLeung 08.02.2009, 05:03
quelle

6 Antworten

2

Ich denke, es hängt sehr davon ab, wie Ihre Anwendung die Benutzersprachen behandelt (will). Wenn sich Ihre Benutzer auf Ihrer Website anmelden müssen, haben Sie wahrscheinlich eine Seite mit Kontoeinstellungen mit einem entsprechenden Benutzerprofilobjekt oder etwas ähnlichem dahinter. In einem solchen Fall würde ich denken, dass Sie diese Einstellungen in der DB speichern würden, und wenn der Benutzer auf Ihre Website zurückkommt, erhalten Sie die Benutzerinformationen irgendwie (d. H. Von einem Cookie), laden Sie Ihr Benutzerprofilobjekt aus der Datenbank. Die Informationen würden in einer Sitzung aufbewahrt, da ich denke, dass dies in diesem Fall am besten geeignet wäre. Wenn sich Ihre Benutzer nicht anmelden müssen, sodass Sie sie im Grunde nicht direkt identifizieren können, würde ich die Spracheinstellungen in einem Cookie speichern. Dies gibt Ihrem Benutzer den Wert, dass er die Seite immer in seiner bevorzugten Sprache finden wird, wenn er später wiederkommt (da er die Cookies nicht löscht und die Lebensdauer des Cookies lang genug ist). Als dritte Möglichkeit können Sie die Sprache des Benutzers anhand seiner Standard-Browsereinstellungen identifizieren (wie oben bereits erwähnt).

Wie gesagt, es hängt wirklich von den Bedürfnissen Ihrer Anwendung ab. Was Sie jedoch im Auge behalten müssen, ist das

  • Objekte, die in der Sitzung gespeichert sind, werden auf der Serverseite gespeichert, wobei der Serverspeicher verwendet wird. Halten Sie also keine nutzlosen Dinge im Gedächtnis, wenn Sie sie nicht brauchen. Das Sitzungsobjekt eignet sich jedoch zum Speichern von Daten im Zusammenhang mit dem Besuch und den Konfigurationen eines Benutzers.
  • In Cookies gespeicherte Daten oder das Viewstate-Objekt werden zwischen dem Client-Browser und dem Webserver hin- und hergeschickt. Dies verursacht zusätzlichen Datenverkehr und kann die Leistung beeinträchtigen.

Tschüss

    
Juri 08.02.2009, 07:15
quelle
7

Eine weitere Überlegung, die in keiner der anderen Antworten erwähnt wird, ist Suchmaschinenfreundlichkeit. Wenn Sie für jede Sprache eine andere URL verwenden

http://{en|cy}.example.com/subdir/ or http://example.com/{en|cy}/subdir) 
, dann können Suchmaschinen Ihre Website in mehreren Sprachen indizieren.     
Ofri Raviv 29.12.2009 11:52
quelle
2

Wenn Sie dieses Szenario betrachten, in dem ein Benutzer eine Reihe von Seiten in "en" durchsucht hat und die Sprachinformationen in der Cookie-Sitzung gespeichert wurden und Seiten zwischengespeichert wurden (http, browser, app) ..

Wenn die Sprache vom Benutzer auf "cy" umgeschaltet wird, würde eine Änderung für die aktuelle Seite erfolgen, aber wenn der Benutzer zu einer Seite zurückkehrt, die er zuvor besucht hat (wo die Header-Caches abgelaufen sind, ist er nicht abgelaufen) Lade die Seite in "en" hoch, da die Querystring die Sprache nicht angibt - damit Inhalte in dieser Sprache geliefert werden können.

Es ist unwahrscheinlich, dass ein Benutzer die Sprache so häufig ändern möchte - aber als Entwickler ist es ein Szenario, das behandelt werden sollte.

irgendwelche Ideen, bitte zögern Sie nicht zu schreien.

    
raq 08.06.2009 17:00
quelle
1

Profileigenschaften wurden speziell zum Speichern von Benutzerprofilen erstellt. spezifische Präferenzen. Dies wäre ein guter Ort, um diese Art von Daten zu speichern.

    
Kevin Babcock 08.02.2009 05:08
quelle
0

Es gibt eine Eigenschaft, die übergeben wird, wenn ein Browser eine Anfrage stellt, die Sie verwenden können. Auf diese Eigenschaft wird in Ihrem Code durch Verweisen verwiesen:

%Vor%

Alternativ können Sie den Benutzer auffordern, eine bevorzugte Sprache anzugeben und sie in einem Cookie zu speichern.

Fügen Sie in Ihrem Page.Load-Handler Folgendes ein:

%Vor%     
regex 08.02.2009 05:14
quelle
0

Querystring ist nicht der richtige Ort dafür, es sei denn, es wird zuerst von der Querystring gelesen und woanders gespeichert.

Speichern Sie es in einem Cookie, oder wenn Cookies deaktiviert sind, speichern Sie es in Sitzung oder Viewstate.

Kevins Antwort "profile properties" ist eine einfache Möglichkeit, eine etablierte Bibliothek mit minimalem Aufwand für Sie schwer zu machen.

    
Chris Ballance 08.02.2009 05:25
quelle