l20n.js-如何从javascript访问本地化子实体

l20n.js-如何从javascript访问本地化子实体,javascript,localization,l20n,Javascript,Localization,L20n,在这个例子中,我可以看到如何访问LOL资源中的变量 <brandName { nominative: "Firefox", genitive: "Firefoksa", dative: "Firefoksowi", accusative: "Firefoksa", instrumental: "Firefoksem", locative: "Firefoksie" }> <about "O {{ brandName.locative }}">

在这个例子中,我可以看到如何访问LOL资源中的变量

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

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

但这对我不起作用。我调试了一点,但我觉得我是在浪费时间,可能已经有一个简单的方法可以做到这一点。有吗?

这在L20n中是不可能的,因为作为一名开发人员,您无法确定所有语言中都会定义
命名的
。请继续阅读,找出原因

在英语中,您的示例很可能如下所示:

<brandName "Firefox">
<about "About {{ brandName }}">
当您现在尝试在JavaScript中检索
brandName
的翻译时,您将获得
namitive
键的值,“Firefox”:

  • 可以添加到实体以存储元数据,如下所示:

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

  • Stas,谢谢您的帮助。Re:没有了。这次要提名!这似乎是一个很好的例子,它可以使用默认值,在本例中是唯一的值。也许我应该使用属性?例如:。这看起来我可以通过javascript访问。我不确定这是否是最好的解决方案。我建议不要像你提到的那样硬编码复数。有些语言可能使用两种或三种不同的复数形式(例如,在波兰语中:“2 Firefoksy”、“5 Firefoksów”)。您心目中的用例是什么?也许还有另一种方法可以实现您想要的目标?@Staś,有没有一种方法可以从HTML中访问实体属性,而不是使用JS。e、 g.
    公共实体属性映射到HTML属性,因此如果
    brandName
    实体定义了一个新的
    accesskey
    属性,则带有
    data-l10n-id=“brandName”
    的元素将获得一个新的
    accesskey
    属性。您是否考虑了一个特定的用例,而该用例并不满足于这种行为?
    document.l10.get('brandName');
    // "Firefox"
    
    <brandName "Firefox"
     accesskey: "F"
    >
    
    document.l10.getEntity('brandName');    
    // { value: "Firefox", attributes: { accesskey: "F" } }