There is no out of the box way to do this, you need to customize `Sitecore.Context.SetLanguage` function as 

    /// <summary>
    /// Sets the current language.
    /// This to extend the sitecore default SetLanguage behavior by adding expiration date for the language cookie
    /// </summary>
    
    /// <param name="language">The language.</param>
    /// <param name="persistent">if set to <c>true</c>, the value will be persisted (in a cookie).</param>
    /// <param name="ExpirationDate">The cookie expiration date, presistent should be set to <c>true</c> too </param>
    
    public static void SetLanguage(Language language, bool persistent, DateTime ExpirationDate)
            {
                Assert.ArgumentNotNull(language, "language");
                Context.Items["sc_Language"] = language;
    
                if (!persistent)
                {
                    return;
                }
    
                SiteContext site = Context.Site;
    
                if (site != null)
                {
                    string cookieKey = site.GetCookieKey("lang");
    
                    if (WebUtil.GetCookieValue(cookieKey) != language.Name)
                    {
                        WebUtil.SetCookieValue(cookieKey, language.Name, ExpirationDate);
                    }
                }
            }


I added more details at my blog :

http://alkouki.blogspot.com/2016/11/extend-sitecorecontextsetlanguage-to.html

Best,

Naim