WPF数据国际化解决方案
来源:互联网 发布:mac照片编辑软件 编辑:程序博客网 时间:2024/06/15 13:38
在WPF中界面国际化很容易实现,但是数据国际化确实是一个难题。为了解决项目中的需求,我设计了解决方案。
思路:
1.在数据库中,需要国际化的字段存放国际化key值;
2.在xaml中创建多套国际化,key为数据库中的值;
3.切换国际化时,加载不同的xaml;
4.通过key值获取对应的字符串。
步骤:
1.数据库表设计,使用了sqlite数据库
添加数据
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><sys:String x:Key="language">语言</sys:String><sys:String x:Key="language_chinese">中文</sys:String><sys:String x:Key="language_english">英语</sys:String><sys:String x:Key="name">姓名</sys:String><sys:String x:Key="st_name_zhangsan">张三</sys:String><sys:String x:Key="st_name_lisi">李四</sys:String><sys:String x:Key="st_name_wangwu">王五</sys:String><sys:String x:Key="st_name_sonny">圣尼</sys:String></ResourceDictionary>
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><sys:String x:Key="language">Language</sys:String><sys:String x:Key="language_chinese">Chinese</sys:String><sys:String x:Key="language_english">English</sys:String><sys:String x:Key="name">Name</sys:String><sys:String x:Key="st_name_zhangsan">Zhang San</sys:String><sys:String x:Key="st_name_lisi">Li Si</sys:String><sys:String x:Key="st_name_wangwu">Wang Wu</sys:String><sys:String x:Key="st_name_sonny">Sonny</sys:String></ResourceDictionary>
3.在自定义实体类中获取国际化字符串
public class StudentI18N:Student {/// <summary>/// 国际化-Name/// </summary>public string NameI18N {get {object obj=Application.Current.FindResource(Name);string str=obj as string;return str;}}public override string ToString() {return NameI18N;}}
4.切换国际化文件
private void ChangeI18N(string language) {Application.Current.Resources.MergedDictionaries.Clear();Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary {Source=new Uri("Resources/"+language+".xaml",UriKind.Relative),});LoadStudents();ReportPropertyChanged("IsEnglishChecked");ReportPropertyChanged("IsChineseChecked");ReportPropertyChanged("Students");}
见效果图:
切换成英语后的效果图:
优点:“相对”轻松地实现了数据国际化
缺点:国际化的信息保存在xaml中,而不是数据库中,如果xaml的信息能从数据库中读取,然后动态生成就更好。
不管如何,至少达到了要求。
完整案例下载地址:http://download.csdn.net/source/3462991
- WPF数据国际化解决方案
- wpf国际化
- wpf解决方案
- WPF 国际化具体实现步骤
- 批处理文件国际化支持解决方案
- 网站国际化解决方案
- C#国际化解决方案策略
- iOS程序国际化解决方案
- 国际化和本地化一个WPF工程
- WPF中如何让程序支持国际化
- 动态数据的国际化
- 动态数据的国际化
- 数据验证,数据转换器,国际化
- WPF/Silverlight深度解决方案:目录
- WPF/Silverlight深度解决方案:目录
- WPF下的地图解决方案
- struts国际化问题"——终极解决方案
- ORACLE+.NET网站程式国际化解决方案
- 全面分析Java的垃圾回收机制
- android Progress进度条使用
- 新浪CEO曹国伟:移动互联网未来机会巨大
- JOJ 2414 && POJ 1637 Sightseeing tour(混合欧拉回路)
- 开始工作的第一个周末
- WPF数据国际化解决方案
- 形势好像还顶乐观
- 《大话处理器》目录
- 智能终端将是移动互联网发展的主要推动力
- 白天谋生存,晚上谋发展
- C++ 运算符优先级列表
- 第一个android程序--HelloAndroid
- 高性能web服务器-读书笔记
- 详解Variant 的相关函数