Localizing globalization step_bystep

10
Hướng dn to bản địa hóa cho chương trình – Nguyễn Duy Đại https://nguyenduydai.wordpress.com Trang 1 Hướng dn bản địa hóa chương trình I. Công đoạn chun b. Yêu cu ca bài này: Ban đầu chương trình có giao diện ti ếng việt, khi người dùng click vào button thì hi n thgiao di n tiếng anh, còn khi click vào button thì hi n thli giao di n ti ếng vit.

description

Hướng dẫn bản địa hóa cho chương trình viết bằng Csharp. Ở bài hướng dẫn này, mình chỉ demo với hai ngôn ngữ là tiếng việt và tiếng anh. Các bước làm đều hướng dẫn rất chi tiết và có ảnh minh họa cụ thể. Hy vọng các bạn có thể áp dụng để làm cho chương trình của mình thêm sinh động và hiện đại hơn.

Transcript of Localizing globalization step_bystep

Page 1: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 1

Hướng dẫn bản địa hóa chương trình

I. Công đoạn chuẩn bị.

Yêu cầu của bài này: Ban đầu chương trình có giao diện tiếng việt, khi người dùng click vào

button thì hiển thị giao diện tiếng anh, còn khi click vào button thì hiển thị lại giao

diện tiếng việt.

Page 2: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 2

Để làm được việc này, trước tiên bạn cần đặt tên đầy đủ cho các control như sau:

Công việc chuẩn bị đã xong, giờ ta qua bước tiếp theo.

Page 3: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 3

II. Tạo tập tin resources.

1. Tạo tập tin Resources cho giao diện mặc định đang thiết kế trên form (ở đây là tiếng việt)

- Nhấp chuột phải vào project Add New Item.

- Trong cửa sổ Add New Item bạn chọn Resources File rồi đặt tên cho resource của mình

(ở đây tôi đặt tên: myResource.resx)

- Bước tiếp theo của bạn bây giờ là nhập giá trị Name, Value cho tập tin resources vừa tạo.

Chú ý: + Name của resources là tên các control bạn đặt khi thiết kế

+ Value là thuộc tính Text của control đó.

Page 4: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 4

Ở đây tui sẽ đặt thế này:

OK, xong rồi lưu lại.

2. Tạo tập tin Resources cho giao diện muốn chuyển đổi ngôn ngữ (ở đây là tiếng anh).

- Làm tương tự như trên, chỉ khác phần nhập value cho tập tin Resources thôi.

Một lưu ý rất quan trọng là tập tin resource này phải được đặt tên theo dạng:

ten_tap_tin.ma_quoc_gia.resx

ten_tap_tin phải giống với phần tên tập tin của resources 1

(Mã quốc gia thì bạn có thể xem ở bảng List of Culture Codes mà mình gửi cùng).

Ở bài này mình sẽ đặt tên cho tập tin resources này là:

Page 5: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 5

myResource.en-US.resx

(en-US là mã quốc gia của Mỹ, vì giao diện mình cần chuyển là tiếng anh của Mỹ).

- Các giá trị trong tập tin resources thứ 2 có dạng thế này:

Nhập đầy đủ thì lưu lại.

OK, vậy là xong công đoạn chuẩn bị tập tin Resources, tiếp theo là giai đoạn biên dịch tập

tin resources thành file .dll để sử dụng.

Page 6: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 6

III. Biên dịch tập tin Resources sang file .dll

Bạn vào Start All Program Microsoft Visual Studio Visual Studio Tools

chọn Visual Studio Command Prompt.

1. Bước 1: Chuyển đến thư mục chứa tập tin resources trong Project của bạn:

Ở đây, project của mình để ở:

D:\Localizing_Globalization_Example

Bạn gõ các lệnh sau:

D:

cd D:\Localizing_Globalization_Example

Nếu gõ đúng thì bạn sẽ thấy nó thế này:

Ok, bây giờ ta bắt tay vào biên dịch cho tập tin resources thứ nhất: (myResource.resx)

2. Biên dịch tập tin resources thứ nhất.

Bạn gõ các lệnh sau:

resgen myResource.resx

al /embed:myResource.resources /out:myResource.resources.dll

Page 7: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 7

Nếu bạn gõ đúng thì nó sẽ hiển thị thế này:

Biên dịch thành công rồi, bạn copy/cut file: myResource.resources.dll vào thư mục

\bin\Debug của Project.

Xong rồi bạn qua tiếp bước 3: biên dịch tập tin resources thứ 2:

myResource.en-US.resx

Page 8: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 8

3. Biên dịch tập tin resources thứ hai.

Thực hiện tương tự như bước 2 thôi, chỉ khác xíu ah.

Các bước làm như sau:

Bạn lần lượt gõ các lệnh:

resgen myResource.en-US.resx

al /embed:myResource.en-US.resources /c:en-US /out:myResource.en-US.resources.dll

Nếu bạn gõ đúng thì nó sẽ hiển thị thế này:

Page 9: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 9

OK,vậy là bạn biên dịch xong tập tin thứ 2. Bạn có thể Close Command Prompt đi được rồi

đó.

Tiếp theo bạn tạo 1 thư mục: en-US trong thư mục \bin\Debug của Project, rồi copy/cut file:

myResource.en-US.resources.dll vào thư mục đó.

Đến đây đã xong hết tất cả các công việc chuẩn bị ngoài lề, việc quan trọng của chúng ta bây

giờ là phải viết code để thể hiện nó trên chương trình. Code nào….

IV. Code

- Trước tiên bạn using 3 thư viện này vào:

using System.Reflection;

using System.Resources;

using System.Globalization;

- Bạn cần khai báo 1 biến kiểu ResoureManager để quản lý resoures của bạn.

ResourceManager resource;

- Trong hàm khởi tạo của Form, bạn khởi tạo cho biến resource mà bạn vừa khai báo ở trên:

ResourceManager resource;

public frmExample()

{

InitializeComponent();

resource = new ResourceManager("Localizing_Globalization_Example.myResource",

Assembly.GetExecutingAssembly());

}

- Tiếp theo bạn viết 1 phương thức để chuyển đổi ngôn ngữ mỗi khi click vào button ngôn

ngữ tương ứng (cái này nếu muốn chuyên nghiệp hơn thì dùng vòng lặp duyệt các

control. Vì mình hướng dẫn chi tiết thế này để các bạn mới cũng có thể làm dc nên hơi

dài dòng chút.)

private void ChuyenDoiNgonNgu(String ma)

{

CultureInfo ci = new CultureInfo(ma);

lblQuanLySV.Text = resource.GetString("lblQuanLySV",ci);

lblMaSV.Text = resource.GetString("lblMaSV", ci);

lblTenSV.Text = resource.GetString("lblTenSV", ci);

btnThem.Text = resource.GetString("btnThem", ci);

btnXoa.Text = resource.GetString("btnXoa", ci);

grbDanhSachSV.Text = resource.GetString("grbDanhSachSV", ci);

lsvDanhSachSV.Columns[0].Text = resource.GetString("colMaSV", ci);

lsvDanhSachSV.Columns[1].Text = resource.GetString("colTenSV", ci);

}

- Công việc cuối cùng của bạn là gọi lại phương thức trong sự kiện click của button ngôn

ngữ tương ứng:

Button Tiếng việt

private void btnVi_Click(object sender, EventArgs e)

{

Đường dẫn tới tập tin resource của bạn

Page 10: Localizing globalization step_bystep

Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại

https://nguyenduydai.wordpress.com Trang 10

ChuyenDoiNgonNgu("");

}

Button Tiếng anh

private void btnEn_US_Click(object sender, EventArgs e)

{

ChuyenDoiNgonNgu("en-US");

}

Chú ý: với button hiển thị ngôn ngữ mặc định (ở đây là tiếng việt) thì mã bạn chuyền vào là

1 chuỗi rỗng. Còn với ngôn ngữ khác (ko phải mặc định) thị bạn phải chuyền mã quốc gia

tương ứng với nước đó (Có trong bảng List of Culture Codes).

Đến đây thì mọi công việc của bạn đã hoàn tất, bạn chỉ việc chạy chương trình và chiêm

ngưỡng kết quả của mình thôi.

Cũng ko khó khăn lắm phải ko? Bạn chịu khó làm lại 2-3 lần là thuộc làu như lòng bàn tay

ấy mà.

Good luck!