2009-10-27 3 views
7

Mon application Web utilise allot de javascript, et dans le javascript j'ai des messages que je rapporte à l'utilisateur. Quelle est la meilleure façon d'extraire le texte de mon javascript et de le stocker en externe dans un autre fichier de langue .js, et comment le référencer dans mon code js à l'avenir?comment créer un fichier de langue pour le texte dans les fichiers javascript?

Des meilleures pratiques pour cela?

Répondre

16

Créer un littéral d'objet:

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

que vous pouvez ensuite faire référence, comme ceci:

if (error) alert(messages.error); 


Cela fonctionne très bien si vous souhaitez implémenter plusieurs langues. Ce que je fais habituellement est d'inclure un fichier côté serveur qui rend un objet "messages" selon la langue choisie dans la configuration de l'application ou selon la culture de l'interface utilisateur (dans le cas d'ASP.NET).

Voilà comment vous l'utiliser, en ligne:

<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> 


La chose intéressante à propos de l'utilisation d'un objet littéral, est que le code est plus bavard. Au lieu d'utiliser un tableau, comme ceci: alert(messages[0]) vous faites ceci: alert(messages.error) qui est un peu plus explicatif. D'un côté, tous vos messages sont définis dans un objet, au lieu d'être définis par un ensemble de variables, évitant ainsi de polluer l'espace de noms global.


En JavaScript, vous pouvez modifier des objets lors de l'exécution. Donc, si vous voulez ajouter plus de messages à l'objet, plus tard dans votre code, vous souhaitez simplement faire ceci:

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

Je vois les autres ont dit vous comment le stocker dans un fichier JS (comme vous l'avez demandé). Mais pourrais-je vous suggérer de le stocker dans un fichier XML? C'est un peu plus facile à gérer (IMO).

Créez un fichier XML, avec des entrées comme ceci:

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

Ensuite, vous pouvez facilement saisir tout le texte dont vous avez besoin dans votre régulier 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(); 
     }); 
    } 
}); 

Et d'invoquer certains texte, il est aussi simple que cela:

alert(text['welcome_to_site']);

Et yo Vous pouvez toujours facilement le modifier dans le fichier XML: ajouter du texte, supprimer du texte, modifier le texte. C'est très simple. Il permet également de séparer votre conception et ouvre des portes pour que vous puissiez permettre à d'autres de modifier du texte, qui autrement ne pourraient pas le faire s'ils devaient trier un tas de JavaScript.

Questions connexes