Benutzer mit den meisten Antworten
Lokalisierung über eigene Klasse funktioniert nicht

Frage
-
Hallo
Ich versuche mich gerade dem Thema Lokalisierung etwas genauer zu widmen.
Leider bekomme ich immer folgenden Fehler:
Zusätzliche Informationen: Für die angegebene Kultur oder die neutrale Kultur konnten keine Ressourcen gefunden werden. Stellen Sie sicher, dass Customer.resources beim Kompilieren richtig in die Assembly Localize eingebettet wurde, oder dass die erforderlichen Satellitenassemblys geladen werden können und vollständig signiert sind.
Ich habe in VS ein neues Klassenprojekt erstellt.
Darin habe ich einen Ordner erstellt Resources.
Darin eine Resx Datei mit dem Namen: Customer.de-AT.resxDort habe ich dann einige Eigenschaften vergeben - Buildvorgang steht auf "Eingebettete Resource" Default Namespace ist leer.
Dann habe ich eine Klasse geschrieben, die im Moment "nur" Deutsch (Österreich) verarbeiten kann:
Public Class Localization Friend Shared Property myResourceCulture As String = "de-AT" Private Shared myCustomerResourceManager = New ResourceManager("Customer", GetType(Localization).Assembly) Public Shared Sub SetLanguage(Language As Languages) SetCulture(Language) End Sub Public Shared Sub SetLanguage(Language As String) If Language = "de-AT" Then SetCulture(Languages.Österreich) Else SetCulture(Languages.Österreich) End If End Sub Private Shared Function TranslateLanguageToCulture(setLanguage As Languages) As String If setLanguage = Languages.Österreich Then myResourceCulture = "de-AT" End If Return myResourceCulture End Function Private Shared Sub SetCulture(setLanguage As Languages) Dim locCultureInformation As New CultureInfo(TranslateLanguageToCulture(setLanguage)) Thread.CurrentThread.CurrentCulture = locCultureInformation Thread.CurrentThread.CurrentUICulture = locCultureInformation End Sub Friend Shared ReadOnly Property GetCustomerResourceManager As ResourceManager Get SetLanguage(myResourceCulture) Return myCustomerResourceManager End Get End Property End Class
So und dann habe ich noch eine Klasse, über die die Strings abgerufen werden sollen:
Namespace Customer Public Class GetCustomer Public Shared ReadOnly Property GetHeader As String Get Return Localization.GetCustomerResourceManager.GetString("Header", New System.Globalization.CultureInfo(Localization.myResourceCulture)) End Get End Property End Class End Namespace
Der Code läuft soweit durch, bis auf die Eigenschaft von GetHeader trifft. - > Dort bekomme ich dann obenstehenden Fehler präsentiert.
Kann mir jemand zu diesem Thema helfen!?
DANKE im Voraus
Antworten
-
Hallo Zero-G.,
was mir jetzt gerade erst Auffält, ist das bei Satteliten Assemblys erstellet werden. Wenn du eine Resource mit *.de-AT.resx gemacht hast wird die in eine Satteliten Assembly gespeichert. Also müsste wenn dein Buildvorgang nicht abgeändert ist neben deiner *.dll ein Ordner de-AT existieren und darin müsste wieder eine dll sein, die die resourcen erhält. Dafür .NET dieses auch findet, meine ich müsste man Angeben, dass diese Sprache, in einer Satteliten Assembly liegt.
<Assembly: NeutralResourcesLanguageAttribute("de-AT", Resources.UltimateResourceFallbackLocation.Satellite)>
MfG
d-l-d-l
- Als Antwort markiert Zero-G. _ Sonntag, 3. Mai 2015 08:09
Alle Antworten
-
-
Hallo d-I-d-l
Danke für Deine Antwort, aber leider nein... -> Die Default Language ist auf de-AT gesetzt.
Ich kann mich erinnern, dass man die Satteliten Assemblys auch in der app.config registriert werden sollte.
Da ich aber ein Klassenprojekt habe, existiert keine app.config Datei.
Hoffe es gibt noch mehr Tips dazu
DANKE
-
Hallo Zero-G.,
was mir jetzt gerade erst Auffält, ist das bei Satteliten Assemblys erstellet werden. Wenn du eine Resource mit *.de-AT.resx gemacht hast wird die in eine Satteliten Assembly gespeichert. Also müsste wenn dein Buildvorgang nicht abgeändert ist neben deiner *.dll ein Ordner de-AT existieren und darin müsste wieder eine dll sein, die die resourcen erhält. Dafür .NET dieses auch findet, meine ich müsste man Angeben, dass diese Sprache, in einer Satteliten Assembly liegt.
<Assembly: NeutralResourcesLanguageAttribute("de-AT", Resources.UltimateResourceFallbackLocation.Satellite)>
MfG
d-l-d-l
- Als Antwort markiert Zero-G. _ Sonntag, 3. Mai 2015 08:09