Laden...

Wieso wird ASP.NET Seite trotz Setzen der Sprache lokal übersetzt aber auf dem IIS nicht?

Erstellt von canogretic vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.217 Views
C
canogretic Themenstarter:in
2 Beiträge seit 2020
vor 3 Jahren
Wieso wird ASP.NET Seite trotz Setzen der Sprache lokal übersetzt aber auf dem IIS nicht?

Hallo zusammen,

ich hoffe mir kann hier evtl jemand weiterhelfen. Im Augenblick stehe ich ziemlich auf dem Schlauch.

Im Grunde habe ich eine Webanwendung mit ASP .Net gebaut, welche die ein oder andere Inhaltsseite anzeigt. Die Anzeige funktioniert soweit und auch eine Sprachumschaltung ist vorhanden.

Bei dieser Sprachumschaltung habe ich ein Problem sobald ich das Projekt auf einem IIS Server veröffentliche. Lokal im Visual Studio kann ich ganz normal Debuggen und
die Sprache wird ebenfalls wie erwartet aktualisiert ohne das ich sonderlich etwas anderes mache als in der Global Application Class die Mathode Application_AcquireRequestState zu überschrieben und die entsprechende Culture zu setzen .

Der Aufbau der Seite wird in der MasterPage festgelegt und mit Hilfe des Elements ContentPlaceHolder werden die einzelnen Pages hinzugefügt, welche wiederum auf die Masterpage referenzieren.

Die einzelnen Ressourcen sind im Ordner App_LocalResources angelegt.

Wenn die Seite jetzt Veröffentlicht wird und auf einem IIS Server ausgerollt wird, werden Elemente aus der Masterpage und der Inhaltsseite nicht übersetzt.

Das betrifft im Grunde alle hinterlegten asp:Labels und die Texte der einzelnen Buttons.
Elemente welche im Code Behind gefüllt werden (z.B. Comboboxen) werden passend übersetzt.

In der Application Class ein Event auszulösen wenn die SPrache sich ändert und in den einzelnen Pages damit die Labels zu aktualisieren hatte bisher auch keinen Erfolg.

Gibt es hier zufällig jemanden der so ein Problem schon einmal hatte und mir hier evtl. weiterhelfen kann bzw. vielleicht einen Vorschlag hat das Problem zu beheben.

Ich vermute entweder, dass der IIS Server eine Einstellung nicht gestezt hat, welche dazu nötig ist oder das durch das veröffentlichen irgendwas mit den Resourcen schief geht. Wohin ich letzteres eigentlich ausschließe, da andere Resource Dateien aus dem lokalen Verzeichnis übernommen werden.

VG canogretic

5.658 Beiträge seit 2006
vor 3 Jahren

ASP.NET WebForms ist wirklich eine Uralt-Technologie, das wird kaum noch jemand hier benutzen. Aber hier gibt es eine Anleitung: How to make my webform to be multi-language?

Weeks of programming can save you hours of planning

T
2.224 Beiträge seit 2008
vor 3 Jahren

@MrSparkle
Ich arbeite leider noch täglich damit.
Ist leider uralt aber immer noch im aktiven Einsatz, auch wenn ich seit Jahren es gerne anders sehen würde.
Leider fehlt die Man Power um die alten Projekte neu zuschreiben.

@canogretic
Wie werden eure Texte den eingebunden?

Es gibt mit der Resources Direktive in ASP .NET Web Pages die Möglichkeiten direkt im Markup die Texte aus den resx Dateien einbinden zu lassen.
Dann kümmert sich auch .NET um die richtige Übersetzung.

Doku

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

C
canogretic Themenstarter:in
2 Beiträge seit 2020
vor 3 Jahren

@MrSparkle
Grundsätzlich ist das Ganze uralt ja, aber wir haben noch die ein oder andere Anwendung damit im Einsatz. Sicherlich muss zukünftig etwas in der Anpassung der Anwendung etwas getan werden, aber für die Neuimplementierung fehlt meistens die Zeit. Somit ist erstmal nur fixen des ein oder anderen Bugs angesagt. Zukünftig wird das sicherlich nochmal angegenagen das Thema.

@T-Virus
Die Texte werden über meta:resourceKey an dem jeweiligen Steuerelement eingebunden.

Ich habe mir gestern Abend nochmal ein Minimalprojekt angelegt, um andere Fehler oder sonstige Seiteneffekte auszuschließen. Dort habe ich die lokalen Resource Dateien manuell neu erstellt wie in den Dokumentation auch soweit erklärt. Beim ersten Test und nach dem Ausrollen auf den IIS Server hat alles wie gewünscht funktioniert und die Sprache wurde angepasst.

Bei dem Ursprungsprojekt habe ich dann anschließend alle Resource Dateien genauso in Ihren Dateieigeschaften definiert wie im MinimalProjekt (Buildvorgang: Inhalt und In Ausgabeverzeichnis kopieren: Nicht kopieren). Zugriff auf die lokale Ressource vom Code Behind aus habe ich
anschließend umgeändert und frage diese nun über die Methode GetLocalResourceObject("<Resourcename>") ab.

Nachdem ich die Anwendung anschließend auf den IIS deployed habe wurde auch alles entsprechend umgestellt wie ich es erwartet habe.

Somit ist die Sprachumschaltung auch dort möglich.

Wohingegen mir noch nicht klar ist warum das vorher beim Debuggen im Studio mit dem IIS Express funktioniert hat. Aber vermutlich kommt das daher, das dort die Resourcen trotzdem verfügbar waren und auf dem Ursprungssystem die Dateien nicht vorhanden waren.
Nach der Änderung gibt es auf dem Ursprungssystem einen Ordner für die lokalen Resourcen.

canogretic