Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Сохранение текстов на разных языках в базе данных

27.11.21 20:02
Re: Сохранение текстов на разных языках в базе данных
 
alex445 старожил
в ответ alex445 14.11.21 23:54, Последний раз изменено 27.11.21 20:47 (alex445)

Всплыл недостаток сохранения локализованных данных в файлах resx. resx генерит в выходную директорию папки с названиями локалей и в каждой DLL с одним и тем же именем. Если я хочу импортировать эти DLL в, скажем, Юнити, то возникает ошибка - туда можно импортировать только одну DLL с тем же именем, при этом неважно, что они в разных директориях находятся. Придётся либо отказаться от хранения локалей, как это требуется для resx, либо придумать своё хранилище.


Самый простой вариант обойти это - отказаться от схемы "отдельный файл на локаль" и встроить обозначение локали в имя ресурса - типа "PersonName_en_US". А вытаскиваться ресурс через символы подстановки - типа


resourceManager.GetString($"PersonName_{locale}");


Но если ресурсы уже сохранены с прежней схемой, то куча работы по переписыванию - ручному или программному. Ну и теперь ломается схема работы с локалями самого класса ResourceManager.


Ещё как вариант - создать по сборке на каждую локаль и передавать в конструктор ResourceManager сборку текущей выбранной локали. Проблема только в том, что придётся отдельный проект для каждой такой локали делать, чтобы каждый проект свою DLL выпускал.

 

Перейти на