translateclient google c# asp.net google-chrome cookies google-translate

c# - translateclient - com google cloud google cloud translate



Problemas al actualizar la cookie de Google Translate en Chrome (2)

Estoy tratando de permitir que el usuario establezca su idioma predeterminado. Cuando un usuario elige un idioma del menú desplegable y hace clic en "guardar", la página se vuelve a cargar y la cookie de Google Translate se actualiza, y por lo tanto el sitio se traduce al idioma que el usuario seleccionó. En FF e IE, los usuarios pueden configurar el idioma con el menú desplegable y luego cambiarlo a otro idioma. En Chrome, sin embargo, los usuarios pueden configurar el idioma la primera vez, pero luego no pueden cambiarlo a otro idioma.

Este problema solo aparece en el sitio de prueba y beta. Puedo actualizar el idioma en mi host local.

Estoy probando con Chrome versión 38.

Este es el código que establece la cookie por primera vez, y también que la actualiza cuando un usuario hace clic en Guardar.

public void ImplementUserPreferences(UserPreferences prefs) { //examples of prefs.GoogleTranslateDefaultLanguage: // af, sq, ar, sp, is.... HttpCookie languageCookie = new HttpCookie("googtrans", "/en/" + prefs.GoogleTranslateDefaultLanguage); AddOrSetCookie(languageCookie, "googtrans"); } private void AddOrSetCookie(HttpCookie cookie, String cookieName) { if (System.Web.HttpContext.Current.Request.Cookies[cookieName] == null) { System.Web.HttpContext.Current.Response.Cookies.Add(cookie); } else { System.Web.HttpContext.Current.Response.Cookies.Set(cookie); } }



Verifique los encabezados de respuesta, pero no creo que la cookie no se envíe en la solicitud cuando su dirección sea localhost. Por lo tanto, con su lógica, la preferencia se actualizará cada vez que la solicitud no tenga una cookie presente.

Un HttpResponse no devolverá las cookies que vinieron en la solicitud, solo agrega las cookies que usted quiere establecer en la respuesta. Entonces, cuando está probando en el sitio beta, se envía una solicitud con una cookie después de que se haya configurado, y llamará al código en la condición de else. El método HttpCookieCollection.Set (...) no agrega una cookie, solo actualiza una que ya existe en la colección. Me gustaría cambiar el código para leer así:

private void AddOrSetCookie(HttpCookie cookie, String cookieName) { if (System.Web.HttpContext.Current.Request.Cookies[cookieName] == null || System.Web.HttpContext.Current.Request.Cookies[cookieName].Value != cookie.Value ) { System.Web.HttpContext.Current.Response.Cookies.Add(cookie); } }