Search code examples
wpfvisual-studio-2010.net-4.0ribbon

WPF: Localize WPF Ribbon QAT context menu texts


I'm playing with the .NET 4.0 WPF ribbon and am looking for a way to localize the Ribbon context menu strings. By default, right clicking the ribbon shows items like "Minimize the Ribbon". I'd like to localize these strings to for example display "Multifunktionsleiste verbergen".

How would I do that? Is this possible at all?


Solution

  • A (hopefully) complete extension to userxyz's solution:

            FieldInfo pi;
    
            pi = typeof(Microsoft.Windows.Controls.Ribbon.RibbonContextMenu).GetField("AddToQATText", (BindingFlags.NonPublic | BindingFlags.Static));
            pi.SetValue(null, "RibbonContext_AddToQATText");
            pi = typeof(Microsoft.Windows.Controls.Ribbon.RibbonContextMenu).GetField("RemoveFromQATText", (BindingFlags.NonPublic | BindingFlags.Static));
            pi.SetValue(null, "RibbonContext_RemoveFromQATText");
            pi = typeof(Microsoft.Windows.Controls.Ribbon.RibbonContextMenu).GetField("ShowQATAboveText", (BindingFlags.NonPublic | BindingFlags.Static));
            pi.SetValue(null, "RibbonContext_ShowQATAboveText");
            pi = typeof(Microsoft.Windows.Controls.Ribbon.RibbonContextMenu).GetField("ShowQATBelowText", (BindingFlags.NonPublic | BindingFlags.Static));
            pi.SetValue(null, "RibbonContext_ShowQATBelowText");
            pi = typeof(Microsoft.Windows.Controls.Ribbon.RibbonContextMenu).GetField("MaximizeTheRibbonText", (BindingFlags.NonPublic | BindingFlags.Static));
            pi.SetValue(null, "RibbonContext_MaximizeTheRibbonText");
            pi = typeof(Microsoft.Windows.Controls.Ribbon.RibbonContextMenu).GetField("MinimizeTheRibbonText", (BindingFlags.NonPublic | BindingFlags.Static));
            pi.SetValue(null, "RibbonContext_MinimizeTheRibbonText");