Я не знаю ни одного метода Devexpress, чтобы сделать это. Хорошим решением было бы фактически сделать работу по созданию файла локализации для английского языка, который работал бы следующим образом.
- Добавьте InternationlisationLayer в ваше приложение.
- Этот слой ищет приложение, чтобы найти все элементы управления, которые вы бы хотели перевести.
- После нахождения всех элементов управления вы должны сопоставить их текстовые значения с переведенным текстом.
- После нахождения соответствующего текста на английском языке вам придется заменить свойство Text в этих элементах управления.
Если вы хотите избежать создания правильной системы локализации, гораздо более простое решение объясняется ниже. ,
- Создайте список типа и заполните его всеми контрольными текстами, которые вы хотите перевести.
- Переведите строки и добавьте их формат так, чтобы у вас был словарь типа (где Keyбудет исходный текст, а значение будет переведенным текстом).
При запуске приложения получите список всех элементов управления, которые вы хотите перевести, и сделайте что-то вроде следующего:
public static IEnumerable<System.Windows.Forms.Control> GetAllControlsOfType(this System.Windows.Forms.Control control, Type type)
{
var controls = control.Controls.Cast<System.Windows.Forms.Control>();
return controls.SelectMany(ctrl => GetAllControlsOfType(ctrl, type))
.Concat(controls)
.Where(c => c.GetType() == type);
}
public void DoTranslation()
{
var ctrls = this.GetAllControlsOfTypes(new List<Type>() { typeof(Label), typeof(Button) });
foreach (var ctr in ctrls)
{
var element = dict.FirstOrDefault(i => i.Key == ctr.Text);
ctr.Text = element.Value;
}
}