Текстовой файл:
<имя контрола><Tab>Параметр><Tab><Значение>, где
<имя контрола> - имя элемента управления формы
<Параметр> - то, что нужно изменить, может быть:
- Text (Текст)
- ToolTip (Всплывающая подсказка)
- NullValuePrompt (Приглашение пустого текстового поля (фишка DevExpress))
<Значение> - Локализованный параметр
Текст процедуры:
Public Sub translate(Language As String)
Dim langFile As String = Application.StartupPath + "\lang\" + Language + ".txt"
If System.IO.File.Exists(langFile) Then
'Формирование лингвистического массива
Dim lines() As String = System.IO.File.ReadAllLines(langFile)
Dim langArray(lines.Length - 1)() As String
For f As Integer = 0 To lines.Length - 1
Dim tempArray() As String = lines(f).Split(vbTab)
langArray(f) = {tempArray(0), tempArray(1), tempArray(2)}
Next
'Поиск контролов формы
For f As Integer = 0 To langArray.Length - 1
'форма
If langArray(f)(0) = "formName" Then
Me.Text = langArray(f)(2)
Else
Dim c() As Control = Me.Controls.Find(langArray(f)(0), True)
If c.Count > 0 Then
Select Case c(0).GetType
Case GetType(TextEdit)
'Текстовое поле
Dim tc As TextEdit = c(0)
Select Case langArray(f)(1)
Case "Text" : tc.Text = langArray(f)(2)
Case "NullValuePrompt" : tc.Properties.NullValuePrompt = langArray(f)(2)
Case "ToolTip" : tc.ToolTip = langArray(f)(2)
End Select
'Кнопка
Case GetType(SimpleButton)
Dim tc As SimpleButton = c(0)
Select Case langArray(f)(1)
Case "Text" : tc.Text = langArray(f)(2)
Case "ToolTip" : tc.ToolTip = langArray(f)(2)
End Select
'Кнопка со стрелкой
Case GetType(DropDownButton)
Dim tc As DropDownButton = c(0)
Select Case langArray(f)(1)
Case "Text" : tc.Text = langArray(f)(2)
Case "ToolTip" : tc.ToolTip = langArray(f)(2)
End Select
'Раскрывающийся список
Case GetType(ComboBoxEdit)
Dim tc As ComboBoxEdit = c(0)
Select Case langArray(f)(1)
Case "Text" : tc.Text = langArray(f)(2)
Case "ToolTip" : tc.ToolTip = langArray(f)(2)
End Select
Case Else
'Другое
c(0).Text = langArray(f)(2)
End Select
End If
End If
Next
Else
MsgBox("Файл языка не найден")
End If
End Sub
Причем я слегка изменил стартер:
Private Sub starter() Handles MyBase.Load
Dim localizations() As String = System.IO.Directory.GetFiles(Application.StartupPath + "\lang\")
Me.selLanguage.Properties.Items.Clear()
For f As Integer = 0 To localizations.Length - 1
Dim fileInfo As New System.IO.FileInfo(localizations(f))
Me.selLanguage.Properties.Items.Add(fileInfo.Name.Substring(0, fileInfo.Name.Length - 4))
Next
If My.Settings.lang <> "" Then
translate(My.Settings.lang)
Me.selLanguage.Text = My.Settings.lang
Else
translate("English")
End If
End Sub
Таким образом, список локализаций теперь не фиксированный, а подгружается динамически в зависимости от содержимого папки lang в папке программы.
Комментариев нет:
Отправить комментарий