Реализация языковых файлов для приложения c # windows form - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть приложение формы Windows, в котором различные строки отображаются в виде текстовых меток, которым в настоящее время назначены строки из файла .resx из проекта.Я использую менеджер ресурсов, чтобы посмотреть на файл ресурсов, который мне нужен:

ResourceManager rm = new ResourceManager("UICS_Client.english_Lang", Assembly.GetExecutingAssembly());

А затем в функции метки в форме устанавливаются на строки из файла ресурсов:

adminTab.Text = rm.GetString("adminTab");

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

rm = new ResourceManager("UICS_Client.chinese_Lang", Assembly.GetExecutingAssembly());

Это прекрасно работает, но требует, чтобы файл (ы) ресурсов находились в проектево время сборки.То, что я хотел бы сделать, это решение, в котором приложение формы может сканировать папку на пользовательском ПК, содержащую «языковые файлы», которые затем приложение читает в языковом файле, выбранном пользователем на вкладке настроек (выбранный файл будет затемиспользовать повторно каждый раз, когда приложение запускается).Это так, чтобы позже я мог развернуть языковые файлы для пользователей без необходимости перестраивать и отправлять новые версии программного обеспечения.

Кто-нибудь сделал что-то подобное и есть какие-нибудь предложения для меня попробовать?

1 Ответ

0 голосов
/ 24 апреля 2019

Я закончил тем, что использовал базу данных SQLite для моего языкового файла со столбцами для номера записи, тега и затем языков

Так, например:

|Entry|  Tag  | English | German |
-----------------------------------
|  0  | hello |  Hello  | Hallo  |

Поэтому, когда для формы требуется строка на английском языке, она отправляет в базу данных SQLite запрос:

SELECT English FROM `Strings` WHERE(Tag='hello')

Который возвратил бы столбец английской записи 0: «Привет».

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

Форма также может запрашивать имена столбцов, чтобы узнать, какие языки доступны.

Один языковой файл затем может быть развернут и изменен для существующих языковых файлов, уже используемых пользователями.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...