c# - vsto 加载项中的本地化

标签 c# .net localization vsto

这是在 VSTO Word 插件中实现本地化的正确方法吗?现在我只是遵守命名约定,我将 Current Culture 附加到它搜索的资源文件中。我已经阅读了足够多的不同 Material 以致混淆,一种方法是使用 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");
}

最佳答案

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


来自MSDN :

You can include resources, such as strings, images, or object data, in resources files to make them easily available to your application. The .NET Framework offers five ways to create resources files:

<子>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 中的资源文件部分。

关于c# - vsto 加载项中的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12115740/

相关文章:

c# - 如何将可能是单个字符串或字符串列表的对象添加到 List<string>

c# - 如果鼠标按钮已弹起但不在此游戏对象上

C# 正则表达式字符串解析

c# - 找不到键为 'KeyName' 的资源对象

visual-studio-2008 - Visual Studio 2008 中的本地化

c# - 用作池的无序线程安全集合?

c# - 在我的控制台项目中生成偶数的更有效语法是什么?

.net - 混合 WinForms 和 WPF 应用程序中 .Net 3.5 中的 DPI 缩放

c# - VARIANT(VT_PTR) 的 COM 互操作和编码(marshal)处理

javascript - 如何在按键时获得本地化字符?