如何硬编码来自javascript消息的文本

时间:2015-11-09 19:57:00

标签: javascript hardcoded

我们的应用程序已经国际化并被更改为不同的语言。出于这个原因,我们必须硬编码所有消息。我们怎样才能在javascript中为消息做到这一点?

这就是我们在html消息中的表现。

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

我们如何硬编码javascript消息。(更新表格)

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

1 个答案:

答案 0 :(得分:1)

您需要从一开始就将消息放入DOM,但不显示它们。将这些文本放在span标记中,每个标记都有唯一的idth: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));