简体中文
I18N 国际化
想让插件显示不同语言,可以像普通 WinUI 项目一样使用 .resw 文件。工具会帮你生成读取文字的代码。
准备语言文件
先在 Tools.Config.props 中把 AutoGenerateI18N 设为 true,然后按语言创建文件夹:
text
Strings/
en-us/
Resources.resw
zh-cn/
Resources.resw在两个 Resources.resw 中都添加 Download 这个键,分别填写对应语言的文字。键名会用来生成 C# 属性,所以尽量使用 Download 这样的合法标识符。
在代码中读取文字
构建一次项目后,就可以使用 {程序集名称}.I18n 下的帮助类了。下面三种写法都能读取 Download:
csharp
using ShadowExample.Plugin.Emoji.I18n;
string first = ResourcesHelper.GetString(ResourceKey.Download);
string second = ResourcesHelper.GetString("Download");
string third = I18N.Download;通常直接用 I18N.Download 最方便。如果键名是运行时才知道的字符串,就用 ResourcesHelper.GetString(...)。
在 XAML 中使用
引入生成的命名空间,再用 Locale 读取文字:
xml
<UserControl
x:Class="ShadowExample.Plugin.Emoji.Controls.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i18n="using:ShadowExample.Plugin.Emoji.I18n">
<TextBlock Text="{i18n:Locale Key=Download}" />
</UserControl>这里的命名空间跟着程序集名称走。如果你改了程序集名称,也要一起修改 using 和 XAML 中的引用。
Locale 会在加载 XAML 时读取文字。如果应用支持运行中切换语言,需要自己刷新已经显示的内容。
打包时留意
外部插件会从自己的资源文件里读取文字,所以先加载插件,再使用这些帮助类。打包时保留生成的 PRI 和资源文件。
SDK 和标有 [MainPlugin(BuiltIn = true)] 的内置插件会从主程序资源中读取文字,确保资源已经随主程序一起部署即可。