Windows Store App 全球化 设置指定页面的语言
上一小节介绍了通过在应用程序中添加语言设置选项来改变整个应用显示信息的语言,而有时用户只想对应用中某一页面信息的语言进行调整,这时就不能使用上一小节所讲述的知识来对应用进行设置。下面将通过一个示例介绍如何在指定页面上添加语言可选项,选择语言选项后单击“显示信息”按钮来显示相应语言的信息。
新建一个Windows应用商店的空白应用程序项目,并命名为OverrideLanguage。在项目中添加如18.2.3小节示例中相同的语言文件夹、资源文件以及资源。
双击打开MainPage.xaml文件,在Grid元素中添加一个ComboBox控件、一个Button按钮和两个TextBlock文本块。在ComboBox控件中包含两个ComboBoxItem列表项,用于显示可以选择的语言为“英语”和“简体中文,设置这两个列表项的Tag属性值分别为“en-US”和“zh-CN”。然后在ComboBox控件中设置SelectedValuePath属性的值Tag,表示选择列表中的选项后SelectedValue属性将获取Tag属性的值。接着设置Button按钮的Content属性值为“显示信息”,此按钮用于获取资源的值并将其显示在一个TextBlock文本块中,另一个文本块则用来显示“选择语言”提示信息,代码如下所示:
<ComboBox Name="SelectedLanguage" HorizontalAlignment="Left" Margin="619,163,0,0" SelectedValuePath="Tag" VerticalAlignment="Top" Width="111">
<ComboBoxItem Tag="en-US">英语</ComboBoxItem>
<ComboBoxItem Tag="zh-CN">简体中文</ComboBoxItem>
</ComboBox>
<Button Content="显示信息" HorizontalAlignment="Left" Margin="476,229,0,0" VerticalAlignment="Top" Width="112" FontSize="20" Click="ShowMessage_Click"/>
<TextBlock HorizontalAlignment="Left" FontSize="20" Margin="619,239,0,0" TextWrapping="Wrap" Name="GetMessage" VerticalAlignment="Top" Height="35" Width="126"/>
<TextBlock HorizontalAlignment="Left" Margin="481,165,0,0" TextWrapping="Wrap" Text="选择语言" FontSize="25" VerticalAlignment="Top" Height="29" Width="112"/>
这时运行程序可以看到如图18-28所示的界面效果。
图18-28 应用界面效果
通过上面的代码可以看到,“显示信息”按钮的单击事件使用ShowMessage_Click方法来处理,下面在MainPage.xaml.cs文件中实现这个方法。通过在页面上选择语言后单击“显示信息”按钮,显示选择语言所对应的资源值,代码如下所示:
using Windows.ApplicationModel.Resources.Core;
private void ShowMessage_Click(object sender, RoutedEventArgs e)
{
//新建一个ResourceContent类的对象content用于存储当前页面的语言环境
var context = new ResourceContext();
//定义selectedLanguage变量存储选择语言项的Tag属性值
var selectedLanguage = SelectedLanguage.SelectedValue;
if (selectedLanguage != null)
{
//新建一个List<string>类的对象lang
var lang = new List<string>();
//将选择语言项的Tag属性值转化为字符串通过Add方法存储在lang对象
lang.Add(selectedLanguage.ToString());
//将lang对象赋给context对象的Languages属性来设置当前语言环境
context.Languages = lang;
//新建一个resourceStringMap对象用于访问Resources资源文件
ResourceMap resourceStringMap = ResourceManager.Current.MainResourceMap.GetSubtree("Resources");
//根据context对象获取资源文件中StringResource资源的值
GetMessage.Text = resourceStringMap.GetValue("StringResource", context).ValueAsString;
}
}
在ShowMessage_Click方法中,新建一个ResourceContext类的对象context,用于存储当前页面的语言环境,定义一个selectedLanguage变量用来存储在ComboBox下拉列表框中选择的语言项的Tag属性值。然后判断selectedLanguage变量是否为空。当选择一种语言后,selectedLanguage变量不为空,进入if条件语句,在其中新建一个List<string>类的对象lang,调用lang对象的Add方法将选择语言项的Tag属性值转化为字符串存储在lang对象中,然后将lang对象的值赋给context对象的Languages属性,用于设置当前页面的语言环境。
接下来以项目中资源文件的名字“Resources”作为参数调用ResourceManager类的Current成员中的MainResourceMap成员所提供的GetSubtree 方法,将返回的值赋给新建的ResourceMap类的对象resourceStringMap,这样resourceStringMap对象可以访问项目中的名为“Resources”的资源文件。然后以资源文件中资源的名“StringResource”和context对象作为参数调用resourceStringMap对象的GetValue方法,用于获取资源文件中StringResource资源的值,接着通过ValueAsString属性将资源值转换为字符串赋值给GetMessage文本块的Text属性,使资源值显示在界面当中。
运行程序,在下拉列表框中选择“英语”选项后,单击“显示信息”按钮,将显示英语信息的“Hello World”,效果如图18-29所示。选择“简体中文”选项,单击“显示信息”按钮,将以简体中文显示“你好世界”的信息,效果如图18-30所示。
图18-29 选择“英语”选项显示效果 图18-30选择“简体中文”选项显示效果
本小节介绍了如何为指定页面设置语言选项,通过选择不同的语言来显示相应语言的信息。下一小节将要讲解资源匹配规则的相关知识点。
Windows Store App 全球化 设置指定页面的语言的更多相关文章
- Windows Store App 全球化:运行时响应语言变更
在应用程序运行过程中,系统的语言.像素.对比度等系统设置可能会发生改变,应用程序应根据系统环境的改变及时做出适当的响应.为了解决这样的问题,可以在应用程序中为系统状态更改事件注册事件处理方法,当语言. ...
- Windows Store App 全球化:应用中设置语言选项
当开发者将开发的应用上传到Windows应用商店以后,使用Windows 8系统的用户可能会看到并下载这些应用,而这些用户所在的区域或者所使用的语言可能都不相同,如果他们在使用应用程序时希望改变应用显 ...
- Windows Store App 全球化:在XAML元素中引用字符串资源
在应用程序中可以通过XAML元素和后台代码两种方式引用资源文件中的字符串资源.本小节先讲述如何在XAML元素中引用字符串资源的相关知识点. 在XAML元素中可以通过使用x:Uid属性来引用资源文件中的 ...
- Windows Store App 全球化 资源匹配规则
上面几个小节通过示例介绍了如何引用资源以及设置应用语言来显示不同语言的信息,这些示例都只是添加了简体中文和英语两种语言来显示资源,而在一些复杂的应用程序中,字符串资源可能会被定义成多种语言,文件资源也 ...
- Windows Store App JavaScript 开发:页面加载
在开发基于JavaScript的Windows应用商店应用时,可以使用HtmlControl和PageControl控件加载一个页面,这两个WinJS库控件曾在上面的内容中提到过,HtmlCont ...
- Windows Store App 全球化:在XAML元素中引用文件资源
上一小节讲解了如何在XAML元素中使用x:Uid属性引用资源文件中的字符串资源,通过改变语言首选项显示不同的运行结果.如果把字符串资源变成文件资源,就不能使用x:Uid属性来引用这些文件资源.本小节将 ...
- Windows Store App 应用设置存储
应用设置存储主要分为本地存储和漫游存储两种方式.本地存储是指将应用的设置信息存储在本地存储空间中,而漫游存储则是指将应用的设置信息存储在网络服务器中,相对于本地存储而言,漫游存储支持多台设备之间的应用 ...
- Windows Store App 全球化:引用类库资源
前面几个小节介绍了如何引用自身项目的资源,而有时在应用程序开发过程中可能需要访问其他项目中的资源.例如,当几个人或十几个人一起设计一个解决方案时,每个人的工作都是不同的,编写的项目也是不同的,但是每个 ...
- Windows Store App 全球化:引用分离资源文件中的资源
大部分应用程序仅需要单个默认资源文件,例如Strings/zh-CN/Resources.resw,但是在某些应用程序中,最好将资源分离到多个资源文件中,以便更好地组织资源内容,这样就需要考虑如何引用 ...
随机推荐
- Eclipse 的快捷键以及文档注释、多行注释的快捷键
一.多行注释快捷键 1.选中你要加注释的区域,用ctrl+shift+C 或者ctrl+/ 会加上//注释2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/* */注释 3.以上快捷 ...
- tomcat7 日志设置为log4j
tomcat的日志设置用log4j的官方文档:http://tomcat.apache.org/tomcat-7.0-doc/logging.html 1. 下载tomcat-juli.jar, to ...
- Java Bean Validation 最佳实践
参数校验是我们程序开发中必不可少的过程.用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的健壮性,后端同样需要对数据进行校验.后端参数校验最简单的 ...
- markdown 标识语言
打算改用markdown标记语言来写blog,特地收集了些相关的资料: 基本介绍: markdown 语法说明简明版 markdown 语法说明完整版 一些相应的资料: 知乎上相关的问题解答 mark ...
- RemotelyAnywhere 11.0.2716 SERVER EDITION 绿色破解安装版
RemotelyAnywhere是一个小巧的,利用浏览器进行远程控制的小程序.只要在服务器端安装该软件,然后你就可以通过任何一个支持 Java 的浏览器对远程计算机进行控制了.通过它,你可以管理远程计 ...
- 使用日期控件datePicker,阻止移动端的自动调取键盘的事件
方法:简单来说就是阻止input的默认事件. 因为datePicker就是用input来封装的,所以直接阻止input的输入事件就ok: 很简单,把input field属性readonly设置为tr ...
- divmod(a,b)函数是实现a除以b,然后返回商与余数的元组、eval可以执行一个字符串形式的表达式、exec语句用来执行储存在字符串或文件中的Python语句
#!/usr/bin/env python a = 10/3 print(a) #divmod计算商与余数 r = divmod(10001,20) print(r) #eval可以执行一个字符串形式 ...
- UVA 11464 偶数矩阵
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- PHP---Mysql常用语法(增删改查)
1.数据库操作: 创建数据库:create databas ...
- bean找不到异常
和这种的 原因: 这些都是因为bean注入的时候没有找个要注入的bean 解决办法: 1.查看dubbo文件中,暴露接口是否引入bean 2.如果有引入,查看引入路径和类是否存在.