欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Silverlight4 多语言实现的方法

程序员文章站 2024-02-27 15:32:27
1:在项目中新建文件夹“resouce”,然后再该文件夹下面新增资源文件“appstring.resx”,如果创建一个appstring.resx副本,把文件名改为对应的语...

1:在项目中新建文件夹“resouce”,然后再该文件夹下面新增资源文件“appstring.resx”,如果创建一个appstring.resx副本,把文件名改为对应的语言名称,

    如appstring.en-us.resx。,并且把appstring.resx的访问修饰符改为public

Silverlight4 多语言实现的方法

 

2:打开appstring.resx的cs文件,查看类的访问修饰符是否public,如果不是,则改为public。

3:打开app.xmal文件,添加以下代码,目的是用于其它的页面绑定字符内容的资源文件。

Silverlight4 多语言实现的方法

4:然后再其它页面就可以使用这个资源文件了,我这里用了三种语言

Silverlight4 多语言实现的方法

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();
        }

注意:按下切换按钮后要重新登录应用程序才能看到效果,并不是即使切换。

Silverlight4 多语言实现的方法