This is a migrated thread and some comments may be shown as answers.

Localization provider

3 Answers 90 Views
ChartView
This is a migrated thread and some comments may be shown as answers.
Alexey
Top achievements
Rank 1
Alexey asked on 11 May 2016, 10:30 AM

Trying to apply RadChartView localization. When overriding string "PaletteArctic" (lines 8,9) - the corresponding context menu item in control will not change the color of the chart.

Please reply if it is a bug or im doing it wrong way...

01.public ref class MyRadChartLocalizationProvider : Telerik::WinControls::UI::RadChartLocalizationProvider
02.{
03.public:
04.    virtual String^ GetLocalizedString(String ^id) override
05.    {
06.        if( id == "Palette" )
07.            return "Palette";
08.        else if( id == "PaletteArctic" )
09.            return "123";
10.
11.        return Telerik::WinControls::UI::RadChartLocalizationProvider::GetLocalizedString(id);
12.    }
13.};

Telerik::WinControls::UI::RadChartLocalizationProvider::CurrentProvider = gcnew MyRadChartLocalizationProvider;

c++/cli, visual studio 2010, RadControls_WinForms_2012_3_1017_dev

3 Answers, 1 is accepted

Sort by
0
Dimitar
Telerik team
answered on 11 May 2016, 12:35 PM
Hello Anton,

Thank you for writing.

We do not have any other reports of similar behavior. In addition, your code looks correct, however, you should set the localization provider in the forms constructor before the call of the InitializeComponent method.

In addition, the localization provider for RadChartView was introduced in Q1 2013 SP1 (version 2013.1.321). This is described in the release notes: Release History. You should not be able to use the provider with the 2012_3_1017 version. Could you please check which version you are using?

I am looking forward to your reply.

Regards,
Dimitar
Telerik
Do you need help with upgrading your AJAX, WPF or WinForms project? Check the Telerik API Analyzer and share your thoughts.
0
Alexey
Top achievements
Rank 1
answered on 11 May 2016, 01:46 PM

The version in the post above was incorrect, using Telerik_UI_For_WinForms_2016_1_216_Dev.msi

Initialization of localizators occurs before Application::Run, in main, and the localizations for other controls (commandbar, dock, message) works correctly.

0
Dimitar
Telerik team
answered on 12 May 2016, 08:40 AM
Hello Anton,

Thank you for writing back.

I was able to reproduce the observed issue with the specified version (2016.1.2016). I have logged the issue in our Feedback Portal. You can track the item for status changes and add your vote for it here.

This issue is caused because the palette is retrieved according to the menu item text. So to workaround this you should override the method which creates the context menu: 
class MyChartDataPointElementController : ChartDataPointElementController
{
    protected override RadContextMenu CreatePaletteMenu()
    {
        RadContextMenu menu = new RadContextMenu();
 
        RadChartLocalizationProvider localizationProvider = RadChartLocalizationProvider.CurrentProvider;
 
        RadMenuItem paletteItem = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.Palette));
 
        menu.Items.Add(paletteItem);
 
        RadMenuItem item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteArctic));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Arctic";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteAutumn));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Autumn";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteCold));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Gold";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteFlower));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Flower";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteForest));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Forest";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteGrayscale));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Grayscale";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteGround));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Ground";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteLilac));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Lilac";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteMetro));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Metro";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteNatural));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Natural";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PalettePastel));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Pastel";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteRainbow));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Rainbow";
        paletteItem.Items.Add(item);
 
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteSpring));
        item.Click += new System.EventHandler(item_Click);
        item.Tag ="Spring";
        paletteItem.Items.Add(item);
 
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteSummer));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Summer";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteWarm));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Warm";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteWindows8));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Windows8";
        paletteItem.Items.Add(item);
 
        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteSun));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Sun";
        paletteItem.Items.Add(item);
 
        return menu;
    }
 
    void item_Click(object sender, System.EventArgs e)
    {
        RadMenuItem item = sender as RadMenuItem;
        if (item != null)
        {
            this.Area.View.Palette = ChartPalette.FromKnownPalette(item.Tag.ToString());
        }
    }
}

You can use the above controler like this:
this.radChartView1.Controllers.Add(new MyChartDataPointElementController());

Your Telerik Points have been updated for this report.

Should you have any other questions do not hesitate to ask.
 
Regards,
Dimitar
Telerik
Do you need help with upgrading your AJAX, WPF or WinForms project? Check the Telerik API Analyzer and share your thoughts.
Tags
ChartView
Asked by
Alexey
Top achievements
Rank 1
Answers by
Dimitar
Telerik team
Alexey
Top achievements
Rank 1
Share this question
or