ich nicht Lösung für mein Problem für eine sehr lange Zeit nicht finden, hoffen hier kann jemand :)Lokalisierungsdateien Pfad in Visual Studio
helfen, wie ich in Visual Studio 2008 (C#) Anwendung bin entwickeln und ich möchte machen es ist mehrsprachig.
Es ist eine Main WinForm-Anwendung (nennen Sie es Main.exe), die Plugins zur Laufzeit laden. "Plugin" ist ein UserControl kompiliert zu DLL-Datei, wo ich alle Logik und Elemente des Plugins. Bei Bedarf lädt Main.exe Assembly aus DLL-Datei:
Assembly asm = Assembly.LoadFile (pluginFilePath);
und hängen Sie UserControl an das Panel an.
Ich übersetze Projekte folgenden Weg: im Projektmappen-Explorer Ich legte Messages.resx Datei und fügen Strings und Nachrichten in Standardsprache (z. B. Name = Grüße, Wert = Guten Morgen alle). Dann erstelle ich eine Kopie der resx-Datei und nenne sie messages.es-ES.resx, um eine Übersetzung in Spanisch zu haben. Ändern Sie alle Werte in Spanisch (Name = Grüße, Wert = Hola a Todos). Gleiches gilt für andere Sprachen.
Bei der Verwendung von Code kann ich einfach verwenden:
Messages.Greetings
lokalisierten Text zu erhalten (und IntelliSense arbeitet mit dieser Lösung, also möchte ich es auf diese Weise tun).
Wenn ich Projekt kompilieren, habe ich Struktur folgende:
C: \ APP_DIR \
| ---------------- Main.exe
| - --------------- es-ES \ Main.resources.dll < - meine Hauptprogramm-Lokalisierungsdatei in es-ES dir.
| ---------------- Plugins \ < - Verzeichnis, in dem ich Plugins halten in separaten dirs
Jetzt, mit Plugin das gleiche zu tun (myPlugin.dll) gibt mir folgende Dateien:
C: \ Plugin_dir \
| --------------- myPlugin.dll
| ------------- - es-ES \ myPlugin.resources.dll < - meine Plugin Lokalisierungsdatei
Nun, das Problem ist, wenn ich versuche zu machen es arbeiten zusammen: ich Plugin mit Lokalisierungsdatei bereitstellen möchten und sie wie folgt ausgedrückt:
C: \ APP_DIR \
| ---------------- Main.exe
| ---------------- es-ES \ Main.resources.dll
| ---------------- Plugins \ MyPlugin \ myPlugin .dll
| ---------------- Plugins \ MyPlugin \ es-ES \ myPlugin.resources.dll
In main.exe stelle ich beides:
-System. Threading.Thread.CurrentThread.CurrentUICulture.Name und System.Threading.Thread.CurrentThread.CurrentCulture.Name
zu neuer CultureInfo ("es-ES") und Programm Main.exe läuft auf Spanisch, wie ich wollte, aber wenn ich Plugin von .dll laden, ist es in Standardsprache (Englisch) ...
Beide (Main und Plugin) sind nur auf Spanisch, wenn die Struktur folgendes:
C: \ APP_DIR \
| ---------------- Main.exe
| ---------------- es-ES \ Main.resources.dll
| ---------------- es- eS \ myPlugin.resources.dll
| ---------------- Plugins \ MyPlugin \ myPlugin.dll
aber das ist nicht, wie ich es möchte - ich Ich möchte nicht, dass sich die Lokalisierungsdatei des Plugins in einem anderen Verzeichnis befindet als das Plugin selbst.
Also, meine Frage ist: weiß jemand, wie man dieses Problem löst? Gibt es eine Möglichkeit, das Laden der Lokalisierungsdatei von einem bestimmten Pfad zu erzwingen oder einige Einstellungen auf die Assembly zu setzen, wo Sie danach suchen?
Mit freundlichen Grüßen,
Marcin
Fügen Sie [Tags] nicht in die Betreffzeile ein, insbesondere wenn Sie dieselben Tags in das Feld tags einfügen. – abelenky
Haben Sie versucht, die verschiedenen anderen Möglichkeiten zum Laden einer Baugruppe zu verwenden? Insbesondere Assembly.Load (AssemblyName)? Das scheint unterschiedliche Regeln für die Pfad- und Kontextauflösung zu haben. – Jester