Я не могу найти решение своей проблемы в течение очень долгого времени, надеюсь, здесь кто-нибудь может помочь :)
Я занимаюсь разработкой приложения для Visual Studio 2008 (C #) и хочу сделать его многоязычным.
Это основное приложение WinForm (назовите его Main.exe), которое загружает плагины во время выполнения.
«Плагин» - это UserControl, скомпилированный в файл .dll, куда я помещаю всю логику и элементы плагина. При необходимости Main.exe загружает сборку из файла .dll:
Assembly asm = Assembly.LoadFile (pluginFilePath);
и прикрепите UserControl от него к панели.
Я перевожу проекты следующим образом:
в обозревателе решений я помещаю файл Messages.resx и добавляю строки и сообщения на языке по умолчанию (т.е. имя = привет, значение = доброе утро всем).
Затем я делаю копию файла resx и называю его Messages.es-ES.resx для перевода на испанский язык. Измените все значения на испанский (имя = приветствия, значение = Привет, задачи).
То же для других языков.
При использовании в коде я могу просто использовать:
Messages.greetings
чтобы получить локализованный текст (и IntelliSense работает с этим решением, поэтому я хочу сделать это таким образом).
Когда я компилирую проект, у меня следующая структура:
C: \ APP_DIR \
| ---------------- Main.exe
| ---------------- es-ES \ Main.resources.dll <- файл локализации моей основной программы в каталоге es-ES. </em>
| ---------------- Плагины \ <- каталог, в котором я храню плагины в отдельных директориях </em>
Теперь, делая то же самое с плагином (myPlugin.dll), я получаю следующие файлы:
C: \ Plugin_dir \
| --------------- myPlugin.dll
| --------------- es-ES \ myPlugin.resources.dll <- файл локализации моего плагина </em>
Теперь проблема в том, когда я пытаюсь заставить его работать вместе:
Я хочу развернуть плагин С файлом локализации и поставить его следующим образом:
C: \ APP_DIR \
| ---------------- Main.exe
| ---------------- es-ES \ Main.resources.dll
| ---------------- Плагины \ MyPlugin \ myPlugin.dll
| ---------------- Плагины \ MyPlugin \ es-ES \ myPlugin.resources.dll
В main.exe я установил оба:
System.Threading.Thread.CurrentThread.CurrentUICulture.Name и System.Threading.Thread.CurrentThread.CurrentCulture.Name
на новый CultureInfo ("es-ES") и программа Main.exe запускается на испанском, как я и хотел, но когда я загружаю плагин из .dll, он по умолчанию (английский) язык ...
Оба (Main и plugin) только на испанском языке, если структура следующая:
C: \ APP_DIR \
| ---------------- Main.exe
| ---------------- es-ES \ Main.resources.dll
| ---------------- es-ES \ myPlugin.resources.dll
| ---------------- Плагины \ MyPlugin \ myPlugin.dll
но я не хочу, чтобы это было так - я не хочу, чтобы файл локализации плагина находился в другом каталоге, кроме самого плагина.
Итак, мой вопрос: кто-нибудь знает, как решить эту проблему? Есть ли способ «принудительно» загрузить файл локализации по определенному пути или установить некоторые параметры сборки, где ее искать?
С уважением,
Marcin