как создать языковой файл для текста в файлах javascript?

мое веб-приложение использует выделение javascript, и в javascript у меня есть сообщения, которые я сообщаю пользователю.

каков наилучший способ извлечь текст из моего javascript и сохранить его извне в другом .JS языковой файл, и как я буду ссылаться на него в своем JS-коде?

какие-либо лучшие практики для этого?

3 ответов


создать литерал объекта:

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

который вы можете затем ссылаться, например:

if (error) alert(messages.error);


это отлично работает, если вы хотите реализовать несколько языков. Обычно я включаю файл на стороне сервера, который отображает объект "сообщения" в соответствии с любым языком, выбранным в конфигурации приложения или в соответствии с UI-культурой (в случае ASP.NET).

вот как вы будете использовать его, 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>


аккуратная вещь об использовании объектного литерала заключается в том, что код более подробный. Вместо использования массива, как это:alert(messages[0]) вы делаете это: alert(messages.error) что немного более объяснимо.

на стороне-Примечание: все ваши сообщения определяются в одном объекте, а не определяются кучей переменных, тем самым избегая загрязнения глобального пространства имен.


В JavaScript вы можете изменять объекты во время выполнения. Так что, если хочешь ... чтобы добавить больше сообщений к объекту, позже в вашем коде вы просто сделаете это:

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

Я вижу, что другие рассказали вам, как сохранить его в js-файле (как вы просили). Но могу ли я предложить вместо этого сохранить его в XML-файле? Это несколько проще в управлении (IMO).

создайте XML-файл с такими записями:

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

тогда вы можете легко захватить весь текст, который вам нужен в вашем обычном 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();
        });
    }
});

и чтобы вызвать какой-то текст, это так просто:

alert(text['welcome_to_site']);

и вы всегда можете легко измените его в XML-файле: добавьте текст, удалите текст, отредактируйте текст. Все очень просто. Это также помогает отделить ваш дизайн и открывает двери для вас, чтобы позволить другим редактировать текст, который в противном случае не смог бы, если бы им пришлось сортировать кучу JavaScript.


один из способов сделать это-иметь отдельный js include на Вашей странице, который фактически указывает на сценарий на стороне сервера. Этот скрипт может выводить строки нужно так:

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

и на веб-странице есть это:

мы делаем это для http://addons.mozilla.org здесь:http://addons.mozilla.org/en-US/firefox/pages/js_constants.js