3

这是在 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");
}
4

1 回答 1

2

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


来自MSDN

您可以在资源文件中包含诸如字符串、图像或对象数据之类的资源,以便您的应用程序可以轻松使用它们。.NET Framework 提供了五种创建资源文件的方法

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

2. 创建一个包含字符串、图像或对象数据的 XML 资源 (.resx) 文件。您可以使用资源文件生成器 (Resgen.exe) 将 .resx 文件转换为二进制资源 (.resources) 文件。然后,您可以使用语言编译器将二进制资源文件嵌入到应用程序可执行文件或应用程序库中,也可以使用 Assembly Linker (Al.exe) 将其嵌入到附属程序集中。有关详细信息,请参阅 .resx 文件中的资源部分。

3. 使用 System.Resources 命名空间中的类型以编程方式创建 XML 资源 (.resx) 文件。您可以创建 .resx 文件、枚举其资源并按名称检索特定资源。有关详细信息,请参阅以编程方式使用 .resx 文件主题。

4. 以编程方式创建二进制资源 (.resources) 文件。然后,您可以使用语言编译器将该文件嵌入到应用程序可执行文件或应用程序库中,也可以使用程序集链接器 (Al.exe) 将其嵌入到附属程序集中。有关详细信息,请参阅 .resources 文件中的资源部分。

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

于 2012-08-27T18:47:57.200 回答