Pergunta

My Web aplicativo usa colocar de javascript, e no javascript Eu tenho mensagens que eu volte para o usuário.

O que é a melhor maneira de extrair o texto do meu javascript e armazená-lo externamente em outro arquivo de idioma js, e como eu ia fazer referência a ela no meu código js daqui para frente?

Qualquer melhores práticas para isso?

Foi útil?

Solução

Criar um literal objeto:

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

O que você pode fazer referência, assim:

if (error) alert(messages.error);


Isso funciona muito bem se você quiser implementar vários idiomas. O que eu costumo fazer é incluir um arquivo do lado do servidor que torna um objeto "mensagens" de acordo com o que língua for selecionado na configuração do aplicativo ou de acordo com o UI-cultura (no caso do ASP.NET).

Veja como você iria utilizá-lo, 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>


A coisa interessante sobre o uso de um literal de objeto, é que o código é mais detalhado. Em vez de usar um array, como este: alert(messages[0]) você fizer isso: alert(messages.error) que é um pouco mais explicativo

.

Em uma nota lateral: todas as mensagens são definidos em um objeto, em vez de ser definida por um grupo de variáveis, evitando poluir o namespace global.
Em JavaScript você pode modificar objetos em tempo de execução. Então, se você quiser adicionar mais mensagens para o objeto, mais tarde, no seu código, você tinha acabado de fazer isso:

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

Outras dicas

Eu vejo os outros têm disse que como armazená-la em um arquivo JS (como você pediu). Mas eu poderia sugerir que você armazená-lo em um arquivo XML, em vez disso? É um pouco mais fácil de gerir (IMO).

Crie um arquivo XML, com entradas como esta:

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

Em seguida, você pode facilmente pegar todo o texto que você precisa em sua regulares 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();
        });
    }
});

E para invocar algum texto, é tão simples como isto:

alert(text['welcome_to_site']);

E você sempre pode facilmente alterá-lo no arquivo XML: texto adicione, texto remover, editar texto. É muito simples. Ela também ajuda a separar o seu projeto e abre portas para você para permitir que outros para editar texto, que de outra forma não poderia ser capaz de se tivessem que resolver através de um monte de JavaScript.

Uma maneira de fazer isso é ter um js separados incluir em sua página que realmente aponta para um script do lado do servidor. Este script pode então eco fora das cordas que você precisa, como esta:

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

E em sua página tenho este:

Fazemos isso para http://addons.mozilla.org aqui: http://addons.mozilla.org/en-US/firefox/pages/js_constants.js

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top