# General Translation Overview: Ключевые понятия URL: https://generaltranslation.com/ru/docs/overview/key-concepts.mdx --- title: Ключевые понятия description: "Объясняем ключевые понятия, лежащие в основе General Translation: интернационализацию, локализацию, перевод, локали и контекст" --- General Translation локализует ваш продукт на любой язык. На этой странице простым языком объясняются ключевые понятия, лежащие в основе этого процесса. ## Интернационализация, локализация и перевод [#i18n-l10n] Эти три термина связаны между собой, но обозначают разные понятия. Если чётко понимать разницу между ними, следить за документацией будет проще. ### Интернационализация (i18n) Интернационализация, также известная как **i18n**, — это процесс подготовки кодовой базы к поддержке нескольких локалей и корректной обработке зависящих от локали особенностей, таких как даты и числа, формы множественного числа, валюты и макет интерфейса (например, для языков с письмом справа налево). Это делается с помощью библиотеки интернационализации, такой как [`gt-react`](/docs/react/react-quickstart) для приложений на React или [`gt-next`](/docs/react/nextjs-quickstart) для Next.js, которая берет эту работу на себя. Интернационализация отличается от перевода контента или компонентов. Она подготавливает кодовую базу к поддержке перевода и локализации. ### Перевод Перевод — это преобразование контента с одного языка или диалекта на другой. Каждый язык определяется [кодом локали](#locales). *Пример: перевод* `es` *(испанский) в* `en-US` *(американский английский) преобразует испанский контент в американский английский. Перевод того же исходного текста в* `en-GB` *даёт уже британский английский. Диалект тоже важен — перевод* `en-GB` *в* `en-US` *преобразует британский английский в американский английский.* ```js gt.translate('Tenemos un ascensor', 'en-US'); // "We have an elevator" gt.translate('Tenemos un ascensor', 'en-GB'); // "We have a lift" gt.translate('We have a lift', 'en-US'); // "We have an elevator" ``` ### Локализация (l10n) Локализация, также обозначаемая как **l10n**, — это процесс адаптации продукта для конкретной локали. В General Translation мы используем локализацию как общий термин для всего процесса: интернационализации, перевода и инструментов, которые объединяют всё это. Мы создали полный стек локализации, чтобы охватить весь этот процесс. Локализация также может выходить за рамки языка. В зависимости от локали это может означать приём платежей в другой валюте, иное форматирование дат и чисел, а также соблюдение местных нормативных требований. ## Локали и коды локалей [#locales] **Локаль** — это язык или диалект. **Код локали** — это стандартизированный способ обозначения локали. В этой документации «локаль» обычно означает код локали. *Пример:* `en-US` *— код локали для английского языка, используемого в Соединённых Штатах.* Коды локалей сообщают General Translation, на каком языке написан исходный файл, на какой язык нужно переводить, а также как форматировать значения, зависящие от локали, такие как даты, числа и Currency. ### Как работают коды локалей General Translation использует стандарт языковых тегов **BCP 47**. Код локали состоит из трёх подтипов, разделённых символом `-`: * **Язык** (обязательно): основной язык, например `en` для английского или `zh` для китайского. * **Письменность** (необязательно): система письма, например `Hant` для традиционных китайских иероглифов. * **Регион** (необязательно): страна или регион, например `US` для Соединённых Штатов. Коды могут быть общими или более конкретными: * `zh` — это китайский. * `zh-Hant` — это китайский, записанный традиционными иероглифами. * `zh-Hant-HK` — это китайский, записанный традиционными иероглифами и используемый в Гонконге. Подробное описание см. в руководстве [Понимание кодов локалей](/docs/platform/core/guides/locale-codes) и в списке [Поддерживаемые локали](/docs/platform/dashboard/reference/supported-locales) с возможностью поиска. ### Исходная и целевые локали * **Исходная локаль** — это язык, на котором написан ваш контент (его также называют локалью по умолчанию). * **Целевая локаль** — это язык, на который вы переводите контент. У большинства проектов есть одна исходная локаль и одна или несколько целевых локалей. ## Контекст перевода [#context] **Контекст** подсказывает ИИ, как интерпретировать и переводить ваш продукт. Именно качественный контекст помогает переводам отражать ваш бренд, продукт и стиль, а не выглядеть как типичный машинный перевод. Контекст помогает General Translation: * Сохранять названия брендов и продуктов, которые никогда не следует переводить. * Устранять неоднозначность слов — например, определять, означает ли "cells" комнаты, мобильные телефоны, бактерии или ячейки таблицы. * Поддерживать единообразие терминологии и стиля во всей вашей организации и во всех проектах. General Translation применяет контекст через **Контекстные группы**, которые объединяют две части: * **Glossary** определяет ключевые термины: названия продуктов, названия функций и технические термины, для которых нужна единообразная трактовка. * **Directives** определяют стиль и тон: аудиторию, формальность, принятые соглашения и форматирование. См. [Добавление контекста перевода](/docs/platform/dashboard/guides/adding-translation-context), чтобы это настроить. ## Статический и динамический контент [#content] Понимание разницы между статическим и динамическим контентом помогает определить, что следует переводить. * **Статический контент** никогда не меняется: это обычный текст и строковые значения, которые разработчик может прочитать в исходном коде, например «Добро пожаловать в моё приложение!». Простое практическое правило: любой текст, который можно напрямую прочитать в исходном коде, является статическим — даже строки, которые отображаются только при определённых условиях. Статический контент переводится, если это не имя собственное. * **Динамический контент** может меняться во время выполнения в зависимости от пользователя, окружения или данных: имя пользователя, email или баланс аккаунта. Его значение нельзя определить, просто читая исходный код. Когда динамический контент сводится к конечному набору известных случаев — например, к числу в единственном или множественном числе или к значению вроде *active* или *archived* — General Translation может разветвить обработку по этим случаям и сгенерировать корректный перевод для каждого из них, используя логические компоненты вроде [``](/docs/react/reference/components/plural) и [``](/docs/react/reference/components/branch), либо [``](/docs/react/reference/components/derive), чтобы перечислить все возможные значения и перевести каждый вариант. См. [Обработка форм множественного числа и ветвлений](/docs/react/guides/handling-plurals-and-branches). ### Переменные и форматирование В библиотеках i18n вы оборачиваете динамические значения в компонент [``](/docs/react/reference/components/var), чтобы они оставались неизменными независимо от языка: ```jsx import { T, Var } from 'gt-next'; Hello, {name}! ; ``` Это даёт два преимущества: вы создаёте один перевод, например `¡Hola, {name}!`, вместо отдельного перевода для каждого возможного имени, а само имя никогда не преобразуется в переведённый вид. Для значений, которые нужно отформатировать, но не переводить, — например, цен, дат и чисел — используйте вместо этого компоненты форматирования ([``](/docs/react/reference/components/currency), [``](/docs/react/reference/components/datetime) и [``](/docs/react/reference/components/num)). Все ``, ``, `` и `` доступны в `gt-next`, `gt-react` и `gt-react-native`. ### Личные данные `` также позволяет исключить из переводов личные данные — имена, электронные адреса, почтовые адреса или номер социального страхования. Контент, обёрнутый в ``, отображается как есть и никогда не отправляется в API General Translation. *Примечание: исключение составляют вложенный* [``](/docs/react/reference/components/t) *внутри* `` *(в котором переводятся children) или данные, которые вы сами отправляете в API изнутри* `` *(например, через вызов fetch). Ни то ни другое не является предполагаемым способом использования* ``*.*