# General Translation Platform: Конструктор
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class/constructor.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Инициализируйте экземпляр GT с помощью API-ключей, настроек проекта, локалей по умолчанию и сопоставлений локалей. Справка по API для конструктора.

Создает новый экземпляр `GT` — точку входа ко всем функциям перевода, форматирования и работы с локалями в General Translation. Вызовите его один раз, а затем повторно используйте этот экземпляр во всем приложении.

## Обзор [#overview]

Создайте экземпляр `GT`, при необходимости передав объект конфигурации. Учетные данные и локали, указанные здесь, будут использоваться по умолчанию во всех вызовах методов этого экземпляра.

```typescript
import { GT } from 'generaltranslation';

const gt = new GT({
  apiKey: 'your-api-key',
  projectId: 'your-project-id',
  sourceLocale: 'en',
  targetLocale: 'es',
});
```

Сигнатура:

```typescript
new GT(params?: GTConstructorParams): GT
```

*Примечание: можно не указывать `apiKey`, `devApiKey` и `projectId` — если заданы переменные окружения `GT_API_KEY`, `GT_DEV_API_KEY` и `GT_PROJECT_ID`, конструктор считает их значения из них.*

## Как это работает [#how-it-works]

* **Резервное значение из окружения.** Если `apiKey`, `devApiKey` или `projectId` не переданы, конструктор ищет их в переменных окружения `GT_API_KEY`, `GT_DEV_API_KEY` и `GT_PROJECT_ID`.
* **Сначала стандартизация локали, затем валидация.** Каждый указанный код локали (`sourceLocale`, `targetLocale` и каждый элемент в `locales`) сначала приводится к канонической форме BCP 47, а затем проверяется. **Сохраняются стандартизованные/нормализованные значения**, а не исходные строки, которые вы передали. При недопустимых кодах конструктор выбрасывает исключение.
* **Пользовательское сопоставление применяется к `sourceLocale`/`targetLocale`, но не к `locales`.** `sourceLocale` и `targetLocale` проверяются **с** учётом [`customMapping`](/docs/platform/core/reference/types/custom-mapping), поэтому для них допускается пользовательский алиас. Каждый элемент в `locales` проверяется **без** сопоставления, поэтому алиас из `customMapping` будет отклонён, если он указан в `locales`.
* **Приоритет пользовательского сопоставления.** [`customMapping`](/docs/platform/core/reference/types/custom-mapping) позволяет задавать алиасы локалей, переопределять стандартную проверку BCP 47 и стандартные свойства локали (имя, эмодзи и т. д.). Пользовательские сопоставления имеют приоритет над стандартными данными BCP 47.

## Параметры [#parameters]

Конструктор принимает один необязательный объект [`GTConstructorParams`](/docs/platform/core/reference/types/gt-constructor-params) (по умолчанию `{}`) со следующими свойствами:

| Параметр                           | Описание                                                                | Тип                                                                   | Необязательный | По умолчанию                          |
| ---------------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------- | -------------- | ------------------------------------- |
| [`apiKey`](#api-key)               | Рабочий ключ для сервиса перевода.                                      | `string`                                                              | Да             | переменная окружения `GT_API_KEY`     |
| [`devApiKey`](#dev-api-key)        | API-ключ для разработки, который имеет приоритет в среде разработки.    | `string`                                                              | Да             | переменная окружения `GT_DEV_API_KEY` |
| [`projectId`](#project-id)         | Уникальный идентификатор проекта.                                       | `string`                                                              | Да             | переменная окружения `GT_PROJECT_ID`  |
| [`sourceLocale`](#source-locale)   | Локаль-источник для переводов по умолчанию.                             | `string`                                                              | Да             | —                                     |
| [`targetLocale`](#target-locale)   | Целевая локаль для переводов по умолчанию.                              | `string`                                                              | Да             | —                                     |
| [`locales`](#locales)              | Коды поддерживаемых локалей.                                            | `string[]`                                                            | Да             | —                                     |
| [`baseUrl`](#base-url)             | Базовый URL API.                                                        | `string`                                                              | Да             | `https://api.gtx.dev`                 |
| [`customMapping`](#custom-mapping) | Пользовательские сопоставления кодов локалей и переопределения свойств. | [`CustomMapping`](/docs/platform/core/reference/types/custom-mapping) | Да             | —                                     |

### `apiKey` [#api-key]

**Тип** `string` · **Необязательный** · **По умолчанию** переменная окружения `GT_API_KEY`

API-ключ для production-среды сервиса перевода. Если не указан, считывается из переменной окружения `GT_API_KEY`. Обязателен для любых API-операций.

### `devApiKey` [#dev-api-key]

**Тип** `string` · **Необязательный** · **По умолчанию** переменная окружения `GT_DEV_API_KEY`

API-ключ для разработки. В среде разработки имеет приоритет над `apiKey`. Если не указан, считывается из переменной окружения `GT_DEV_API_KEY`.

### `projectId` [#project-id]

**Тип** `string` · **Необязательный** · **По умолчанию** — `GT_PROJECT_ID` env

Уникальный идентификатор проекта. Если значение не указано, оно считывается из переменной окружения `GT_PROJECT_ID`. Обязателен для любых API-операций.

### `sourceLocale` [#source-locale]

**Тип** `string` · **Необязательно**

Локаль исходного языка для переводов по умолчанию, например `en`. Приводится к канонической форме и сохраняется в этом нормализованном виде, а затем проверяется **с учётом** любого `customMapping` (поэтому здесь допускается пользовательский алиас).

### `targetLocale` [#target-locale]

**Тип** `string` · **Необязательно**

Целевая локаль для переводов по умолчанию, например `es`. Приводится к канонической форме и сохраняется в этом нормализованном виде, а затем проверяется **с учётом** любого `customMapping` (поэтому здесь также принимается пользовательский алиас).

### `locales` [#locales]

**Тип** `string[]` · **Необязательно**

Массив поддерживаемых кодов локалей. Каждый код приводится к своей канонической форме и сохраняется в этом нормализованном виде, а затем проверяется **без** `customMapping` — поэтому алиас `customMapping`, допустимый для `sourceLocale`/`targetLocale`, отклоняется, если указан внутри `locales`.

### `baseUrl` [#base-url]

**Тип** `string` · **Необязательно** · **По умолчанию** `https://api.gtx.dev`

Базовый URL API. Переопределяйте его только в том случае, если ваше развёртывание использует другой эндпоинт.

### `customMapping` [#custom-mapping]

**Тип** [`CustomMapping`](/docs/platform/core/reference/types/custom-mapping) · **Необязательно**

Пользовательские mappings кодов локалей и переопределения свойств. Используйте этот параметр, чтобы (1) задавать алиасы для кодов локалей, (2) переопределять стандартную проверку BCP 47 и (3) переопределять стандартные свойства локали BCP 47, такие как имя и эмодзи.

## Возвращает [#returns]

**Тип** `GT`

Новый экземпляр `GT` со всеми доступными методами перевода, форматирования и работы с локалью.

## Примеры [#examples]

```typescript
import { GT } from 'generaltranslation';

// Минимальная настройка — считывает учётные данные из переменных окружения
const gt = new GT();
```

```typescript
// С учётными данными API
const gt = new GT({
  projectId: 'my-project-id',
  apiKey: 'my-api-key',
  targetLocale: 'fr',
});
```

```typescript
// С пользовательским алиасом локали: используйте `cn` как алиас для `zh`.
// General Translation API не поддерживает `cn`, поэтому необходимо пользовательское сопоставление.
const gt = new GT({
  projectId: 'my-project-id',
  apiKey: 'my-api-key',
  targetLocale: 'es',
  customMapping: {
    cn: { code: 'zh' },
  },
});
```

```typescript
// Пользовательские сопоставления также могут переопределять названия, эмодзи и другие свойства локали
const gt = new GT({
  projectId: 'my-project-id',
  apiKey: 'my-api-key',
  targetLocale: 'es',
  customMapping: { 'en-US': { name: 'Mandarin', emoji: '🇫🇷' } },
});
```

## Примечания [#notes]

* Все параметры необязательны, но для API-операций требуются `apiKey` (или `devApiKey`) и `projectId`.
* Конструктор приводит каждый код локали к его канонической форме (сохраняемое значение — нормализованная форма), затем проверяет его и выбрасывает исключение для недопустимых кодов.
* `sourceLocale` и `targetLocale` проверяются с учётом `customMapping`; каждый элемент `locales` проверяется без него.
* Пользовательские mappings имеют приоритет над стандартной проверкой и свойствами BCP 47.

*Примечание: класс `GT` расширяет `GTRuntime`. В версии 9.0 вспомогательные функции для перевода, форматирования и работы с локалью находятся в `GTRuntime`, а методы файлового workflow (`uploads`, `enqueue`, `downloads` и т. д.) — в `GT`. И конструктор, и [`setConfig`](/docs/platform/core/reference/gt-class/set-config) определены в `GTRuntime`, поэтому благодаря наследованию способ использования не меняется.*

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
