локализовать надстройку VSTO в соответствии с языком офисного продукта

Я разрабатываю надстройку VSTO и хочу, чтобы она была локализована в соответствии с языковой версией офисного продукта.Теоретически, как это сделать:

int lcid = Application.LanguageSettings.get_LanguageID(Office.MsoAppLanguageID.msoLanguageIDUI);
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lcid);

Для того, чтобы это работало, мне, конечно же, нужно инициализировать Приложение . Итак, самый ранний момент, когда я могу выполнить этот код, находится в обработчике события запуска. Однако в этот момент CreateRibbonExtensibilityObject () уже был вызван, поэтому, по крайней мере, заголовок моей настраиваемой вкладки ленты будет отображаться на языке Windows, который может отличаться. В классе ленты у меня есть обработчик события onLoad, где я храню экземпляр IRibbonUI для дальнейшего использования. Я мог бы передать этот экземпляр классу надстройки и позволить ему вызвать для него IRibbonUI.Invalidate () . Но это кажется немного странным - создать ленту только для того, чтобы через пару микросекунд сделать ее недействительной. Поэтому я задаюсь вопросом - и спрашиваю здесь - есть ли более элегантный способ локализовать ленту надстройки vsto в соответствии с языковой версией офисного продукта.

(Я видел этот аналогичный вопрос , но подход, предложенный там этим ответом , мне кажется еще хуже.)

5
задан Community 23 May 2017 в 11:52
поделиться