Локализация - это всегда огромный объем работы, особенно если вам необходимо локализовать уже созданное приложение.
Что касается статических меток форм, существует элегантное решение, позволяющее легко выполнить 75% работы.и быстро.Просто переместите ярлыки на ресурсы, не касаясь существующих английских ярлыков.Затем, в зависимости от культуры текущего потока, измените метки в форме, считывая их из локализованных ресурсов.
Например, французский ресурс для класса YourForm:
YourForm.fr-CA.resx:
"name" -> "value"
labelCaption\ --> "Légende"
labelInputLabel\ --> "Champ de saisie"
«Имя» - это имя вашего элемента управления формы, «значение» - это метка элемента управления.
1).Создайте базовый класс для всех ваших форм, например LocalizationBaseForm 2).Обработайте событие OnLoad () в этом классе и прочитайте ресурс.В зависимости от выбранной на данный момент культуры вы будете читать соответствующий локализованный ресурс.Канадский французский будет находиться в каталоге / fr-Ca /, испанский - в / es-Es / etc.
ResourceManager manager = new ResourceManager(your_ form_type);
ResourceSet set = manager.GetResourceSet(manager, ...);
3).Перебирайте список меток и меняйте метки на форме в соответствии со списком на ресурсе.
//*pseudocode:*
foreach (DictionaryEntry entry in set)
{
SetControlLabel(entry.Key, entry.Value)
}
Метод SetControlLabel (...) ищет элемент управления с заданным именем и изменяет его заголовок с заданным новымкатион.
Вы можете делать более сложные вещи, такие как локализация столбцов в сетках, усложнение значений в ресурсе, например:
"name" -> "value" gridTable (ColumnKey1) \-> "Сolonne Une" gridTable (ColumnKey2) \ -> "Сolonne Deux"
То же самое с деревьями, панелями инструментов и т. Д. Вы даже можете автоматически генерировать ресурсы, все зависит от вас.
Этот подход не решит все ваши проблемы, но он поможет вам, если вам нужно быстро локализовать уже существующее приложение.Вам все еще нужно локализовать парсеры строк, даты и т. Д.
Удачи!