跳到主要内容
版本:11.0.0

使用 ResX 进行本地化

本地化是为全球用户提供出色用户体验的关键步骤。在 .NET 中,可以使用 ResXResourceReaderResXResourceWriter 类来读取和写入基于 XML 的资源文件(.resx)。本指南将引导您通过使用 ResX 文件来本地化 Avalonia 应用程序。

信息

要了解这些概念在实际操作中的完整示例,请查看 示例应用程序.

添加 ResX 文件到项目

在进行本地化之前,您需要为每种语言添加相应的 ResX 文件。对于本指南,我们将考虑三个 ResX 文件,分别对应以下语言:

  • Resources.fil-PH.resx(菲律宾语)
  • Resources.ja-JP.resx(日语)
  • Resources.resx(默认语言,通常为英语)

每个 ResX 文件将包含与应用程序中使用的键相对应的翻译文本。

在本例中,我们将新文件添加到Assets文件夹中。由于.NET生成器根据文件夹结构创建名称空间,可能会有所不同。

设置文化(Culture)

为了在应用程序中使用特定的语言,您需要设置当前的文化(Culture)。这可以在 App.axaml.cs 文件中完成。下面的示例将文化(Culture)设置为菲律宾语(fil-PH):

App.xaml.cs
public partial class App : Application
{
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}

public override void OnFrameworkInitializationCompleted()
{
Assets.Resources.Culture = new CultureInfo("fil-PH");
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow
{
DataContext = new MainWindowViewModel(),
};
}

base.OnFrameworkInitializationCompleted();
}
}

根据需要,将 fil-PH 替换为适当的文化代码。

在视图中使用本地化文本

要在视图中使用本地化文本,您可以在 XAML 中静态地引用资源:

<TextBlock Text="{x:Static assets:Resources.GreetingText}"/>

在上面的示例中,GreetingText 是与 ResX 文件中的字符串对应的键。{x:Static} 标记扩展用于引用在 .NET 类中定义的静态属性,而在这种情况下,即资源文件(assets:Resources.GreetingText)。

就是这样!现在您已成功使用 ResX 进行了 Avalonia 应用程序的本地化。通过设置文化为不同的区域设置,您可以以所选语言显示用户界面,从而创建支持多种语言并面向全球用户的应用程序。