UI Culture changes back after some time

16 posts, 0 answers
  1. Jan
    Jan avatar
    20 posts
    Member since:
    Aug 2008

    Posted 19 Jan 2010 Link to this post

    Hello,

    I am using RadScheduler in ASP.NET MVC - WebService binding. I am setting culture in OnLoad event, but this setting is reverted to English culture after some time (usually 2-3s). I observed, that it happens after my SchedulerProvider method GetAppointments(RadScheduler owner) is called, but not sure.
    Do You have any clue what is wrong with that?I am stuck on this for a while.

    Thank You

    Here is my sample code:

    <script runat="server">  
    protected override void OnLoad(EventArgs e) 
        { 
           
            // Set appropriate culture for calendar 
            RadScheduler1.Culture = CRM.Web.Code.Globalization.GlobalizationManager.CurrentUICulture; 
             
          
            // Set first and last day of a week 
            switch (RadScheduler1.Culture.ToString()) 
            { 
                case "en-US": 
                    RadScheduler1.FirstDayOfWeek = DayOfWeek.Sunday; 
                    RadScheduler1.LastDayOfWeek = DayOfWeek.Saturday; 
                    break; 
                default: 
                    RadScheduler1.FirstDayOfWeek = DayOfWeek.Monday; 
                    RadScheduler1.LastDayOfWeek = DayOfWeek.Sunday; 
                    break; 
            } 
     
            RadScheduler1.ShowAllDayRow = Model.ShowAllDayEvents; 
            RadScheduler1.WorkDayStartTime = Model.WorkDayStartTime; 
            RadScheduler1.WorkDayStartTime = Model.WorkDayEndTime; 
            RadScheduler1.DayStartTime = Model.DayStartTime; 
            RadScheduler1.DayEndTime = Model.DayEndTime; 
     
     
            // Export iCalendar 
            SchedulerAppointmentContextMenu.Items[0].Text = "ExportICalendar".GetLocalizedGlobal(); 
     
            // Delete 
            SchedulerAppointmentContextMenu.Items[2].Text = "Delete".GetLocalizedGlobal(); 
            base.OnLoad(e); 
            
        } 
        public override void VerifyRenderingInServerForm(Control control) 
        { 
     
        } 
    </script> 
       <telerik:RadCodeBlock runat="server" ID="InitialScriptCodeBlock1"
            <telerik:RadScriptManager ID="RadScriptManager1" runat="server"  
                EnableScriptGlobalization="true" /> 
     
                <telerik:RadScheduler runat="server" ID="RadScheduler1" AllowDelete="false" AllowEdit="true" RowHeight="16px"   
                    AllowInsert="false" MinutesPerRow="15" StartEditingInAdvancedForm="false" StartInsertingInAdvancedForm="false" 
                    OnClientAppointmentDoubleClick="OnClientAppointmentDoubleClick" OnClientTimeSlotClick="OnClientTimeSlotClick" OnClientAppointmentWebServiceUpdating="" 
                    OnClientAppointmentDeleting="OnClientAppointmentDeleting" OnClientAppointmentDataBound="OnClientAppointmentDataBound" 
                    Height="900px" OnClientAppointmentEditing="OnClientAppointmentEditing" OnClientAppointmentContextMenuItemClicked="appointmentContextMenuItemClicked" 
                    SelectedView="WeekView" DayHeaderDateFormat="dddd, dd MMMM yyyy" HoursPanelTimeFormat="HH:mm"
                    <AppointmentContextMenus> 
                        <%--The appointment context menu interaction is handled on the client--%> 
                        <%--See the JavaScript code above--%> 
                        <telerik:RadSchedulerContextMenu runat="server" ID="SchedulerAppointmentContextMenu"
                            <Items> 
                                <telerik:RadMenuItem Text="Export iCalendar" Value="GenerateVCal" ImageUrl="~/Content/Images/Icons/iCalendar16.png" /> 
                                <telerik:RadMenuItem IsSeparator="True" /> 
                                <telerik:RadMenuItem Text="Delete" Value="CommandDelete" ImageUrl="~/Content/Images/DataEditing/Delete.gif" 
                                    Enabled="True" /> 
                            </Items> 
                        </telerik:RadSchedulerContextMenu> 
                    </AppointmentContextMenus> 
                    <TimelineView GroupBy="Calendar" GroupingDirection="Vertical" /> 
                   
                    <AdvancedForm Enabled="false" EnableResourceEditing="false" /> 
                    <WebServiceSettings Path="~/Models/SchedulerWebService.asmx" ResourcePopulationMode="ServerSide" /> 
                </telerik:RadScheduler> 
            
        </telerik:RadCodeBlock> 
     
  2. T. Tsonev
    Admin
    T. Tsonev avatar
    2772 posts

    Posted 21 Jan 2010 Link to this post

    Hi Jan,

    Thank you for sending detailed problem description.

    In order for the client-side RadScriptManager globalization to work you must also set the Page culture to be the same as that of RadScheduler:

    // Set appropriate culture for calendar
    RadScheduler1.Culture = CRM.Web.Code.Globalization.GlobalizationManager.CurrentUICulture;
    Page.Culture = RadScheduler1.Culture.ToString();

    I hope this helps.

    All the best,
    Tsvetomir Tsonev
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Jan
    Jan avatar
    20 posts
    Member since:
    Aug 2008

    Posted 21 Jan 2010 Link to this post

    Hello,

    thank You for Your reply. I have tried what You suggested, but with no success :( It is ok for few seconds and then it turns back to English.
    Do You have another tip what could be wrong with my code?

    Thank You Jan
  5. T. Tsonev
    Admin
    T. Tsonev avatar
    2772 posts

    Posted 21 Jan 2010 Link to this post

    Hello Jan,

    Can you try setting the Page culture declaratively as described here:

    http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

    Also can you check the value of Sys.CultureInfo.CurrentCulture variable in the browser? If it matches your set culture the scheduler should render correctly.

    All the best,
    Tsvetomir Tsonev
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
  6. Jan
    Jan avatar
    20 posts
    Member since:
    Aug 2008

    Posted 26 Jan 2010 Link to this post

    Hello,

    I did exactly what You have suggested, but still with no luck. I have culture "cs-CZ" set in my browser. I found out, that the culture changes back to "en-US" in GetAppointments(RadScheduler owner)   method, but I can´t figure out the reason.

    Kind regards Jan


  7. Peter
    Admin
    Peter avatar
    6637 posts

    Posted 27 Jan 2010 Link to this post

    Hi Jan,

    Could you please try the following help topic and let us know if it helps:
    http://www.telerik.com/help/aspnet-ajax/localization-web-services-mode.html ?


    Greetings,
    Peter
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
  8. Jan
    Jan avatar
    20 posts
    Member since:
    Aug 2008

    Posted 27 Jan 2010 Link to this post

    Hello,

    Thank You for Your reply. I have tried to set culture manualy, but it does not work for me.
    Could this error occur while I am using custom ResourceProviderFactory ? I forget, that Your controls should need default one.
    If so, is there any workaround?

    <globalization enableClientBasedCulture="false" resourceProviderFactoryType="CRM.Localization.LocalizedResourceFactory, CRM.Localization" uiCulture="cs-CZ" culture="cs-CZ" />
       
    Kind regards Jan
  9. T. Tsonev
    Admin
    T. Tsonev avatar
    2772 posts

    Posted 01 Feb 2010 Link to this post

    Hello Jan,

    The custom resource provider factory shouldn't be a problem - it doesn't seem to be used by the ScriptManager at all.

    At the moment, I'm still not convinced that the culture is getting set on the client. Can you paste this in the address bar of the loaded page?
    javascript:alert(Sys.CultureInfo.CurrentCulture.name);

    If it matches your set culture then the problem is somewhere else. The full page source and/or live URL will help us a lot in tracking it down.

    Kind regards,
    Tsvetomir Tsonev
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
  10. Jan
    Jan avatar
    20 posts
    Member since:
    Aug 2008

    Posted 02 Feb 2010 Link to this post

    Hello,

    You are right, my client culture does not match the culture, which I have set on the server side. It is weird behavior for me. When I try to show the current culture with this code  <%= System.Threading.Thread.CurrentThread.CurrentCulture.Name %>, everything is ok and it matches the set culture.

    I override the culture in my page declaration (Culture="cs-CZ" UICulture="cs-CZ") and also in OnLoad method and in RadScheduler declaration, but nothing helped.
    Anyway, I suppose it´s an error in my code somewhere.
    Thank You for Your patient help.

    Jan
  11. Jan
    Jan avatar
    20 posts
    Member since:
    Aug 2008

    Posted 22 Feb 2010 Link to this post

    Hello again,

    I´m still lost in RadScheduler localization.Thanks to Your help, I found that the problem lies in MicrosoftAjax.js script which is rendered by Telerik_Web_UI_WebResource.
    Sys.CultureInfo.CurrentCulture is overriden to "en-US" in this part of the script:
    ....
    if(typeof __cultureInfo==="undefined")var __cultureInfo='{"name":"en-US","numberFormat"
    ....

    My RadScriptManager registration follows:

     <telerik:RadScriptManager ID="RadScriptManager1"
        runat="server"
        EnableScriptGlobalization="true"
        EnableScriptLocalization="true"
         >     </telerik:RadScriptManager>


    I get "en-US" when I call : javascript:alert(Sys.CultureInfo.CurrentCulture.name); 
    System.Threading.Thread.CurrentThread.CurrentCulture.Name is "cs-CZ "

    I really appreciate any help

    Kind Regards Jan

    P.s I can give You access to my application in case You will need more information.


  12. T. Tsonev
    Admin
    T. Tsonev avatar
    2772 posts

    Posted 26 Feb 2010 Link to this post

    Hello Jan,

    Apologies for the late reply. I've set the culture on a test page to cs-CZ and this is what I see rendered in the form, right before the MS AJAX scripts are included:

    var __cultureInfo = '{"name":"cs-CZ","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":",","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":" ","CurrencySymbol":"Kč","NaNSymbol":"Není číslo","CurrencyNegativePattern":8,"NumberNegativePattern":1,"PercentPositivePattern":1,"PercentNegativePattern":1,"NegativeInfinitySymbol":"-nekonečno","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":",","NumberGroupSeparator":" ","CurrencyPositivePattern":3,"PositiveInfinitySymbol":"+nekonečno","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":",","PercentGroupSeparator":" ","PercentSymbol":"%","PerMilleSymbol":"‰","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"dop.","Calendar":{"MinSupportedDateTime":"\/Date(-62135596800000)\/","MaxSupportedDateTime":"\/Date(253402293599999)\/","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":".","FirstDayOfWeek":1,"CalendarWeekRule":0,"FullDateTimePattern":"d. MMMM yyyy H:mm:ss","LongDatePattern":"d. MMMM yyyy","LongTimePattern":"H:mm:ss","MonthDayPattern":"dd MMMM","PMDesignator":"odp.","RFC1123Pattern":"ddd, dd MMM yyyy HH\u0027:\u0027mm\u0027:\u0027ss \u0027GMT\u0027","ShortDatePattern":"d.M.yyyy","ShortTimePattern":"H:mm","SortableDateTimePattern":"yyyy\u0027-\u0027MM\u0027-\u0027dd\u0027T\u0027HH\u0027:\u0027mm\u0027:\u0027ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\u0027-\u0027MM\u0027-\u0027dd HH\u0027:\u0027mm\u0027:\u0027ss\u0027Z\u0027","YearMonthPattern":"MMMM yyyy","AbbreviatedDayNames":["ne","po","út","st","čt","pá","so"],"ShortestDayNames":["ne","po","út","st","čt","pá","so"],"DayNames":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"AbbreviatedMonthNames":["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII",""],"MonthNames":["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec",""],"IsReadOnly":true,"NativeCalendarName":"gregoriánský kalendář","AbbreviatedMonthGenitiveNames":["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII",""],"MonthGenitiveNames":["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince",""]}}';

    If this is on your page, your localization should be working. We'll be able to check this, as well for any other possible issues, if you can indeed grant us temporary access to the live application.

    If all else fails and we can't persuade ASP.NET to render it you can just add this in a script tag right after the opening form tag.

    I hope this helps.

    Kind regards,
    Tsvetomir Tsonev
    the Telerik team

    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
  13. Philipp
    Philipp avatar
    27 posts
    Member since:
    Mar 2011

    Posted 05 Jan 2012 Link to this post

    Hi everybody,

    first of all a happy new year to Team-Telerik.

    Is there a solution for this strange behavior?
    I am facing exactly the same problem. Server Side Culture is de-DE and
    in clientside AppointmentDatabound javascript returns en-US and the days switch back to US-Format.

    Greetings

    Philipp
  14. Peter
    Admin
    Peter avatar
    6637 posts

    Posted 05 Jan 2012 Link to this post

    Hi,

    If you use a Web Service or a WCF Web Service to populate RadScheduler, please use the approach from this help topic - http://www.telerik.com/help/aspnet-ajax/scheduler-localization-web-services-mode.html.

    All the best,
    Peter
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
  15. S
    S avatar
    1 posts
    Member since:
    Dec 2015

    Posted 17 Dec 2015 in reply to Jan Link to this post

    Hi,

     

    If you want to set the Culture that should not change, set that in Application_BeginRequest in your Global.asax.

    I had the same issue and this solved by doing above,

  16. Ingemar
    Ingemar avatar
    17 posts
    Member since:
    Apr 2012

    Posted 01 Nov Link to this post

    Is there any solution to this problem?

    How can it be that the Culture setting of RadScheduler does not set the culture of the RAD scheduler?

  17. Anton
    Admin
    Anton avatar
    61 posts

    Posted 02 Nov Link to this post

    Hi,

    I would suggest to continue our conversation in the other thread you've opened. Also I would ask you avoiding threads duplication for an issue, which allows us to provide you with better support.

    Regards,
    Anton
    Telerik by Progress
    Check out the new UI for ASP.NET Core, the most complete UI suite for ASP.NET Core development on the market, with 60+ tried-and-tested widgets, based on Kendo UI.
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017