在vsto加载项中本地化

时间:2012-08-24 19:47:56

标签: c# .net localization vsto

这是在VSTO Word Addin中实现本地化的正确方法吗?现在我只是坚持一个命名约定,我将当前文化追加到它搜索的资源文件中。我已经阅读了足够多的不同材料,其中一种方法是使用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 个答案:

答案 0 :(得分:1)

混淆可能是因为(5) different ways to create resource files for desktop appsAssembly Linker al.exe )& Resource File Generator resgen.exe )是使用本地化资源时使用的主要工具。 Resgen.exe 会将resx( XML )编译为资源(二进制),而 al.exe 会合并资源(二进制)到附属程序集( dll )。 Satellite assemblies are typically defined for each supported culture hub& spoke )。可以更新附属程序集,而无需重新编译应用程序。


来自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文件部分中的参考资料。

<子> 5。使用Visual Studio创建资源文件并将其包含在项目中。 Visual Studio提供了一个资源编辑器,允许您添加,删除和修改资源。在编译时,资源文件自动转换为二进制.resources文件并嵌入应用程序集或附属程序集中。有关详细信息,请参阅Visual Studio中的资源文件部分。