# General Translation Knowledge Base: Как сделать сайт многоязычным?
URL: https://generaltranslation.com/ru/kb/make-website-multilingual.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Выберите, где будут храниться переводы — в прокси, плагине CMS, конструкторе сайтов или в вашем собственном коде, — а затем выделите каждому языку собственный URL, как рекомендует Google. Переводите страницы целиком, включая заголовки и метаописания, связывайте языковые версии с помощью hreflang и предлагайте переключатель языка вместо автоматического перенаправления посетителей.
Category: Интернационализация
Last updated: 2026-10-20
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-20

Многоязычный сайт отдаёт каждую страницу на нескольких языках: у каждой версии свой URL, а поисковые системы знают, как эти версии связаны между собой. Подходы различаются прежде всего тем, где хранится переведённый текст, и от этого зависит, какой контроль над SEO, качеством и обновлениями останется у вас. Поэтому определитесь с подходом до того, как начнёте что-либо переводить.

## Video

The video is narrated in English, with English captions.

[How do I make a website multilingual?](https://caxecubb9c64cezv.public.blob.vercel-storage.com/films/kb-make-website-multilingual.mp4) (50 с)

Pick where translations live, in a proxy, CMS plugin, site builder, or your own code, then give each language its own URL, as Google recommends. Translate full pages plus titles and meta descriptions, link the versions with hreflang, and offer a language switcher instead of auto-redirecting visitors. For sites built in code, wrap markup in `<T>` and run `npx gt translate` before the build.

## Какой подход выбрать?

Самый простой вариант не требует от вас никаких усилий: браузеры посетителей умеют переводить страницы сами. Например, [Chrome](https://support.google.com/chrome/answer/173424) может перевести страницу с помощью Google Translate, исходя из языковых настроек читателя. Это помогает отдельному читателю, но не делает ваш сайт многоязычным. Языковых URL для индексации нет, проверить результат вы не можете, а единственное, на что вы можете повлиять, — пометить текст (например, названия брендов) атрибутом [`translate="no"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/translate).

Прокси-сервисы перевода и JavaScript-оверлеи работают поверх готового сайта. [Обратный прокси Weglot](https://weglot.com/technical-presentation/) получает вашу страницу, переводит её содержимое через API Weglot и отдаёт результат на языковом поддомене или в подкаталоге, добавляя hreflang. JavaScript-интеграция Weglot, напротив, вставляет переводы в браузере уже после загрузки страницы; по словам Weglot, поисковые системы такие переводы не видят, поэтому этот режим рекомендуется для тестирования или закрытого контента. В обоих случаях переводы хранятся в панели управления поставщика.

Плагины для CMS и конструкторы сайтов хранят переводы внутри платформы. В WordPress [WPML](https://wpml.org/documentation/getting-started-guide/language-setup/language-url-options/) размещает языки в каталогах, на отдельном домене или поддомене для каждого языка либо в параметре `?lang=`, а [Polylang](https://wordpress.org/plugins/polylang/) определяет язык по коду в URL либо по отдельному поддомену или домену. [Webflow Localize](https://webflow.com/localization) отдаёт локали в подкаталогах вроде `/es/`, переводит мета-заголовки и описания и генерирует карту сайта с тегами hreflang. Многоязычный режим Squarespace [подключает Weglot](https://support.squarespace.com/hc/en-us/articles/205809778-Creating-a-multilingual-site-with-Weglot) на сайтах версии 7.1, а переводы редактируются в Weglot, поскольку сам Squarespace редактировать их не умеет.

Генераторы статических сайтов и библиотеки интернационализации хранят переводы в вашем репозитории. [Docusaurus](https://docusaurus.io/docs/i18n/introduction) хранит переведённые файлы в `i18n/[locale]/` и автоматически задаёт заголовки hreflang. [Hugo](https://gohugo.io/content-management/multilingual/) определяет язык страницы по суффиксу имени файла (например, `about.fr.md`) или по каталогу контента, а затем отдаёт её с префиксом вроде `/fr/`. В приложении на React, Next.js или Vue библиотека вроде i18next или next-intl выполняет рендеринг переводов из файлов, которые поддерживаете вы. Сами переводы ни один из этих инструментов не создаёт: вы пишете их сами, заказываете или подключаете инструмент перевода.

| Подход                                                     | Где хранятся переводы                           | Контроль SEO                                                                                                                 | Контроль качества                                                                               | Трудозатраты на разработку                                                                                                | Лучше всего подходит для                                                                              |
| ---------------------------------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| Перевод в браузере                                         | Генерируются в браузере каждого посетителя      | Нет; языковых URL нет                                                                                                        | Только `translate="no"`                                                                         | Нет                                                                                                                       | Читателей сайтов, которые вы не локализовали                                                          |
| Прокси или оверлей (Weglot)                                | Панель управления поставщика                    | Режим прокси добавляет языковые URL и hreflang; режим JavaScript не индексируется                                            | Машинный перевод, затем правки или заказной перевод, выполняемый людьми, в редакторе поставщика | Изменение DNS или тег script                                                                                              | Готовых сайтов, которые вы не хотите переделывать                                                     |
| Плагин CMS (WPML, Polylang)                                | Ваша база данных WordPress                      | Формат URL и переключатель настраиваются в плагине                                                                           | Ручной, машинный или агентский перевод внутри WordPress                                         | Настройка плагина, затем работа над каждой страницей                                                                      | Сайтов на WordPress                                                                                   |
| Конструктор сайтов (Webflow Localize, Squarespace)         | Конструктор или Weglot для Squarespace          | Управляется конструктором                                                                                                    | Машинный перевод плюс ручные правки                                                             | Низкие                                                                                                                    | Сайтов, созданных и размещённых на этом конструкторе                                                  |
| i18n в генераторе статических сайтов (Docusaurus, Hugo)    | Файлы в вашем репозитории                       | Полный; URL и шаблоны под вашим контролем                                                                                    | Зависит от процесса, в котором создаются файлы                                                  | Умеренные; перевод — отдельная задача                                                                                     | Сайтов документации и контентных сайтов на основе Markdown                                            |
| General Translation                                        | Сгенерированные файлы в вашей сборке или CDN GT | Маршрутизация и метаданные под вашим контролем; `gt-next` предоставляет вспомогательные функции для маршрутизации по локалям | Контекст, извлекаемый из кода, общая терминология и встроенная проверка                         | Пометить исходный текст или подключить существующие каталоги, сгенерировать переводы перед сборкой, протестировать локали | Сайтов, которыми управляют разработчики и которым нужна не только рендеринг, но и генерация переводов |
| Только библиотека интернационализации (i18next, next-intl) | Файлы перевода в вашем репозитории              | Полный                                                                                                                       | Зависит от процесса, в котором создаются файлы                                                  | Извлечение строк, маршрутизация, доставка переводов и QA; существующие интеграции могут взять часть работы на себя        | Приложений, в которых процесс перевода уже налажен                                                    |

Если маркетинговой команде нужны переведённые страницы без пересборки сайта, используйте прокси или встроенную функцию конструктора сайтов. Для WordPress подойдёт CMS-плагин. Если сайт ведут разработчики и переводы уже есть, используйте средства i18n генератора статических сайтов или библиотеку интернационализации. Выбирайте General Translation, если вам также нужно генерировать и проверять обновления в рамках релизов: его CLI умеет переводить существующие файлы, не заменяя вашу библиотеку. Объём работы зависит от того, как у вас устроены маршрутизация, контент и процесс проверки; в таблице перечислены задачи, а не замеренное время настройки.

## Вопросы, на которые должен ответить любой подход

Какой бы подход вы ни выбрали, в нём придётся решить семь вопросов — примерно в таком порядке.

### 1. Выберите языки и локали

Начните с тех рынков, откуда уже приходят ваш трафик и клиенты. Каждая новая локаль — это набор страниц, которые нужно перевести, проверить и поддерживать в актуальном состоянии. Поэтому добавляйте региональный вариант только там, где для этой аудитории отличаются формулировки или форматы: например, бразильский и европейский португальский (`pt-BR`, `pt-PT`) различаются лексикой, а одной локали `fr` вполне достаточно для франкоязычных читателей из разных стран. О том, как записывать и выбирать эти теги, рассказывается в [руководстве по кодам локалей](/docs/platform/core/guides/locale-codes).

### 2. Выберите структуру URL

Google [рекомендует использовать отдельный URL для каждой языковой версии](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites), а не один URL, язык которого меняется в зависимости от cookie-файла или настроек браузера. Подойдут и подкаталоги (`example.com/fr/`), и поддомены, и национальные домены; их сравнение приведено в [руководстве по структуре URL](/kb/multilingual-url-structure).

### 3. Переведите контент и метаданные

Google [определяет язык страницы по её видимому содержимому](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites), а не по атрибутам `lang` или URL, и не рекомендует переводить только навигацию, оставляя основной текст на исходном языке. Переводите страницу целиком, а также её заголовок, метаописание, alt-текст изображений, сообщения об ошибках в формах и письма, которые отправляет страница. При этом всё равно указывайте `<html lang>` в каждой языковой версии: [браузеры и программы чтения с экрана используют этот атрибут](https://www.w3.org/International/questions/qa-lang-why) для выбора шрифтов, расстановки переносов и озвучивания текста.

### 4. Добавьте hreflang

Аннотации hreflang сообщают поисковым системам, какие URL являются языковыми версиями одной и той же страницы, чтобы в результатах поиска пользователь видел версию на своём языке. В статье [Что такое hreflang](/kb/what-is-hreflang) описаны правила, `x-default` и типичные ошибки.

### 5. Добавьте переключатель языка

Добавьте на страницу заметный элемент управления, который переводит посетителя на ту же страницу на другом языке, и не [перенаправляйте его автоматически](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites) в зависимости от предполагаемого языка — Google не рекомендует так делать. Подробнее см. [руководство по переключателю языка](/kb/language-switcher), а о том, как выбрать подходящий язык для первого посещения, рассказывается в статье [об определении языка пользователя](/kb/detect-user-language).

### 6. Локализуйте форматирование

Даты, числа, валюты и формы множественного числа подчиняются разным правилам в зависимости от локали: `1,234.5` в английском записывается как `1.234,5` в немецком. API `Intl` в JavaScript и большинство библиотек интернационализации форматируют такие значения за вас. Если вы добавляете арабский или иврит, макет также нужно отразить зеркально — см. [CSS для right-to-left](/kb/right-to-left-css).

### 7. Поддерживайте переводы в актуальном состоянии

Версии сайта на других языках устаревают, как только кто-то впервые правит исходный текст, а перевод никто не запускает заново. Решите, кто или что будет переводить изменения и когда: при каждой публикации, при каждом развертывании или по графику проверок. Перед запуском пройдите [чек-лист запуска многоязычного приложения](/kb/multilingual-app-launch-checklist) для каждой локали.

## Как General Translation делает сайт многоязычным

Если сайт или приложение написаны в коде, выполните `npx gt@latest` в проекте Next.js или React: [мастер настройки](/docs/cli/quickstart) определит фреймворк и создаст конфигурацию. Затем оберните существующую разметку в [`<T>`](/docs/react/reference/components/t) (в `gt-vue` есть такой же компонент): текст останется там, где он написан, и вам не придётся поддерживать отдельный ключ источника для каждого сообщения. Перед сборкой выполните [`npx gt translate`](/docs/cli/reference/commands/translate), чтобы сгенерировать переводы для всех локалей. Каждая настройка пошагово описана в руководствах «Быстрый старт» для [Next.js](/docs/react/nextjs-quickstart), [React](/docs/react/react-quickstart) и [Vue](/docs/vue/quickstart).

[`createNextMiddleware`](/docs/react/nextjs/reference/functions/create-next-middleware) из `gt-next` обслуживает пути с префиксом локали, например `/es/about`. Однако по умолчанию основной язык остаётся без префикса, а такие URL перенаправляются в зависимости от cookie-файла локали посетителя или заголовка `Accept-Language`. Чтобы каждый URL с контентом всегда соответствовал одному языку, задайте `prefixDefaultLocale: true`. (Плюсы и минусы этого подхода описаны в статье [«Маршрутизация по локалям и SEO»](/kb/locale-routing-seo).)

Размеченный JSX передаёт сервису перевода структуру элементов текста и все явно заданные контекстные заметки. Перед публикацией проверьте сгенерированные формулировки в [редакторе панели управления](/docs/platform/dashboard/guides/reviewing-translations). При последующих запусках совпадающие переводы используются повторно, поэтому после правки источника не нужно заново генерировать переводы для всего сайта.

Помимо кода приложений, CLI переводит файлы [HTML](/docs/cli/reference/formats/html-files), [Markdown и MDX](/docs/cli/reference/formats/mdx-md-files), [Locadex](/docs/platform/locadex/quickstart) переводит документацию на Mintlify, Fern и Docusaurus, а интеграции позволяют подключить [Sanity](/docs/integrations/sanity/quickstart), [Payload CMS](/docs/integrations/payload/quickstart) и [Storyblok](/docs/integrations/storyblok/quickstart). Во всех случаях для терминологии и стиля используются общие [контекстные группы](/docs/platform/dashboard/guides/defining-context-for-translations).

## Ключевые выводы

* Прежде всего решите, где будут храниться переводы. Браузерный перевод и JavaScript-оверлеи не создают индексируемых языковых страниц; прокси, конструкторы сайтов и плагины хранят переводы у поставщика или на платформе, а при подходах на основе кода переводы хранятся в вашем репозитории.
* При любом подходе нужно решить одни и те же семь задач: локали, URL, переведённый контент и метаданные, hreflang, переключатель языков, форматирование и обновления.
* Google рекомендует использовать отдельный URL для каждого языка, определяет язык по видимому контенту и просит не перенаправлять посетителей автоматически.
* Для сайтов, написанных в коде, используйте [`<T>`](/docs/react/reference/components/t) для UI и [`npx gt translate`](/docs/cli/reference/commands/translate) для генерации переводов, затем настройте маршрутизацию и перед запуском протестируйте каждую локаль.

## Related questions

- [Подкаталог, поддомен или ccTLD для многоязычного SEO](https://generaltranslation.com/ru/kb/multilingual-url-structure.mdx): Используйте подкаталоги вида example.com/de/, если один продукт работает на общем сайте с единым процессом релизов. На страну указывает только ccTLD, поддомены позволяют размещать версии на отдельном хостинге, параметры ?lang= Google не рекомендует, а «имиджевые» домены вроде .io и .ai считает общими.
- [Что такое hreflang и как его настроить?](https://generaltranslation.com/ru/kb/what-is-hreflang.mdx): Hreflang сообщает Google, какие URL являются языковыми или региональными версиями одной и той же страницы, чтобы в результатах поиска показывалась нужная. Добавьте его с помощью HTML-тегов link, HTTP-заголовков Link или карты сайта, сделайте все ссылки взаимными и используйте корректные коды, например en-GB, а не en-UK.
- [Переключатель языка: лучшие практики UX, SEO и доступности](https://generaltranslation.com/ru/kb/language-switcher.mdx): Называйте каждый язык на нём самом, например Deutsch или 日本語, и не используйте флаги — они обозначают страны. Каждый вариант должен вести на ту же страницу на выбранном языке через индексируемую ссылку. Запоминайте выбор в cookie-файле и никогда не перенаправляйте автоматически с локализованного URL.
- [Чек-лист тестирования локализации для многоязычных приложений](https://generaltranslation.com/ru/kb/multilingual-app-launch-checklist.mdx): Проверьте девять аспектов в каждой поддерживаемой локали на сборке для рабочей среды: пользовательские сценарии целиком, включая состояния ошибок и письма; переключение языка; формы множественного числа; валюту и часовые пояса; увеличение длины текста; вёрстку для языков right-to-left; доступность; доставку переводов; индексируемые языковые URL. Задайте для каждой проверки явный критерий успешного прохождения.
- [Какое ПО для локализации лучше всего подходит разработчикам?](https://generaltranslation.com/ru/kb/best-localization-software.mdx): Лучшее ПО для локализации для разработчиков переводит контент прямо там, где он написан в коде, учитывает контекст вашего продукта и поддерживает все языки в актуальном состоянии. General Translation делает это с помощью библиотек с открытым исходным кодом, контекстных групп и Locadex — AI-агента, который открывает пул-реквесты.

## Previous and next questions

- Previous question: [Как поддержать RTL-языки (right-to-left) в CSS?](https://generaltranslation.com/ru/kb/right-to-left-css.mdx)
- Next question: [Переключатель языка: лучшие практики UX, SEO и доступности](https://generaltranslation.com/ru/kb/language-switcher.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/ru/kb/sitemap.md) for every article.
