Đ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!

One response

  1. Nguyễn Văn Tùng | Reply

    Cảm ơn thầy đã hướng dẫn.
    Bài viết rất dễ hiểu và em đã làm được. ^^

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s