diff --git a/authors/jackie.mdx b/authors/jackie.mdx
index 2ac16548..c99d0722 100644
--- a/authors/jackie.mdx
+++ b/authors/jackie.mdx
@@ -1,6 +1,7 @@
---
name: Jackie Chen
avatar: /static/avatars/jackie.png
+occupation: Software Engineer
company: General Translation
email: jackie@generaltranslation.com
twitter: https://x.com/Some_Jackie
diff --git a/blog/en-US/gt-next.mdx b/blog/en-US/gt-next.mdx
index 4f30479e..eeaa8ea9 100644
--- a/blog/en-US/gt-next.mdx
+++ b/blog/en-US/gt-next.mdx
@@ -8,7 +8,7 @@ tags: ['guide', 'internationalization', 'nextjs', 'gt-next']
**Internationalization (i18n) sucks. We're building a Next.js library, gt-next, to make it easier.** Today we're launching it in open beta.
-``` copy
+```bash copy
npm i gt-next
```
diff --git a/blog/en-US/i18n-without-translation-files.mdx b/blog/en-US/i18n-without-translation-files.mdx
index 0be9ae2d..e3a77c0d 100644
--- a/blog/en-US/i18n-without-translation-files.mdx
+++ b/blog/en-US/i18n-without-translation-files.mdx
@@ -6,15 +6,13 @@ authors: [jackie]
tags: ['guide', 'internationalization', 'nextjs', 'i18n', 'gt-next', 'translation-files', 'developer-experience']
---
-import Video from '@/components/Video';
-
Everyone who's internationalized a JavaScript app knows the workflow. You install an i18n library, create an `en.json` file, pull every user-facing string out of your components, assign each one a key, and reference the key where the string used to be. Then you duplicate that JSON file for every language you support. `es.json`, `fr.json`, `ja.json`.
At first, it's fine. Thirty strings, three languages, 90 entries.
Then your app grows. Six months later you have 400 strings and 12 languages. 4,800 entries across a dozen files. A developer adds a new feature, writes five new strings, forgets to update three of the translation files. Nobody notices until a user in Tokyo sees English fallbacks in a Japanese interface. Someone suggests buying a translation management system.
-
+[Watch the demo video](https://assets.gtx.dev/i18n-no-translation.mp4)
## The file management tax
diff --git a/devlog/en-US/gt-react_v10_15_0.mdx b/devlog/en-US/gt-react_v10_15_0.mdx
index c54b98b2..318ee2f3 100644
--- a/devlog/en-US/gt-react_v10_15_0.mdx
+++ b/devlog/en-US/gt-react_v10_15_0.mdx
@@ -5,13 +5,11 @@ authors: [ernest]
tags: ['gt-react', 'derive', 'tagged-template', 'i18n']
---
-import Video from '@/components/Video';
-
## The `declareStatic()` → `derive()` rename
This release is the first to ship with the new `derive()` name. Previously, this function was called `declareStatic()` and the JSX component was ``. In [PR #1062](https://github.com/generaltranslation/gt/pull/1062), both were renamed to `derive()` and `` for clarity.
-
+[Watch the demo video](https://assets.gtx.dev/derive-animation.mp4)
## Overview
diff --git a/devlog/en-US/gt-react_v10_19_0.mdx b/devlog/en-US/gt-react_v10_19_0.mdx
index 398a1267..55d88086 100644
--- a/devlog/en-US/gt-react_v10_19_0.mdx
+++ b/devlog/en-US/gt-react_v10_19_0.mdx
@@ -5,9 +5,7 @@ authors: [ernest]
tags: ['gt-react', 'browser', 'hot-reload', 'dev-experience', 'i18n']
---
-import Video from '@/components/Video';
-
-
+[Watch the demo video](https://assets.gtx.dev/devlogs/gt-react-browser-tx-hot-reload.mp4)
## Overview
diff --git a/devlog/en-US/react-core-linter_v0_1_0.mdx b/devlog/en-US/react-core-linter_v0_1_0.mdx
index 22baaa2c..02429837 100644
--- a/devlog/en-US/react-core-linter_v0_1_0.mdx
+++ b/devlog/en-US/react-core-linter_v0_1_0.mdx
@@ -11,9 +11,7 @@ tags: ['react-core-linter', '0.1.0', 'eslint', 'linting', 'static-validation']
This plugin catches common implementation errors that we have seen in the wild.
-import Video from '@/components/Video';
-
-
+[Watch the demo video](https://assets.gtx.dev/docs/react-core-linter/web-0.1.0.mp4)
## Installation
diff --git a/docs/en-US/cli/faqs.mdx b/docs/en-US/cli/faqs.mdx
index 32e9381b..18d25431 100644
--- a/docs/en-US/cli/faqs.mdx
+++ b/docs/en-US/cli/faqs.mdx
@@ -3,22 +3,22 @@ title: FAQs
description: Frequently asked questions about the GT CLI tool
---
-### Do I need an API key to use the CLI?
+## Do I need an API key to use the CLI?
The [`translate`](/docs/cli/translate) command requires a production API key, which you can get for free at [generaltranslation.com](https://generaltranslation.com). The [`init`](/docs/cli/init) command can generate one for you during setup.
-### When should I run `gt translate`?
+## When should I run `gt translate`?
Run it in your CI/CD pipeline **before** building your app for production. It should not be used during development — in development, use development API keys for on-demand translation instead.
-### Can I use the CLI with libraries other than gt-next and gt-react?
+## Can I use the CLI with libraries other than gt-next and gt-react?
Yes. The CLI can generate translations for third-party i18n libraries like [next-intl](https://next-intl.dev/) and [i18next](https://react.i18next.com/). It can also translate standalone JSON, Markdown, MDX, JS, and TS files.
-### What file formats does the CLI support?
+## What file formats does the CLI support?
The CLI supports [JSON](/docs/cli/formats/json), [MDX](/docs/cli/formats/mdx), [HTML](/docs/cli/formats/html), [TypeScript/JavaScript](/docs/cli/formats/ts), [YAML](/docs/cli/formats/yaml), [PO/POT](/docs/cli/formats/po), [plain text](/docs/cli/formats/txt), and [GT's internal format](/docs/cli/formats/gt).
-### Where do the translations go?
+## Where do the translations go?
Depending on your configuration, translations are either uploaded to the GT CDN or saved locally in your project bundle. See [`save-local`](/docs/cli/save-local) for details on storing translations locally.
diff --git a/docs/en-US/core/class/methods/locales/requires-translation.mdx b/docs/en-US/core/class/methods/locales/requires-translation.mdx
index 88f35afd..4f22a6c1 100644
--- a/docs/en-US/core/class/methods/locales/requires-translation.mdx
+++ b/docs/en-US/core/class/methods/locales/requires-translation.mdx
@@ -6,7 +6,7 @@ description: API reference for the GT requiresTranslation method
## Overview
The `requiresTranslation` method determines whether translation is needed based on source and target locales.
-It checks if the source content needs to be translated by comparing locale codes and considering approved locale list.
+It checks if the source content needs to be translated by comparing locale codes and considering the approved locale list.
---
diff --git a/docs/en-US/core/index.mdx b/docs/en-US/core/index.mdx
index 4d76d69f..3b9eb345 100644
--- a/docs/en-US/core/index.mdx
+++ b/docs/en-US/core/index.mdx
@@ -8,9 +8,7 @@ description: Overview of the generaltranslation library
The `generaltranslation` library serves as GT's core i18n library housing utility functions and classes for translation and formatting.
It is often used with framework packages like `gt-next` and `gt-react`, but can be used as a standalone library.
-import Video from '@/components/Video';
-
-
+[Watch the demo video](https://assets.gtx.dev/core-demo.mp4)
```typescript title="index.ts"
import { GT } from 'generaltranslation';
diff --git a/docs/en-US/core/locales.mdx b/docs/en-US/core/locales.mdx
index 284ad8ef..cdbe5452 100644
--- a/docs/en-US/core/locales.mdx
+++ b/docs/en-US/core/locales.mdx
@@ -13,7 +13,7 @@ Locales can be general or specific. For example:
- `zh-Hant` is Chinese, written with traditional characters
- `zh-Hant-HK` is Chinese, written with traditional characters, as spoken in Hong Kong
-### Constructing locale codes
+## Constructing locale codes
General Translation uses the [BCP 47 Language Tag](https://www.techonthenet.com/js/language_tags.php) standard to define locale codes.
BCP 47 Language Tags are the Internet Best Current Practices (BCP) standard for identifying languages in both spoken and written forms.
@@ -37,14 +37,14 @@ For example, `zh-Hant-HK` is:
Together, `zh-Hant-HK` means "Chinese, written in traditional characters, as spoken in Hong Kong".
-### List of supported locales [#supported-locales]
+## List of supported locales [#supported-locales]
See the [list of supported locales](/docs/platform/supported-locales) for a searchable list of all locales currently supported by General Translation.
Technically, the library supports any validly constructed tag, including private use codes with no widely recognized meaning.
However, the platform will only translate
-### Equivalent locale tags
+## Equivalent locale tags
Sometimes, multiple locale tags are functionally equivalent.
For example, you could write:
@@ -55,7 +55,7 @@ For example, you could write:
The General Translation libraries and platform usually don't distinguish between these equivalent codes,
since translating between them is impossible.
-### Commonly used locale codes
+## Commonly used locale codes
| Locale code | Language | Script | Region | Description |
|---------------|-------------|---------------------|-----------------|-----------------------------------------------|
@@ -77,7 +77,7 @@ since translating between them is impossible.
| `pt-BR` | Portuguese | ― | Brazil | Portuguese as spoken in Brazil |
| `it` | Italian | ― | ― | Italian |
-### Next steps
+## Next steps
- See our [List of Supported Locales](/docs/platform/supported-locales) to find the language tags available in General Translation.
- Refer to the official [IETF Language Tag Registry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry)
diff --git a/docs/en-US/core/quickstart.mdx b/docs/en-US/core/quickstart.mdx
index 6abc8693..b13f7273 100644
--- a/docs/en-US/core/quickstart.mdx
+++ b/docs/en-US/core/quickstart.mdx
@@ -21,7 +21,7 @@ We will cover string translation and file translation.
This is completely free, and will give you access to the translation services.
- Navigate to the [`API Keys` page](https://dash.generaltranslation.com/api-keys) click `Create API Key`.
+ Navigate to the [`API Keys` page](https://dash.generaltranslation.com/api-keys) and click `Create API Key`.
Choose a name for your API key, and click `Create`.

@@ -106,7 +106,7 @@ In order to translate a file, you need to follow these four steps:
### 1. Upload the file
Uploading files returns a list of file references with the [`uploadSourceFiles`](/docs/core/class/methods/translation/upload-source-files) method.
- This allows you to later check the enqueue the file for translation, check the status of the file, and download the translated file.
+ This allows you to later enqueue the file for translation, check the status of the file, and download the translated file.
```typescript title="src/index.ts"
import fs from 'fs';
diff --git a/docs/en-US/locadex/faqs.mdx b/docs/en-US/locadex/faqs.mdx
index 61112e6f..dd86cc20 100644
--- a/docs/en-US/locadex/faqs.mdx
+++ b/docs/en-US/locadex/faqs.mdx
@@ -3,22 +3,22 @@ title: FAQs
description: Frequently asked questions about Locadex
---
-### What is Locadex?
+## What is Locadex?
Locadex is an AI agent that automates internationalization and translation for your project. Once installed, it monitors your repository and keeps translations up to date as your code changes.
-### How does Locadex integrate with my workflow?
+## How does Locadex integrate with my workflow?
Locadex connects to your GitHub repository and can run automatically when it detects changes, or manually from the dashboard. It opens pull requests with translation updates that you can review before merging.
-### Does Locadex work with monorepos?
+## Does Locadex work with monorepos?
Yes. See the [monorepos guide](/docs/locadex/monorepos) for configuration details.
-### What frameworks does Locadex support?
+## What frameworks does Locadex support?
Locadex currently has guides for [Next.js](/docs/locadex/next) and [Mintlify](/docs/locadex/mintlify). It can also work with other setups that use the GT CLI.
-### Can I control which translations Locadex updates?
+## Can I control which translations Locadex updates?
Yes. You can configure Locadex through your project settings on the dashboard and use [auto-merge](/docs/locadex/auto-merge) settings to control how translation PRs are handled.
diff --git a/docs/en-US/locadex/mintlify.mdx b/docs/en-US/locadex/mintlify.mdx
index 09fba0e9..a4c946ea 100644
--- a/docs/en-US/locadex/mintlify.mdx
+++ b/docs/en-US/locadex/mintlify.mdx
@@ -15,13 +15,13 @@ Locadex:
- Translates markdown files, code blocks, and snippets in context
- Continuously translates as you push new content
-### Step 1: Sign into the General Translation Dashboard
+## Step 1: Sign into the General Translation Dashboard
Sign into the General Translation [Dashboard](https://dash.generaltranslation.com).

-### Step 2: Connect GitHub
+## Step 2: Connect GitHub
Navigate to the [Locadex](https://dash.generaltranslation.com) section in your dashboard and click "Connect GitHub".
@@ -29,7 +29,7 @@ You'll be redirected to GitHub to authorize the connection.

-### Step 3: Install the GitHub app
+## Step 3: Install the GitHub app
Choose which repositories to give Locadex access to:
@@ -37,13 +37,13 @@ Choose which repositories to give Locadex access to:
Click "Install" to complete the GitHub app installation.
-### Step 4: Link repository to project
+## Step 4: Link repository to project
You'll be directed back to your General Translation project, where you can select the repository with your Mintlify docs.

-### Step 5: Configure settings
+## Step 5: Configure settings
On the configuration screen, set up:
@@ -53,13 +53,13 @@ On the configuration screen, set up:

-### Step 6: Complete installation
+## Step 6: Complete installation
Click "Install" to activate Locadex for your repository:

-### Step 7: Review the PR
+## Step 7: Review the PR
Locadex will create a pull request on your main branch. This may take a few minutes to complete.
@@ -67,17 +67,17 @@ Locadex will create a pull request on your main branch. This may take a few minu
Review the PR and merge it to complete your i18n setup.
-### Step 8: Continuous internationalization
+## Step 8: Continuous internationalization
After the initial setup PR is merged, Locadex monitors your main branch for commits and updates translations as needed.

-### Supported frameworks
+## Supported frameworks
Currently, Locadex only supports Mintlify and [Next.js App router](/docs/locadex) apps.
-### Troubleshooting
+## Troubleshooting
When you have Locadex installed across multiple GitHub accounts or organizations, the dashboard will display a list of all of the accounts and organizations.
Connecting to an account or organization will link that account to your current GT org.
diff --git a/docs/en-US/next/api/components/tx.mdx b/docs/en-US/next/api/components/tx.mdx
index 9e8c23ad..7071afc4 100644
--- a/docs/en-US/next/api/components/tx.mdx
+++ b/docs/en-US/next/api/components/tx.mdx
@@ -76,7 +76,7 @@ The trade off is that there is a delay while waiting for an on-demand translatio
While loading, `` will return undefined unless languages are similar (en-US vs en-GB), though this behavior can be customized with render settings.
If an error occurs, `` will return the original content.
-Our advice is to translate everything you can at build time using [``](/docs/next/api/components/t), [`getGT`](/docs/next/api/strings/use-gt), or [`useGT`](/docs/next/api/strings/use-gt),
+Our advice is to translate everything you can at build time using [``](/docs/next/api/components/t), [`getGT`](/docs/next/api/strings/get-gt), or [`useGT`](/docs/next/api/strings/use-gt),
and only use on-demand translations, like `` and [`tx`](/docs/next/api/strings/tx) when necessary.
Make sure to follow the [deployment guide here](/docs/next/tutorials/quickdeploy).
diff --git a/docs/en-US/next/api/strings/tx.mdx b/docs/en-US/next/api/strings/tx.mdx
index 2f00e28d..5d07aa82 100644
--- a/docs/en-US/next/api/strings/tx.mdx
+++ b/docs/en-US/next/api/strings/tx.mdx
@@ -54,7 +54,7 @@ The `tx` function translates strings at runtime.
This means that translations are performed live, so you can translate content that is only known at runtime.
The trade off is that there is a delay while waiting for an on-demand translation to load is significantly slower.
-Our advice is to translate everything you can at build time using [`getGT`](/docs/next/api/strings/use-gt), [`useGT`](/docs/next/api/strings/use-gt), or [``](/docs/next/api/components/t),
+Our advice is to translate everything you can at build time using [`getGT`](/docs/next/api/strings/get-gt), [`useGT`](/docs/next/api/strings/use-gt), or [``](/docs/next/api/components/t),
and only use on-demand translations, like `tx` and [``](/docs/next/api/components/tx), when necessary.
Make sure to follow the [deployment guide here](/docs/next/tutorials/quickdeploy).
diff --git a/docs/en-US/next/guides/cache-components.mdx b/docs/en-US/next/guides/cache-components.mdx
index 6a39f2ec..289da5e5 100644
--- a/docs/en-US/next/guides/cache-components.mdx
+++ b/docs/en-US/next/guides/cache-components.mdx
@@ -71,7 +71,7 @@ export const config = {
matcher: ['/((?!api|static|.*\\..*|_next).*)']
};
-````
+```
### Add the `locale` parameter to cached components with translatable content
diff --git a/docs/en-US/next/guides/dictionaries.mdx b/docs/en-US/next/guides/dictionaries.mdx
index 3b81d06a..95da7359 100644
--- a/docs/en-US/next/guides/dictionaries.mdx
+++ b/docs/en-US/next/guides/dictionaries.mdx
@@ -116,8 +116,8 @@ async function MyServerComponent() {
return (
-
{t('greetings.hello')}
-
{t('greetings.welcome')}
+
{d('greetings.hello')}
+
{d('greetings.welcome')}
);
}
diff --git a/docs/en-US/next/guides/migration.mdx b/docs/en-US/next/guides/migration.mdx
index a7af6c92..dfe00b05 100644
--- a/docs/en-US/next/guides/migration.mdx
+++ b/docs/en-US/next/guides/migration.mdx
@@ -104,7 +104,7 @@ You'll never have to wait for translations again.
1. Fully migrate your entire project to `gt-next`, and remove the old i18n library.
2. Fully migrate your project, but keep using dictionaries from the old i18n library.
- 2. Keep using the old i18n library for now, and only migrate part of your project to `gt-next`.
+ 3. Keep using the old i18n library for now, and only migrate part of your project to `gt-next`.
For more details on each option, see the [migration strategies](#strategies) section.
diff --git a/docs/en-US/next/tutorials/dictionary/setup.mdx b/docs/en-US/next/tutorials/dictionary/setup.mdx
index 2012e427..928dda1d 100644
--- a/docs/en-US/next/tutorials/dictionary/setup.mdx
+++ b/docs/en-US/next/tutorials/dictionary/setup.mdx
@@ -3,5 +3,4 @@ title: Setup
description: Set up a tutorial project
---
-🚧 This section is currently under construction. 🚧
diff --git a/docs/en-US/node/guides/strings.mdx b/docs/en-US/node/guides/strings.mdx
index 877797ae..c579f8d6 100644
--- a/docs/en-US/node/guides/strings.mdx
+++ b/docs/en-US/node/guides/strings.mdx
@@ -38,7 +38,7 @@ gt('{city} weather: {temp}°F', { city: 'Tokyo', temp: 72 });
## Pre-registered strings with `msg()` / `getMessages()`
-Use [`msg()`](/docs/node/api/get-messages) to register strings at module scope — outside of any request handler. Then use [`getMessages()`](/docs/node/api/get-messages) inside handlers to resolve them for the current locale:
+Use [`msg()`](/docs/node/api/strings/msg) to register strings at module scope — outside of any request handler. Then use [`getMessages()`](/docs/node/api/get-messages) inside handlers to resolve them for the current locale:
```js title="messages.js"
import { msg } from 'gt-node';
diff --git a/docs/en-US/overview/faqs.mdx b/docs/en-US/overview/faqs.mdx
index 56028394..cdbb90de 100644
--- a/docs/en-US/overview/faqs.mdx
+++ b/docs/en-US/overview/faqs.mdx
@@ -3,7 +3,7 @@ title: FAQs
description: Frequently Asked Questions
---
-### What is a locale?
+## What is a locale?
A locale is **a language or dialect**.
For example, `en-US` is a locale code, which refers to the English language as spoken in the United States of America.
@@ -11,14 +11,14 @@ For example, `en-US` is a locale code, which refers to the English language as s
* [Read more about locales](/docs/core/locales)
* [List of supported locales](/docs/platform/supported-locales)
-### Can I use the libraries without using the General Translation platform?
+## Can I use the libraries without using the General Translation platform?
Yes you can!
General Translation internationalization libraries are free, open-source, and can be configured to fetch translations from any source.
Read the docs on how to load your own translations [here](/docs/next/api/config/load-translations).
-### Section-specific FAQs
+## Section-specific FAQs
- [Platform](/docs/platform/faqs)
- [Locadex AI Agent](/docs/locadex/faqs)
diff --git a/docs/en-US/react-core-linter/guides/quickstart.mdx b/docs/en-US/react-core-linter/guides/quickstart.mdx
index a3f31b96..891c0e75 100644
--- a/docs/en-US/react-core-linter/guides/quickstart.mdx
+++ b/docs/en-US/react-core-linter/guides/quickstart.mdx
@@ -10,9 +10,7 @@ description: Quickstart guide for the React Core Linter
This is an ESLint plugin designed to be used with any of our i18n libraries, `gt-react`, `gt-next`, or `gt-react-native`.
It checks for common implementation errors and offers fixes.
-import Video from '@/components/Video';
-
-
+[Watch the demo video](https://assets.gtx.dev/docs/react-core-linter/web-0.1.0.mp4)
## Installation
diff --git a/docs/en-US/react-core-linter/index.mdx b/docs/en-US/react-core-linter/index.mdx
index e7048410..cbf3cd37 100644
--- a/docs/en-US/react-core-linter/index.mdx
+++ b/docs/en-US/react-core-linter/index.mdx
@@ -11,9 +11,7 @@ description: ESLint plugin for GT React libraries
It checks for issues like dynamic content inside `` components and dynamic strings in translation functions, and offers autofixes.
-import Video from '@/components/Video';
-
-
+[Watch the demo video](https://assets.gtx.dev/docs/react-core-linter/web-0.1.0.mp4)
## Rules
diff --git a/docs/en-US/react/faqs.mdx b/docs/en-US/react/faqs.mdx
index 1414fb32..7debe995 100644
--- a/docs/en-US/react/faqs.mdx
+++ b/docs/en-US/react/faqs.mdx
@@ -3,17 +3,17 @@ title: FAQs
description: Frequently asked questions about gt-react
---
-### What happens if there are missing translations in production?
+## What happens if there are missing translations in production?
If a translation for some content is missing in production, gt-react automatically falls back to the original source text. Your app will still render correctly — users will just see the default language for that piece of content.
-### Why do I have to install the CLI tool?
+## Why do I have to install the CLI tool?
The CLI tool parses the content inside all `` components and generates translations for that content in advance, so that all the translations are ready when your app is deployed to production.
In development, you don't need it because you can use development API keys to translate on demand.
-### Where does the `` component get its translations?
+## Where does the `` component get its translations?
`` can load translations from anywhere depending on how you've configured the library:
- If you have a project ID, the library can hit a free CDN
@@ -26,15 +26,15 @@ During development, the `` component hits an API which uses a small AI model
In production, `` won't do this, so your API keys are never exposed to the client.
-### Does AI translation work with dynamic content and variables?
+## Does AI translation work with dynamic content and variables?
The `` component doesn't support translating dynamic content and variables directly, because the translations could potentially change with every re-render. However, you can still include dynamic content inside a `` by wrapping it with ``, ``, or `` components. This is similar to how other libraries handle string interpolation.
-### Can I deploy my app without depending on GT servers?
+## Can I deploy my app without depending on GT servers?
Yes. You can do the translations yourself, then load them from your own bundle or your own CDN. See the [loadTranslations docs](/docs/react/api/config/load-translations) for details on loading translations from local files.
-### Why do I get `ReferenceError: TextEncoder is not defined` in Jest?
+## Why do I get `ReferenceError: TextEncoder is not defined` in Jest?
`jest-environment-jsdom` uses an older version of jsdom that doesn't include `TextEncoder`. GT libraries use it internally for hashing. This will resolve itself once Jest updates its jsdom dependency (newer jsdom versions already support `TextEncoder`), but in the meantime you can polyfill it with a setup file:
@@ -52,6 +52,6 @@ Then add it to your Jest config:
}
```
-### How do I migrate from react-intl or i18next?
+## How do I migrate from react-intl or i18next?
See the [migration guide](/docs/react/guides/migration) for step-by-step instructions on migrating from other i18n libraries.
diff --git a/docs/en-US/sanity/faqs.mdx b/docs/en-US/sanity/faqs.mdx
index 22c0db43..854e27cf 100644
--- a/docs/en-US/sanity/faqs.mdx
+++ b/docs/en-US/sanity/faqs.mdx
@@ -3,30 +3,30 @@ title: FAQs
description: Frequently asked questions about the GT Sanity plugin
---
-### Do I need to modify my schemas?
+## Do I need to modify my schemas?
No. The `gt-sanity` plugin works with your existing Sanity schemas as-is. You don't need to add i18n fields to your document types or restructure your data model. Translations are stored as separate documents that the plugin creates and manages for you.
-### Do I need to update my GROQ queries?
+## Do I need to update my GROQ queries?
Yes. The plugin creates separate translated documents with a `language` field, but it does not modify your frontend queries. You'll need to update your GROQ queries to fetch the correct language version for each user's locale. See the [quickstart](/docs/sanity/guides/quickstart#querying-translated-content) for examples.
-### Which version of Sanity does the plugin support?
+## Which version of Sanity does the plugin support?
The `gt-sanity` plugin v2 requires Sanity Studio v5 or later (and React 19+). If you're on Sanity v3 or v4, use `gt-sanity` v1.
-### Can I translate individual documents or only the entire site?
+## Can I translate individual documents or only the entire site?
Both. You can translate individual documents one at a time, or use batch operations to translate multiple documents or your entire site at once. You can also selectively import translations by locale.
-### How does the plugin handle Portable Text?
+## How does the plugin handle Portable Text?
Documents are serialized to HTML for translation, preserving structure and metadata. Portable Text, nested objects, arrays, and custom schema types are all supported. You can also provide [custom serializers](/docs/sanity/guides/serialization) to control how specific field types are handled.
-### Can I add the plugin to an existing project with content already in production?
+## Can I add the plugin to an existing project with content already in production?
Yes. The plugin is designed to work with existing Sanity projects without any migration or refactoring. It reads your existing documents and creates translated copies as separate documents. Your source content and schemas remain untouched.
-### Do translations overwrite my existing content?
+## Do translations overwrite my existing content?
No. Translated content is stored in separate translated documents, not in your source documents. Your source documents are never modified. You can review, edit, and manage translations independently.