Catalog formats

Catalog format (configured by format option) refers to file format of offline catalog. This format is never used in production, because it’s compiled into JS module. The reason behind this build step is that choice of catalog format depends on individual internationalization workflow. On the other hand runtime catalog should be as simple as possible so it parsed quickly without additional overhead.


Simple JSON file where each key is message ID and value is translation. The JSON is flat and there’s no reason to use nested keys. The usual motivation behind nested JSON is to save filespace, but this file format is used offline only.

The drawback of this format is that all metadata about message are lost. That includes default message, origin of message and any message flags (obsolete, fuzzy, etc).

   "messageId": "translation"

Lingui (raw)

This file format simply outputs all internal data in JSON format. It’s the original file format used by LinguiJS library before support for other catalog formats were added. It might be useful for tools build on top of Lingui CLI which needs to further process catalog data.

   "messageId": {
      "translation": "Translated message",
      "defaults": "Default message",
      "description": "Comment for translators",
      "origin": [["src/App.js", 3]]
   "obsoleteId": {
      "translation": "Obsolete message",
      "origin": [["src/App.js", 3]],
      "obsolete": true