در این ویدئوی آموزشی یک DataGrid داریم که قبل از هر چیز باید یک DataTable برای DataSource اون تعیین بشه و همزمان با اضافه کردن ستون های DataTable به ستونهای DataGridTableStyle هم اضافه می شه....
Dim MultiLanguageDataTable As New DataTable("MultiLanguageDataTable")
With MultiLanguageDataTable
MultiLanguageTableStyle.MappingName = .TableName
MultiLanguageTableStyle.PreferredColumnWidth = 250
.Columns.Clear()
With .Columns.Add("ResName")
.Caption = "Resource Name"
End With
DataColumn = New DataGridTextBoxColumn
With DataColumn
.HeaderText = "Resource Name"
.MappingName = "ResName"
Width_ = g.MeasureString(.HeaderText, Me.DataGrid1.HeaderFont).Width
.Width = If(Width_ < MultiLanguageTableStyle.PreferredColumnWidth, MultiLanguageTableStyle.PreferredColumnWidth, Width_)
End With
MultiLanguageTableStyle.GridColumnStyles.Clear()
Index = MultiLanguageTableStyle.GridColumnStyles.Add(DataColumn)
For Each Item As ListViewItem In Me.ListView1.Items
With .Columns.Add(Item.SubItems(3).Text)
.Caption = Item.SubItems(2).Text
End With
DataColumn = New DataGridTextBoxColumn
With DataColumn
.HeaderText = Item.SubItems(1).Text
.MappingName = Item.SubItems(3).Text
Width_ = g.MeasureString(.HeaderText, Me.DataGrid1.HeaderFont).Width
.Width = If(Width_ < MultiLanguageTableStyle.PreferredColumnWidth, MultiLanguageTableStyle.PreferredColumnWidth, Width_)
End With
Index = MultiLanguageTableStyle.GridColumnStyles.Add(DataColumn)
Next
End With
در این آموزش برای اضافه کردن یک زبان به برنامه مورد نظر ابتدا زبانها به یک آرایه اضافه و سپس DisplayName از زبانها به ComboBox و LCID به یک لیست از دیتا تایپی با کلاس Integer و نهایتها اطلاعات Culture به ListView اضافه می شه....
Dim Cultures() As CultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures)
Dim LanguageList As New List(Of Integer)
Dim Index As Integer = -1
With Me.LanguaheComboBox
For Each Culture As CultureInfo In Cultures
If Culture.LCID = 127 Then Continue For
Index = .Items.Add(Culture.DisplayName)
LanguageList.Insert(Index, Culture.LCID)
Next
If .Items.Count > 0 Then
.SelectedIndex = 0
End If
End With
Dim Culture_ As CultureInfo = CultureInfo.GetCultureInfo(LanguageList(Me.LanguaheComboBox.SelectedIndex))
With Me.ListView1.Items
With .Add((.Count + 1).ToString, 0)
.SubItems.Add(Culture_.EnglishName)
.SubItems.Add(Culture_.DisplayName)
.SubItems.Add(Culture_.Name)
.SubItems.Add(Culture_.LCID)
End With
End With
Private Sub ChangeLanguageToolStripMenuItem_DropDownItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ChangeLanguageToolStripMenuItem.DropDownItemClicked
Dim Id As String = e.ClickedItem.Tag.ToString
Dim Result As MsgBoxResult = MsgBox(String.Format("{1}{0}{0}{2}", vbCrLf, ChangeLabguageMessage, ChangeLabguageMessage(Id)), MsgBoxStyle.YesNo)
If Result = MsgBoxResult.No Then Exit Sub
My.Settings.LanguageId = e.ClickedItem.Tag.ToString
My.Settings.Save()
Application.Restart()
End Sub
در این آموزش برای یک نرم افزار چندزبانه به تعداد زبانها Resources File ایجاد شده و یک کلاسی استفاده می شه که قادر است طبق زبان انتخاب شده متن را از ریسورس فراخوانی و نمایش دهد....
Public Class CurrentResources
Private Shared ManagerValue As New Resources.ResourceManager("<ProjectAssembly.ResourcesName>", GetType(<AnyClassesOfProject>).Assembly)
Public Shared ReadOnly Property Manager() As Resources.ResourceManager
Get
Return ManagerValue
End Get
End Property
Public Shared ReadOnly Property Strings(resName As String) As String
Get
Return Manager.GetString(resName)
End Get
End Property
Public Shared ReadOnly Property ChangeLabguageMessage() As String
Get
Return Manager.GetString("ChangeLabguageMessage")
End Get
End Property
End Class
در این آموزش شناسایی راست به چپ بودن Layout یک زبان برای نرم افزار چند زبانه و اعمال تغییرات بر روی اشیاء فرم ها توضیح داده شده....
Public ReadOnly Property RightToLeft() As Boolean
Get
Return My.Application.UICulture.TextInfo.IsRightToLeft
End Get
End Property
With OptionsAndSettiongs
If RightToLeft = False Then
.ButtonsTableLayoutPanel.Dock = DockStyle.Right
End If
With .TabControl1
If RightToLeft = False Then
.RightToLeft = Windows.Forms.RightToLeft.No
End If
For Each Page As TabPage In .TabPages
If Page.Tag Is Nothing OrElse Page.Tag.ToString.Length = 0 Then Continue For
Page.Text = CurrentResources.Strings(Page.Tag.ToString)
If RightToLeft = False Then
With DirectCast(Page.Controls(0), ListView)
.RightToLeftLayout = False
End With
End If
Next
End With
End With