diff --git a/localization.mdx b/localization.mdx new file mode 100644 index 000000000..c7fc29706 --- /dev/null +++ b/localization.mdx @@ -0,0 +1,151 @@ +--- +title: 'Localization' +description: 'Support multiple languages in your documentation' +icon: 'language' +--- + +Mintlify supports localization through its versioning system, allowing you to create documentation in multiple languages. + +## Setting Up Localization + +Add localization support by configuring the `versions` field in your `mint.json` file with locale specifications. + +```json +"versions": [ + { + "name": "English", + "locale": "en" + }, + { + "name": "Español", + "locale": "es" + } +] +``` + +The first localization in the array serves as the default language. + +## Supported Languages + +Mintlify currently supports the following languages: + +- English (`en`) +- Chinese (`cn`) +- Spanish (`es`) +- French (`fr`) +- Japanese (`jp`) +- Portuguese (`pt`) +- German (`de`) + + + The locale codes must match exactly as shown above to enable automatic + translation of UI elements. + + +## Organization + +There are several ways to organize your localized content: + +### Option 1: Folder Structure + +Create separate folders for each language: + +``` +content/ +├── en/ +│ ├── quickstart.mdx +│ └── api-reference.mdx +├── es/ +│ ├── quickstart.mdx +│ └── api-reference.mdx +└── fr/ + ├── quickstart.mdx + └── api-reference.mdx +``` + +### Option 2: Version Property + +Specify the locale in your navigation groups or individual pages: + +```json +"navigation": [ + { + "group": "Getting Started", + "version": "en", + "pages": ["quickstart", "installation"] + }, + { + "group": "Comenzar", + "version": "es", + "pages": ["es/quickstart", "es/installation"] + } +] +``` + +Or in the page metadata: + +```yaml +--- +title: "Quickstart" +version: "es" +--- +``` + +## What Gets Translated + +Localization in Mintlify works in two parts: + +1. **UI Elements** - Fixed content like "Was this page helpful?" and navigation elements are automatically translated based on the selected locale. + +2. **Documentation Content** - You are responsible for translating your actual documentation content, including: + - Page content + - Navigation labels + - Page titles and descriptions + - Component content + + + Mintlify does not automatically translate your documentation content. You must + provide translations for all content you want to be available in different + languages. + + +## Best Practices + + + + Maintain the same structure across all languages. Each translated version should mirror the organization of your primary language. + + + + Always specify a default language by putting it first in the versions array, or by explicitly setting `default: true`: + + ```json + "versions": [ + { + "name": "English", + "locale": "en", + "default": true + } + ] + ``` + + + + Consider using branches or folders in your repository to manage different language versions effectively. + + + +## Shared Content + +Content without a specified version or locale appears in all language versions. This is useful for: + +- Images and other assets +- Code examples +- API references +- Universal components + +## Related + + + Learn about version control for your documentation + \ No newline at end of file diff --git a/mint.json b/mint.json index 65c9d33d9..2f10a706c 100644 --- a/mint.json +++ b/mint.json @@ -1,41 +1,41 @@ { - "$schema": "https://mintlify.com/schema.json", - "name": "Mintlify", + "$schema": "localization", + "name": "localization", "logo": { - "light": "/logo/light.svg", - "dark": "/logo/dark.svg", - "href": "https://mintlify.com" + "light": "localization", + "dark": "localization", + "href": "localization" }, - "layout": "sidenav", - "favicon": "/favicon.svg", + "layout": "localization", + "favicon": "localization", "sidebar": { - "items": "border" + "items": "localization" }, "colors": { - "primary": "#0D9373", - "light": "#55D799", - "dark": "#0D9373" + "primary": "localization", + "light": "localization", + "dark": "localization" }, "api": { "auth": { - "method": "bearer" + "method": "localization" } }, "background": { - "style": "windows" + "style": "localization" }, "topbarLinks": [ { - "name": "Community", - "url": "https://mintlify.com/community" + "name": "localization", + "url": "localization" } ], "topbarCtaButton": { - "name": "Get Started", - "url": "https://mintlify.com/start" + "name": "localization", + "url": "localization" }, "codeBlock": { - "mode": "auto" + "mode": "localization" }, "feedback": { "thumbsRating": true, @@ -43,157 +43,157 @@ }, "tabs": [ { - "name": "Components", - "url": "content" + "name": "localization", + "url": "localization" }, { - "name": "Integrations", - "url": "integrations" + "name": "localization", + "url": "localization" }, { - "name": "Changelog", - "url": "changelog" + "name": "localization", + "url": "localization" } ], "navigation": [ { - "group": "Getting Started", + "group": "localization", "pages": [ - "quickstart", + "localization", { - "group": "Editing", - "icon": "pen-paintbrush", + "group": "localization", + "icon": "localization", "pages": [ - "development", - "web-editor" + "localization", + "localization" ] }, - "settings/global", - "settings/navigation", - "migration" + "localization", + "localization", + "localization" ] }, { - "group": "Writing Content", + "group": "localization", "pages": [ - "page", - "text", - "image-embeds", - "list-table", - "code", - "reusable-snippets" + "localization", + "localization", + "localization", + "localization", + "localization", + "localization" ] }, { - "group": "API References", + "group": "localization", "pages": [ - "api-playground/overview", + "localization", { - "group": "OpenAPI", - "icon": "brackets-curly", + "group": "localization", + "icon": "localization", "pages": [ - "api-playground/openapi/setup", - "api-playground/openapi/writing-openapi", - "api-playground/openapi/advanced-features" + "localization", + "localization", + "localization" ] }, { - "group": "MDX", - "icon": "markdown", + "group": "localization", + "icon": "localization", "pages": [ - "api-playground/mdx/configuration", - "api-playground/mdx/authentication" + "localization", + "localization" ] }, - "api-playground/troubleshooting" + "localization" ] }, { - "group": "Configurations", + "group": "localization", "pages": [ - "settings/custom-domain", - "settings/seo", - "settings/broken-links", - "settings/versioning", - "settings/add-members", - "settings/github", - "settings/gitlab", - "settings/preview-deployments" + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization" ] }, { - "group": "Advanced", + "group": "localization", "pages": [ { - "icon": "code", - "group": "Custom Scripts", + "icon": "localization", + "group": "localization", "pages": [ - "advanced/custom/css", - "advanced/custom/js" + "localization", + "localization" ] }, { - "icon": "folder", - "group": "Custom Subdirectory", + "icon": "localization", + "group": "localization", "pages": [ - "advanced/subpath/cloudflare", - "advanced/subpath/route53-cloudfront", - "advanced/subpath/vercel" + "localization", + "localization", + "localization" ] }, { - "icon": "user-lock", - "group": "Auth & Personalization", + "icon": "localization", + "group": "localization", "pages": [ - "settings/authentication-personalization/authentication", - "settings/authentication-personalization/personalization", - "settings/authentication-personalization/authentication-vs-personalization", + "localization", + "localization", + "localization", { - "group": "Authentication Setup", + "group": "localization", "pages": [ - "settings/authentication-personalization/authentication-setup/choosing-a-handshake", - "settings/authentication-personalization/authentication-setup/password", - "settings/authentication-personalization/authentication-setup/jwt", - "settings/authentication-personalization/authentication-setup/oauth", - "settings/authentication-personalization/authentication-setup/mintlify" + "localization", + "localization", + "localization", + "localization", + "localization" ] }, { - "group": "Personalization Setup", + "group": "localization", "pages": [ - "settings/authentication-personalization/personalization-setup/choosing-a-handshake", - "settings/authentication-personalization/personalization-setup/shared-session", - "settings/authentication-personalization/personalization-setup/jwt", - "settings/authentication-personalization/personalization-setup/oauth" + "localization", + "localization", + "localization", + "localization" ] }, - "settings/authentication-personalization/sending-data" + "localization" ] }, { - "icon": "plug", - "group": "Extensions", + "icon": "localization", + "group": "localization", "pages": [ - "advanced/widget/chat" + "localization" ] }, { - "icon": "brackets-curly", - "group": "REST API", + "icon": "localization", + "group": "localization", "pages": [ - "advanced/rest-api/overview", + "localization", { - "group": "Updates", + "group": "localization", "pages": [ - "advanced/rest-api/update/trigger", - "advanced/rest-api/update/status" + "localization", + "localization" ] }, { - "group": "Discovery API", + "group": "localization", "pages": [ - "advanced/rest-api/discovery/create-topic", - "advanced/rest-api/discovery/generate-message" + "localization", + "localization" ] } ] @@ -201,149 +201,149 @@ ] }, { - "group": "Analytics", + "group": "localization", "pages": [ - "integrations/analytics/overview", - "integrations/analytics/amplitude", - "integrations/analytics/clearbit", - "integrations/analytics/fathom", - "integrations/analytics/google-analytics", - "integrations/analytics/google-tag-manager", - "integrations/analytics/heap", - "integrations/analytics/hotjar", - "integrations/analytics/koala", - "integrations/analytics/logrocket", - "integrations/analytics/mixpanel", - "integrations/analytics/pirsch", - "integrations/analytics/plausible", - "integrations/analytics/posthog" + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization" ] }, { - "group": "SDKs", + "group": "localization", "pages": [ - "integrations/sdks/speakeasy", - "integrations/sdks/stainless" + "localization", + "localization" ] }, { - "group": "Support", + "group": "localization", "pages": [ - "integrations/support/overview", - "integrations/support/intercom", - "integrations/support/front" + "localization", + "localization", + "localization" ] }, { - "group": "Privacy", + "group": "localization", "pages": [ - "integrations/privacy/overview", - "integrations/privacy/osano" + "localization", + "localization" ] }, { - "group": "Components", + "group": "localization", "pages": [ - "content/components/accordions", - "content/components/accordion-groups", - "content/components/callouts", - "content/components/cards", - "content/components/card-groups", - "content/components/code", - "content/components/code-groups", - "content/components/frames", - "content/components/icons", - "content/components/mermaid-diagrams", - "content/components/steps", - "content/components/tabs", - "content/components/tooltips", - "content/components/update" + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization", + "localization" ] }, { - "group": "API Components", + "group": "localization", "pages": [ - "content/components/params", - "content/components/responses", - "content/components/expandables", - "content/components/sticky-examples" + "localization", + "localization", + "localization", + "localization" ] }, { - "group": "Changelog", + "group": "localization", "pages": [ - "changelog/overview" + "localization" ] } ], "footer": { "socials": { - "x": "https://x.com/mintlify", - "linkedin": "https://www.linkedin.com/company/mintlify", - "github": "https://github.com/mintlify", - "slack": "https://mintlify.com/community" + "x": "localization", + "linkedin": "localization", + "github": "localization", + "slack": "localization" }, "links": [ { - "title": "Resources", + "title": "localization", "links": [ { - "label": "Customers", - "url": "https://mintlify.com/customers" + "label": "localization", + "url": "localization" }, { - "label": "Enterprise", - "url": "https://mintlify.com/enterprise" + "label": "localization", + "url": "localization" }, { - "label": "Request Preview", - "url": "https://mintlify.com/preview" + "label": "localization", + "url": "localization" }, { - "label": "Integrations", - "url": "https://mintlify.com/docs/integrations/analytics/overview" + "label": "localization", + "url": "localization" }, { - "label": "Templates", - "url": "https://github.com/mintlify/themes" + "label": "localization", + "url": "localization" }, { - "label": "Wall of Love", - "url": "https://mintlify.com/love" + "label": "localization", + "url": "localization" } ] }, { - "title": "Company", + "title": "localization", "links": [ { - "label": "Careers", - "url": "https://mintlify.com/careers" + "label": "localization", + "url": "localization" }, { - "label": "Blog", - "url": "https://mintlify.com/blog" + "label": "localization", + "url": "localization" }, { - "label": "Public Roadmap", - "url": "https://feedback.mintlify.com/roadmap" + "label": "localization", + "url": "localization" }, { - "label": "Security", - "url": "https://mintlify.com/security/responsible-disclosure" + "label": "localization", + "url": "localization" } ] }, { - "title": "Legal", + "title": "localization", "links": [ { - "label": "Privacy Policy", - "url": "https://mintlify.com/legal/privacy" + "label": "localization", + "url": "localization" }, { - "label": "Terms of Service", - "url": "https://mintlify.com/legal/terms" + "label": "localization", + "url": "localization" } ] } @@ -351,10 +351,10 @@ }, "analytics": { "ga4": { - "measurementId": "G-RCYWHL7EQ7" + "measurementId": "localization" }, "koala": { - "publicApiKey": "pk_76a6caa274e800f3ceff0b2bc6b9b9d82ab8" + "publicApiKey": "localization" } } } \ No newline at end of file