Mehrsprachigkeit

26/02/2009 - 13:54 von Stefan Reinmers | Report spam
Hi zusammen , ich versuche mich gerade mit der Mehrsprachigkeit meiner
Anwendung.
Ich habe folgenden Code und bekomme immer den Fehler das er die eingebettete
Resource nicht finden kann.

_assy = Assembly.GetExecutingAssembly()

rm = New System.Resources.ResourceManager(String.Format("{0}.{1}.{1}",
_assy.GetName().Name, "Resources"), _assy)

Dim ci As CultureInfo = New CultureInfo("en-GB")

Return rm.GetString("Test", ci)



In meiner Anwendung habe ich den Ordner

Resources

und darin die Datei

Resources.en-GB.resx

was mache ich falsch, oder wie greife ich richtig auf die entspr. Resource
zu ?
 

Lesen sie die antworten

#1 Martin H.
26/02/2009 - 21:54 | Warnen spam
Hallo Stefan,

mit einer solchen resx-Datei habe ich noch nicht gearbeitet, aber wenn
ich z.B. Bilder als Resource einbette, dann hole ich sie normalerweise
so: heraus:

System.Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream(System.Reflection.Assembly.GetExecutingAssembly.GetName.Name
& "." & FileName

Ich denke, dass Du folgende Fehler im Programm hast:

_assy = Assembly.GetExecutingAssembly()
muß
_assy = [Assembly].GetExecutingAssembly()
heißen.


Die nàchste Zeile
rm = New System.Resources.ResourceManager(String.Format("{0}.{1}.{1}",
_assy.GetName().Name, "Resources"), _assy)

scheint auch einen Fehler zu haben.

"{0}.{1}.{1}" bedeutet, dass der Parameter "Resources" zweimal verwendet
wird. Also z.B. Test1.Resources.Resources.

Es scheint, dass Dein Program eine Mischung aus ResourceManager und
ChangeUI ist.

Wenn Du Dir die ResourceManager-Klasse anschaust (im Index ungefiltert
nach System.Resources.ResourceManager suchen), wirst Du folgenden Code
finden:
(http://msdn.microsoft.com/de-de/lib...nager.aspx)

Dim rm As New ResourceManager("rmc", [Assembly].GetExecutingAssembly())
Dim ci As New CultureInfo("es-ES")
day = rm.GetString("day", ci)

Im Beispiel steht, dass die DLL hier rmc.resources.dll heißt.

Wenn Du Dir allerdings das Resourcenbeispiel des "My"-Namespace
anschaust, dann findet Du dieses Beispiel:

(http://msdn.microsoft.com/de-de/lib...3xczh.aspx)

Dim culture As String = My.Application.UICulture.Name
My.Application.ChangeUICulture("fr-FR")
MsgBox(My.Resources.Message)
My.Application.ChangeUICulture(culture)

Hier wird die Sprache für das gesamte Programm umgestellt. Die DLL heißt
dann Resources.fr-FR.resx.

Du solltest Dir also erst einmal klar werden, welche Methode Du
verwenden willst. Die ResourceManager-Methode hat den Vorteil, dass man
"mal eben" einen String aus einer Sprache laden kann. Der
ChangeUICulture-Methode hat den Vorteil, dass sie sich auf das gesamte
Programm bezieht.

Beste Grüße,

Martin


On 26.02.2009 13:54, Stefan Reinmers wrote:
Hi zusammen , ich versuche mich gerade mit der Mehrsprachigkeit meiner
Anwendung.
Ich habe folgenden Code und bekomme immer den Fehler das er die eingebettete
Resource nicht finden kann.

_assy = Assembly.GetExecutingAssembly()

rm = New System.Resources.ResourceManager(String.Format("{0}.{1}.{1}",
_assy.GetName().Name, "Resources"), _assy)

Dim ci As CultureInfo = New CultureInfo("en-GB")

Return rm.GetString("Test", ci)



In meiner Anwendung habe ich den Ordner

Resources

und darin die Datei

Resources.en-GB.resx

was mache ich falsch, oder wie greife ich richtig auf die entspr. Resource
zu ?




Ähnliche fragen