База знаний
Ответы на частые вопросы о локализации приложений, документации и контента с помощью General Translation.
Интернационализация
Настройка i18n в кодовой базе: библиотеки, фреймворки и компоненты.
- Как перевести приложение на Flask или FastAPI?Отметьте строки, которые видит пользователь, определите локаль для каждого запроса (обычно по заголовку Accept-Language) и загрузите переводы для этой локали. В приложениях на Flask обычно используют Flask-Babel с каталогами gettext, а в приложениях на FastAPI Babel подключают через промежуточное ПО. CLI от General Translation заполняет эти каталоги, а экспериментальные SDK gt-flask и gt-fastapi переводят встроенные строки t() без всяких каталогов.Видео
- Как локализовать Android-приложение с помощью strings.xml?Храните все строки по умолчанию в res/values/strings.xml, добавьте strings.xml для каждого языка в папку с квалификатором локали, например values-es или values-b+zh+Hant+TW, и получайте текст через stringResource или getString. Переводите вручную, в Play Console или с помощью CLI от General Translation, который создаёт все папки values и заново формирует формы множественного числа для каждого языка перевода.Видео
- Как добавить i18n в приложение Next.js на Pages Router?Добавьте в next.config.js блок i18n с locales и defaultLocale — и Next.js будет отдавать страницы по адресам /es и /fr, перенаправлять посетителей в зависимости от языка браузера и передавать локаль в getStaticProps и getServerSideProps. Рендеринг сообщений берёт на себя библиотека; gt-next от General Translation, кроме того, генерирует переводы из текста, написанного прямо в JSX.Видео
- Как добавить i18n в TanStack Start?В TanStack Start нет встроенной поддержки i18n, поэтому нужно подключить библиотеку, которая разрешает локаль для каждого серверного запроса — обычно по префиксу URL или cookie-файлу — и загружает сообщения до рендеринга. Paraglide JS, react-i18next и Lingui выполняют рендеринг переводов, которые вы готовите сами; экспериментальный gt-tanstack-start от General Translation, кроме того, генерирует их из текста, встроенного прямо в JSX.Видео
- Как перевести строки вне JSX?Пропускайте каждую строку, которая не является дочерним элементом JSX (например, плейсхолдер или константу в области видимости модуля), через функцию перевода в том месте, где выполняется её рендеринг. Такую функцию возвращает хук useGT от General Translation, а msg вместе с useMessages переводит константы, определённые вне компонента.Видео
- Как перевести приложение на Vue?Чтобы перевести приложение на Vue, нужно заменить каждую строку шаблона поиском по ключу для активного языка и перевести её на все языки перевода. Плагин gt-vue от General Translation переводит контент, обёрнутый в компонент <T>, а npx gt translate создаёт отдельный каталог для каждого языка перевода.Видео
- Как перевести приложение на React Native?Разметьте текст в компонентах, сгенерируйте файл перевода для каждого языка, добавьте полифилы Intl и загружайте файл для языка устройства. С экспериментальной библиотекой gt-react-native от General Translation вы оборачиваете текст в <T>, Babel-плагин добавляет полифилы, а npx gt translate создаёт файлы.Видео
- Как перевести приложение на Node.js?Определяйте язык каждого запроса, обычно по заголовку Accept-Language, и возвращайте все строки на этом языке. Пакет gt-node от General Translation привязывает локаль к каждому запросу с помощью withGT и переводит строки с помощью getGT. Переводы для них генерирует команда npx gt translate --publish ещё до развертывания.Видео
- Как перевести React-приложение?Перевод React-приложения состоит из двух этапов — интернационализации компонентов, чтобы они отображались на языке пользователя, и перевода каждой строки на все поддерживаемые языки. gt-react от General Translation переводит JSX на месте в компоненте <T>, а npx gt translate создаёт по одному файлу на каждый язык.Видео
- Как интернационализировать приложение с помощью Cursor или Claude Code?Начните с промпта Setup for Agents от General Translation в Cursor или Claude Code, выберите функциональность и целевые языки, а затем поручите агенту реализовать и проверить результат. Вход через браузер, машиночитаемая документация и инструменты MCP связывают настройку с переводом и проверкой. Используйте Locadex, чтобы автоматизировать дальнейшую локализацию через пул-реквесты.Видео
- Как добавить i18n в приложение Next.js на App Router?Начните с gt init, чтобы настроить General Translation в поддерживаемом проекте на App Router, затем разметьте исходное содержимое, создайте переводы и проверьте переключение языка. gt-next хранит тексты прямо в JSX вместе с контекстом перевода, а CLI, редактор в панели управления и Locadex берут на себя генерацию, проверку и последующие обновления. В этом руководстве также показана явная настройка с локальными файлами.Видео
- Что такое псевдолокализация?Псевдолокализация — это тест, при котором исходный текст заменяется изменённой версией с диакритикой, удлинённой примерно на 40% и заключённой в скобки. Так жёстко закодированные строки, усечение, проблемы со шрифтами и склеенные из фрагментов предложения выявляются ещё до появления перевода. В Android для этого предусмотрены псевдолокали en-XA и ar-XB.Видео
- Переключатель языка: лучшие практики UX, SEO и доступностиНазывайте каждый язык на нём самом, например Deutsch или 日本語, и не используйте флаги — они обозначают страны. Каждый вариант должен вести на ту же страницу на выбранном языке через индексируемую ссылку. Запоминайте выбор в cookie-файле и никогда не перенаправляйте автоматически с локализованного URL.Видео
- Как сделать сайт многоязычным?Выберите, где будут храниться переводы — в прокси, плагине CMS, конструкторе сайтов или в вашем собственном коде, — а затем выделите каждому языку собственный URL, как рекомендует Google. Переводите страницы целиком, включая заголовки и метаописания, связывайте языковые версии с помощью hreflang и предлагайте переключатель языка вместо автоматического перенаправления посетителей.Видео
- Как определить язык браузера пользователя?Прочитайте упорядоченный список языков браузера (navigator.languages в JavaScript или заголовок Accept-Language на сервере с сортировкой по q-значению) и сопоставьте его с поддерживаемыми локалями, предусмотрев резервный вариант. Safari и Chrome в режиме инкогнито сообщают только один язык, а геолокация по IP указывает на местоположение, а не на язык.Видео
- Как найти захардкоженные строки, которые не переведены?Запустите в CI линтер, который находит строковые литералы, видимые пользователю, — например, правило no-literal-string из eslint-plugin-i18next для JSX, проверку HardcodedText в Android Lint или линтер HardCodedString из erb_lint для Rails. Затем пройдитесь по приложению в псевдолокали, чтобы найти текст, который статические проверки отследить не могут.Видео
- Как называть ключи переводов i18n?Называйте ключи по тому, где отображается текст и что он означает, например checkout.summary.title, а не по его английской формулировке. Для каждого отдельного случая использования заводите собственный ключ, даже если английский текст совпадает: в немецком кнопка Open переводится как Öffnen, а статус Open — как Offen.Видео
- Как локализовать iOS-приложение с помощью String Catalogs?Добавьте языки в Xcode, пишите текст для пользователей с помощью локализуемых API, таких как SwiftUI Text и String(localized:), и выполните сборку, чтобы Xcode собрал эти строки в String Catalog (.xcstrings). Переводите в Xcode, через XLIFF или с помощью CLI General Translation, если каталоги должны обновляться с каждым релизом и использовать общую терминологию с вашим сайтом и Android-приложением.Видео
- Интернационализация и локализация (i18n и l10n)Интернационализация (i18n) — это работа над кодом и дизайном, благодаря которой один продукт может поддерживать множество локалей: например, форматировать даты с помощью Intl и отображать текст с направлением right-to-left. Локализация (l10n) адаптирует продукт под конкретную локаль: это перевод, а также валюта, форматы дат, единицы измерения, тон и правовые нюансы.Видео
- Чек-лист тестирования локализации для многоязычных приложенийПроверьте девять аспектов в каждой поддерживаемой локали на сборке для рабочей среды: пользовательские сценарии целиком, включая состояния ошибок и письма; переключение языка; формы множественного числа; валюту и часовые пояса; увеличение длины текста; вёрстку для языков right-to-left; доступность; доставку переводов; индексируемые языковые URL. Задайте для каждой проверки явный критерий успешного прохождения.Видео
- Писать собственную i18n или использовать General Translation?Самописной i18n (по словарю на каждый язык и небольшой вспомогательной функции t()) вполне достаточно для одного-двух языков и небольшого объёма текста. По мере роста приложения вам приходится заново реализовывать правила множественного числа, резервные варианты и синхронизацию файлов, а переводы всё равно нужно где-то брать. Библиотеки General Translation с открытым исходным кодом берут на себя рендеринг, а General Translation генерирует и обновляет переводы на основе вашего кода.Видео
- Альтернативы react-intl: General Translation или react-intlGeneral Translation позволяет React-командам сохранить синтаксис ICU-сообщений и при этом получить генерацию переводов, общую терминологию и проверку в панели управления. react-intl отвечает за форматирование и предоставляет инструменты FormatJS для работы с каталогами, а General Translation ещё и создаёт сами переводы.Видео
- Альтернативы i18next: General Translation или i18nextВыбирайте General Translation, если хотите хранить тексты прямо в React-компонентах и создавать переводы с учётом их JSX-структуры и контекста продукта. Можно также оставить i18next и переводить существующие каталоги с помощью General Translation. i18next отвечает за рендеринг сообщений и выбор форм множественного числа, а сами переводы предоставляет отдельный сервис.Видео
- General Translation против i18next, react-intl и next-intl: какую библиотеку интернационализации выбрать?Библиотеки с открытым исходным кодом, такие как i18next, react-intl и next-intl, ничего не переводят. Они лишь отображают переводы, которые вы сами помещаете в файл каталога для каждого языка, — их пишете вы, ваши переводчики или сторонний сервис. Библиотеки General Translation тоже имеют открытый исходный код и делают то же самое, но General Translation ещё и выполняет перевод, используя ваш код как контекст.Видео
- General Translation или vue-i18n: что выбрать?General Translation позволяет командам Vue писать исходные тексты прямо в шаблонах и создавать переводы с помощью CLI. Плагин gt-vue выполняет рендеринг этого контента с учётом локали, включая формы множественного числа и форматирование чисел. Выбирайте его, если хотите избавиться от поддержки исходных файлов с ключами; vue-i18n по-прежнему подходит командам, которые используют модуль i18n для Nuxt и уже сложившийся рабочий процесс с каталогами.Видео
- General Translation или Symfony Translation: что выбрать?Symfony Translation выполняет рендеринг сообщений в PHP и Twig. General Translation переводит его YAML-каталоги в CI, поддерживает их в актуальном состоянии при изменении исходного текста и даёт рецензентам панель управления для их редактирования. Оставьте рендеринг за Symfony и добавьте автоматический перевод в рабочий процесс релиза.Видео
- General Translation или Paraglide JS: что выбрать?Выбирайте General Translation, если хотите держать тексты прямо в коде и создавать переводы с учётом структуры ваших React-компонентов, общей терминологии и проверки в панели управления. Выбирайте Paraglide JS, если вам нужны скомпилированные типизированные функции сообщений и tree-shaking на уровне отдельных сообщений. Paraglide выполняет рендеринг ваших каталогов, а General Translation связывает исходные тексты с созданием переводов и их последующим обновлением.Видео
- General Translation или nestjs-i18n: что выбрать?nestjs-i18n определяет язык каждого запроса в приложении NestJS и выполняет рендеринг сообщений из JSON- или YAML-каталогов для каждого языка, но сам ничего не переводит. CLI General Translation переводит эти каталоги, а библиотека gt-node переводит контент, который появляется только во время выполнения, поэтому можно оставить nestjs-i18n и добавить к нему General Translation.Видео
- General Translation или Mobility: что выбрать?Mobility хранит переведённые атрибуты моделей в вашей базе данных. General Translation создаёт эти переводы через свой API с учётом вашего Glossary и пользовательских промптов. Используйте оба инструмента, чтобы переводить карточки товаров, публикации и другой контент из базы данных, не отказываясь от своих моделей Rails.Видео
- General Translation или Lingui: что выбрать?Выбирайте General Translation, если хотите, как и в Lingui, держать тексты прямо в коде и генерировать переводы, используя структуру JSX в качестве контекста. Lingui извлекает встроенные сообщения в каталоги, которые затем переводят ваши переводчики или подключённый сервис. CLI General Translation обновляет переводы по мере изменения кода, а ваша команда проверяет их в панели управления.Видео
- General Translation или Intlayer: что выбрать?Intlayer хранит контент каждого компонента в типизированном файле объявлений рядом с ним, где все языки записаны бок о бок, и может заполнять недостающие языки с помощью настроенного вами ИИ-провайдера. General Translation хранит тексты прямо в компонентах на одном языке и генерирует остальные языки с учётом контекста вашего кода.Видео
- General Translation или Babel и Flask-Babel: что выбрать?Babel форматирует даты, числа и валюты для любой локали и управляет каталогами gettext, а Flask-Babel интегрирует его с Flask, но ни один из них не переводит ваши строки. CLI General Translation заполняет PO-файлы Babel для всех языков, включая формы множественного числа, поэтому вы можете и дальше использовать Flask-Babel, но больше не переводить каталоги вручную.Видео
- General Translation и фреймворк переводов Django: нужны ли оба?Используйте фреймворк переводов Django вместе с General Translation. Django отвечает за извлечение сообщений, выбор языка и рендеринг. General Translation заполняет его PO-файлы, включая формы множественного числа, с учётом терминологии вашего продукта и проверки в панели управления. Ваши шаблоны и URL-шаблоны остаются прежними, а переводы обновляются вместе с кодом.Видео
- General Translation и Rails I18n: нужны ли оба?Rails I18n находит сообщения и форматирует даты и числа. General Translation создаёт переводы, поддерживает их в актуальном состоянии по мере изменения английского текста и предоставляет вашей команде панель управления для проверки. Используйте оба инструмента, чтобы выпускать переведённые каталоги Rails с каждым релизом.Видео
- General Translation и GNU gettext: нужны ли оба?Оставьте GNU gettext для извлечения и рендеринга, а General Translation подключите для генерации и сопровождения PO-файлов. General Translation учитывает при генерации заметки для переводчиков и контекст сообщений, применяет общую терминологию и предоставляет рецензентам редактор в панели управления. Существующие вызовы gettext и скомпилированные каталоги остаются на месте.Видео
- Можно ли делать i18n без файлов перевода?Да. Библиотеки gt-react и gt-next от General Translation обеспечивают i18n для React и Next.js без ключей перевода и без отдельного JSON-файла для каждого языка, который приходится поддерживать. Тексты остаются встроенными в JSX внутри компонента <T>, а команда gt translate генерирует переводы для каждого языка во время сборки, учитывая контекст из вашего кода. Locadex может поддерживать их в актуальном состоянии через пул-реквесты.Видео
- Как перевести условный текст в JSX?Не разбивайте предложение и переводите каждый его вариант целиком, ведь тернарный оператор дробит его на фрагменты, которые теряют смысл и своё место в порядке слов каждого языка. В General Translation для этого используется <Branch> внутри <T>, который переводит предложение как единое целое.Видео
Форматирование с учётом локали
Формы множественного числа, даты, числа, валюты и текст с направлением right-to-left в каждой локали.
- Что такое коды локалей, например en-US и en-GB?Код локали обозначает язык, а при необходимости — его письменность и регион, например en-US для английского языка в США или zh-Hant-TW для традиционного китайского на Тайване. Большинство программ используют теги BCP 47, составленные из кодов ISO. General Translation использует коды BCP 47 для исходной и целевых локалей в gt.config.json.Видео
- Как форматировать числа, даты и валюты для каждой локали?Форматируйте каждое значение при рендеринге страницы с учётом локали читателя с помощью JavaScript Intl API и не включайте его в переводимое предложение. Компоненты General Translation <Num>, <Currency>, <DateTime> и <RelativeTime> делают и то и другое внутри <T>, поэтому один перевод подходит для любого значения.Видео
- Что такое формат сообщений ICU?Формат сообщений ICU — это синтаксис, позволяющий уместить в одной переводимой строке переменные, формы множественного числа, варианты выбора (select) и порядковые числительные, например {count, plural, one {# file} other {# files}}. Каждый язык использует только нужные ему категории множественного числа CLDR: в английском это one и other, а в польском к ним добавляются few и many.Видео
- Как поддержать RTL-языки (right-to-left) в CSS?Укажите dir="rtl" и lang на элементе html — сам по себе lang не меняет направление письма, — а затем замените физические CSS-свойства вроде margin-left логическими, например margin-inline-start. Flex-строки, grid-столбцы и выравнивание текста по умолчанию зеркалятся автоматически, а translateX(), left и right — нет.Видео
- Как работать с формами множественного числа в React?Чтобы работать с формами множественного числа в React, задайте для каждого языка по одному предложению на каждую форму множественного числа и выбирайте нужное по правилам множественного числа этого языка — ведь в английском 2 формы, в русском 4, а в арабском 6. Компонент <Plural> от General Translation в gt-react и gt-next принимает формы на исходном языке, а General Translation генерирует формы, нужные каждому языку перевода.Видео
Перевод
Машинный перевод и перевод с помощью ИИ, качество, контекст и глоссарии.
- Что такое память переводов и нужна ли она в эпоху ИИ?Память переводов (TM) — это база данных пар исходных и целевых сегментов из прошлых переводов, в которой инструмент перевода ищет точные, контекстные и нечёткие совпадения. При работе с ИИ по-прежнему важно повторно использовать утверждённые формулировки и передавать прошлые переводы как контекст. General Translation повторно использует совпадающие переводы из предыдущих версий файлов и сохраняет правки команды, и при этом не нужно поддерживать отдельную TM.Видео
- Лучшие инструменты ИИ-перевода для разработчиков: API или платформы локализацииИспользуйте API перевода, если у вас уже есть собственный конвейер локализации. Выбирайте General Translation, если хотите управлять контекстом, проверками согласованности, проверкой и непрерывной доставкой в одном месте. DeepL, Google Cloud Translation, OpenAI и Claude могут лежать в основе конвейера для рабочей среды; General Translation предоставляет готовый конвейер для вашего приложения, документации и сайта.Видео
- Как перевести файлы локалей в формате YAML?Переводите только строковые значения, а ключи, плейсхолдеры вроде %{name} или {{name}} и якоря оставляйте без изменений. Заключайте в кавычки значения, которые содержат двоеточие или начинаются с % или {, задайте для каждого файла корневой ключ локали или имя файла и добавьте ключи форм множественного числа, которые нужны языку перевода. CLI от General Translation переводит значения YAML на месте и не трогает ключи.Видео
- Как перевести файлы PO и POT?Заполните каждый msgstr, включая все формы множественного числа, которых требует заголовок Plural-Forms, а msgid, msgctxt и заполнители оставьте без изменений. Запустите msgfmt --check, чтобы проверить заголовки, количество форм множественного числа и заполнители в записях с флагом формата, а затем отдельно убедитесь, что не осталось пустых msgstr. CLI General Translation создаёт переведённый PO-файл для каждого языка на основе вашего POT-шаблона.Видео
- Как перевести файлы .resx в приложении .NET?Создайте копию каждого нейтрального файла .resx с кодом культуры в имени, например Resources.fr.resx, и переводите только значение каждой записи, не меняя имена, комментарии и заполнители вроде {0}. .NET компилирует каждую культуру в сателлитную сборку, а при отсутствии перевода переходит от fr-CA к fr и далее к нейтральному файлу. CLI General Translation создаёт эти файлы культур на основе нейтрального источника.Видео
- Как перевести анимации Lottie?Переведите строки в текстовых слоях анимации — в Lottie JSON они хранятся по пути t.d.k[].s.t, — а затем убедитесь, что каждый перевод помещается в свой блок, шрифты поддерживают новую письменность и никакой текст не был экспортирован в виде фигур. Экспортируйте анимацию заново для каждого языка, подменяйте текст во время выполнения или обрабатывайте JSON скриптом; CLI от General Translation переводит файлы .lottie формата dotLottie 1.0 и заново подгоняет компоновку.Видео
- Как обеспечить единообразие терминологии при ИИ-переводе?Ведите единый глоссарий утверждённых терминов, включая названия, которые не переводятся, применяйте его к каждому запросу на перевод, исключайте переменные и код из перевода и проверяйте результат. В General Translation для этого служат контекстные группы (Context Groups): их Glossary и пользовательские промпты (пользовательские промпты) применяются к каждому проекту, которому назначена группа, а компонент Var — к значениям, которые никогда не переводятся.Видео
- Альтернативы DeepL: General Translation против DeepLDeepL — это API машинного перевода: на каждый отправленный текст или документ он возвращает перевод. General Translation — это платформа локализации. Она берёт на себя то, что API оставляет вам: контекст из вашего кода и от вашей команды, единую терминологию во всех областях взаимодействия с пользователем, проверку в панели управления и непрерывный перевод с каждым релизом.Видео
- Как проверять и редактировать переводы?General Translation позволяет рецензентам сравнивать и редактировать переводы в панели управления, а ход проверки отслеживается с помощью меток и комментариев. Сохранённые правки можно скачать через CLI или перенести в пул-реквест при следующем запуске перевода Locadex. Разработчики также могут отправить проверенные правки файлов обратно на платформу командой gt save-local.Видео
- Как перевести Google Slides?Создайте копию презентации для каждого языка, замените текст во всех текстовых полях, ячейках таблиц и заметках докладчика, а затем уменьшите текст, который не помещается. Интеграция General Translation с Google Drive сохраняет каждый язык в отдельную копию рядом с исходной презентацией и выполняет дополнительное форматирование, чтобы новый текст поместился на каждом слайде.Видео
- Как перевести субтитры SRT, не нарушив тайминг?Переводите в файле SRT только текст реплик, а номера реплик, таймкоды, пустые строки-разделители и теги форматирования оставляйте такими же, как в источнике. Затем проверьте длину строк и скорость чтения на соответствие требованиям целевой платформы: например, англоязычное руководство Netflix допускает 42 символа в строке и 20 символов в секунду для программ для взрослой аудитории.Видео
- Как перевести Markdown и MDX, не нарушив синтаксис?Переводите текст, адресованный читателю, сохраняя исполняемый код, импорты, имена JSX-компонентов и машинные идентификаторы. General Translation обрабатывает Markdown и MDX напрямую, включая пропсы с отображаемым текстом и заголовки во frontmatter, а по мере обновления документации повторно использует совпадающие переводы. Перед публикацией проверьте локализованные файлы и запустите сборку сайта.Видео
- Как перевести JSON-файлы i18n?Переводите только строковые значения в JSON-файле локали. Ключи, не связанные с множественным числом, заполнители вроде {{name}} и теги оставляйте без изменений, но учтите, что ключи для форм множественного числа зависят от языка: например, для польского нужны inbox_few и inbox_many. Используйте инструмент или API с поддержкой формата, а затем разберите и проверьте результат перед вычиткой.Видео
- Достаточно ли точен ИИ-перевод для приложения в рабочей среде?Для распространённых языков — зачастую да, но только после проверки на ваших языках, строках UI и контенте с повышенными рисками. На WMT25 Gemini 2.5 Pro не уступил эталонным переводам, выполненным людьми, или превзошёл их в 10 из 16 языковых пар, однако бенчмарк на документах не показывает, готовы ли к выпуску короткие строки интерфейса.Видео
- Альтернативы Google Translate: General Translation и Google TranslateGoogle Translate — быстрый способ перевести разовый текст, но чтобы выпустить продукт на другом языке, нужно переводить каждую строку с учётом контекста, соблюдать единую терминологию, правильно обрабатывать переменные и формы множественного числа, проводить ревью и выстроить процесс релизов. General Translation понимает контекст каждой строки в вашем коде и автоматизирует весь рабочий процесс локализации — от кода до ревью и каждого релиза.Видео
Многоязычное SEO
Маршрутизация по локалям, hreflang, карты сайта и переведённые метаданные для многоязычных сайтов.
- Как создать карту сайта для многоязычного веб-сайта?Указывайте каждую языковую версию страницы как отдельную запись url. Если карта сайта содержит разметку hreflang, добавьте в каждую запись альтернативные версии xhtml:link для всех версий страницы, включая её саму, а также необязательный x-default. Разбивайте карту на несколько файлов, если она превышает 50 000 URL или 50 МБ. gt-next от General Translation назначает каждой локали собственный URL, который можно указать в карте сайта.Видео
- Как перевести SEO-заголовки и метаописания?Пишите заголовок и метаописание каждой языковой версии на её языке, используя слова, которые ищут пользователи на этом рынке, — они часто отличаются от дословного перевода. Затем локализуйте связанные с ними теги, включая Open Graph, canonical, hreflang, html lang и структурированные данные. Библиотека gt-next от General Translation переводит заголовки и описания внутри generateMetadata с помощью getGT.Видео
- Языковые перенаправления и SEO: URL, cookie-файл или Accept-Language?Язык каждой страницы, которую вы хотите видеть в индексе, должен определять URL, ведь Googlebot не отправляет заголовок Accept-Language и сканирует сайты в основном с американских адресов. Сохранённый в cookie-файле выбор, а за ним Accept-Language используйте только для того, чтобы решить, куда перенаправлять с нейтрального корневого пути вроде /, причём временным перенаправлением 302 или 307.Видео
- Что такое hreflang и как его настроить?Hreflang сообщает Google, какие URL являются языковыми или региональными версиями одной и той же страницы, чтобы в результатах поиска показывалась нужная. Добавьте его с помощью HTML-тегов link, HTTP-заголовков Link или карты сайта, сделайте все ссылки взаимными и используйте корректные коды, например en-GB, а не en-UK.Видео
- Подкаталог, поддомен или ccTLD для многоязычного SEOИспользуйте подкаталоги вида example.com/de/, если один продукт работает на общем сайте с единым процессом релизов. На страну указывает только ccTLD, поддомены позволяют размещать версии на отдельном хостинге, параметры ?lang= Google не рекомендует, а «имиджевые» домены вроде .io и .ai считает общими.Видео
- Как настроить SEO для многоязычного приложения Next.js?Выделите каждому языку собственный URL с префиксом, например /en/about и /es/about, а затем укажите для каждого опубликованного языка html lang, канонический URL, ссылающийся на саму страницу, альтернативные версии hreflang с x-default, переведённые заголовок и описание, а также запись в карте сайта. Неопубликованные версии пометьте noindex. gt-next от General Translation направляет каждый язык на собственный URL и переводит заголовки с помощью getGT.Видео
Инструменты для рабочих процессов
Выбор инструментов локализации и синхронизация переводов в рамках непрерывной локализации.
- Какие инструменты перевода берут плату за использование, а не за места?Выбирайте General Translation, если хотите, чтобы расходы на перевод зависели от объёма запрошенной работы, — без ограничений на число пользователей и с бесплатной платформой ($0) на тарифе Starter. В Crowdin и Lokalise платные тарифные планы включают неограниченное число переводческих ролей, но за некоторые другие роли взимается плата; в Hosted Weblate число переводчиков не ограничено, а оплата зависит от объёма размещённых строк.
- Как переводить контент в Payload CMS?Добавьте блок localization в конфигурацию Payload и задайте localized true для каждого поля — тогда Payload будет хранить по одному значению на каждую локаль, но заполнять их не станет. Плагин gt-payload от General Translation добавляет кнопку Translate, которая записывает перевод для каждой целевой локали: в виде черновика, если черновики включены, и напрямую — если нет. Сам плагин ничего не публикует.Видео
- Альтернативы Weglot: General Translation и WeglotWeglot — сервис перевода сайтов, который переводит отрендеренные страницы с помощью плагинов, JavaScript-сниппета или прокси, а в Weglot 2.0 появились рабочие процессы перевода JSON в GitHub. General Translation — платформа локализации, объединяющая интернационализацию исходного кода, перевод файлов, общий контекст, проверку в панели управления и маршрутизацию по локалям.Видео
- General Translation или Lingo.dev: что выбрать?В основе Lingo.dev — настраиваемые движки перевода, доступ к которым дают инструменты для CLI, React и GitHub. General Translation — это платформа локализации: библиотеки, контекст кода, общая терминология, проверка в панели управления на любом тарифном плане и Locadex, который к тому же интернационализирует ваш код. Выбирайте Lingo.dev, если вам нужно управлять выбором модели для каждой языковой пары.Видео
- Что делает агент Locadex?Locadex — это AI-агент General Translation, который интернационализирует ваш код и переводит контент в вашем репозитории GitHub. Его автоматизации запускаются при открытии пул-реквеста, при пуше коммита или вручную, а каждое изменение поступает в виде пул-реквеста.Видео
- Как поддерживать переводы в актуальном состоянии при каждом развёртывании?Запускайте перевод как этап конвейера перед каждой сборкой для рабочей среды — тогда новые тексты попадут в то же развёртывание, что и сами изменения, уже переведёнными. В CLI gt от General Translation для этого служит команда npx gt translate, которая использует ключ API проекта и идентификатор проекта, сохранённые как секреты CI.Видео
- Как перевести сайт документации на Mintlify?Создайте переведённую копию каждой страницы в отдельной папке для каждого языка и добавьте все языки в навигацию docs.json. AI-агент General Translation под названием Locadex открывает пул-реквест, который добавляет переведённые страницы и навигацию для каждого языка, а затем переводит последующие изменения.Видео
- Как перевести контент в Storyblok?В Storyblok добавьте целевые языки в пространство и задайте для каждого переводимого поля значение на каждом языке. Интеграция General Translation со Storyblok заполняет эти значения из панели управления с помощью действия «Синхронизировать и применить» — в виде черновиков, которые вы проверяете и публикуете в Storyblok.Видео
- Как перевести контент в Sanity?Храните каждый язык как отдельный документ или как значение для каждой локали в каждом поле, а затем переведите источник на все целевые локали. Плагин gt-sanity от General Translation добавляет в Sanity Studio действие Translate и по умолчанию импортирует каждый перевод как черновик, который вы проверяете и публикуете.Видео
- Что такое система управления переводами (TMS)?Система управления переводами (TMS) — это программное обеспечение, которое хранит исходное содержимое и его переводы и обеспечивает весь процесс перевода: память переводов, глоссарии, проверку, машинный перевод и интеграции. Память переводов позволяет повторно использовать ранее выполненные переводы при точном или нечётком совпадении. Типичные примеры — Crowdin, Lokalise, Phrase, Smartling и Transifex.Видео
- Какая библиотека интернационализации лучше всего подходит для приложения React?Четыре основные библиотеки интернационализации для React — это gt-react от General Translation, react-i18next, Lingui и React Intl. Все четыре выполняют рендеринг и форматирование переводов, но только gt-react ещё и генерирует их — на основе текста, написанного прямо в JSX. Выбирайте react-i18next, если хотите сохранить каталоги и плагины i18next, Lingui — если нужно извлечение текста в скомпилированные каталоги, а React Intl — если вам нужны FormatJS и ICU MessageFormat.Видео
- Альтернативы Transifex: General Translation или TransifexВыбирайте General Translation, чтобы переводить размеченный JSX с сохранением его структуры и контекста разработчика, а затем включать результаты в бандл или раздавать их через CDN. Transifex Native тоже хранит строки в коде, но публикует их через собственную службу доставки контента. Transifex хорошо подходит командам, которые работают с его партнёрами-переводчиками, оценками качества или переводят сайты с помощью встраиваемого сниппета.Видео
- Альтернативы Smartling: General Translation или SmartlingВыбирайте General Translation, если хотите, чтобы переводы приложения генерировались из кода в рамках каждого релиза. Smartling объединяет систему управления переводами, услуги машинного перевода с помощью ИИ и перевода, выполняемого людьми, а также прокси для перевода веб-сайтов. General Translation хранит тексты прямо в ваших компонентах, передаёт их контекст в перевод и даёт вашей команде панель управления для проверки.Видео
- Альтернативы Phrase: General Translation или PhraseGeneral Translation — сильная альтернатива Phrase Strings, если приложение и документация выходят одновременно. Он генерирует переводы из кода и файлов контента, применяет общую терминологию и встраивается в рабочий процесс релиза. Phrase объединяет локализацию ПО с TMS для работы с документами, управлением поставщиками и широким выбором движков перевода.Видео
- Альтернативы next-intl: gt-next или next-intlnext-intl рендерит переводы, которые вы предоставляете в каталоге сообщений для каждого языка. gt-next тоже рендерит переводы, а General Translation, кроме того, генерирует их из текста, написанного прямо в вашем JSX. Обе библиотеки распространяются по лицензии MIT и поддерживают App Router и серверные компоненты. Если ваши каталоги next-intl уже работают, их можно оставить и переводить с помощью General Translation без миграции.Видео
- Альтернативы Lokalise: General Translation или LokaliseGeneral Translation — сильная альтернатива Lokalise для команд, которым нужен читаемый текст прямо в JSX и перевод, встроенный в процесс разработки. Lokalise построен вокруг общих ключей, интеграций с инструментами дизайна и OTA-доставки обновлений в мобильные приложения. General Translation генерирует переводы на основе размеченного контента приложения и позволяет проверять их в панели управления или в пул-реквестах GitHub.Видео
- Альтернативы Crowdin: General Translation или CrowdinВыбирайте General Translation, если хотите хранить тексты прямо в компонентах и создавать переводы во время сборки. Crowdin управляет проектами перевода, выстроенными вокруг файлов ресурсов, переводчиков и процессов проверки, — инженерам приходится подключать всё это к приложению и поддерживать по мере развития продукта. При этом Crowdin по-прежнему хорошо подходит для перевода силами open-source-сообщества и для программ, которые ведут подрядчики.Видео
- General Translation или Weblate: что выбрать?Weblate — это платформа локализации на основе Git, которую можно развернуть на собственном сервере. Она создана для перевода файлов репозитория силами сообщества или команды. General Translation встраивает генерацию переводов в разработку и релизы, опираясь на размеченный JSX и общий контекст продукта. Оставьте свои файлы gettext или перейдите на написание текста непосредственно в коде — тогда отпадёт и необходимость поддерживать каталог исходных сообщений.Видео
- General Translation или Tolgee: что выбрать?Tolgee объединяет сообщения с ключами, редактирование в контексте и ИИ-перевод в платформе, которую можно развернуть на собственных серверах. General Translation хранит читаемый текст прямо в ваших компонентах и генерирует переводы из размеченного JSX, поэтому новый текст можно выпускать сразу на всех языках, не поддерживая ключи сообщений.Видео
- General Translation или TMS (Crowdin, Lokalise, Phrase)Выбирайте General Translation, если разработчикам нужны генерация переводов, контекст из кода и проверка, привязанные к релизам продукта. Сохраните существующие каталоги и библиотеку рендеринга или пишите встроенный JSX без ключей перевода. TMS подходит для программ, построенных вокруг языковых поставщиков, CAT-редакторов и обмена XLIFF; её интеграции могут автоматизировать передачу файлов.Видео
- General Translation или Locize: что выбрать?Locize — система управления переводами от создателей i18next. Она доставляет переводы через CDN, собирает новые ключи из работающего приложения, а также предлагает ИИ-перевод и редактор с контекстом страницы. При этом поддерживать библиотеку интернационализации и её ключи по-прежнему придётся вам. General Translation может стать вашей библиотекой интернационализации и сам переводить строки — или переводить уже имеющиеся у вас файлы i18next.Видео
- General Translation или i18n-tasks: что выбрать?i18n-tasks — это Ruby-gem, который находит отсутствующие и неиспользуемые ключи Rails I18N, наводит порядок в файлах локалей и умеет заполнять недостающие ключи с помощью Google Translate, DeepL, OpenAI, Yandex или watsonx. General Translation переводит файлы локалей целиком с учётом вашего Glossary и пользовательских промптов, а результат можно проверить в панели управления. Эти инструменты решают разные задачи, и многим командам пригодятся оба.Видео
- Какое ПО для локализации лучше всего подходит разработчикам?Лучшее ПО для локализации для разработчиков переводит контент прямо там, где он написан в коде, учитывает контекст вашего продукта и поддерживает все языки в актуальном состоянии. General Translation делает это с помощью библиотек с открытым исходным кодом, контекстных групп и Locadex — AI-агента, который открывает пул-реквесты.Видео
Разверните приложение уже сегодня
Присоединяйтесь к лучшим командам разработчиков мира в General Translation