本章讲述正确添加语言资源的方式,以及一段语言资源的多种样式显示。
例如:“@Winter,你好!感谢已使用软件 800 天!”
在添加如上多语言资源项时,“XX,你好!感谢已使用软件 X 天!”
那么,你是怎么添加语言资源的呢?
分别添加,“,你好!”、“感谢已使用软件”、“年”3个,再通过界面绑定动态变量 昵称和使用天数?
假如你是按照如上添加语言资源的,那么问题来了,添加如上英文语言资源呢?是不是也分别添加单个资源,再拼凑绑定?
添加语言资源正确的做法是,添加整个语言资源,“{0},你好!感谢已使用软件 {1} 天!”
原因:使用格式化的语言资源,那么将中文资源翻译成英文或者其它语言后,得到的译文符合原有的含义了。
不然,一段一段翻译后的文本拼接,得到的只会是,中式英文之类的。。。
语言格式化控件在添加了语言资源后,如何在WPF界面显示呢?
简单的文本样式只是简单的文本拼接,样式相同时,可以直接绑定动态变量值 - 昵称和使用年限,然后通过StringFormat或者Conveter去处理格式化文本。
如果只有一个动态变量,直接使用StringFormat处理即可。Text="{Binding Name,StringFormat={StaticResource TheFormatedText}}"
如果多个动态变量,可以使用多重绑定+Converter,实现文本格式化。
复杂的文本样式复杂样式,例如:
文本+按钮
文本+超链接
加粗文本+普通文本+红色文本
以上,如何处理?
语言格式化控件实现Demo显示效果:
1. 添加一个继承TextBlock的用户控件ComplexTextBlock
1 /// <summary> 2 /// 解决复杂文本格式化样式的文本框控件 3 /// 如"已使用软件 {0} 天",天数需要标红加粗,或者用于【文本】【文字按钮】【文本】的组合 4 /// </summary> 5 public class ComplexTextBlock : TextBlock 6 { 7 8 }