Skip to content

Wrong arguments if too much values #41

@vekunz

Description

@vekunz

If I pass more values to $t then there are arguments in the message, the arguments may get the wrong values.

Example

I have these strings in the language file:

{
  "message": {
    "one": "{name} sent you 1 file",
    "other": "{name} sent you {count} files"
  }
}

Both messages are called with the same options:

// This is a function that returns the correct string based on the `count` value, because we cannot use ICU expressions
function pluralization(id, options) {
  if (options.values.count === 1) {
    return $t(`${id}.one`, options);
  } else {
    return $t(`${id}.other`, options);
   }
}

console.log(pluralization('message', {values: {count: 1, name: 'John'}));
console.log(pluralization('message', {values: {count: 2, name: 'John'}));

This results in these result:

1 sent you 1 file
John sent you 2 files

Expected behavior

The arguments should be set correctly, even if there are too much values.

John sent you 1 file
John sent you 2 files

Workaround

Currently, we have to set the static 1 as a variable too.

{
  "one": "{name} sent you {count} file",
  "other": "{name} sent you {count} files"
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions