Frage

Ich habe ein Webprojekt namens "testResourceApp" mit labels.resx im Ordner app_globalresources. Ich möchte eine andere Sprache hinzufügen, indem ich eine Satellitenbaugruppe erstelle.

Hier sind die Schritte, die ich unternommen habe, um die Satellitenbaugruppe zu erstellen. Der Standardtext wird immer angezeigt. Was habe ich falsch gemacht ?

1) Erstellen Sie Etiketten.fr.resx in einem anderen Ordner.

2) Ressourcendatei generieren:

Resgen labels.fr.resx testResourceApp.app_globalresources.labels.fr.resources

3) Satellitenbaugruppe erzeugen:

Al /t: lib /embed:estresourceApp.app_globalresources.labels.fr.resources /out:French.dll /c: fr

4) Kopieren Sie französisch.dll nach testResourceApp/bin/fr

Ich habe Uiculture auf automatisch in web.config eingestellt und habe die Sprache im Browser geändert.

War es hilfreich?

Lösung 2

Es ist kompliziert, aber hier sind ein paar Tipps für diejenigen, die dieses Problem treffen:

  • Versuchen Sie, den RESX in das Webprojekt aufzunehmen, und lassen Sie VS den Job für Sie erledigen.
  • Reflektor ist dein Freund. Vergleichen Sie die von Ihnen erstellten Satellitenbaugruppen und die von Vs.
  • Wenn Ihre Web -App ASP.NET 2.0 abzielt, sollten Sie ResGEX und AL verwenden, die mit .NET 2.0 geliefert werden. Öffnen Sie die Baugruppen im Reflektor und überprüfen Sie die "Referenzen". Es sollte auf MSCORLIB Version 2.0 verweisen.
  • Wenn Sie Ihre Web -App über das Web -Bereitstellungsprojekt bereitstellen, stellen Sie sicher, dass der Namespace für die Ressourcen in Ihren Satellitenbaugruppen korrekt ist. Vergleichen Sie dies erneut mit dem, was Vs erstellt. In meinem Fall habe ich das falsche Tool verwendet, um die Datei designer.cs -Datei zu generieren, da ich von einer anderen Baugruppe zugänglich sind. Stellen Sie sicher, dass Sie GlobalResourceProxygenerator verwenden. Andernfalls werden die Namespaces nicht übereinstimmen, und der Bereitstellungscode kann Ihre Ressource nicht finden. Der Namespace im Designer.cs sollte einfach "Ressourcen" sein, nicht "xxxx.app_globalresources" "

Andere Tipps

Ich konnte diese Seite verwenden, um einige Probleme mit der Satellitenbaugruppe zu lösen, die ich hatte. Ich werde noch ein paar Dinge einwerfen, um sie zu überprüfen.

Es ist hilfreich, die "neutrale" Baugruppe zu dekompilieren und zu sehen, wie sie zusammengestellt wird. Ein Werkzeug wie ILDASM.exe ist für diesen Zweck hilfreich. Sobald Sie es zersetzen haben, schauen Sie die Textausgabe nach ".mresource" durch, und Sie sollten eine mit Ihrer Benennung sehen. Wenn Sie beispielsweise einem Visual Studio -Projekt eine Ressource hinzufügen, werden sie MyAssemblyName + ".Properties.Resources" + eine Sprache (falls vorhanden) + ".Resources" Beispiele genannt:

MyAssembly.Properties.Resources.Resources (neutrale Sprache) MyAssembly.properties.resources.en-us.resources (Englisch (USA))

In meinem Fall hatte ich die Datei ordnungsgemäß benannt und im entsprechenden Ordner (z. B. bin en-us). Ich konnte so viel durch Verwendung überprüfen ProcMon.exe (von den Syssinternals -Jungs) und konnte den Arbeitsprozess in meiner DLL -Datei finden und lesen (anstatt nur "Pfad nicht gefunden" zu sagen). Es wurde jedoch nicht die Ressource mit dem Namen gefunden, an den sie erwartet hatte. Dann half einige Demontage, das Namensproblem auf den Grund zu erreichen.

Verwenden Sie also ProcMon.exe um das Problem einzugrenzen, das Sie haben könnten. Hoffentlich ist das für jemanden hilfreich.

Hattest du gesetzt? enableClientBasedCulture zu true in der Globalisierung?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top