在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