2015-11-09 79 views
-1

我們的應用程序已被國際化並且已被更改爲不同的語言。出於這個原因,我們必須硬編碼所有的消息。我們如何才能做到這一點在JavaScript中的消息?如何對來自javascript消息的文本進行硬編碼

這就是我們如何在html消息中做的。

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

我們如何對JavaScript的消息硬編碼(更新表)

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

這是不清楚你在問什麼。 –

+0

通過我們的應用程序,我們將生成類似成功的消息,並動態地將所有消息寫入屬性文件中。但有些消息來自JavaScript。我沒有找到一種方法來硬編碼JavaScript的消息? – dummy

回答

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)); 
+0

我們如何處理下面的情況。 $ successSpan.html(tableItemCount +「項目已從表中刪除。」,2000); – dummy

+0

請把它放在你原來的問題中,所以我修改後的答案將與它相關。 – trincot

+0

我已通過回答更新。受到您的附加問題的影響,我稍微改變了方法。 – trincot

相關問題