在我的应用程序中,我可以通过标签本地化大部分字符串,如 l20n.js 文档中所述。但有时我必须本地化动态创建的字符串。喜欢:document.getElementById(id).innerHTML = "some text";
我使用 Polymer 和自定义网络组件,因此主要目标是为任何本地化案例创建一个函数。
如果我尝试 document.l10n.get(string);
,我会得到 TypeError: document.l10n.get is not a function
。
最好的方法是什么?在官方文档中找不到解决方案。
最佳答案
由于 document.l10n
是 L20n 的 View
类的一个实例,您可以使用 formatValue
和 formatValues
适用于您的用例的方法。请参阅documentation了解详情。
这两种方法都返回 promise ,因此您需要执行如下操作:
document.l10n.formatValue('hello', { who: 'world' }).then(
hello => document.getElementById(id).textContent = hello
);
您可以分配给 textContent
或 innerHTML
。请记住,L20n 允许在翻译中使用 HTML,并且它只会在使用声明性 data-l10n-id
方法时清理它们。因此,如果您想手动分配给 innerHTML
,您可能需要确保您信任翻译的内容。将来我想添加一个特殊的 API,使用与声明性方法相同的清理方法将翻译应用到 DOM 元素(bug 1228021)。
关于javascript - L20n.js : localize dynamically created strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068334/