Silverlight 中的本地化






4.06/5 (8投票s)
此示例将向您介绍如何为不同的文化设计您的网站。
引言
通过这篇文章,您将了解如何根据 Silverlight 中用户的区域设置选择用户界面文化。 本文主要介绍 Silverlight 中的本地化。 您也可以从 此处 下载源代码。
背景
当动态网站出现时,它们的首要目标是仅提供其开发的功能。 他们的目标受众有限,他们喜欢的文化只有英语、中文或日语。 但对于他们来说,将用英语开发的网站转换为其他语言是很困难的。 他们不得不手动将每个字段转换为相应的语言。
为什么我们需要阅读这篇文章?
本文将向您介绍如何创建一个独立于用户语言的 Silverlight 应用程序。 用户将能够以他/她自己的语言查看网站控件/字段。 通过主要概念,您还可以学习如何在 Silverlight 中使用绑定以及如何在任何应用程序中使用资源文件。
说够了,让我们开始吧
打开您最喜欢的编辑器(我更喜欢 VS2010,但您可以使用任何其他可以调试和运行 Silverlight 应用程序的编辑器)。
- 创建一个新项目
- 选择 Silverlight 应用程序并编写项目名称
UICultureDemo
。 - 在 MainPage.xaml 页面上创建 2 个 Textblock 和 1 个单击按钮。
<!-- Xaml --> <TextBlock Margin=“96,8,96,2” x:Name=“FirstName” Text=“FirstName” TextWrapping=“Wrap” HorizontalAlignment=“Center” FontSize=“13.333” Foreground=“#FF371818” /> <TextBlock Margin=“96,8” x:Name=“LastName” Text=“LastName” TextWrapping=“Wrap” HorizontalAlignment=“Center” FontSize=“13.333”/> <Button Height=“29” Margin=“87,4,96,4” x:Name=“ClickMe” Width=“142” HorizontalAlignment=“Center” />
- 在 App.xaml.cs 文件中,在
Application_Startup
方法中添加以下代码。private void Application_Startup(object sender, StartupEventArgs e) { CultureInfo culture = new CultureInfo("es"); Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; this.RootVisual = new MainPage(); }
在标头顶部包含 2 个命名空间,否则在构建时会给您带来错误。
using System.Globalization; using System.Threading;
- 在
UICultureDemo
解决方案中添加 2 个资源文件,NameFromStrings.resx 和 NameFromStrings.es.resx 文件。 - 打开 NameFromStrings.resx 文件并将访问修饰符更改为
public
,并输入一些文化应根据 UI 文化而变化的值。 - 在 NameFromStrings.es.resx 中输入与键值相同的名称,但值不同。
- 卸载
UICultureDemo
项目,如下所示。(右键单击UICulture
演示,然后单击“卸载项目”。) - 如下所示编辑 UICultureDemo.csproj 文件
- 在
SupportedCultures
元素中添加 en;es 语言,如下所示 - 保存更改并重新加载项目。
- 添加资源命名空间并在 App.xaml 文件中添加应用程序资源键
<!-- Xaml --> <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="UICultureDemo.App" xmlns:reource="clr-namespace:UICultureDemo" > <Application.Resources> <reource:NameFromString x:Key="myResource" /> </Application.Resources> </Application>
资源命名空间是
xmlns:reource="clr-namespace:UICultureDemo"
并且添加的资源是
<Application.Resources> <reource:NameFromString x:Key="myResource" /> </Application.Resources>
- 使用绑定源
myResource
将Text
属性与资源文件中相应的名称绑定,例如Text="{Binding FirstName, Source={StaticResource myResource}}"
示例
<TextBlock Margin=“96,8,96,2” x:Name=“FirstName” Text=“{Binding FirstName, Source={StaticResource myResource}}” TextWrapping=“Wrap” HorizontalAlignment=“Center” FontSize=“13.333” Foreground=“#FF371818” /> <TextBlock Margin=“96,8” x:Name=“LastName” Text=“{Binding LastName,Source={StaticResource myResource}}” TextWrapping=“Wrap” HorizontalAlignment=“Center” FontSize=“13.333” /> <Button Content=“{Binding ClickMe,Source={StaticResource myResource}}” Height=“29” Margin=“87,4,96,4” x:Name=“ClickMe” Width=“142” HorizontalAlignment=“Center” />
- 现在构建并运行项目。
- 要更改文化,请更改 App.xaml.cs 文件中的
CultureInfo
参数CultureInfo culture = new CultureInfo("es");
- 运行应用程序,您将看到以下窗口(样式会不同)
如果您在更改文化后看到以上窗口,则表示“一切正常”,或者您可以从 此处 下载此项目代码。
下一篇文章
在下一篇文章中,我将解释如何使用 Expression Blend 绑定用户控件以及如何使用类库在不同的项目之间共享相同的资源文件。 非常感谢您阅读本文。
历史
- 2010 年 11 月 1 日:最初的文章