2

私のアプリでは、l20n.js ドキュメントで説明されているように、タグを介してほとんどの文字列をローカライズできます。しかし、動的に作成された文字列をローカライズする必要がある場合があります。お気に入り:document.getElementById(id).innerHTML = "some text";

私は Polymer とカスタム Web コンポーネントを使用しているため、主な目標は、あらゆるローカリゼーション ケースに対応する 1 つの関数を作成することです。私がしようとするとdocument.l10n.get(string);、私は得TypeError: document.l10n.get is not a functionます。

それを行う最良の方法は何ですか?公式ドキュメントで解決策が見つかりませんでした。

4

1 に答える 1

1

document.l10nは L20n のViewクラスのインスタンスであるため、ユース ケースに および メソッドを使用できformatValueますformatValues。詳細については、ドキュメントを参照してください。

どちらのメソッドも promise を返すため、次のようなことを行う必要があります。

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

textContentまたはに割り当てることができますinnerHTML。L20n は翻訳で HTML を許可し、宣言型data-l10n-idアプローチを使用する場合にのみサニタイズすることに注意してください。したがって、手動で割り当てたい場合innerHTMLは、翻訳の内容が信頼できることを確認する必要があります。将来的には、宣言型メソッドと同じサニタイズを使用して、翻訳を DOM 要素に適用する特別な API を追加したいと考えています (バグ1228021 )。

于 2016-02-25T13:57:59.380 に答える