iampradeepsharma Ответов: 1

Как добиться возврата к языку ресурсов по умолчанию, если идентификатор не найден


Всем привет,

В моем приложении загружается библиотека dll ресурсов, специфичная для данной локали, и все строки извлекаются на основе идентификатора. Теперь я ищу, если что-то может быть достигнуто так, что если конкретный идентификатор не найден в конкретной локали, то есть он отсутствует в своей языковой dll, наше приложение может получить его из английской.

Что я уже пробовал:

Мое понимание таково, что если мы загружаем конкретную dll-библиотеку ресурсов, то в этом случае нам придется выгрузить предыдущую и загрузить английскую, а как только работа будет выполнена, снова перезагрузить специфичную для языка.

Greg Utas

Наличие только одной библиотеки DLL для этого может быть недостатком дизайна, поскольку она не может поддерживать многоязычные установки. Если вы предоставляете однопользовательское приложение, это может быть нормально, но даже тогда вы столкнулись с ситуацией, когда это вызывает проблему.

1 Ответов

Рейтинг:
11

Rick York

Если бы я делал это, я бы всегда загружал две библиотеки DLL ресурсов : одну для основного языка и одну для резервного. Если строка отсутствует в основной библиотеке DLL, то она должна быть загружена из резервной библиотеки DLL, которая должна иметь их все. Это должно быть просто, так как дескриптор экземпляра является одним из параметров LoadString. Одно исключение из этого правила заключается в том, что если основной язык совпадает с резервным, то загружайте его только один раз. Это простой вопрос, чтобы загрузить DLL - вы вызываете LoadLibrary и просто держите этот дескриптор вокруг. Если вы делаете локальные копии строк, то после того, как они все загружены и скопированы, вы можете выгрузить обе библиотеки DLL.