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.
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
diện tiếng việt.
Hướng dẫn tạo bản địa hóa cho chương trình – Nguyễn Duy Đại
https://nguyenduydai.wordpress.com
thì hiển thị lại giao
Trang 1
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.
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
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 đó.
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
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à:
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
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.
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
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
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
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
binDebug 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
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
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:
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
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 binDebug 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;
Đường dẫn tới tập tin resource của bạn
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)
{
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
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!
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