Как я должен локализовать подключаемые компоненты - PullRequest
0 голосов
/ 01 октября 2009

У нас есть приложение, которое будет динамически загружать некоторые компоненты из отдельных библиотек. Эти компоненты имеют фиксированное имя, но мы хотим, чтобы локализованные имена отображались пользователю, поэтому имена должны быть локализованы.

Тот факт, что имя должно быть локализовано, не относится к самому компоненту, поэтому мы не хотим загрязнять модель компонента таким свойством, как DisplayName или LocalisedName, и иметь ресурсы для компонента. жить в dll для компонента. Но так как эти компоненты являются подключаемыми, у нас не может быть ресурса для отображаемого имени в приложении, так как тогда, когда мы добавляли новые компоненты, ресурсы для приложения должны были бы обновляться, что лишает смысла делать компоненты подключаемыми ,

Есть ли общее решение этой проблемы? Возможные решения, которые мы могли видеть, были:

1 \ Имейте свойство с именем display name, которое код GUI вызывает для отображения имен. Это работает нормально, с ресурсами, существующими в той же dll, что и (или dll спутника) сборки, содержащей компонент. Но это, кажется, загрязняет модель информацией, о которой не должен заботиться компонент.

2 \ Приложение с графическим интерфейсом ищет ресурсы для названного компонента из своих файлов ресурсов. Это терпит неудачу, потому что приложение должно обновлять свои ресурсы при добавлении новых сборок, содержащих новые динамически загружаемые компоненты.

3 \ Найдите приложение в ресурсах сборки, из которой получен компонент, для поиска локализованного имени компонента. Это кажется хорошим, поскольку локализованное имя существует в сборке для компонента, поэтому оно распространяется вместе с ним, но приложение с уровнем представления запускает поиск локализованной строки из компонентов dll, поэтому компоненту не нужно ничего знать о локализация и так ее модель не загрязнена.

Возможен ли вариант 3? Есть ли другой вариант, который мы не рассмотрели?

веселит ...

1 Ответ

0 голосов
/ 09 октября 2009

Вариант 3 - это то, что я хотел бы сделать, и я думаю, что это возможно. Если вы знаете имя плагина и можете создать экземпляр класса, используя отражение. Затем вы запрашиваете этот класс для LocalizedName, которое плагин извлекает из своей сборки ресурсов. Полагаю, вы понимаете, как работают сборки спутниковых ресурсов.

Есть ли что-то конкретное в # 3, которое не работает для вас? Если вы укажете, что я не смогу помочь ...

...