我正在开发一个VSTO插件,希望根据Office产品的语言版本进行本地化。理论上,以下是如何实现:
int lcid = Application.LanguageSettings.get_LanguageID(Office.MsoAppLanguageID.msoLanguageIDUI);
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lcid);
为了使这个工作,我需要初始化
Application
。所以我能执行这段代码的最早时间是在启动事件处理程序中。然而,在这一点上,CreateRibbonExtensibilityObject()
已经被调用,因此我的自定义功能区选项卡的标题至少会显示为Windows语言,这可能是不同的。在功能区类中,我有一个onLoad事件处理程序,可以在其中存储
IRibbonUI
的实例以供以后使用。我可以将此实例交给插件类,并让其调用IRibbonUI.Invalidate()
。但这似乎有点奇怪——创建一个功能区只是为了在几微秒后使其无效。所以我想知道——并在这里询问——是否有一种更优雅的方式根据Office产品的语言版本本地化vsto插件的功能区。(我看到了这个类似的问题,但那里提供的方法在我看来更糟糕。)