Как создать языковой файл для текста в файлах JavaScript?
-
06-07-2019 - |
Вопрос
Мое веб-приложение использует большое количество javascript, а в javascript есть сообщения, которые я сообщаю пользователю.
Каков наилучший способ извлечь текст из моего javascript и сохранить его снаружи в другом файле языка .js, и как я буду ссылаться на него в своем коде js в будущем?
Есть ли лучшие практики для этого?
Решение
Создать литерал объекта:
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-файле? Это несколько проще в управлении (ИМО).
Создайте файл 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();
});
}
});
И для вызова некоторого текста это так просто:
<код> оповещения (текст [ 'welcome_to_site']); код>
И вы всегда можете легко изменить его в файле XML: добавить текст, удалить текст, редактировать текст. Это очень просто Это также помогает отделить ваш дизайн и открывает двери для вас, чтобы позволить другим редактировать текст, который в противном случае не смог бы, если бы им пришлось перебирать кучу JavaScript.
Один из способов сделать это - добавить на страницу отдельное js, которое фактически указывает на серверный скрипт. Затем этот скрипт может отобразить нужные вам строки следующим образом:
var STRINGS = {'greeting': "Hello", 'error': "Something went wrong"};
И на вашей веб-странице есть это: Р>
Мы делаем это для http://addons.mozilla.org здесь: http://addons.mozilla.org/en-US/firefox/pages/js_constants.js а> р>