2009-03-18 3 views
0

In meinem Projekt ist jede Seite in mehrere Sprachen übersetzbar. Zu diesem Zweck übergebe ich einen SiteLanguage-Parameter an jede Aktion. Meine benutzerdefinierte Basis-Controller-Klasse fängt diesen Parameter "siteLanguage" ab und kümmert sich um die weitere Übersetzungslogik.Wohin mit meinem siteLanguage-Parameter (cross cutting concern?)

Das funktioniert alles, nur die Sache ist jetzt muss ich eine Zeichenfolge namens sitelanguage zu jeder Aktion Prozedur Signatur hinzufügen, nur so dass meine Basis-Controller es fangen kann. Ich mache mit diesem Parameter in meiner eigentlichen Aktionslogik nichts.

Gibt es einen besseren Weg, dies zu tun?

+0

Wie wäre es mit CurrentCulture und CurrentUICulture? –

+0

Erstens sind sie unzuverlässig. Zweitens wird es in Terminals verwendet werden, wo Menschen aller Nationalitäten arbeiten. –

+0

Unzuverlässig in welcher Weise? Sie können sie basierend auf Accept-Language-Headern oder was auch immer Sie möchten einstellen. Sie bleiben gesetzt und werden von allen kultursensitiven Codes verwendet. Wenn Kiosk, erlauben Benutzer zu wählen, dann setzen Sie CurrentCulture von Benutzer Wahl. –

Antwort

1

Ich würde die Site-Sprache in die Sitzung einfügen und den Controller dazu bringen, sie den Ansichten zu geben, oder vielleicht, vielleicht nur, den Ansichten zu erlauben, sie von dort abzurufen.

Ich würde vorschlagen, Kultur und CurrentCulture usw., aber natürlich funktionieren diese nicht, wenn Sie eine Englisch sprechende Person sind, die sich aus Frankreich anmeldet. Normalerweise binde ich die Sprache mit den Vorlieben der Benutzer in der Datenbank, obwohl ich weiß, dass Ihre Website möglicherweise keine Anmeldung erfordert.