3

この例では、LOL リソース内の変数にアクセスする方法を確認できます。

<brandName {
  nominative: "Firefox",
  genitive: "Firefoksa",
  dative: "Firefoksowi",
  accusative: "Firefoksa",
  instrumental: "Firefoksem",
  locative: "Firefoksie"
}>

<about "O {{ brandName.locative }}">

ただし、次のように、JavaScriptで同様のことを実行できるようにしたいと考えています。

document.l10.get('brandName.nominative');

これは私にはうまくいきません。少しデバッグしましたが、時間を無駄にしているように感じます。おそらくこれを行う簡単な方法が既にあります。ある?

4

1 に答える 1

3

これは L20n では不可能です。開発者として、 がnominativeすべての言語で定義されるかどうかを確実に知ることはできないからです。その理由を知るために読んでください。

英語では、例は次のようになります。

<brandName "Firefox">
<about "About {{ brandName }}">

.nominative今回はお願いすることはありません!

L20n はアシンメトリーがすべてです。英語の文字列の 1 つのバリアントは、ドイツ語の 4 つのバリアント、ポーランド語の 7 つのバリアント、ハンガリー語の 16 のバリアントに対応する場合があります。開発者と L20n の間には社会契約があります。開発者が というエンティティの値を要求するとbrandName、L20n は UI で使用できる文字列を返します。その文字列を取得するために行われるすべての作業は開発者には隠され、ローカライザーが構築した言語とロジックによって異なる場合があります。

達成したい内容に応じて、次の 2 つの構造が役立つ場合があります。

  • デフォルト値は、特定のキーを要求しない場合に返されるデフォルト キーを示すために使用できます。あなたの質問の例では、nominative次のようにアスタリスクを横に置くことでデフォルトとして定義できます。

    <brandName {
     *nominative: "Firefox",
      genitive: "Firefoksa",
      dative: "Firefoksowi",
      accusative: "Firefoksa",
      instrumental: "Firefoksem",
      locative: "Firefoksie"
    }>
    <about "O {{ brandName.locative }}">
    

    brandNameJavaScript での翻訳を取得しようとすると、nominativeキー "Firefox"の値が取得されます。

    document.l10.get('brandName');
    // "Firefox"
    
  • 次のように、属性をエンティティに追加して、メタデータを保存できます。

    <brandName "Firefox"
     accesskey: "F"
    >
    

    属性は辞書の値とは異なることに注意してください。上記の例では、の値brandNameは単純な文字列「Firefox」です。brandNameエンティティには追加の属性があり、そのaccesskey値は「F」です。次の方法で属性にアクセスできますgetEntity

    document.l10.getEntity('brandName');    
    // { value: "Firefox", attributes: { accesskey: "F" } }
    
于 2013-08-14T09:42:49.410 に答える