2015-11-09 3 views
-1

Наша заявка была интернационализирована и менялась на разные языки. По этой причине мы должны жестко кодировать все сообщения. Как мы можем это сделать для сообщений в javascript?Как печатать текст, который поступает из сообщений javascript

Так мы делаем в сообщениях html.

<span th:text="#{listTable.deletedFromTable}">deleted</span>  

Как мы жесткий код яваскрипта сообщений. (Обновить таблицу)

$('#TableUpdate-notification').html('<div class="alert"><p>Update the Table.</p></div>'); 
+0

Непонятно, что вы просите. –

+0

В нашем приложении мы генерируем сообщения, такие как успех, и все динамически предупреждаем, когда все сообщения записываются в файл свойств. Но некоторые сообщения поступают из JavaScript. Я не нашел способ жестко кодировать сообщения из JavaScript? – dummy

ответ

1

Вам нужно будет поместить сообщения в DOM с самого начала, но без отображения их. Поместите эти тексты в span теги каждый с уникальным id и атрибутом th:text - вы можете добавить их в конце документа:

<span id="alertUpdateTable" th:text="#{listTable.updateTable}" 
    style="display:none">Update the Table.</span> 

Это будет гарантировать, что ваш модуль интернационализации будет делать свою магию и на этом элементе , и текст будет переведен, даже если он не отображается.

Затем в тот момент, который вы хотите использовать это предупреждение, получить этот скрытый текст и ввести его там, где вам это нужно:

$('#TableUpdate-notification').html(
'<div class="alert"><p>' + $('#alertUpdateTable').html() + '</p></div>'); 

Вы просили другой вариант этого, где вы в данный момент имеем:

$successSpan.html(tableItemCount + " item was deleted from the table.", 2000); 

Вы бы затем добавить содержимое снова не-дисплее span с заполнителем для подсчета:

<span id="alertTableItemDeleted" th:text="#{listTable.itemDeleted}" 
    style="display:none">{1} item(s) were deleted from the table.</span> 

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

$successSpan.html($('#alertTableItemDeleted').html().replace('{1}', tableItemCount)); 

Вы могли бы сделать функцию, чтобы иметь дело с заменой таких заполнителей:

function getMsg(id) { 
    var txt = $('#' + id).html(); 
    for (var i = 1; i < arguments.length; i++) { 
     txt = txt.replace('{' + i + '}', arguments[i]); 
    } 
    return txt; 
} 

И тогда два примера будет в письменной форме:

$('#TableUpdate-notification').html(
'<div class="alert"><p>' + getMsg('alertUpdateTable') + '</p></div>'); 

$successSpan.html(getMsg('alertTableItemDeleted', tableItemCount)); 
+0

Как мы справимся с приведенным ниже сценарием. $ successSpan.html (tableItemCount + "элемент удален из таблицы.", 2000); – dummy

+0

Пожалуйста, поместите это в свой первоначальный вопрос, поэтому мой измененный ответ будет связан с ним. – trincot

+0

Я обновил ответ. Под влиянием вашего дополнительного вопроса я немного изменил метод. – trincot