2009-10-27 7 views
7

Mi aplicación web utiliza un montón de javascript, y en el javascript tengo mensajes que informe al usuario.cómo crear un archivo de idioma para texto en archivos javascript?

¿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 haré referencia en mi código js en el futuro?

¿Alguna de las mejores prácticas para esto?

Respuesta

16

Crear un objeto literal:

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

que luego se puede hacer referencia, así:

if (error) alert(messages.error); 


Esto funciona muy bien si se desea implementar varios idiomas. Lo que suelo hacer es incluir un archivo del lado del servidor que muestre un objeto de "mensajes" de acuerdo con el idioma seleccionado en la configuración de la aplicación o de acuerdo con la UI-culture (en el caso de ASP.NET).

Así es como usted lo utilizarí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 prolija. En lugar de utilizar una matriz, como esta: alert(messages[0]), haga esto: alert(messages.error) que es un poco más explicativo.

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


En JavaScript puede modificar objetos en tiempo de ejecución. Así que si usted quiere añadir más mensajes al objeto, más adelante en su código, usted acaba de hacer esto:

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

Una forma de hacerlo es tener un js separadas incluyen en su página que en realidad apunta a una secuencia de comandos del lado del servidor. Esta secuencia de comandos puede hacer eco a cabo las cuerdas que necesita de esta manera:

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

Y en su página web tienen la siguiente:

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

5

veo que los otros han dicho cómo almacenarlo en un archivo JS (como lo pidió). ¿Pero podría sugerir que lo almacene en un archivo XML, en su lugar? Es algo más fácil de administrar (IMO).

Crear 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 se puede agarrar fácilmente todo el texto que necesita en su habitual JS/jQuery:

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 alguna texto, que es tan simple como esto:

alert(text['welcome_to_site']);

Y yo 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 puertas para permitir que otros editen el texto, que de otro modo no podrían hacerlo si tuvieran que ordenar un montón de JavaScript.

Cuestiones relacionadas