как создать языковой файл для текста в файлах 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