fluent.js icon indicating copy to clipboard operation
fluent.js copied to clipboard

Pass variables from app, to a fluent selector

Open emagnier opened this issue 3 years ago • 1 comments

I'm trying to pass a variable ($week) from my application, to a selector as an argument.

week-nb = Number: { $week }
week-name = {-ordinal(num: $week, gender: "feminine") } semaine

-ordinal = { $num ->
  [1] { $gender ->
      *[default]  premier
       [feminine] première
  }
  [2] deuxième
  [3] troisième
  *[other] { $num }
}

The week-nb identifier work well, it returns Number: 1 as expected. But week-name returns nothing, instead of "première semaine".

// From the JS code

const weekNumber = bundle.getMessage("week-nb");
if (weekNumber.value) {
  const weekNb = bundle.formatPattern(weekNumber.value, {
    week: 1,
  });
  console.log(weekNb); // Outputs: Number: 1
}

const weekNameMessage = bundle.getMessage("week-name");
if (weekNameMessage.value) {
  const weekName = bundle.formatPattern(weekNameMessage.value, {
    week: 1,
  });
  console.log(weekName); // Do not outputs anything
}

Am I missing something? Is there any limitations? I would like to keep my -ordinal selector separated (to stay DRY), because it is required at several places in my locale file.

emagnier avatar Dec 08 '21 15:12 emagnier

Since I still haven't had any answers after a few months, and because it might be only a Fluent syntax issue (rather than a JavaScript issue), I've reposted this issue on the main Fluent repo: https://github.com/projectfluent/fluent/issues/351

emagnier avatar Aug 09 '22 19:08 emagnier