VSTO插件中的本地化

3

这是否是在 VSTO Word 插件中实现本地化的正确方法?目前我只遵循一种命名约定,在搜索资源文件时将当前文化附加到其末尾。我已经阅读了足够多的不同材料以至于感到困惑,其中一种方法是使用 Resgen.exe 然后使用 Al.exe 生成 .dll,但我不完全理解为什么要这样做,是为了能够在无需重新编译的情况下更新语言吗?

System.Resources.ResourceManager resMgr;
System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
try
{
    // somehow I feel this isn't how it was meant to be? but it works
    resMgr = new System.Resources.ResourceManager("MyAddin.MyLocalisation." + ci, Assembly.GetExecutingAssembly());
    string title = resMgr.GetString("MyTitle");
}
1个回答

2
混淆可能是因为有5种不同的方法来为桌面应用程序创建资源文件。当使用本地化资源时,程序集链接器al.exe)和资源文件生成器resgen.exe)是主要工具。Resgen.exe将resx(XML)编译成资源(二进制),而al.exe将资源(二进制)组合成卫星程序集(dll)。卫星程序集通常为每个支持的文化定义中心与辐射)。卫星程序集可以更新而无需重新编译应用程序。

来自MSDN

您可以将资源(如字符串、图像或对象数据)包含在资源文件中,以便轻松地为您的应用程序提供这些资源。 .NET Framework 提供了五种创建资源文件的方法

1. 创建一个包含字符串资源的文本文件。您可以使用资源文件生成器(Resgen.exe)将文本文件转换为二进制资源(.resources)文件。然后,您可以通过使用语言编译器将二进制资源文件嵌入应用程序可执行文件或应用程序库中,或者通过使用程序集链接器(Al.exe)将其嵌入到卫星程序集中。有关更多信息,请参阅“文本文件中的资源”部分。

2. 创建一个包含字符串、图像或对象数据的XML资源(.resx)文件。您可以使用资源文件生成器(Resgen.exe)将.resx文件转换为二进制资源(.resources)文件。然后,您可以通过语言编译器将二进制资源文件嵌入应用程序可执行文件或应用程序库中,也可以通过使用程序集链接器(Al.exe)将其嵌入卫星程序集中。有关更多信息,请参阅.resx文件中的资源部分。
3. 使用System.Resources命名空间中的类型以编程方式创建XML资源(.resx)文件。您可以创建一个.resx文件,枚举其资源,并按名称检索特定资源。有关更多信息,请参阅“以编程方式使用.resx文件”主题。
4. 以编程方式创建二进制资源(.resources)文件。然后,您可以通过语言编译器将该文件嵌入应用程序可执行文件或应用程序库中,也可以通过使用程序集链接器(Al.exe)将其嵌入卫星程序集中。有关更多信息,请参阅.resources文件中的资源部分。
使用Visual Studio创建资源文件并将其包含在项目中。Visual Studio提供了一个资源编辑器,可以让您添加、删除和修改资源。在编译时,资源文件会自动转换为二进制.resources文件,并嵌入到应用程序程序集或卫星程序集中。有关更多信息,请参见Visual Studio中的资源文件部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接