Silverlight4 多语言实现的方法
1:在项目中新建文件夹“resouce”,然后再该文件夹下面新增资源文件“appstring.resx”,如果创建一个appstring.resx副本,把文件名改为对应的语言名称,
如appstring.en-us.resx。,并且把appstring.resx的访问修饰符改为public
2:打开appstring.resx的cs文件,查看类的访问修饰符是否public,如果不是,则改为public。
3:打开app.xmal文件,添加以下代码,目的是用于其它的页面绑定字符内容的资源文件。
4:然后再其它页面就可以使用这个资源文件了,我这里用了三种语言
5:接下来就是语言切换了,我用的是本地存储的方式来保存用户选择的语言,新建一个类来专门负责读取当前用户选择的语言。
public class configure
{
static system.globalization.cultureinfo currentculture;
public static system.globalization.cultureinfo currentculture
{
get
{
if (currentculture == null)
{
try
{
system.io.isolatedstorage.isolatedstoragesettings appsetting = system.io.isolatedstorage.isolatedstoragesettings.applicationsettings;
if (appsetting.contains("language"))
{
currentculture = new system.globalization.cultureinfo((string)appsetting["language"]);
}
}
catch (exception e)
{
}
}
if (currentculture == null)
{
currentculture = new system.globalization.cultureinfo("en-us");
}
return currentculture;
}
set
{
currentculture = value;
system.threading.thread.currentthread.currentculture = currentculture;
system.threading.thread.currentthread.currentuiculture = currentculture;
try
{
system.io.isolatedstorage.isolatedstoragesettings appsetting = system.io.isolatedstorage.isolatedstoragesettings.applicationsettings;
if (appsetting.contains("language"))
{
appsetting["language"] = currentculture.name;
appsetting.save();
}
else
{
appsetting.add("language", currentculture.name);
}
}
catch (exception e)
{
}
}
}
}
一下是“切换”按钮的代码
private void button3_click(object sender, routedeventargs e)
{
configure.currentculture = new cultureinfo(combobox1.selectionboxitem.tostring());
//if (configure.currentculture.name == "zh-cn")
//{
// configure.currentculture = new cultureinfo("en-us");
//}
//else
// configure.currentculture = new cultureinfo("zh-cn");
}
6:最后是应用程序启动的代码,也就是读取用户保存的语言。在app.xmal.cs文件里,
private void application_startup(object sender, startupeventargs e)
{
cultureinfo culture = configure.currentculture;
thread.currentthread.currentuiculture = culture;
thread.currentthread.currentculture = culture;
this.rootvisual = new mainpage();
}
注意:按下切换按钮后要重新登录应用程序才能看到效果,并不是即使切换。