Buscador de idiomas, estores local del navegador de consultas -- typescript campo con i18n campo con angular-2+ campo con browser-storage camp codereview Relacionados El problema

Language switcher, consulting browser's localStorage


1
vote

problema

Español

Estoy usando angular 6 y ngx-traducir. Esta es mi función de cambio de interruptor

    switchLanguage(language: string) {     this.translate.use(language);     if (language !== 'ar' && document.getElementsByTagName('html')[0].hasAttribute('dir')) {       document.getElementsByTagName('html')[0].removeAttribute('dir');     } else if (language === 'ar' && !document.getElementsByTagName('html')[0].hasAttribute('dir')) {       document.getElementsByTagName('html')[0].setAttribute('dir', 'rtl');     }     // if this line worth it?     if (language !== JSON.parse(localStorage.getItem('lang'))) {     localStorage.setItem('lang', JSON.stringify(language));     }   }   

Estoy preguntando por esta línea en particular

  if (language !== JSON.parse(localStorage.getItem('lang')))    

Si no lo uso, significa que si el idioma es inglés y lo cambias al inglés, el almacenamiento local se va a actualizar. Sin embargo, si lo uso, significa que, cada vez que cambia de un idioma, le va a leer localStorage para verificar su valor antes de actualizar.

¿Es el costo de simplemente establecer el idioma mejor que el costo de comprobarlo primero?

Este método se llama cuando cambia el idioma y en 9988776655544332 constructor, básicamente en cada carga de página. ¿Hay una mejor manera de hacerlo?

Original en ingles

I'm using angular 6 and ngx-translate. This is my switch language function

  switchLanguage(language: string) {     this.translate.use(language);     if (language !== 'ar' && document.getElementsByTagName('html')[0].hasAttribute('dir')) {       document.getElementsByTagName('html')[0].removeAttribute('dir');     } else if (language === 'ar' && !document.getElementsByTagName('html')[0].hasAttribute('dir')) {       document.getElementsByTagName('html')[0].setAttribute('dir', 'rtl');     }     // if this line worth it?     if (language !== JSON.parse(localStorage.getItem('lang'))) {     localStorage.setItem('lang', JSON.stringify(language));     }   } 

I'm asking about this line in particular

if (language !== JSON.parse(localStorage.getItem('lang')))  

If I don't use it, it means that if the language is english and you switch it to english, the localStorage is going to be updated. If I use it however, it means that, every time you switch a language, it's going to read localstorage to check its value before updating.

Is the cost of just setting the language better than the cost of checking it first?

This method is getting called whenever you switch the language and in app.ts constructor, so basically on every page load. Is there a better way to do it?

           
       
       

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

La reescritura de LocalStorage es la práctica normal debido a un tiempo de reescritura ~ Igual de cheque.

Puede cambiar el código.

  localStorage.setItem('lang', language);   

Por cierto JSON.parse y JSON.stringify son acciones innecesarias en su código porque 99887776655443333 es 9988777665544334 . < / p>


Solo consideré el código asociado con tu pregunta.

 

The rewrite of LocalStorage is normal practice because of a rewrite time ~equal check time.

You can change the code.

localStorage.setItem('lang', language); 

By the way JSON.parse and JSON.stringify is unnecessary actions in your code because language is already string.


I only considered the code associated with your the question.

 
 

Relacionados problema

1  Lugares de servicio memoizados a través de Google Maps  ( Places memoized service via google maps ) 
Hice un servicio que guarda lugares para MailMessage11 Después de que el usuario haga clic en el botón izquierdo del ratón en el mapa. Cuando el usuario hace...

2  LocalStorage debería expirar después de 24 horas  ( Localstorage should expire after 24 hours ) 
El siguiente código es verificar si el navegador del usuario es IE y, si este es el caso y, aún no hay un almacenamiento local, establece un elemento local, q...

3  Funciones de almacenamiento local para carrito de compras del sitio web  ( Localstorage functions for website shopping cart ) 
Como parte de una aplicación web más grande que estamos produciendo, me pidieron que ayudara a construir funcionalidad para atar el carrito de compras en sor...

3  Obtendiendo imágenes y guardándolos en LocalStorage  ( Getting images and saving them to localstorage ) 
El código en este proyecto acepta una URL de imagen y crea una etiqueta 998877766655544330 , utilizando la URL de la imagen como el valor de atributo src . ...

4  Getters and Setters para localStorage  ( Getters and setters for localstorage ) 
He escrito el siguiente recibo / set para un nombre de usuario que se almacena en el almacenamiento local. ¿Crees que esto "me compra" algo o incluso quizás t...

2  Servicio de yandex-mapas para guardar lugares  ( Yandex maps service for save places ) 
Hice script que crea marcador en el mapa después del botón izquierdo del mouse, haga clic. Y después del botón derecho de ratón, haga clic en el marcador elim...

2  Carrito de la compra de AngularJS usando almacenamiento local  ( Angularjs shopping cart using local storage ) 
Hace dos semanas Comencé a escribir un código JavaScript y Angularjs para un cliente. Como orgulloso Newby, también debo estar al tanto de los peligros en el ...

1  Funda de prueba de la unidad para verificar si LOCALSTORAGE está vacío una vez que lo cierra sesión en la aplicación web  ( Unit test case to check if localstorage is empty once i logout of the web app ) 
Estoy tratando de eliminar miStorage local cuando me desconecto de la solicitud. Quiero escribir un caso de prueba de unidad en Jasmine para verificar si esta...

5  Lector / escritor de archivos utilizando XPConnect, ActiveX, Liveconnect, Java, HTML5 Storage, o HTTP  ( File reader writer using xpconnect activex liveconnect java html5 file stora ) 
Estoy escribiendo un escritor / lector de archivos en JavaScript; Quiero que funcione en archivos locales. Intenta usar el XPConnect de Firefox, retrocede en ...

6  Preferencias de ahorro en LocalStorage  ( Saving preferences in localstorage ) 
Estoy trabajando en una pequeña aplicación para ayudar a mis hijos a estudiar su multiplicación y su adición. Y tengo varias preferencias que quiero ser persi...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos