Category Archives: WPF

Đa ngôn ngữ trong WPF – multilanguage in WPF


Topic này Tôi muốn hướng dẫn các bạn cách thiết lập đa ngôn ngữ cho một ứng dụng WPF

Vì đang bận một số việc nên Tôi chưa kịp viết Step by Step để giải thích từng dòng lệnh, nên tạm thời Tôi cung cấp link source code :

http://www.mediafire.com/?60lc924zu2w72p1

Link Demo ở trên sẽ tự động chọn đúng Language Location trong máy tính của bạn. Bạn có thể kiểm thử lại bằng cách vào Control Panel đổi qua Location khác.

Hiện tại Tôi Demo 3 ngôn ngữ: Tiếng Việt, Tiếng anh, Tiếng Pháp. Các bạn có thể lên mạng tìm các mã location của các quốc gia để tạo thêm các tập tin .xaml ngôn ngữ (mỗi ngôn ngữ sẽ nằm trong 1 tập tin .xaml, ở đây Tôi tạo 1 thư mục tên la Resources, bạn có thể đặt tên thư mục là gì cũng được ví dụ thay vì Resources bạn có thể đặt tên là LanguageTeo)

Các bạn chú ý các lệnh :

xmlns:y=”clr-namespace:System;assembly=mscorlib”

string s = Thread.CurrentThread.CurrentCulture.ToString();

Tôi nghĩ coding Tôi viết rất rõ ràng nên các bạn có thể tự suy luận ra, không cần comment.

Giao diện khi bạn chọn ngôn ngữ vào bấm change language sẽ như sau (Chương trình khi chạy lên nó sẽ tự động chọn đúng language location của máy bạn), Sau đó bạn thích chuyển qua ngôn ngữ nào thì tùy:

Hình ảnh minh họa như sau:

Khi bạn chọn tiếng Việt:

Khi chọn tiếng Pháp:

private void button2_Click(object sender, RoutedEventArgs e)

{

string s = “en-US”;

if (radtiengviet.IsChecked == true)

{

s=”vi-VN”;

}

else if (radtiengphap.IsChecked == true)

{

s=”fr-CA”;

}

else

{

s = “en-US”;

}

setLanguage(s);

}

public void setLanguage(string s)

{

ResourceDictionary dic = new ResourceDictionary();

this.Resources.MergedDictionaries.Clear();

this.Resources.MergedDictionaries.Add(dic);

switch (s)

{

case “vi-VN”:

dic.Source = new Uri(“../Resources/myresource.vi-VN.xaml”, UriKind.Relative);

break;

case “en-US”:

dic.Source = new Uri(“../Resources/myresource.xaml”, UriKind.Relative);

break;

case “fr-CA”:

dic.Source = new Uri(“../Resources/myresource.fr-CA.xaml”, UriKind.Relative);

break;

default:

dic.Source = new Uri(“../Resources/myresource.xaml”, UriKind.Relative);

break;

}

}

public void setLanguage()

{

string s = Thread.CurrentThread.CurrentCulture.ToString();

setLanguage(s);

}

private void Window_Loaded(object sender, RoutedEventArgs e)

{

setLanguage();

}

Chúc các bạn thành công!