I- ĐẶT VẤN ĐỀ:

Khi bạn release một phần mềm, tiêu chí đặt ra bao giờ cũng là: phải làm sao giúp đỡ tốt nhất cho người dùng. “Người dùng là thượng đế”. Và tiêu chí này được thể hiện rõ trong việc thiết kế giao diện (design user interface). Về vấn đề design UI sao cho thuận tiện cho người dùng phụ thuộc vào rất nhiều tiêu chí. Ở đây nhc chỉ xin được đề cập đến một vấn đề nhỏ là “bản địa hóa” phần mềm (hay nói riêng là Việt hóa, Anh hóa, Pháp hóa, …. phần mềm).
Tuy vấn đề cross-language không quan trọng như cross-flatform, nhưng cũng không phải vì thế mà ta có thể xem nhẹ nó được. Vì nó có thể quyết định sự thất bại hay thành công của một phần mềm. Ví dụ khi bạn viết một chương trình phần mềm, bạn sử dụng giao diện Tiếng Anh, thì rõ ràng bạn đã tự thu hẹp “tầm sử dụng” của phần mềm, vì đối với một người Việt không rành về Tiếng Anh thì làm sao sử dụng ứng dụng của bạn được ? Hoặc ngược lại , bạn sử dụng giao diện Tiếng Việt thì điều tương tự cũng xảy ra. Vậy làm cách nào giải quyết vấn đề này ? Bạn sẽ lập trình ra 2 phiên bản chăng? Một bản cho người Việt, một bản cho người Anh ? Rõ ràng là không khả thi !!!

II - GIẢI QUYẾT VẤN ĐỀ:

Bạn hoàn toàn có thể giải quyết vấn đề trên hoàn toàn dễ dàng !!! Thực ra, ngoài việc hỗ trợ đa ngôn ngữ thì cách làm dưới đây còn có tính linh động cao hơn nữa là nó cho phép bạn tùy biến giao diện dựa vào ngôn ngữ mà hệ điều hành bạn đang sử dụng. Lấy ví dụ như thế này: máy của anh rongchaua sử dụng tiếng Đức ( he he :D), khi đó chúng ta sẽ thiết kế giao diện hỗ trợ tiếng Anh và tiếng Đức. Khi anh rồng run phần mềm, chúng ta sẽ kiểm tra ngôn ngữ hệ điều hành anh rồng đang sử dụng. Nếu đúng là tiếng Đức, ta sẽ khởi tạo giao diện tiếng Đức hù anh rồng chơi :)). Thấy là hết hồn . Ha ha :D.

Thui chúng ta tiếp tục :D. Ở bài viết này nhc sử dụng Visual Studio 2005, .NET 2.0, và yêu cầu đặt ra là Việt hóa.

Trước hết các bạn design một form sử dụng giao diện Tiếng Anh (cái này thì chắc ai cũng biết làm rồi he :D)

Photobucket
Ở đây nhc demo trên một số đối tượng như button, check box, textbox, label, toolstrip menu item, … Để có thể Việt hóa được form này thì trước hết bạn phải set thuộc tính Localizable của form thành true.

Photobucket

Tiếp đó, bạn chọn ngôn ngữ muốn hỗ trợ (ở đây là tiếng Việt)

Photobucket

Lúc này bạn sẽ bắt gặp tình huống là có đến 2 chỗ có hỗ trợ Vietnamese. Vậy bạn sẽ chọn cái nào ? Thực ra thì chúng cũng không khác nhau nhiều lắm. Ở đây người ta phân biệt “Ngôn ngữ” (language) và “Văn hóa” (culture). Ví dụ bạn có English là tiếng Anh nói chung, English (United State) là tiếng Anh của người Mĩ, English (United Kingdom) là tiếng Anh của người Anh, … Khi bạn chọn English thì có nghĩa là bạn sẽ hỗ trợ hết cho tất cả các “hệ điều hành nói tiếng Anh” :), không phân biệt vùng nào. Tới đây, bạn design cái form sẽ xuất hiện khi chọn ngôn ngữ là tiếng Việt.
Chằng hạn nhc demo như dưới đây:

Photobucket

Thế là gần như xong các vấn đề cơ bản rùi :D Ở đây, giả sử mình xử lý sự kiện khi người dùng click vào label ở góc trên bên phải (label dùng để chuyển đổi ngôn ngữ).

Photobucket

Cũng xin được nói luôn là để đạt được tính tái sử dụng, nhc đã wrap các công việc cần thiết vào một class tên là UILangChanger. Các bạn có thể xem mã nguồn để biết cụ thể cách làm. Cũng đơn giản thôi :D

Qui trình Việt hóa như sau:

- Bạn cần xác định các object mà bạn sẽ hỗ trợ Việt hóa
- Để việt hóa bạn cần sử dụng 1 component là ComponetResourceManager
(thằng này dùng để quản lý resource của chương trình)
- Công việc cuối cùng chỉ cần sử dụng hàm ApplyResource là xong.

Mã nguồn của lớp UILangChanger bạn có thể xem thêm trong file demo :D

Link down tut dưới dạng file pdf:

http://www.box.net/shared/nrkqrpj9f0

Link down project demo:

http://www.box.net/shared/kkz2fzmyad