We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aymericzip/intlayer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
---
createdAt: 2025-02-07
updatedAt: 2025-06-29
title: Dictionary's nesting
description: Learn how to use content nesting in Intlayer to reuse and structure your multilingual content efficiently. Follow this documentation to implement nesting seamlessly in your project.
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
---
# 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"
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;
```
```javascript fileName="firstDictionary.content.mjs" contentDeclarationFormat="esm"
/** @type {import('intlayer').Dictionary} */
const firstDictionary = {
key: "key_of_my_first_dictionary",
content: {
content: "content",
subContent: {
contentNumber: 0,
contentString: "string",
},
},
};
export default firstDictionary;
```
```javascript fileName="firstDictionary.content.cjs" contentDeclarationFormat="commonjs"
/** @type {import('intlayer').Dictionary} */
const firstDictionary = {
key: "key_of_my_first_dictionary",
content: {
content: "content",
subContent: {
contentNumber: 0,
contentString: "string",
},
},
};
module.exports = 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"
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;
```
```javascript fileName="secondDictionary.content.mjs" contentDeclarationFormat="esm"
import { nest } from "intlayer";
/** @type {import('intlayer').Dictionary} */
const myNestingContent = {
key: "key_of_my_second_dictionary",
content: {
fullNestedContent: nest("key_of_my_first_dictionary"),
partialNestedContent: nest(
"key_of_my_first_dictionary",
"subContent.contentNumber"
),
},
};
export default myNestingContent;
```
```javascript fileName="secondDictionary.content.cjs" contentDeclarationFormat="commonjs"
const { nest } = require("intlayer");
/** @type {import('intlayer').Dictionary} */
const myNestingContent = {
key: "key_of_my_second_dictionary",
content: {
fullNestedContent: nest("key_of_my_first_dictionary"),
partialNestedContent: nest(
"key_of_my_first_dictionary",
"subContent.contentNumber"
),
},
};
module.exports = 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 with React Intlayer
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"
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const NestComponent: FC = () => {
const { fullNestedContent, partialNestedContent } = useIntlayer(
"key_of_my_second_dictionary"
);
return (
<div>
<p>
Full Nested Content: {JSON.stringify(fullNestedContent)}
{/* Output: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
</p>
<p>
Partial Nested Value: {partialNestedContent}
{/* Output: 0 */}
</p>
</div>
);
};
export default NestComponent;
```
```javascript fileName="**/*.mjx" codeFormat="esm"
import { useIntlayer } from "react-intlayer";
const NestComponent = () => {
const { fullNestedContent, partialNestedContent } = useIntlayer(
"key_of_my_second_dictionary"
);
return (
<div>
<p>
Full Nested Content: {JSON.stringify(fullNestedContent)}
{/* Output: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
</p>
<p>
Partial Nested Value: {partialNestedContent}
{/* Output: 0 */}
</p>
</div>
);
};
export default NestComponent;
```
```javascript fileName="**/*.cjx" codeFormat="commonjs"
const { useIntlayer } = require("react-intlayer");
const NestComponent = () => {
const { fullNestedContent, partialNestedContent } = useIntlayer(
"key_of_my_second_dictionary"
);
return (
<div>
<p>
Full Nested Content: {JSON.stringify(fullNestedContent)}
{/* Output: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
</p>
<p>
Partial Nested Value: {partialNestedContent}
{/* Output: 0 */}
</p>
</div>
);
};
module.exports = NestComponent;
```
## 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.