L20n.js:本地化动态创建的字符串

L20n.js: localize dynamically created strings

本文关键字:创建 字符串 动态 本地化 js L20n      更新时间:2023-09-26

在我的应用程序中,我可以通过标签本地化大多数字符串,如 l20n.js 文档中所述。但有时我必须本地化动态创建的字符串。喜欢:document.getElementById(id).innerHTML = "some text";

我使用聚合物和自定义Web组件,因此主要目标是为任何本地化案例创建一个函数。如果我尝试document.l10n.get(string);,我会得到TypeError: document.l10n.get is not a function

最好的方法是什么?无法在官方文档中找到解决方案。

由于document.l10n是 L20n View类的实例,因此您可以为您的用例使用 formatValueformatValues 方法。 有关详细信息,请参阅文档。

这两种方法都返回承诺,因此您需要执行以下操作:

document.l10n.formatValue('hello', { who: 'world' }).then(
  hello => document.getElementById(id).textContent = hello
);

您可以分配给textContentinnerHTML 。 请记住,L20n 允许在翻译中使用 HTML,并且仅在使用声明式data-l10n-id方法时对其进行清理。 因此,如果要手动分配给innerHTML,则可能需要确保信任翻译的内容。 将来我想添加一个特殊的 API,使用与声明性方法相同的清理(错误1228021)将翻译应用于 DOM 元素。