2009-10-27 11 views
7

Moja aplikacja internetowa korzysta z całego javascript, aw javascript mam wiadomości, które przekazuję użytkownikowi.jak utworzyć plik językowy dla tekstu w plikach javascript?

Jaki jest najlepszy sposób na wyodrębnienie tekstu z javascript i przechowywanie go na zewnątrz w innym pliku językowym .js i jak mam się do niego odnieść w moim kodzie js w przyszłości?

Jakieś najlepsze praktyki w tym zakresie?

Odpowiedz

16

Utwórz obiekt dosłowne:

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

które można następnie odniesienia, tak jak poniżej:

if (error) alert(messages.error); 


Działa to doskonale, jeśli chcesz wprowadzić wiele języków. Zazwyczaj dołączam plik po stronie serwera, który renderuje obiekt "wiadomości" zgodnie z językiem wybranym w konfiguracji aplikacji lub zgodnie z kulturą UI (w przypadku ASP.NET).

Oto jak można go używać, in-line:

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


Schludny rzeczą przy użyciu przedmiotu dosłowne, jest to, że kod jest bardziej gadatliwy. Zamiast używać tablicy, na przykład: alert(messages[0]), wykonaj następujące czynności: alert(messages.error), co jest nieco bardziej objaśniające.

Na marginesie: wszystkie twoje wiadomości są zdefiniowane w jednym obiekcie, zamiast definiowane przez grupę zmiennych, dzięki czemu unikasz zanieczyszczania globalnej przestrzeni nazw.


W JavaScript można modyfikować obiekty w czasie wykonywania. Więc jeśli chcesz dodać więcej wiadomości do obiektu, później w swoim kodzie, że po prostu to zrobić:

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

widzę inni powiedzieli jak go zapisać w pliku JS (tak, jak prosiłeś). Ale czy mogę zaproponować, aby zamiast tego przechowywać go w pliku XML? Jest nieco łatwiejszy w zarządzaniu (IMO).

Utwórz plik XML z wpisami jak ten:

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

Następnie można łatwo chwycić cały tekst musisz w swojej regularnej 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(); 
     }); 
    } 
}); 

i powołać się niektóre tekst, to jest tak proste, jak to:

alert(text['welcome_to_site']);

I yo Możesz zawsze łatwo zmienić go w pliku XML: dodaj tekst, usuń tekst, edytuj tekst. To jest bardzo proste. Pomaga także oddzielić projekt i otwiera drzwi, aby umożliwić innym edytowanie tekstu, który w przeciwnym razie nie byłby w stanie, gdyby musiał przejrzeć kilka skryptów JavaScript.

Powiązane problemy