You can add multilingual ribbon items that adapt to the display language. For this, the ribbon classes provide properties and methods to handle multilingual elements, for example:
Since the Eplan GUI does not support multilingual ribbon items it is necessary to implement a workaround like this:
Use the Eplan.EplApi.OnMainStart event to add the multilingual ribbon items in the current display language on application start and remove those items via the Eplan.EplApi.OnMainEnd event when closing the application. The following example illustrates the procedure:
| C# |
Copy Code
|
|---|---|
class MyStartEventListener { Eplan.EplApi.ApplicationFramework.EventHandler m_myHandler = new Eplan.EplApi.ApplicationFramework.EventHandler(); public MyStartEventListener() { m_myHandler.SetEvent("Eplan.EplApi.OnMainStart"); m_myHandler.EplanEvent += MyHandler_EplanEvent; } private void MyHandler_EplanEvent(IEventParameter iEventParameter) { MyGuiHandlingClass myGuiHandlingClass = new MyGuiHandlingClass(); // Add your multilingual ribbon items on P8 application start. // The current display language determines the language of your ribbon items in GUI. myGuiHandlingClass.AddGuiElements(); } } class MyEndEventListener { Eplan.EplApi.ApplicationFramework.EventHandler m_myHandler = new Eplan.EplApi.ApplicationFramework.EventHandler(); public MyEndEventListener() { m_myHandler.SetEvent("Eplan.EplApi.OnMainEnd"); m_myHandler.EplanEvent += MyHandler_EplanEvent; } private void MyHandler_EplanEvent(IEventParameter iEventParameter) { MyGuiHandlingClass myGuiHandlingClass = new MyGuiHandlingClass(); // Remove your multilingual ribbon items when closing the application. myGuiHandlingClass.RemoveGuiElements(); } } public class AddInModule : IEplAddIn { private MyStartEventListener m_StartEventHandler; private MyEndEventListener m_EndEventHandler; public bool OnRegister(ref System.Boolean bLoadOnStart) { bLoadOnStart = true; return true; } public bool OnUnregister() { return true; } public bool OnInit() { m_StartEventHandler = new MyStartEventListener(); m_EndEventHandler = new MyEndEventListener(); return true; } public bool OnInitGui() { return true; } public bool OnExit() { return true; } } public class MyGuiHandlingClass { private const string m_tabNameEng = "My English tab"; private const string m_tabNameGer = "Mein deutscher Tab"; public void AddGuiElements() { // Perpare the multilingual texts. MultiLangString tabName = new MultiLangString(); tabName.AddString(ISOCode.Language.L_en_US, m_tabNameEng); tabName.AddString(ISOCode.Language.L_de_DE, m_tabNameGer); MultiLangString CGName = new MultiLangString(); CGName.AddString(ISOCode.Language.L_en_US, "English CG"); CGName.AddString(ISOCode.Language.L_de_DE, "Deutsche CG"); MultiLangString buttonText = new MultiLangString(); buttonText.AddString(ISOCode.Language.L_en_US, "My English button"); buttonText.AddString(ISOCode.Language.L_de_DE, "Mein deutscher Button"); MultiLangString buttonDescription = new MultiLangString(); buttonDescription.AddString(ISOCode.Language.L_en_US, "This is the description of my English button."); buttonDescription.AddString(ISOCode.Language.L_de_DE, "Dies ist die Beschreibung meines deutschen Buttons."); MultiLangString buttonTooltip = new MultiLangString(); buttonTooltip.AddString(ISOCode.Language.L_en_US, "This is the tooltip for my English button."); buttonTooltip.AddString(ISOCode.Language.L_de_DE, "Dies ist der Tooltip meines deutschen Buttons."); // Set up your multilingual ribbon items and add them to the ribbon bar. RibbonTab tab = new RibbonBar().AddTab(tabName, 1); RibbonCommandGroup CG = tab.AddCommandGroup(CGName, 0); string buttonAction = "Action1"; RibbonCommandInfo commandInfo = new RibbonCommandInfo("dummy button text", buttonAction); // The multilingual button text is used over the language-insensitive button text // from the RibbonCommandInfo constructor. commandInfo.MultiLangButtonText = buttonText; commandInfo.MultiLangDescription = buttonDescription; commandInfo.MultiLangTooltip = buttonTooltip; commandInfo.Icon = new RibbonIcon(CommandIcon.Circle_1); commandInfo.IndexButtonPosition = 0; CG.AddCommand(commandInfo); } public void RemoveGuiElements() { var ribbonBar = new RibbonBar(); var tab = ribbonBar.GetTab(m_tabNameEng) ?? ribbonBar.GetTab(m_tabNameGer); tab?.Remove(); } } |
|