Javascript翻译模板
Javascript Translation Templating
本文关键字:翻译 Javascript 更新时间:2023-09-26
我目前正在重新实现Facebook国际化XFBML标签的前端,这个标签已经被破坏了很长一段时间。我几乎完成了,但有一个问题:在不丢失子节点信息的情况下替换标记化翻译。
对于背景,翻译标签看起来像这样:
<fb:intl>
Text goes here and you can have {a-token} like this.
<fb:intl-token name="a-token">parameters</fb:intl>
</fb:intl>
你给他们传一个这样的字符串:Text goes here and you can have {a-token} like this.
然后你会得到一个这样的翻译字符串:El texto va aquí y usted puede tener {a-token} como ésta.
这样,即使可以放入动态数据,也只能转换字符串一次。最酷的部分(也是问题)是你可以嵌套这些字符串。因此,令牌中可能有另一个嵌套的fb:intl
标签,而不是"parameters"的纯文本(反过来,它可能还有另一个标签,等等)。
我试图做的是在不丢失子节点上下文的情况下进行此替换。因此,我只想取<fb:intl-token>
标记并将其移动,以替换代表其在字符串中位置的{token}
。
关于如何有效地做到这一点,有什么想法吗?
经过一番黑客攻击,我终于想出了一个解决方案。
伪码是这样的:
- 使用jQuery的
.clone(true)
克隆原始元素(以维护所有原始数据等) - 使用
.empty()
清空克隆的元素 - 将
.html()
设置为regex,将标记替换为html元素,以便可以通过jQuery:.replace(/{([a-zA-Z'-]+)}/, '<span id="$1"></span>')
轻松操作它们 - 循环遍历原始元素的
fb:intl-token
子元素,并对每个子元素执行$(this).insertBefore(placeHolder);
(其中placeHolder是步骤3中替换的令牌——这就是为什么它的id基于令牌名称) - 从克隆的元素中删除占位符
- 用克隆替换原始元素
到目前为止,这似乎运行得很好。
相关文章:
- 如何在javascript上使用flak-babel进行翻译
- Django'支持Javascript文件中的翻译
- Javascript翻译模板
- 将JavaScript oop代码翻译为Lua
- 将 jQuery 代码翻译成普通的 JavaScript for Google Tag Manager
- 带有滚动事件的Javascript集翻译速度较慢
- 用于管理翻译表单的Javascript库
- 像谷歌收件箱一样将java翻译成javascript
- 翻译工具的javascript回调
- 将旧的javascript翻译成jQuery的工具
- 在 JavaScript 中是否有任何类似 Perl 的翻译
- 一个可翻译成JavaScript的脚本,带有callback-hell自动避免器
- 将javascript翻译成angularjs
- 如何在TurboGears中翻译JavaScript字符串
- 使用 Google Translate API 翻译 JavaScript 和 HTML 中的内容
- 猪拉丁语翻译 - JavaScript
- 在Rails中,如何翻译javascript弹出确认框中的按钮
- 用django翻译javascript中的多行字符串
- 如何在django的html的脚本标签中翻译javascript中的字符串
- 如何动态翻译JavaScript字符串