'i18next: Custom json format with comments for translation bureau

We are using a custom json format for our i18n resources that contain comments for the translation bureau, so they understand better the context of the strings to translate:

Example en.json:

{
  "headerbar": {
    "search": {
      "placeholder": {
        "value": "Enter your search here...",
        "comment": "This string will be shown in the search input if empty. Truncated after 100 characters."
    }
  },
  "welcome": {
    "heading": {
      "value": "Welcome, {{name}}!",
      "comment": "This string should not be longer than 50 characters."
    }
  }
}

How can I configure i18next (or react-i18next) such that the translation is always retrieved from the value property? Without having to use {returnObjects} in every t().

t('headerbar.search.placeholder')  // === 'Enter your search here...'
t('welcome.heading', {name: 'Bob'}) // === 'Welcome, Bob!'


Solution 1:[1]

I also have this requirement, but it appears i18next does not have the capability to define comments or descriptions, because 1) the API doesn't have a way to define those, and 2) the most popular extractor, i18next-parser, doesn't support generating files with comments included.

Alternatively, you could consider Format.JS which has this capability: https://formatjs.io/docs/getting-started/message-declaration

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Bart Verkoeijen