带有html标记作为选择器的字符串

时间:2011-12-14 15:33:48

标签: jquery dom jquery-selectors internationalization

我正在使用I18N的网站。

我有一个翻译团队,负责检查网站上的翻译。

如果他们想要,他们可以通过将鼠标放在他们想要翻译的字符串上来提供新的翻译。

我需要检测我的PO文件中当前页面上使用的所有字符串,并在字符串的直接父级上添加一个类,以便我可以添加文本输入以提交新的翻译。

所以我创建了一个函数,用于存储当前页面中使用的每个翻译(PO文件中的基本字符串和PHP注入的数据的最终翻译),并将它们作为JSON对象传递给JavaScript。

现在,我必须在页面中找到所有这些翻译。

我的问题是在它们包含html标记时匹配它们。

在我的PO文件中:

msgid "Bonjour <strong>%s</strong>"
msgstr "Hi <strong>%s</strong>"

我的网页来源:

<div>Hi <strong>Tristan</strong></div>

我需要

  1. 匹配Hi <strong>Tristan</strong>
  2. 将一个类添加到直接父级(此处为“div”节点)
  3. 然后我就可以附上我的文字输入来提交新的翻译
  4. 我该如何匹配?我想我需要使用翻译的字符串作为选择器。

    我想避免在PHP处理过程中使用元素包装i18n字符串(因为它会以某种方式更改DOM,因此会对网站的设计产生影响),但另一方面,使用来自PO文件的字符串在浏览器端看起来也很重要。

    任何提示?

1 个答案:

答案 0 :(得分:0)

在@lonesomeday之后,我也会使用span。这就是他们的目的。 这是跨度应该是:

  

msgid "Bonjour <strong>%s</strong>" msgstr "Hi <strong>%s</strong>"   变为:

  • <span class='I18N'>Bonjour <strong>Tristan</strong></span>
  • <span class='I18N'>Hi <strong>Tristan</strong></span>

javascript然后变成:

$(document).ready(function(){
  $('.I18N').closest('*').addClass('inputI18N');
});