XML存储配置文件--实现界面翻译

使用XML文件存储UI翻译的文本文件,仅演示界面显示不同语言版本。

1. 将UI元素建模

假设有3个界面元素,Label,Button,Combox,依据选择的国家翻译成为不同的语言
**

public class Lang

{

    public string LblText { get; set; }

    public string BtnText { get; set; }

    public string Flag { get; set; } //国旗图片

    public string LangName { get; set; }//国家名称

}

2. 建立一个数据模型的集合,绑定到UI

先创建一个硬编码的方式

public class Languages

{

public List MyLangs { get; set; } =GetLangs();

public static List GetLangs()

{

var list = new List<Lang>()

{

  new Lang()

    {

      LblText="Please Enter your Name",

      BtnText="Click",

      Flag="USA.png",

      LangName="English"

    },

    new Lang()

    {

      LblText="输入你的名字",

      BtnText="点击",

      Flag="chinese.png",

      LangName="中文"

    },

    new Lang()

    {

      LblText="あなたの名前を入力してください",

      BtnText="クリック",

      Flag="Japanese.png",

      LangName="日本語"

    }

};

return list;

}

}

3. UI 设计数据绑定

添加静态资源

<Window.Resources>

<local:Languages x:Key=“Language”/>

</Window.Resources>

选择语言选择的不同,切换UI语言:

<ComboBox x:Name=“CBO” Grid.Row=“4” Margin=“10” Height=“50”

Grid.Column=“1” FontFamily=“30”

ItemsSource=“{Binding Source={StaticResource Language},Path=MyLangs}”

SelectedIndex=“{Binding Source={StaticResource Language},Path=SelectedInex}”

           >

<ComboBox.ItemTemplate>

  <DataTemplate>

    <StackPanel Orientation="Horizontal">

      <Image Source="{Binding Flag}"  Width="100"></Image>

      <TextBlock Text="{Binding LangName}"></TextBlock>

    </StackPanel>

  </DataTemplate>

</ComboBox.ItemTemplate>

创建ComboBox的数据模板,选择国家名称时,绑定国旗图片。

图片文件先从网上下载准备。

Button 文本绑定到ComboBox选择Item的BtnText属性:

Label绑定到ComboBox选择Item的LblText属性:

<Button Grid.Column=“1” Grid.Row=“1” Margin=“5” MinHeight=“20”

Content="{Binding ElementName=CBO,Path=SelectedItem.BtnText}" FontSize="30"/>

设置背景颜色

效果如下:

这种方式缺点时,增加语言,或增加其它配置都需求在代码中修改,每次都得改源码。

4. 使用XML文件来配置这些信息

 <?xml version="1.0" encoding="utf-8" ?>
 <Root>
	<Languages actveLangld="1">
	
		<Language id="1">
			<LblText>please Enter Your Name</LblText>
			<BtnText>click</BtnText>
			<Flag>USA.png</Flag>
			<LangName>English</LangName>
		</Language>

		<Language id="2">
			<LblText>输入你的名字</LblText>
			<BtnText>点击</BtnText>
			<Flag>Chinese.png</Flag>
			<LangName>中文</LangName>
		</Language>

		<Language id="3">
			<LblText>あなたの名前を入力してください</LblText>
			<BtnText>クリック</BtnText>
			<Flag>Japanese.png</Flag>
			<LangName>日本語</LangName>
		</Language>

	</Languages>>
	
	<Colors>
		<Background>LightGreen</Background>
	</Colors>
</Root>

修改Languages类,增加查询XML文件的方法,增加属性字段绑定到界面

public class Languages
{
   public List<Lang> MyLangs { get; set; } = GetLangesFromXml();
   const string xmlFile = @"MyConfig.xml";
   public static List<Lang> GetLangesFromXml()
   {
     var xdoc = XDocument.Load(xmlFile);
     var langList = xdoc.Root.Descendants("Languages").Descendants("Language").Select(x => new Lang()
   {
     LblText = x.Element("LblText").Value,
     BtnText = x.Element("BtnText").Value,
     Flag = x.Element("Flag").Value,
     LangName = x.Element("LangName").Value
   }).ToList();

    return langList;
}

 private int _selectedIndex = GetTheActiveLanguageFromXML();
public int SelectedInex
{
    get { return _selectedIndex; }
    set
    {
       _selectedIndex = value;
       SetActiveLanguage();
    }
}

public void SetActiveLanguage()
{
  var xdoc = XDocument.Load(xmlFile);           xdoc.Root.Descendants("Languages").FirstOrDefault().Attribute("actveLangld").Value = SelectedInex.ToString();
 xdoc.Save(xmlFile);
}


public static int GetTheActiveLanguageFromXML()
{
   var xdoc = XDocument.Load(xmlFile);
   int id = int.Parse(xdoc.Root.Descendants("Languages").FirstOrDefault().Attribute("actveLangld").Value);
    return id;

 }


public string BackgroundColor { get; set; } = GetBackGroundColorFromXML();

public static string GetBackGroundColorFromXML()
{
   var xdoc = XDocument.Load(xmlFile);
   return xdoc.Root.Descendants("Colors").FirstOrDefault().Value;
 }

 }

Languages类的MyLangs 数据集取值为XML文件,所以可以修改XML配置文件来动态修改,而不用每次去修改源码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
XML Contents Translator 是专门开发的软件工具,旨在帮助人们以最小的努力打开 XML 文档并翻译其内容。XML 文件会经常用于一些应用程序的语言文件,而我们通过使用 XML Contents Translator 则可以很快速的利用软件中的谷歌在线翻译功能完成语言翻译XML 文件翻译工具 Xml Content Translator 中文版 XML 文件翻译工具 Xml Content Translator 中文版 XML Contents Translator 特色: 便携式应用程序的便利性 由于该产品是便携式的,因此不需要安装过程。这意味着,未经您的许可,它不会像安装程序通常那样将任何新项目添加到Windows注册表和硬盘驱动器。删除磁盘后,将不会有任何残留物留在磁盘上。 另一个值得注意的方面是,您可以轻松地将程序文件复制到USB闪存驱动器,因此,可以随身携带XML Contents Translator,并在您接触的任何PC上运行它。 使用方法和可用选项 此应用程序使您可以使用内置文件浏览器以及“拖放”功能来打开项目,这些功能可增强易用性。它使您可以查看项目包含的每个标签以及使用的语言。 您可以从下拉菜单中轻松选择自己喜欢的语言,并在谷歌翻译的帮助下让程序翻译短语和表达方式。也可以手动输入翻译,转到下一个空白行,然后将结果保存到自定义位置。 表现与结论 CPU 和内存使用量微不足道,这意味着计算机的性能完全不会受到影响,您可以轻松地将其与其他实用程序一起运行而不会遇到任何问题。响应时间很好,该界面适合所有类型的用户,并且在我们的测试中未记录任何错误,崩溃或错误。 总而言之,XML Contents Translator 被证明是用于翻译 XML 内容的非常简单但有用的软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值