• WPF多语言功能简单示例


    一.本功能的原理

    1为不同语言创建不同的资源文件,如en-us.xamlzh-cn.xaml

    2、在App.xaml加载时根据配置文件的值读取不同的资源文件

    3、在各窗体的xaml文件中利用动态绑定显示资源文件内容

    4、更改不同语言需修改配置文件的值并重新启动程序,也可获取当前操作系统的语言类型在启动时读取不同的语言资源文件

     

    en-us.xaml(zh-cn.xaml将内容改为中文) 

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    

                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    

                        xmlns:s="clr-namespace:System;assembly=mscorlib">

        <s:String x:Key="MainWindowTitle">Localization Demos</s:String>

        <s:String x:Key="LanguageMenuHeader">_Languages</s:String>

        <s:String x:Key="EnglishMenuHeader">_Englishs</s:String>

        <s:String x:Key="ChineseMenuHeader">_EnglishsHeader</s:String>

        <s:String x:Key="OpenLanguageFileMenuHeader">_Open Language Files</s:String>

    </ResourceDictionary>

     

     创建配置文件并读取(需引入System.configuration)

      <appSettings>

        <add key="Lang" value="/Resources/Langs/en-us.xaml" />

      </appSettings>

     

    public partial class App : Application

        {

            protected override void OnStartup(StartupEventArgs e)

            {

                base.OnStartup(e);

                string langType = ConfigurationManager.AppSettings.Get("Lang");

                App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri(langType, UriKind.RelativeOrAbsolute) });

            }

    }

    动态绑定:

        <StackPanel VirtualizingStackPanel.VirtualizationMode="Recycling" HorizontalAlignment="Left" VerticalAlignment="Top">

            <Label Content="{DynamicResource MainWindowTitle}"/>

            <Label Content="{DynamicResource LanguageMenuHeader}"/>

            <Label Content="{DynamicResource EnglishMenuHeader}"/>

            <Label Content="{DynamicResource ChineseMenuHeader}"/>

            <Label Content="{DynamicResource OpenLanguageFileMenuHeader}"/>

        </StackPanel>

    修改配置文件值:

      XmlDocument doc = new XmlDocument();

                doc.Load(path);

                XmlNode node = doc.SelectSingleNode(@"//add[@key='Lang']");

                XmlElement ele = (XmlElement)node;

                ele.SetAttribute("value", Type);

                doc.Save(path);

  • 相关阅读:
    Django--templates(模板层)
    基于 Hive 的文件格式:RCFile 简介及其应用
    Gobblin采集kafka数据
    Scala 中下划线的用途
    Gobblin编译支持CDH5.4.0
    Kafka到Hdfs的数据Pipeline整理
    Hadoop NameNode的ZKFC机制
    Windows下Eclipse提交MR程序到HadoopCluster
    Kettle实现MapReduce之WordCount
    hadoop中MapReduce多种join实现实例分析
  • 原文地址:https://www.cnblogs.com/gossip/p/2073340.html
Copyright © 2020-2023  润新知