Manage and customize internationalization support in your CMS editor experience
The Admin Panel is translated in over 30 languages and counting. With I18n, editors can navigate the interface and read API error messages in their preferred language. This is similar to Localization, but instead of managing translations for the data itself, you are managing translations for your application’s interface.By default, FrogBot comes preinstalled with English, but you can easily load other languages into your own application. Languages are automatically detected based on the request. If no language is detected, or if the user’s language is not yet supported by your application, English will be chosen.To add I18n to your project, you first need to install the @frogbotcms/translations package:
pnpm install @frogbotcms/translations
Once installed, it can be configured using the i18n key in your FrogBot Config:
You can easily customize and override any of the i18n settings that FrogBot provides by default. FrogBot will use your custom options and merge them in with its own.
You can easily add new languages to your FrogBot app by providing the translations for the new language. FrogBot maintains a number of built-in translations that can be imported from @frogbotcms/translations, but you can also provide your own Custom Translations to support any language.To add a new language, use the i18n.supportedLanguages key in your FrogBot Config:
import { buildConfig } from 'frogbot'import { en } from '@frogbotcms/translations/languages/en'import { de } from '@frogbotcms/translations/languages/de'export default buildConfig({ // ... i18n: { supportedLanguages: { en, de }, }, // ...})
Tip: It’s best to only support the languages that you need so that the
bundled JavaScript is kept to a minimum for your project.
You can customize FrogBot’s built-in translations either by extending existing languages or by adding new languages entirely. This can be done by injecting new translation strings into existing languages, or by providing an entirely new language keys altogether.To add Custom Translations, use the i18n.translations key in your FrogBot Config:
import { buildConfig } from 'frogbot'export default buildConfig({ //... i18n: { translations: { en: { custom: { // namespace can be anything you want key1: 'Translation with {{variable}}', // translation }, // override existing translation keys general: { dashboard: 'Home', }, }, }, }, //...})
While FrogBot’s built-in features come fully translated, you may also want to translate parts of your own project. This is possible in Collections, including labels and groups, field labels, descriptions, and input placeholder text.To do this, provide the translations wherever applicable, keyed to the language code:
FrogBot’s backend sets the language on incoming requests before they are handled. This allows backend validation to return error messages in the user’s own language or system generated emails to be sent using the correct translation. You can make HTTP requests with the accept-language header and FrogBot will use that language.Anywhere in your FrogBot app that you have access to the req object, you can access FrogBot’s extensive internationalization features assigned to req.i18n. To access text translations you can use req.t('namespace:key').
In order to use Custom Translations in your project, you need to provide the types for the translations.Here we create a shareable translations object. We will import this in both our custom components and in our FrogBot config.In this example we show how to extend English, but you can do the same for any language you want.
// <rootDir>/custom-translations.tsimport { enTranslations } from '@frogbotcms/translations/languages/en'import type { NestedKeysStripped } from '@frogbotcms/translations'export const customTranslations = { en: { general: { myCustomKey: 'My custom english translation', }, fields: { addLabel: 'Add!', }, },}export type CustomTranslationsObject = typeof customTranslations.en & typeof enTranslationsexport type CustomTranslationsKeys = NestedKeysStripped<CustomTranslationsObject>
Import the shared translations object into our FrogBot config so they are available for use:
Import the shared translation types to use in your custom component:
// <rootDir>/components/MyComponent.tsx'use client'import type React from 'react'import { useTranslation } from '@frogbotcms/ui'import type { CustomTranslationsObject, CustomTranslationsKeys,} from '../custom-translations'export const MyComponent: React.FC = () => { const { i18n, t } = useTranslation< CustomTranslationsObject, CustomTranslationsKeys >() // These generics merge your custom translations with the default client translations return t('general:myCustomKey')}
Additionally, FrogBot exposes the t function in various places, for example in labels. Here is how you would type those:
// <rootDir>/fields/myField.tsimport type { TFunction } from '@frogbotcms/translations'import type { Field } from 'frogbot'import { CustomTranslationsKeys } from '../custom-translations'const field: Field = { name: 'myField', type: 'text', label: ({ t: defaultT }) => { const t = defaultT as TFunction<CustomTranslationsKeys> return t('fields:addLabel') },}
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"FrogBot Docs","colors":{"primary":"#030712","light":"#F9FAFB","dark":"#3acf6a"},"logo":{"light":"https://mintcdn.com/firmware/1jF8tzNdCWHCfika/logo/FrogBotLightGreen.svg?fit=max\u0026auto=format\u0026n=1jF8tzNdCWHCfika\u0026q=85\u0026s=de657b1e4825a6b0d0c7607cc6cd1933","dark":"https://mintcdn.com/firmware/1jF8tzNdCWHCfika/logo/FrogBotLongGreen.svg?fit=max\u0026auto=format\u0026n=1jF8tzNdCWHCfika\u0026q=85\u0026s=eed21f0fb6485cf12699700d0f455341"},"favicon":"https://mintcdn.com/firmware/pvDTxOOi5ftoZro_/favicon.svg?fit=max\u0026auto=format\u0026n=pvDTxOOi5ftoZro_\u0026q=85\u0026s=044d843a7a3071dad0518e3ad6f7d59d","api":{"mdx":{"auth":{"method":"bearer"},"server":"https://app.frogbot.ai/api"}},"background":{"color":{"light":"#F9FAFB","dark":"#0b1120"}},"navbar":{"links":[{"href":"https://github.com/frogbotai/frogbot","type":"github"},{"icon":"discord","href":"https://discord.gg/JBZF7syAnU","label":"Discord"},{"href":"https://x.com/cgilly2fast","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.frogbot.ai"}},"footer":{"socials":{"x":"https://x.com/frogbot_ai","linkedin":"https://www.linkedin.com/company/frogbotai"}},"styling":{"codeblocks":{"theme":"tokyo-night"},"latex":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"firmware","hasAudioNarration":false,"actualSubdomain":"firmware","customDomains":["docs.frogbot.ai"],"gitSource":{"type":"github","owner":"frogbotai","repo":"frogbot","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae354449757c0f6dff43b35","collectionId":"547721b1-d6ea-4b0a-982d-fd3b3bb600a4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae354449757c0f6dff43b35"},"entitlements":{},"buildId":"6ae54e87335dd0cca3e42f8f","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"General","count":174},{"language":"default","tag":"Features","count":75},{"language":"default","tag":"Basics","count":54},{"language":"default","tag":"Fields","count":34},{"language":"default","tag":"Ecosystem","count":24},{"language":"default","tag":"Cloud","count":21},{"language":"default","tag":"Plugins","count":16},{"language":"default","tag":"Managing Data","count":14},{"language":"default","tag":"Chat","count":11},{"language":"default","tag":"Pieces","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".dark #sidebar-content a,.dark #sidebar-content button{color:#d1d5db!important}.dark #sidebar-content a:hover,.dark #sidebar-content button:hover{color:#f9fafb!important}.dark .sidebar-group-header{color:#e5e7eb}.dark #content-area,.dark #content-area [data-as=p],.dark #content-area li,.dark #content-area p,.dark #content-area span:not(:where(pre, code) span),.dark .prose :where(p, li, span):not(:where(code, code *)){color:#cbd5e1!important}.dark .prose{--tw-prose-invert-body:#cbd5e1;--tw-prose-invert-lead:#cbd5e1;--tw-prose-invert-bullets:#64748b;--tw-prose-invert-counters:#94a3b8;--tw-prose-invert-quotes:#e2e8f0;--tw-prose-invert-captions:#94a3b8;--tw-prose-invert-headings:#f8fafc;--tw-prose-invert-bold:#f8fafc}.dark [data-component-part=card-content],.dark [data-component-part=card-content] *{color:#cbd5e1!important}.dark #table-of-contents a{color:#cbd5e1}.dark #table-of-contents a:hover{color:#f1f5f9}.dark #content-area h1,.dark #content-area h1 *,.dark #content-area h2,.dark #content-area h2 *,.dark #content-area h3,.dark #content-area h3 *,.dark #content-area h4,.dark #content-area h4 *,.dark [data-component-part=card-title]{color:#f8fafc!important}.prompt{background-color:#fff!important;border-color:rgb(var(--gray-950)/.1)!important;color:rgb(var(--gray-700))!important}.dark .prompt{background-color:rgb(var(--background-dark))!important;border-color:rgb(255 255 255/.1)!important;color:#cbd5e1!important}.prompt [data-component-part=prompt-action-copy-button]{background-color:rgb(var(--primary-dark))!important;border-color:transparent!important;color:#fff!important}.prompt [data-component-part=prompt-action-copy-button]:hover{background-color:rgb(var(--primary-dark)/.9)!important}.dark #content-area .prompt [data-component-part=prompt-action-copy-button] *,.prompt [data-component-part=prompt-action-copy-button] *{color:#fff!important}"}],"page":{"pagePath":"configuration/i18n","slug":"/configuration/i18n","pageMetadata":{"title":"I18n","sidebarTitle":"I18n","description":"Manage and customize internationalization support in your CMS editor experience","keywords":"internationalization, i18n, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, nextjs","href":"/configuration/i18n"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Manage and customize internationalization support in your CMS editor experience\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The Admin Panel is translated in over `,_jsx(_components.a,{href:`https://github.com/frogbotcms/frogbot/tree/main/packages/translations`,children:`30 languages and counting`}),`. With I18n, editors can navigate the interface and read API error messages in their preferred language. This is similar to `,_jsx(_components.a,{href:`/configuration/localization`,children:`Localization`}),`, but instead of managing translations for the data itself, you are managing translations for your application’s interface.`]}),`\n`,_jsx(_components.p,{children:`By default, FrogBot comes preinstalled with English, but you can easily load other languages into your own application. Languages are automatically detected based on the request. If no language is detected, or if the user’s language is not yet supported by your application, English will be chosen.`}),`\n`,_jsxs(_components.p,{children:[`To add I18n to your project, you first need to install the `,_jsx(_components.code,{children:`@frogbotcms/translations`}),` package:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:` install`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:` @frogbotcms/translations`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Once installed, it can be configured using the `,_jsx(_components.code,{children:`i18n`}),` key in your `,_jsx(_components.a,{href:`/configuration/overview`,children:`FrogBot Config`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`frogbot`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` default`}),_jsx(_components.span,{style:{color:`#7AA2F7`,\"--shiki-dark\":`#7AA2F7`},children:` buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`({`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // ...`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` i18n`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // ...`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`})`})}),`\n`]})})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note:`}),` If there is a language that FrogBot does not yet support, we accept\n`,_jsx(_components.a,{href:`https://github.com/frogbotcms/frogbot/blob/main/CONTRIBUTING.md`,children:`code\ncontributions`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`config-options`,children:`Config Options`}),`\n`,_jsx(_components.p,{children:`You can easily customize and override any of the i18n settings that FrogBot provides by default. FrogBot will use your custom options and merge them in with its own.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`frogbot`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` default`}),_jsx(_components.span,{style:{color:`#7AA2F7`,\"--shiki-dark\":`#7AA2F7`},children:` buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`({`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // ...`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` i18n`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` fallbackLanguage`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`}),_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // default`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`})`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The following options are available:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Option`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`fallbackLanguage`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`AcceptedLanguages`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`'en'`})}),_jsxs(_components.td,{children:[`Language used when the user’s preferred language isn’t supported. If it isn’t one of `,_jsx(_components.code,{children:`supportedLanguages`}),`, the first supported language is used.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`supportedLanguages`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Partial\u003cRecord\u003cAcceptedLanguages, Language>>`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{ en }`})}),_jsxs(_components.td,{children:[`Languages the admin panel offers, keyed by language code. Each value is a language object with its translations. `,_jsx(_components.a,{href:`#adding-languages`,children:`More details`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`translations`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Partial\u003cRecord\u003cAcceptedLanguages, object>>`})}),_jsx(_components.td,{children:`—`}),_jsxs(_components.td,{children:[`Translation overrides and additions, keyed by language code. They are merged into the built-in strings. `,_jsx(_components.a,{href:`#custom-translations`,children:`More details`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`adding-languages`,children:`Adding Languages`}),`\n`,_jsxs(_components.p,{children:[`You can easily add new languages to your FrogBot app by providing the translations for the new language. FrogBot maintains a number of built-in translations that can be imported from `,_jsx(_components.code,{children:`@frogbotcms/translations`}),`, but you can also provide your own `,_jsx(_components.a,{href:`#custom-translations`,children:`Custom Translations`}),` to support any language.`]}),`\n`,_jsxs(_components.p,{children:[`To add a new language, use the `,_jsx(_components.code,{children:`i18n.supportedLanguages`}),` key in your `,_jsx(_components.a,{href:`/configuration/overview`,children:`FrogBot Config`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`frogbot`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`en`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotcms/translations/languages/en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`de`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotcms/translations/languages/de`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` default`}),_jsx(_components.span,{style:{color:`#7AA2F7`,\"--shiki-dark\":`#7AA2F7`},children:` buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`({`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // ...`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` i18n`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` supportedLanguages`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` de`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`})`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tip:`}),` It’s best to only support the languages that you need so that the\nbundled JavaScript is kept to a minimum for your project.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`custom-translations`,children:`Custom Translations`}),`\n`,_jsx(_components.p,{children:`You can customize FrogBot’s built-in translations either by extending existing languages or by adding new languages entirely. This can be done by injecting new translation strings into existing languages, or by providing an entirely new language keys altogether.`}),`\n`,_jsxs(_components.p,{children:[`To add Custom Translations, use the `,_jsx(_components.code,{children:`i18n.translations`}),` key in your `,_jsx(_components.a,{href:`/configuration/overview`,children:`FrogBot Config`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`20`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`20`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`frogbot`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` default`}),_jsx(_components.span,{style:{color:`#7AA2F7`,\"--shiki-dark\":`#7AA2F7`},children:` buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`({`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` //...`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` i18n`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` translations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` custom`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // namespace can be anything you want`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` key1`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Translation with {{variable}}`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`}),_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // translation`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` // override existing translation keys`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` general`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` dashboard`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Home`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` //...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`})`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`project-translations`,children:`Project Translations`}),`\n`,_jsxs(_components.p,{children:[`While FrogBot’s built-in features come fully translated, you may also want to translate parts of your own project. This is possible in `,_jsx(_components.a,{href:`/configuration/collections`,children:`Collections`}),`, including labels and groups, field labels, descriptions, and input placeholder text.`]}),`\n`,_jsx(_components.p,{children:`To do this, provide the translations wherever applicable, keyed to the language code:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`37`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`37`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` type`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`CollectionConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`frogbot`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#9D7CD8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9D7CD8`,\"--shiki-dark-font-style\":`italic`},children:` const`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` Articles`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` CollectionConfig`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` =`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` slug`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`articles`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` labels`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` singular`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Article`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` es`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Artículo`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` plural`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Articles`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` es`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Artículos`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` admin`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` group`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Content`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` es`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Contenido`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` fields`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` name`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`title`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` type`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`text`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` label`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Title`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` es`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Título`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` admin`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` placeholder`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Enter title`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` es`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Introduce el título`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` ]`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`changing-languages`,children:`Changing Languages`}),`\n`,_jsx(_components.p,{children:`Users can change their preferred language in their account settings or by otherwise manipulating their User Preferences.`}),`\n`,_jsx(Heading,{level:`2`,id:`node-js#node`,children:`Node.js#node`}),`\n`,_jsxs(_components.p,{children:[`FrogBot’s backend sets the language on incoming requests before they are handled. This allows backend validation to return error messages in the user’s own language or system generated emails to be sent using the correct translation. You can make HTTP requests with the `,_jsx(_components.code,{children:`accept-language`}),` header and FrogBot will use that language.`]}),`\n`,_jsxs(_components.p,{children:[`Anywhere in your FrogBot app that you have access to the `,_jsx(_components.code,{children:`req`}),` object, you can access FrogBot’s extensive internationalization features assigned to `,_jsx(_components.code,{children:`req.i18n`}),`. To access text translations you can use `,_jsx(_components.code,{children:`req.t('namespace:key')`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`typescript`,children:`TypeScript`}),`\n`,_jsxs(_components.p,{children:[`In order to use `,_jsx(_components.a,{href:`#custom-translations`,children:`Custom Translations`}),` in your project, you need to provide the types for the translations.`]}),`\n`,_jsx(_components.p,{children:`Here we create a shareable translations object. We will import this in both our custom components and in our FrogBot config.`}),`\n`,_jsx(_components.p,{children:`In this example we show how to extend English, but you can do the same for any language you want.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`20`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`20`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:`// \u003crootDir>/custom-translations.ts`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`enTranslations`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotcms/translations/languages/en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` type`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`NestedKeysStripped`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotcms/translations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#9D7CD8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9D7CD8`,\"--shiki-dark-font-style\":`italic`},children:` const`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` customTranslations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` =`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` general`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` myCustomKey`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`My custom english translation`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` fields`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#41A6B5`,\"--shiki-dark\":`#41A6B5`},children:` addLabel`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`Add!`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` type`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` CustomTranslationsObject`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` =`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` typeof`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` customTranslations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`.`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`en`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` \u0026`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` typeof`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` enTranslations`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` type`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` CustomTranslationsKeys`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` =`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` NestedKeysStripped`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:`CustomTranslationsObject`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Import the shared translations object into our FrogBot config so they are available for use:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:`// \u003crootDir>/frogbot.config.ts`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`frogbot`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`customTranslations`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`./custom-translations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` default`}),_jsx(_components.span,{style:{color:`#7AA2F7`,\"--shiki-dark\":`#7AA2F7`},children:` buildConfig`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`({`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` //...`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` i18n`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` translations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` customTranslations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:` //...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`})`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Import the shared translation types to use in your custom component:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`19`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:`// \u003crootDir>/components/MyComponent.tsx`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`use client`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` type`}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:` React`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`react`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`useTranslation`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotcms/ui`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` type`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:` CustomTranslationsObject`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:` CustomTranslationsKeys`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`}`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`../custom-translations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`export`}),_jsx(_components.span,{style:{color:`#9D7CD8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9D7CD8`,\"--shiki-dark-font-style\":`italic`},children:` const`}),_jsx(_components.span,{style:{color:`#7AA2F7`,\"--shiki-dark\":`#7AA2F7`},children:` MyComponent`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` React`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`.`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:`FC`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` =`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` ()`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` =>`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9D7CD8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9D7CD8`,\"--shiki-dark-font-style\":`italic`},children:` const`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` {`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` i18n`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` t`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` =`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` useTranslation`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:`\u003c`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` CustomTranslationsObject`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` CustomTranslationsKeys`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` >`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`() `}),_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:`// These generics merge your custom translations with the default client translations`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#BB9AF7`,\"--shiki-dark-font-style\":`italic`},children:` return`}),_jsx(_components.span,{style:{color:`#7AA2F7`,\"--shiki-dark\":`#7AA2F7`},children:` t`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`(`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`general:myCustomKey`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Additionally, FrogBot exposes the `,_jsx(_components.code,{children:`t`}),` function in various places, for example in labels. Here is how you would type those:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#51597D`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#51597D`,\"--shiki-dark-font-style\":`italic`},children:`// \u003crootDir>/fields/myField.ts`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` type`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`TFunction`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotcms/translations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` type`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`Field`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`frogbot`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` { `}),_jsx(_components.span,{style:{color:`#0DB9D7`,\"--shiki-dark\":`#0DB9D7`},children:`CustomTranslationsKeys`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:` from`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`../custom-translations`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9D7CD8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9D7CD8`,\"--shiki-dark-font-style\":`italic`},children:`const`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` field`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` Field`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` =`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` name`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`myField`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#73DACA`,\"--shiki-dark\":`#73DACA`},children:` type`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`text`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7AA2F7`,\"--shiki-dark\":`#7AA2F7`},children:` label`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` (`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`{`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` t`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`:`}),_jsx(_components.span,{style:{color:`#E0AF68`,\"--shiki-dark\":`#E0AF68`},children:` defaultT`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` }`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`)`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` =>`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9D7CD8`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9D7CD8`,\"--shiki-dark-font-style\":`italic`},children:` const`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:` t`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` =`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` defaultT`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` as`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:` TFunction`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:`CustomTranslationsKeys`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#BB9AF7`,\"--shiki-dark-font-style\":`italic`},children:` return`}),_jsx(_components.span,{style:{color:`#7AA2F7`,\"--shiki-dark\":`#7AA2F7`},children:` t`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`(`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`fields:addLabel`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`}),_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:` }`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#9ABDF5`,\"--shiki-dark\":`#9ABDF5`},children:`}`})}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":"tokyo-night"},"config":{},"pageMetadata":{"title":"I18n","sidebarTitle":"I18n","description":"Manage and customize internationalization support in your CMS editor experience","keywords":"internationalization, i18n, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, nextjs","href":"/configuration/i18n"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Config Options","slug":"config-options","depth":2,"children":[]},{"title":"Adding Languages","slug":"adding-languages","depth":2,"children":[{"title":"Custom Translations","slug":"custom-translations","depth":3,"children":[]},{"title":"Project Translations","slug":"project-translations","depth":3,"children":[]}]},{"title":"Changing Languages","slug":"changing-languages","depth":2,"children":[]},{"title":"Node.js#node","slug":"node-js#node","depth":2,"children":[]},{"title":"TypeScript","slug":"typescript","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"firmware","siteName":"FrogBot Docs","title":"I18n - FrogBot Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-02T22:42:56.119Z","originalFileLocation":"configuration/i18n.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Manage and customize internationalization support in your CMS editor experience\">\u003cmeta data-mint-head name=\"application-name\" content=\"FrogBot Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"I18n - FrogBot Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Manage and customize internationalization support in your CMS editor experience\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FrogBot Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.frogbot.ai/configuration/i18n\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://firmware.mintlify.app/_mintlify/api/og/v2?division=Configuration\u0026amp;title=I18n\u0026amp;description=Manage+and+customize+internationalization+support+in+your+CMS+editor+experience\u0026amp;theme=f4bccae87e3aea4ea0fb024f\u0026amp;signature=24f47746f9497ed5b0c12be34b3a66a458513f5a13a72d186474e073ed59040c\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"I18n - FrogBot Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Manage and customize internationalization support in your CMS editor experience\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://firmware.mintlify.app/_mintlify/api/og/v2?division=Configuration\u0026amp;title=I18n\u0026amp;description=Manage+and+customize+internationalization+support+in+your+CMS+editor+experience\u0026amp;theme=f4bccae87e3aea4ea0fb024f\u0026amp;signature=24f47746f9497ed5b0c12be34b3a66a458513f5a13a72d186474e073ed59040c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FrogBot Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#030712\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.frogbot.ai/configuration/i18n\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/configuration/i18n.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.frogbot.ai/#organization\",\"name\":\"FrogBot Docs\",\"url\":\"https://docs.frogbot.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/firmware/1jF8tzNdCWHCfika/logo/FrogBotLightGreen.svg?fit=max\u0026auto=format\u0026n=1jF8tzNdCWHCfika\u0026q=85\u0026s=de657b1e4825a6b0d0c7607cc6cd1933\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.frogbot.ai#website\",\"name\":\"FrogBot Docs\",\"url\":\"https://docs.frogbot.ai\",\"publisher\":{\"@id\":\"https://docs.frogbot.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.frogbot.ai/configuration/i18n#webpage\",\"url\":\"https://docs.frogbot.ai/configuration/i18n\",\"name\":\"I18n\",\"description\":\"Manage and customize internationalization support in your CMS editor experience\",\"dateModified\":\"2026-10-02T22:42:56.119Z\",\"isPartOf\":{\"@id\":\"https://docs.frogbot.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.frogbot.ai/configuration/i18n#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.frogbot.ai/configuration/i18n#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Basics\",\"item\":\"https://docs.frogbot.ai/configuration/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuration\",\"item\":\"https://docs.frogbot.ai/configuration/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"I18n\",\"item\":\"https://docs.frogbot.ai/configuration/i18n\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.frogbot.ai/configuration/i18n#article\",\"headline\":\"I18n\",\"name\":\"I18n\",\"description\":\"Manage and customize internationalization support in your CMS editor experience\",\"url\":\"https://docs.frogbot.ai/configuration/i18n\",\"mainEntityOfPage\":{\"@id\":\"https://docs.frogbot.ai/configuration/i18n#webpage\"},\"dateModified\":\"2026-10-02T22:42:56.119Z\",\"publisher\":{\"@id\":\"https://docs.frogbot.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.frogbot.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FrogBot Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FrogBot Docs","nav":{"global":{},"tabs":[{"tab":"General","groups":[{"group":"Start here","pages":[{"title":"What is FrogBot?","sidebarTitle":"What is FrogBot?","href":""},{"title":"Set up FrogBot step by step","sidebarTitle":"Step-by-step setup","href":"/getting-started/setup"},{"title":"Start with a coding agent","sidebarTitle":"Start with a coding agent","href":"/getting-started/coding-agent"},{"title":"Installation","sidebarTitle":"Installation","href":"/getting-started/installation"},{"title":"CLI","sidebarTitle":"CLI","href":"/getting-started/cli"},{"title":"FrogBot concepts","sidebarTitle":"Concepts","href":"/getting-started/concepts"}]},{"group":"Basics","pages":[{"group":"Configuration","expanded":false,"pages":[{"title":"Configuration","sidebarTitle":"Overview","href":"/configuration/overview"},{"title":"Collection Configs","sidebarTitle":"Collections","href":"/configuration/collections"},{"title":"Environment Variables","sidebarTitle":"Environment Variables","description":"Learn how to use Environment Variables in your FrogBot project","href":"/configuration/environment-vars"},{"title":"I18n","sidebarTitle":"I18n","href":"/configuration/i18n"},{"title":"Localization","sidebarTitle":"Localization","description":"Add and maintain as many locales as you need by adding Localization to your FrogBot Config, set options for default locale, fallbacks, fields and more.","href":"/configuration/localization"}]},{"group":"Database","expanded":false,"pages":[{"title":"Database","sidebarTitle":"Overview","href":"/database/overview"},{"title":"MongoDB","sidebarTitle":"MongoDB","href":"/database/mongodb"},{"title":"Postgres","sidebarTitle":"Postgres","href":"/database/postgres"},{"title":"SQLite","sidebarTitle":"SQLite","href":"/database/sqlite"},{"title":"Migrations","sidebarTitle":"Migrations","href":"/database/migrations"},{"title":"Transactions","href":"/database/transactions"},{"title":"Indexes","sidebarTitle":"Indexes","href":"/database/indexes"}]},{"group":"Search","expanded":false,"pages":[{"title":"Collection search","sidebarTitle":"Overview","href":"/search/overview"}]},{"group":"Access Control","expanded":false,"pages":[{"title":"Access Control","sidebarTitle":"Overview","href":"/access-control/overview"},{"title":"Collection Access Control","sidebarTitle":"Collections","href":"/access-control/collections"},{"title":"Field-level Access Control","sidebarTitle":"Fields","href":"/access-control/fields"}]},{"group":"Hooks","expanded":false,"pages":[{"title":"Hooks Overview","sidebarTitle":"Overview","href":"/hooks/overview"},{"title":"Collection Hooks","sidebarTitle":"Collections","href":"/hooks/collections"},{"title":"Field Hooks","sidebarTitle":"Fields","href":"/hooks/fields"},{"title":"Context","sidebarTitle":"Context","href":"/hooks/context"}]},{"group":"Fields","expanded":false,"pages":[{"title":"Fields Overview","sidebarTitle":"Overview","href":"/fields/overview"},{"title":"Text Field","sidebarTitle":"Text","href":"/fields/text"},{"title":"Textarea Field","sidebarTitle":"Textarea","href":"/fields/textarea"},{"title":"Number Field","sidebarTitle":"Number","href":"/fields/number"},{"title":"Email Field","sidebarTitle":"Email","href":"/fields/email"},{"title":"Checkbox Field","sidebarTitle":"Checkbox","href":"/fields/checkbox"},{"title":"Date Field","sidebarTitle":"Date","href":"/fields/date"},{"title":"Select Field","sidebarTitle":"Select","href":"/fields/select"},{"title":"Radio Group Field","sidebarTitle":"Radio Group","href":"/fields/radio"},{"title":"Relationship Field","sidebarTitle":"Relationship","href":"/fields/relationship"},{"title":"Upload Field","sidebarTitle":"Upload","href":"/fields/upload"},{"title":"Rich Text Field","sidebarTitle":"Rich Text","href":"/fields/rich-text"},{"title":"Array Field","sidebarTitle":"Array","href":"/fields/array"},{"title":"Blocks Field","sidebarTitle":"Blocks","href":"/fields/blocks"},{"title":"Group Field","sidebarTitle":"Group","href":"/fields/group"},{"title":"Tabs Field","sidebarTitle":"Tabs","href":"/fields/tabs"},{"title":"Row Field","sidebarTitle":"Row","href":"/fields/row"},{"title":"Collapsible Field","sidebarTitle":"Collapsible","href":"/fields/collapsible"},{"title":"Join Field","sidebarTitle":"Join","href":"/fields/join"},{"title":"JSON Field","sidebarTitle":"JSON","href":"/fields/json"},{"title":"Vector field","sidebarTitle":"Vector","href":"/fields/vector"},{"title":"Code Field","sidebarTitle":"Code","href":"/fields/code"},{"title":"Point Field","sidebarTitle":"Point","href":"/fields/point"},{"title":"UI Field","sidebarTitle":"UI","href":"/fields/ui"},{"group":"Field kinds","pages":[{"title":"Money Field","sidebarTitle":"Money","href":"/fields/money"},{"title":"Percent Field","sidebarTitle":"Percent","href":"/fields/percent"},{"title":"Rating Field","sidebarTitle":"Rating","href":"/fields/rating"},{"title":"Duration Field","sidebarTitle":"Duration","href":"/fields/duration"},{"title":"URL Field","sidebarTitle":"URL","href":"/fields/url"},{"title":"Phone Field","sidebarTitle":"Phone","href":"/fields/phone"},{"title":"Barcode Field","sidebarTitle":"Barcode","href":"/fields/barcode"},{"title":"Autonumber Field","sidebarTitle":"Autonumber","href":"/fields/autonumber"},{"title":"AI Field","sidebarTitle":"AI","href":"/fields/ai"}]},{"title":"Fields Generated by FrogBot","sidebarTitle":"Generated Fields","href":"/fields/default-fields"}]}]},{"group":"Managing Data","pages":[{"group":"Local API","expanded":false,"pages":[{"title":"Local API","sidebarTitle":"Overview","href":"/local-api/overview"},{"title":"Respecting Access Control with Local API Operations","sidebarTitle":"Access Control","href":"/local-api/access-control"},{"title":"Using Local API Operations with Server Functions","sidebarTitle":"Server Functions","href":"/local-api/server-functions"},{"title":"Using FrogBot outside Next.js","sidebarTitle":"Outside Next.js","href":"/local-api/outside-nextjs"}]},{"group":"REST API","expanded":false,"pages":[{"title":"REST API","sidebarTitle":"Overview","href":"/rest-api/overview"}]},{"group":"GraphQL","expanded":false,"pages":[{"title":"Enable GraphQL","sidebarTitle":"Enable GraphQL","href":"/graphql/enable"},{"title":"GraphQL Overview","sidebarTitle":"Overview","href":"/graphql/overview"},{"title":"GraphQL Schema","sidebarTitle":"GraphQL Schema","href":"/graphql/graphql-schema"},{"title":"Adding your own Queries and Mutations","sidebarTitle":"Custom Queries and Mutations","href":"/graphql/extending"}]},{"group":"Queries","expanded":false,"pages":[{"title":"Querying your Documents","sidebarTitle":"Overview","href":"/queries/overview"},{"title":"Depth","sidebarTitle":"Depth","href":"/queries/depth"},{"title":"Pagination","sidebarTitle":"Pagination","href":"/queries/pagination"},{"title":"Select","sidebarTitle":"Select","href":"/queries/select"},{"title":"Sort","sidebarTitle":"Sort","href":"/queries/sort"}]}]},{"group":"Features","pages":[{"group":"Admin","expanded":false,"pages":[{"title":"Admin panel","sidebarTitle":"Overview","href":"/admin/overview"},{"title":"Admin navigation","sidebarTitle":"Admin navigation","href":"/admin/admin-navigation"},{"title":"Collection board","href":"/admin/collection-board"},{"title":"Collection calendar","href":"/admin/collection-calendar"}]},{"group":"Authentication","expanded":false,"pages":[{"title":"Authentication Overview","sidebarTitle":"Overview","href":"/authentication/overview"},{"title":"OAuth sign-in","sidebarTitle":"Sign-in","href":"/authentication/sign-in"},{"title":"Authentication Operations","sidebarTitle":"Operations","href":"/authentication/operations"},{"title":"JWT Strategy","sidebarTitle":"JWT Strategy","href":"/authentication/jwt"},{"title":"Cookie Strategy","sidebarTitle":"Cookie Strategy","href":"/authentication/cookies"},{"title":"Authentication Emails","sidebarTitle":"Email Verification","href":"/authentication/email"},{"title":"API Key Strategy","sidebarTitle":"API Key Strategy","href":"/authentication/api-keys"},{"title":"Token Data","sidebarTitle":"Token Data","href":"/authentication/token-data"},{"title":"Custom Strategies","sidebarTitle":"Custom Strategies","href":"/authentication/custom-strategies"}]},{"group":"Upload","expanded":false,"pages":[{"title":"Uploads","sidebarTitle":"Overview","href":"/upload/overview"},{"title":"Storage Adapters","sidebarTitle":"Storage Adapters","href":"/upload/storage-adapters"},{"title":"Files","sidebarTitle":"Files","href":"/upload/files"}]},{"group":"Jobs Queue","expanded":false,"pages":[{"title":"Jobs","href":"/jobs-queue/overview"},{"title":"Job workers","href":"/jobs-queue/workers"}]},{"group":"Versions","expanded":false,"pages":[{"title":"Versions","sidebarTitle":"Overview","href":"/versions/overview"},{"title":"Drafts","sidebarTitle":"Drafts","href":"/versions/drafts"},{"title":"Autosave","sidebarTitle":"Autosave","href":"/versions/autosave"}]},{"group":"Email","expanded":false,"pages":[{"title":"Email","sidebarTitle":"Overview","href":"/email/overview"}]},{"group":"Trash","expanded":false,"pages":[{"title":"Trash","sidebarTitle":"Overview","href":"/trash/overview"}]},{"group":"TypeScript","expanded":false,"pages":[{"title":"TypeScript - Overview","sidebarTitle":"Overview","href":"/typescript/overview"},{"title":"Generating TypeScript Interfaces","sidebarTitle":"Generating Types","href":"/typescript/generating-types"}]},{"group":"Troubleshooting","expanded":false,"pages":[{"title":"Troubleshooting","sidebarTitle":"Troubleshooting","href":"/troubleshooting/troubleshooting"}]},{"group":"Custom Components","expanded":false,"pages":[{"title":"Swap in your own React components","href":"/custom-components/overview"},{"title":"Root Components","href":"/custom-components/root-components"},{"title":"Swap in your own React Context providers","href":"/custom-components/custom-providers"},{"title":"Customizing Views","href":"/custom-components/custom-views"},{"title":"Dashboard Widgets","href":"/custom-components/dashboard"},{"title":"Document Views","href":"/custom-components/document-views"},{"title":"Edit View","href":"/custom-components/edit-view"},{"title":"List View","href":"/custom-components/list-view"}]},{"group":"Rich Text","expanded":false,"pages":[{"title":"Rich Text Editor","sidebarTitle":"Overview","href":"/rich-text/overview"},{"title":"Official Features","sidebarTitle":"Official Features","href":"/rich-text/official-features"},{"title":"Lexical Converters","sidebarTitle":"Converters","href":"/rich-text/converters"},{"title":"Converting JSX","sidebarTitle":"Converting JSX","href":"/rich-text/converting-jsx"},{"title":"Converting HTML","sidebarTitle":"Converting HTML","href":"/rich-text/converting-html"},{"title":"Converting Markdown","sidebarTitle":"Converting Markdown","href":"/rich-text/converting-markdown"},{"title":"Converting Plain Text","sidebarTitle":"Converting Plain Text","href":"/rich-text/converting-plaintext"},{"title":"Blocks","sidebarTitle":"Blocks","href":"/rich-text/blocks"},{"title":"Custom Features","sidebarTitle":"Custom Features","href":"/rich-text/custom-features"},{"title":"Rendering on demand (Experimental)","sidebarTitle":"Rendering on demand","href":"/rich-text/rendering-on-demand"},{"title":"Views (Experimental)","sidebarTitle":"Views","href":"/rich-text/views"}]},{"group":"Live Preview","expanded":false,"pages":[{"title":"Live Preview","sidebarTitle":"Overview","href":"/live-preview/overview"},{"title":"Implementing Live Preview in your frontend","sidebarTitle":"Frontend","href":"/live-preview/frontend"},{"title":"Server-side Live Preview","sidebarTitle":"Server-side","href":"/live-preview/server"},{"title":"Client-side Live Preview","sidebarTitle":"Client-side","href":"/live-preview/client"}]},{"group":"AI","expanded":false,"pages":[{"title":"AI","sidebarTitle":"AI","href":"/ai/overview"}]},{"group":"Agents","expanded":false,"pages":[{"title":"Agents","sidebarTitle":"Agents","href":"/agents/overview"}]},{"group":"Chat","expanded":false,"pages":[{"title":"Chat persistence","sidebarTitle":"Overview","href":"/chat/overview"},{"title":"Ask the user questions","sidebarTitle":"Questions","href":"/chat/questions"},{"title":"Turns and queued messages","sidebarTitle":"Turns and queues","href":"/chat/turns"},{"title":"Chat manifest","sidebarTitle":"Manifest","api":"GET https://app.frogbot.ai/api/frogbot","href":"/chat/manifest"},{"title":"Training data export","sidebarTitle":"Training data","href":"/chat/training-data"},{"title":"Install the chat UI","sidebarTitle":"UI installation","href":"/chat/ui-installation"},{"title":"Set up the chat provider","sidebarTitle":"Provider setup","href":"/chat/ui-provider"},{"title":"Render Chat","sidebarTitle":"Chat component","href":"/chat/ui-chat"},{"title":"Theme and white-label the chat UI","sidebarTitle":"Theming","href":"/chat/ui-theming"},{"title":"Register tools and artifacts","sidebarTitle":"Tools and artifacts","href":"/chat/ui-registries"},{"title":"Build your own chat shell","sidebarTitle":"Build your own shell","href":"/chat/ui-custom-shell"}]},{"group":"MCP","expanded":false,"pages":[{"title":"MCP servers","sidebarTitle":"MCP servers","href":"/mcp/overview"}]},{"group":"Connections","expanded":false,"pages":[{"title":"Connections","sidebarTitle":"Connections","href":"/connections/overview"}]},{"group":"Pieces","expanded":false,"pages":[{"title":"Pieces","sidebarTitle":"Pieces","href":"/pieces/overview"},{"title":"Available pieces","sidebarTitle":"Available pieces","href":"/pieces/index"},{"title":"Triggers","href":"/pieces/triggers"},{"title":"Web search via pieces","sidebarTitle":"Web search","href":"/pieces/web-search"},{"title":"Slack","href":"/pieces/slack"},{"title":"Discord","href":"/pieces/discord"},{"title":"Microsoft Teams","href":"/pieces/teams"},{"title":"Telegram","href":"/pieces/telegram"},{"title":"GitHub","href":"/pieces/github"},{"title":"Linear","href":"/pieces/linear"},{"title":"Channel questions","href":"/pieces/channel-questions"}]}]},{"group":"Ecosystem","pages":[{"group":"Plugins","expanded":false,"pages":[{"title":"Plugins","sidebarTitle":"Overview","href":"/plugins/overview"},{"title":"AI policy","href":"/plugins/ai-policy"},{"title":"API keys","sidebarTitle":"API keys","href":"/plugins/api-keys"},{"title":"Audit log","href":"/plugins/audit-log"},{"title":"AI request capture","href":"/plugins/capture"},{"title":"Dojo","href":"/plugins/dojo"},{"title":"Roles","sidebarTitle":"Roles","href":"/plugins/roles"},{"title":"Usage reports","href":"/plugins/usage-reports"},{"title":"MCP server","sidebarTitle":"MCP server","href":"/plugins/mcp"},{"title":"Import and export","href":"/plugins/import-export"},{"title":"Nested documents","href":"/plugins/nested-docs"},{"title":"Redirects","href":"/plugins/redirects"},{"title":"Sentry","href":"/plugins/sentry"},{"title":"SEO","href":"/plugins/seo"},{"title":"Stripe","href":"/plugins/stripe"},{"title":"Building Your Own Plugin","sidebarTitle":"Build Your Own","href":"/plugins/build-your-own"}]},{"group":"Gateway","expanded":false,"pages":[{"title":"Gateway","sidebarTitle":"Overview","href":"/gateway/overview"},{"title":"Providers","sidebarTitle":"Providers","href":"/gateway/providers"},{"title":"Configuration","sidebarTitle":"Configuration","href":"/gateway/configuration"},{"title":"Embedding","sidebarTitle":"Embedding","href":"/gateway/embedding"},{"title":"Hooks","sidebarTitle":"Hooks","href":"/gateway/hooks"},{"title":"Observability","sidebarTitle":"Observability","href":"/gateway/observability"},{"title":"Errors","sidebarTitle":"Errors","href":"/gateway/errors"}]},{"group":"Agent Skills","expanded":false,"pages":[{"title":"Coding agents","href":"/skills/coding-agents"}]}]},{"group":"Deployment","pages":[{"group":"Deployment","expanded":false,"pages":[{"title":"Deployment","sidebarTitle":"Deployment","href":"/deployment/overview"}]}]}]},{"tab":"Cloud","pages":[{"title":"Cloud","href":"/subscription-intro"}]}]},"basePath":"","title":"I18n - FrogBot Docs","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}