Receive notifications about upcoming Intlayer releases

    Autofill Content Declaration File Translations

    Autofill content declaration files are a way to speed up your development workflow.

    The autofill mechanism works through a master-slave relationship between content declaration files. When the main (master) file is updated, Intlayer will automatically apply those changes to the derived (autofilled) declaration files.

    src/components/example/example.content.ts
    import { Locales, type Dictionary } from "intlayer";const exampleContent = {  key: "example",  locale: Locales.ENGLISH,  autoFill: "./example.content.json",  content: {    contentExample: "This is an example of content",  },} satisfies Dictionary;export default exampleContent;

    Here is a per-locale content declaration file using the autoFill instruction.

    Then, when you run the following command:

    bash
    npx intlayer fill --file 'src/components/example/example.content.ts'

    Intlayer will automatically generate the derived declaration file at src/components/example/example.content.json, filling in all locales not already declared in the main file.

    src/components/example/example.content.json
    {  "key": "example",  "content": {    "contentExample": {      "nodeType": "translation",      "translation": {        "fr": "Ceci est un exemple de contenu",        "es": "Este es un ejemplo de contenido",      },    },  },}

    Afterward, both declaration files will be merged into a single dictionary, accessible using the standard useIntlayer("example") hook (react) / composable (vue).

    Autofilled File Format

    The recommended format for autofilled declaration files is JSON, which helps avoid formatting constraints. However, Intlayer also supports .ts, .js, .mjs, .cjs, and other formats.

    src/components/example/example.content.ts
    const exampleContent = {  key: "example",  autoFill: "./example.filled.content.ts",  content: {    // Your content  },};

    This will generate the file at:

    src/components/example/example.filled.content.ts

    The generation of .js, .ts, and similar files works as follows:

    • If the file already exists, Intlayer will parse it using the AST (Abstract Syntax Tree) to locate each field and insert any missing translations.
    • If the file does not exist, Intlayer will generate it using the default content declaration file template.

    Absolute Paths

    The autoFill field also supports absolute paths.

    src/components/example/example.content.ts
    const exampleContent = {  key: "example",  autoFill: "/messages/example.content.json",  content: {    // Your content  },};

    This will generate the file at:

    /messages/example.content.json

    Autogenerate Per-Locale Content Declaration Files

    The autoFill field also supports generation of per-locale content declaration files.

    src/components/example/example.content.ts
    const exampleContent = {  key: "example",  autoFill: {    fr: "./example.fr.content.json",    es: "./example.es.content.json",  },  content: {    // Your content  },};

    This will generate two separate files:

    • src/components/example/example.fr.content.json
    • src/components/example/example.es.content.json

    Filter Specific Locale Autofill

    Using an object for the autoFill field allows you to apply filters and generate only specific locale files.

    src/components/example/example.content.ts
    const exampleContent = {  key: "example",  autoFill: {    fr: "./example.fr.content.json",  },  content: {    // Your content  },};

    This will only generate the French translation file.

    Path Variables

    You can use variables inside the autoFill path to dynamically resolve the target paths for the generated files.

    Available variables:

    • {{locale}} – Locale code (e.g. fr, es)
    • {{key}} – Dictionary key (e.g. example)
    src/components/example/example.content.ts
    const exampleContent = {  key: "example",  autoFill: "/messages/{{locale}}/{{key}}.content.json",  content: {    // Your content  },};

    This will generate:

    • /messages/fr/example.content.json
    • /messages/es/example.content.json

    If you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.

    GitHub link to the documentation
    Receive notifications about upcoming Intlayer releases