--- createdAt: 2025-02-07 updatedAt: 2026-09-27 priority: 8 title: "Nesting: Reuse Content Across Dictionaries" description: "Reference one dictionary from another with Intlayer's nest() node to reuse shared content without duplicating translations." keywords: - Nesting - Content Reusability - Documentation - Intlayer - Next.js - JavaScript - React slugs: - doc - concept - content - nesting history: - version: 5.5.10 date: 2025-06-29 changes: "Init history" author: aymericzip --- # Nesting / Sub Content Referencing ## How Nesting Works In Intlayer, nesting is achieved through the `nest` function, which allows you to reference and reuse content from another dictionary. Instead of duplicating content, you can point to an existing content module by its key. ## Setting Up Nesting To set up nesting in your Intlayer project, you first define the base content that you wish to reuse. Then, in a separate content module, you use the `nest` function to import that content. ### Base Dictionary Below is an example of a base dictionary to nest in another dictionary: ```typescript fileName="firstDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]} import { type Dictionary } from "intlayer"; const firstDictionary = { key: "key_of_my_first_dictionary", content: { content: "content", subContent: { contentNumber: 0, contentString: "string", }, }, } satisfies Dictionary; export default firstDictionary; ``` ```json fileName="firstDictionary.content.json" contentDeclarationFormat="json" { "$schema": "https://intlayer.org/schema.json", "key": "key_of_my_first_dictionary", "content": { "content": "content", "subContent": { "contentNumber": 0, "contentString": "string" } } } ``` ### Referencing with Nest Now, create another content module that uses the `nest` function to reference the above content. You can reference the entire content or a specific nested value: ```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]} import { nest, type Dictionary } from "intlayer"; const myNestingContent = { key: "key_of_my_second_dictionary", content: { // References the entire dictionary: fullNestedContent: nest("key_of_my_first_dictionary"), // References a specific nested value: partialNestedContent: nest( "key_of_my_first_dictionary", "subContent.contentNumber" ), }, } satisfies Dictionary; export default myNestingContent; ``` ```json fileName="secondDictionary.content.json" contentDeclarationFormat="json" { "$schema": "https://intlayer.org/schema.json", "key": "key_of_my_second_dictionary", "content": { "fullNestedContent": { "nodeType": "nested", "nested": { "dictionaryKey": "key_of_my_first_dictionary" } }, "partialNestedContent": { "nodeType": "nested", "nested": { "dictionaryKey": "key_of_my_first_dictionary", "path": "subContent.contentNumber" } } } } ``` As second parameter, you can specify a path to a nested value within that content. When no path is provided, the entire content of the referenced dictionary is returned. ## Using Nesting To use nested content in a React component, leverage the `useIntlayer` hook from the `react-intlayer` package. This hook retrieves the correct content based on the specified key. Here's an example of how to use it: ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]} import type { FC } from "react"; import { useIntlayer } from "react-intlayer"; const NestComponent: FC = () => { const { fullNestedContent, partialNestedContent } = useIntlayer( "key_of_my_second_dictionary" ); return (

Full Nested Content: {JSON.stringify(fullNestedContent)}

Partial Nested Value: {partialNestedContent}

); }; export default NestComponent; ```
To use nested content in Next.js Client Components, retrieve it via the `useIntlayer` hook. Here's an example: ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]} "use client"; import type { FC } from "react"; import { useIntlayer } from "next-intlayer"; const NestComponent: FC = () => { const { fullNestedContent, partialNestedContent } = useIntlayer( "key_of_my_second_dictionary" ); return (

Full Nested Content: {JSON.stringify(fullNestedContent)}

Partial Nested Value: {partialNestedContent}

); }; export default NestComponent; ```
To use nested content in Vue components, retrieve it via the `useIntlayer` hook. Here's an example: ```vue fileName="**/*.vue" ``` To use nested content in Svelte components, retrieve it via the `useIntlayer` hook. The store is accessed with `$`. Here's an example: ```svelte fileName="**/*.svelte"

Full Nested Content: {JSON.stringify($content.fullNestedContent)}

Partial Nested Value: {$content.partialNestedContent}

```
To use nested content in Preact components, retrieve it via the `useIntlayer` hook. Here's an example: ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]} import type { FC } from "preact"; import { useIntlayer } from "preact-intlayer"; const NestComponent: FC = () => { const { fullNestedContent, partialNestedContent } = useIntlayer( "key_of_my_second_dictionary" ); return (

Full Nested Content: {JSON.stringify(fullNestedContent)}

Partial Nested Value: {partialNestedContent}

); }; export default NestComponent; ```
To use nested content in SolidJS components, retrieve it via the `useIntlayer` hook. Here's an example: ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]} import type { Component } from "solid-js"; import { useIntlayer } from "solid-intlayer"; const NestComponent: Component = () => { const { fullNestedContent, partialNestedContent } = useIntlayer( "key_of_my_second_dictionary" ); return (

Full Nested Content: {JSON.stringify(fullNestedContent)}

Partial Nested Value: {partialNestedContent}

); }; export default NestComponent; ```
To use nested content in Angular components, retrieve it via the `useIntlayer` hook. Here's an example: ```typescript fileName="app.component.ts" codeFormat="typescript" import { Component } from "@angular/core"; import { useIntlayer } from "angular-intlayer"; @Component({ selector: "app-nest", template: `

Full Nested Content: {{ JSON.stringify(content().fullNestedContent) }}

Partial Nested Value: {{ content().partialNestedContent }}

`, }) export class NestComponent { content = useIntlayer("key_of_my_second_dictionary"); JSON = JSON; } ```
To use nested content with `vanilla-intlayer`, retrieve it via the `useIntlayer` hook. Here's an example: ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]} import { installIntlayer, useIntlayer } from "vanilla-intlayer"; installIntlayer(); const content = useIntlayer("key_of_my_second_dictionary").onChange( (newContent) => { document.getElementById("nested")!.textContent = newContent.partialNestedContent; } ); // Initial render document.getElementById("nested")!.textContent = content.partialNestedContent; ```
## Additional Resources For more detailed information on configuration and usage, refer to the following resources: - [Intlayer CLI Documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/index.md) - [React Intlayer Documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_create_react_app.md) - [Next Intlayer Documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_nextjs_15.md) These resources provide further insights into the setup and usage of Intlayer in different environments and with various frameworks.