在PHP和JavaScript上都希伯来语双引号

我正在研究基于php的多语言网站。

为了支持多种语言,我使用如下所示的本地化文件。

[localize.en-US.php]

$lang_code = "en-US";
$is_rtl = false;

.
.
.

define("WORD_EMAIL", "e-mail");
define("WORD_NAME", "name");

.
.
.

用下面两种方式定义的单词。

[HTML]

<?=WORD_EMAIL?> : <input type="text" name="email"/>
<?=WORD_NAME?> : <input type="text" name="name"/>

[使用Javascript]

if(frm.email.value==="") {
 alert("<?=WORD_EMAIL?> required.");
 return false;
}

这个问题发生在我工作希伯来语时。

希伯来语坦桑尼亚语的“电子邮件”一词有双引号。

我试图逃避双引号。

为了避免双引号,

PHP需要一个反斜杠,而JavaScript需要一个反斜杠和另一个反斜杠。

所以我在双引号之前加了3个反斜杠。

它显示在JavaScript警报上propery。 但在HTML反斜杠(对于JavaScript)出现..

是的,我知道使用单引号可以简单地解决这个问题。

但它在本地化文件中出现异常(一些法语单词使用单引号)。

任何人都可以帮忙吗? 任何线索欢迎。


您始终需要为嵌入它们的上下文编码或转义值。将任何内容放入HTML时,除非意外地将值解释为HTML,否则需要对其进行HTML编码。 在将任何东西放入Javascript源代码中时,您需要在其中正确转义它,对此,JSON编码恰好是正确的技术:

<?= htmlspecialchars(WORD_EMAIL, ENT_COMPAT, 'UTF-8'); ?> : <input type="text" name="email"/>
alert(<?= json_encode(WORD_EMAIL); ?> + " required.");

另请参阅大逃避主义(或:您需要知道如何处理文本中的文本)。

我会争辩说,尽管你的i18n方法很有缺陷, “אִימֵיְילrequired”*似乎是一个非常不足的本地化。 您将需要查看适当的工具,如gettext和其实现/类似Javascript的。

*谷歌翻译,我不会说希伯来语...

链接地址: http://www.djcxy.com/p/69559.html

上一篇: escape Hebrew double quote on both php and javascript

下一篇: Use single quotes instead of double quotes in the Link tool