Intento trabajar con objetos y matrices con fines de localización. Ahora el problema es que requiere mucha codificación para cargar el valor correcto de los objetos 1 por 1.
Como tal, traté de simplificar el proceso creando nombres de variables a partir de otras variables. Por lo tanto, verifico el atributo lang e intento obtener ese valor como parte de otro nombre de variable.
Sin embargo, esto no funciona en absoluto.
Como ejemplo podría tener un objeto var text = { en: 'text', de: 'text' }
Podría hacer cargar el texto correcto usando:
var language = document.documentElement.lang.toLowerCase(); switch (language) { case 'en': element.innerHTML = text.en; break; case 'de' element.innerHTML = text.de; break; }Esto será realmente molesto para el código, así que traté de usar los siguientes métodos en su lugar:
element.innerHTML = text.language; element.innerHTML = `text.${language}`; ...Nada de esto funciona, por supuesto.
Así que realmente necesito ayuda para encontrar una manera de crear un nombre de variable fusionando diferentes nombres de variables como:
var a = 'text.'; var b = 'en'; var c = ab; => text.en;¡Al final, debe reconocerse como un nombre de variable y no como una cadena!
var text = { en: 'Hello World', de: 'Hallo Welt', es: 'Hola Mundo', it: 'Ciao Mundo', fr: 'Bonjour Le Monde' } /* getting the language of the document */ var language = document.documentElement.lang.toLowerCase(); window.addEventListener('DOMContentLoaded', function() { var ele = document.body; /*does obviosly not work*/ var content = `text.${language}`; ele.innerHTML = content; /*does work*/ console.log(`the set language is: ${language}`); }); <!DOCTYPE html> <html lang="de" dir="ltr"> <head></head> <body></body> </html>const content = text[language]