Xây dựng một ứng dụng, đôi lúc bạn muốn thiết lập giao diện với nhiều ngôn ngữ. Thường thì với chúng ta sẽ xây dựng là tiếng Anh và tiếng Việt. Ở đây tớ có bài hướng dẫn thiết lập và chuyển đổi giữa 2 ngôn ngữ là tiếng Anh và tiếng Việt. Ai chơi tiếng Trung, Nhật hay Thái thì cho tớ vài cái font và bộ gõ để chơi vui hen.
Đầu tiên bạn tạo một project đặt tên gì đó thì tùy, sau đó cho vào một menu hay vài button, label gì đó để xử lý là được. Ở đây tớ cho vào 2 button 1 button là btnEnglish (đổi sang tiếng anh), 1 button là btnVietNam (đổi sang tiếng việt). Và mặc định tớ sẽ xây dựng ứng dụng là tiếng Anh nhé.
Với cách xử lý này chúng ta chú ý đến 2 thuộc tính là Language và Localizable nhìn vào hình dưới: (Nhớ thay đổi giá trị cho thuộc tính Localizable là True nha).
Nhìn vào cái khung solution Explorer --> mở file Settings.settings và bạn đặt giá trị như hình sau:
Giải thích: Thiết lập giá trị trong setting để gán ngôn ngữ mặc định cho ứng dụng lúc đầu. Trong thuộc tính Language của form bạn sẽ thấy các ngôn ngữ cho bạn lựa chọn. Trong đó English (United State) có value là en-US (chú ý cái value này nha) với Vietnamese là vi-VN. Trong file settings vừa rồi bạn thiết lập là để xác định cái giá trị Default của thuộc tính Language là English (United State).
Và ban đầu ứng dụng thực thi nó sẽ xác định ngôn ngử mặc định trước đó yêu cầu là gì. Tức là nếu lần sau chúng ta muốn thay đổi dạng ngôn ngữ thì phải khởi động lại chương trình nó mới chuyển ngôn ngữ và lúc mà ta xác định ngôn ngữ ứng dụng sẽ lưu giá trị lại và lúc khởi động dựa vào đó để xác định. Bởi vậy trong class Programs.cs có sẵn của ứng dụng chúng ta phải thêm vào câu lệnh để xác định ngôn ngữ sau khi khởi động là gì.
Mã:
[STAThread] static void Main() { //thêm câu lệnh sau vào System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Properties.Settings.Default.Language); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); }
Giải thích chút xíu: Câu lệnh sẽ lấy giá trị ta đã gán cho value của cái node Language mà ta tạo ra trong file settings để xác định ngôn ngữ là gì. Giá trị này sẽ lưu ở file app.config mà lúc ta mở file settings.settings nó tự động tạo ra đó. (Mở lên coi nó có gì [IMG]images/smilies/biggrin.png[/IMG])
Bây giờ chúng ta chọn thuộc tính Language của form mà tớ kêu chú ý như lúc đầu đó (nhớ lúc này thì giá trị của Localizable = True rồi đó nha). Ban đầu bạn thấy nó là Default tức là en-US mà ta xác định ban đầu đó. Bạn sẽ thay đổi nó sang Vietnamese (kéo xuống gần dưới cùng là thấy àh). Bạn sẽ thấy cái form sẽ mất đi chút xíu rồi xuất hiện lại (vẫn thấy i xì ko có gì thay đổi). Thực ra nó đã thay đổi rồi đó, giống như nó copy một form mới y xì vậy (không phải copy đâu nha). Giờ thì bạn đổi text của các button hay label, form gì đó sang tiếng Việt thôi. Ví dụ tớ type lại như sau:
Mọi chuyện đã gần như hoàn thành rùi đó. Giờ bạn code cho các button xác định chuyển đổi ngôn ngữ thôi. (Nhớ là nó chỉ chuyển đôi sau khi bạn xác định dạng ngôn ngữ và khởi động lại chương trình, nhấp vào để nó vẫn thấy y xì đừng trách tớ không nhắc trước nha [IMG]images/smilies/biggrin.png[/IMG]).
ở button btnEnglish code như sau:
Mã:
private void btnEnglish_Click(object sender, EventArgs e) { //xác định ngôn ngữ cho ứng dụng là tiếng Anh Properties.Settings.Default.Language = "en-US"; //Lưu xác định đó lại Properties.Settings.Default.Save(); }
ở button btnVietNam code như sau:
Mã:
private void btnVietNam_Click(object sender, EventArgs e) { Properties.Settings.Default.Language = "vi-VN"; Properties.Settings.Default.Save(); }
Vậy là xong rồi đó. Giải thích tí nha: câu lệnh trên sẽ xác định giá trị cho cái node Language mà tớ kêu tạo ra như lúc đầu đó. Câu thứ 2 chỉ là lưu xác định đó lại. Giờ thì hiểu vì sao phải khởi động lại chương trình rùi chứ (trong cái class programs chạy lúc khởi động chương trình sẽ xác định ngôn ngữ đó).
Ok! Vậy là mọi chuyện tạm ổn, nếu muốn code luôn việc khởi động lại chương trình thì bạn phải dùng đến thread (tạo thread mới của ứng dụng, kill thread củ đi [IMG]images/smilies/biggrin.png[/IMG]) (tự mò nhé...[IMG]images/smilies/waiting.gif[/IMG])
Demo
http://www.fileden.com/files/2008/5/...7/Language.rar
============================================
Chú ý: Vẫn có thể xài theo kiểu khác là chơi file resource của chương trình, tạo ra các string rồi lấy giá trị của các string này truyền vào.
Trong quá trình xây dựng ứng dụng, bạn làm gì cũng được, nhưng nhớ tốt nhất nên thao tác chính ở trên mặc định (cái Language là Default như lúc đâu đó).
View more random threads:
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...