hdth06 ltudql02-multi languages

12
ThS Bùi Tấn Lộc - Nguyễn Đức Huy – Ngô Ngọc Đăng Khoa – Hồ Tuấn Thanh – Nguyễn Lê Nguyên Ngữ 2011 Lab – 04 – kỹ thuật Multi Languages Trong Lab 04 này, hướng dẫn cho sinh viên thực hiện các kỹ thuật đa ngôn ngữ trên giao diện với công nghệ VB.Net Trường Đại Học Khoa Học Tự Nhiên Khoa Công Nghệ Thông Tin Bộ môn Công Nghệ Phần Mềm Môn: Ứng dụng Quản lý 2

Upload: dung-dinh

Post on 28-Jun-2015

261 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Hdth06 ltudql02-multi languages

ThS Bùi Tấn Lộc - Nguyễn Đức Huy – Ngô Ngọc Đăng Khoa – Hồ Tuấn Thanh – Nguyễn Lê Nguyên Ngữ

2011

Lab – 04 – kỹ thuật Multi Languages

Trong Lab 04 này, hướng dẫn cho sinh viên thực hiện các kỹ thuật đa ngôn ngữ trên giao diện với công nghệ VB.Net

Trường Đại Học Khoa Học Tự Nhiên Khoa Công Nghệ Thông Tin

Bộ môn Công Nghệ Phần Mềm Môn: Ứng dụng Quản lý 2

Page 2: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 2

1 Mục đích - Yêu cầu

1.1 Mục đích

- Hướng dẫn sử dụng kỹ thuật lập trình đa ngôn ngữ trên giao diện (Multi

language) với công nghệ VB.Net

1.2 Yêu cầu

- Thực hiện các bước theo bài hướng dẫn để nắm bắt các kỹ thuật lập trình đa

ngôn ngữ với công nghệ Multi Language.

- Thời gian thực hiện: 45 phút.

2 Nội dung cơ bản

2.1 Kỹ thuật

- Các thư viện sử dụng:

o System.Globalization

o System.Resources

o System.Text

o System.Threading

- Các mẫu qui định về cách xác định mã ngôn ngữ được qui định với mã <ngôn

ngữ>-<địa phương sử dụng>

o en-US : để chỉ tiếng Anh ở USA

o en-GB : để chỉ tiếng Anh ở Vương Quốc Anh

o vi-VN : để chỉ tiếng Việt ở Việt Nam

-

2.2 Tạo project

- Tạo một project Visual Basic dạng Form Application có tên là MultiLanguages

- Tạo một Class CommonLibrary

Page 3: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 3

Page 4: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 4

- Import 4 Namespace:

Imports System Imports System.Collections.Generic Imports System.Globalization Imports System.Text

- Thiết kế Class CommonLibrary

Public Class CommonLibrary Private culInfo As CultureInfo 'Thông tin của ngôn ngữ hiện tại 'Định nghĩa sự kiện thay đổi ngôn ngữ Public Delegate Sub CultureInfoChangeHandler(ByVal sender As Object, ByVal e As EventArgs) Public Event OnCultureInfoChange As CultureInfoChangeHandler Public Sub New() culInfo = CultureInfo.CurrentCulture End Sub Public Function getCultureInfo() As CultureInfo Return culInfo End Function Public Function ChangeCultureInfo(ByVal cultureName As String) As CultureInfo If cultureName <> culInfo.Name Then culInfo = CultureInfo.CreateSpecificCulture(cultureName) RaiseEvent OnCultureInfoChange(Me, Nothing) End If Return culInfo End Function End Class

- Tạo thư mục Resources chứ các file cấu ngôn ngữ của hệ thống

Page 5: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 5

- Tạo các file Resource tương ứng cho giao diện của từng loại ngôn ngữ ứng với

từng Form.

Page 6: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 6

o File frmMain.en-US.resx: ngôn ngữ tiếng Anh cho FormMain

Hoang Dung
Note
Chu y: ten "frmMain.en-US" - 'frmMain' sau nay su dung de goi multilanguage trong ham SetUI() - 'en-US' la ten theo qui dinh
Page 7: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 7

o File frmMain.vi-VN.resx: ngôn ngữ tiếng Việt cho FormMain

o File frmSecondary.en-US.resx: ngôn ngữ tiếng Anh cho FormSencondary

o File frmSecondary.vi-VN.resx: ngôn ngữ tiếng Việt cho FormSencondary

Page 8: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 8

- Thiết kế frmMain

- Code của frmMain

o Import các NameSpace

Imports System.Globalization Imports System.Resources Imports System.Reflection

o Code của Class frmMain

Public Class frmMain Private ReadOnly culInfoMgr As CommonLibrary Public Sub New() InitializeComponent() culInfoMgr = New CommonLibrary() AddHandler culInfoMgr.OnCultureInfoChange, AddressOf CultureInfoHasChanged

Page 9: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 9

culInfoMgr.ChangeCultureInfo("vi-VN") End Sub Private Sub SetUI() Dim culInfo As CultureInfo = culInfoMgr.getCultureInfo() Dim str As String str = GetType(frmMain).Assembly.ToString() Dim rm As New ResourceManager("MultiLanguages.frmMain", Assembly.GetExecutingAssembly()) Me.Text = rm.GetString("frmMainText", culInfo) lblLanguage.Text = rm.GetString("lblLanguageText", culInfo) btnExit.Text = rm.GetString("btnExitText", culInfo) btnSecondaryFrm.Text = rm.GetString("btnSecondaryFrmText", culInfo) lblCurrency.Text = rm.GetString("lblCurrencyText", culInfo) cmbLanguage.Items.Clear() cmbLanguage.Items.Add(rm.GetString("cmbLanguagevi_VNText", culInfo)) cmbLanguage.Items.Add(rm.GetString("cmbLanguageen_USText", culInfo)) If culInfo.Name = "vi-VN" Then cmbLanguage.SelectedIndex = 0 ElseIf culInfo.Name = "en-US" Then cmbLanguage.SelectedIndex = 1 End If Dim dblcurrency As Double = 13472.85 txtCurrency.Text = dblcurrency.ToString("c", culInfo) End Sub Private Sub CultureInfoHasChanged(ByVal sender As Object, ByVal e As EventArgs) Try SetUI() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub End Class

Page 10: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 10

o Code cho sự kiện Click của btnExit

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click Close() End Sub

o Code cho sự kiện SelectedIndexChanged của cmbLanguage

Private Sub cmbLanguage_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbLanguage.SelectedIndexChanged If cmbLanguage.SelectedIndex = 0 Then culInfoMgr.ChangeCultureInfo("vi-VN") ElseIf cmbLanguage.SelectedIndex = 1 Then culInfoMgr.ChangeCultureInfo("en-US") End If End Sub

o Code cho sự kiện Click của btnSecondaryFrm

Private Sub btnSecondaryFrm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSecondaryFrm.Click Dim frm As New frmSecondary(Me.culInfoMgr) frm.Show() End Sub

- Thiết kế frmSecondary

- Code của frmSecondary

o Import các NameSpace

Page 11: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 11

Imports System.Globalization Imports System.Resources Imports System.Reflection

o Code của Class frmSecondary

Public Class frmSecondary Private ReadOnly culInfoMgr As CommonLibrary Public Sub New(ByVal culInfoMgr As CommonLibrary) InitializeComponent() Me.culInfoMgr = culInfoMgr AddHandler culInfoMgr.OnCultureInfoChange, AddressOf CultureInfoHasChanged End Sub Private Sub SetUI() Dim culInfo As CultureInfo = culInfoMgr.getCultureInfo() Dim rm As New ResourceManager("MultiLanguages.frmSecondary", GetType(frmSecondary).Assembly) Me.Text = rm.GetString("frmSecondaryText", culInfo) lblHello.Text = rm.GetString("lblHelloText", culInfo) End Sub Private Sub CultureInfoHasChanged(ByVal sender As Object, ByVal e As EventArgs) Try SetUI() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub frmSecondary_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load Try SetUI() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub End Class

Page 12: Hdth06 ltudql02-multi languages

March 30, 2011 LAB – 04 – KỸ THUẬT MULTI LANGUAGES

Trường Đại Học Khoa Học Tự Nhiên | Ứng dụng quản lý 2 12

- Kết quả khi Run

o Chạy với ngôn ngữ tiếng Việt

o Chạy với ngôn ngữ tiếng Anh – khi đổi chọn giá trị trong cmbLanguage