Pregunta

Mi aplicación web usa una gran cantidad de javascript, y en el javascript tengo mensajes que informo al usuario.

¿Cuál es la mejor manera de extraer el texto de mi javascript y almacenarlo externamente en otro archivo de idioma .js, y cómo lo referenciaría en mi código js en adelante?

¿Alguna práctica recomendada para esto?

¿Fue útil?

Solución

Crear un objeto literal:

var messages = {
    welcome: "Welcome",
    goodbye: "Goodbye",
    error: "Something bad happend. Sowwy!"
};

Al cual puede hacer referencia, así:

if (error) alert(messages.error);


Esto funciona muy bien si desea implementar varios idiomas. Lo que suelo hacer es incluir un archivo del lado del servidor que muestra un mensaje "". objeto según el idioma seleccionado en la configuración de la aplicación o según la cultura de la interfaz de usuario (en el caso de ASP.NET).

Así es como lo usaría, en línea:

<head>
    <!-- messages.aspx renders out the object literal -->
    <script type="text/javascript" src="messages.aspx"></script>

    <script type="text/javascript">

        /* when messages.aspx is included it provides you with an object literal
           as a global variable. The example below would alert "Something bad
           happend. Sowwy!" */

        if (error) alert(messages.error);

    </script>
</head>


Lo bueno de usar un objeto literal es que el código es más detallado. En lugar de usar una matriz, como esta: alert (messages [0]) , haga esto: alert (messages.error) que es un poco más explicativo.

En una nota al margen: todos sus mensajes se definen en un objeto, en lugar de estar definidos por un grupo de variables, evitando así contaminar el espacio de nombres global.


En JavaScript puede modificar objetos en tiempo de ejecución. Entonces, si desea agregar más mensajes al objeto, más adelante en su código, simplemente haga esto:

messages.newMessageAddedLaterOnInTheCode = "This is a new message";

Otros consejos

Veo que los demás le han dicho cómo almacenarlo en un archivo JS (como usted pidió). ¿Pero podría sugerirle que lo almacene en un archivo XML? Es algo más fácil de administrar (IMO).

Cree un archivo XML, con entradas como esta:

<text id="welcome_to_site">Welcome to our site!</text>
<text id="come_back_soon">Come back soon!</text>

Entonces puede tomar fácilmente todo el texto que necesita en su JS / jQuery normal:

var text = new Object();
$.ajax({
    async: false,
    type: 'GET',
    url: 'text.xml',
    dataType: "xml",
    success: function(xml){
        $(xml).find('text').each(function(){
            text[$(this).attr('id')] = $(this).text();
        });
    }
});

Y para invocar un texto, es tan simple como esto:

alert(text['welcome_to_site'font>);

Y siempre puede cambiarlo fácilmente en el archivo XML: agregar texto, eliminar texto, editar texto. Es muy sencillo. También ayuda a separar su diseño y abre las puertas para que otros puedan editar el texto, que de otro modo no podrían hacerlo si tuvieran que clasificar un montón de JavaScript.

Una forma de hacerlo es tener un js separado incluido en su página que realmente apunte a un script del lado del servidor. Este script puede hacer eco de las cadenas que necesita de esta manera:

var STRINGS = {'greeting': "Hello", 'error': "Something went wrong"};

Y en tu página web tienes esto:     

Hacemos esto para http://addons.mozilla.org aquí: http://addons.mozilla.org/en-US/firefox/pages/js_constants.js

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top