鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > .net技术 > WinRT/Metro > >

重新想象 Windows 8 Store Apps (57)

来源:互联网 作者:佚名 时间:2013-11-14 11:45
重新想象 Windows 8 Store Apps (57) - 本地化和全球化Posted on [源码下载] 重新想象 Windows 8 Store Apps (57) - 本地化和全球化 作者:webabcd 介绍 重新想象 Windows 8 Store Apps 之本地化和全球化 示例 1、演示本地化的基本应用 Localization/Localiz

重新想象 Windows 8 Store Apps (57) - 本地化和全球化 Posted on

[源码下载]


重新想象 Windows 8 Store Apps (57) - 本地化和全球化



作者:webabcd


介绍
重新想象 Windows 8 Store Apps 之 本地化和全球化



示例
1、演示本地化的基本应用
Localization/LocalizationDemo.xaml

<Page x:Class="XamlDemo.Localization.LocalizationDemo" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:XamlDemo.Localization" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable本地化资源文件,,以下举例说明:1、在 en 目录下的是英文资源文件,在 zh-CN 目录下的是简体中文(zh 代表语言,CN 代表国家或地区)资源文件2、Resources.lang-en.resw 代表英文资源文件,Resources.lang-zh-CN.resw 代表简体中文资源文件3、图片资源的本地化可以参照以上命名规则,同时可与 scale 和 high contrast 相结合4、Package.appxmanifest 中引用的字符串也支持本地化,引用方式:ms-resource:Hello 或 ms-resource:///Resources/Hello5、Tile 和 Toast 中引用的字符串也支持本地化,引用方式:ms-resource:Hello 或 ms-resource:///Resources/Hello6、当无法找到某语言对应的资源时,系统会自动使用 Package.appxmanifest 中设置的默认语言所对应的资源 通过 x:Uid 本地化控件的各个属性,请参看资源文件中的 HelloTextBlock.FontSize 和 HelloTextBlock.Text code - behind 方式获取本地化资源 图片的本地化

Localization/LocalizationDemo.xaml.cs

/* * 演示本地化的基本应用 * * 另: * Visual Studio 2012 的多语言应用程序工具包请参见: Windows.ApplicationModel.Resources; using Windows.ApplicationModel.Resources.Core; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; namespace XamlDemo.Localization { LocalizationDemo : Page { public LocalizationDemo() { this.InitializeComponent(); } OnNavigatedTo(NavigationEventArgs e) { /* * ResourceLoader resourceLoader = new ResourceLoader(); - 获取默认的 ResourceLoader(Resources.resw 中的资源) * ResourceLoader resourceLoader = new ResourceLoader("MyResources"); - 获取指定的 ResourceLoader(MyResources.resw 中的资源) * ResourceLoader resourceLoader = new ResourceLoader("ClassLibrary/MyResources"); - 获取指定类库的指定的 ResourceLoader(ClassLibrary 类库中的 MyResources.resw 中的资源) ResourceLoader resourceLoader = new ResourceLoader(); // 通过资源标识,获取指定的资源 lblMsg.Text = resourceLoader.GetString(); } } }


2、演示与“改变语言”相关的一些应用
Localization/Language.xaml

<Page x:Class="XamlDemo.Localization.Language" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:XamlDemo.Localization" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable

Localization/Language.xaml.cs

/* * 演示与“改变语言”相关的一些应用 * * 1、演示如何改变当前的语言环境 * 2、演示如何监测当前语言环境发生的变化 * 3、演示如何获取指定语言环境下的资源 */ using System; using System.Collections.Generic; using System.Text; using Windows.ApplicationModel.Resources.Core; using Windows.Globalization; using Windows.UI.Core; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace XamlDemo.Localization { Language : Page { public Language() { this.InitializeComponent(); this.Loaded += Language_Loaded; } void Language_Loaded(object sender, RoutedEventArgs e) { string currentLanguage; // 获取当前的语言 ResourceManager.Current.DefaultContext.QualifierValues.TryGetValue(, out currentLanguage); lblMsg.Text = + currentLanguage; lblMsg.Text += Environment.NewLine; (string strLang in ApplicationLanguages.ManifestLanguages) { lang = new Windows.Globalization.Language(strLang); cmbLanguage.Items.Add(, lang.DisplayName, lang.NativeName, lang.LanguageTag, lang.Script)); } cmbLanguage.SelectionChanged += cmbLanguage_SelectionChanged; // 获取当前语言环境的指定资源 lblMsg.Text += ResourceManager.Current.MainResourceMap.GetValue().ValueAsString; // 当前语言环境发生改变时所触发的事件(通过 API 更改或者通过“电脑设置 -> 常规 -> 语言首选项”更改都会触发此事件) ResourceManager.Current.DefaultContext.QualifierValues.MapChanged += async (s, m) => { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { lblMsg.Text += Environment.NewLine; lblMsg.Text += ResourceManager.Current.MainResourceMap.GetValue().ValueAsString; }); }; } void cmbLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e) { (cmbLanguage.SelectedValue.ToString().Contains()) Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = ; )) Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = ; StringBuilder sb = new StringBuilder(); (string item in ApplicationLanguages.Languages) { sb.Append(item); sb.Append(); } lblMsg.Text += Environment.NewLine; lblMsg.Text += + sb.ToString(); } private void btnGetEng_Click_1(object sender, RoutedEventArgs e) { // 指定 ResourceContext 为 en 语言环境 ResourceContext resourceContext = new ResourceContext(); resourceContext.Languages = }; // 获取 en 语言环境下的 Resources 映射 ResourceMap resourceMap = ResourceManager.Current.MainResourceMap.GetSubtree(); lblMsg.Text += Environment.NewLine; // 获取指定的语言环境下的指定标识的资源 lblMsg.Text += + resourceMap.GetValue(, resourceContext).ValueAsString; } } }


3、演示全球化的基本应用
Localization/GlobalizationDemo.xaml

网友评论
<