# General Translation Integrations: Быстрый старт
URL: https://generaltranslation.com/ru/docs/integrations/paraglide/quickstart.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Сохраняйте исходный код вокруг каждого сообщения Paraglide JS и передавайте его на перевод в качестве контекста.

`@generaltranslation/paraglide-js` находит в вашем приложении все места, где используются сообщения Paraglide JS, и сохраняет окружающий их код. Благодаря этому сообщение вроде «Order» попадает на перевод вместе с кодом, из которого понятно, что это: кнопка, заголовок, существительное или глагол.

Пакет только читает ваши исходные файлы. Он не изменяет Paraglide JS и никогда не запускает ваш сборщик, поэтому работает независимо от того, как собирается приложение.

## Перед началом работы [#before-start]

Вам понадобится:

* Node.js 20 или новее.
* Paraglide JS 1, 2 или 3, скомпилированный хотя бы один раз, чтобы был создан его выходной каталог.
* Сообщения в формате сообщений inlang (`plugin.inlang.messageFormat`), например `messages/en.json`.
* Проект, в котором эти файлы сообщений переводятся с помощью CLI (см. [Быстрый старт с CLI](/docs/cli/quickstart)).
* Для компонентов, написанных не на JavaScript, TypeScript или JSX, — установленный в приложении языковой инструмент соответствующего фреймворка (см. [Поддерживаемые форматы файлов](/docs/integrations/paraglide/reference/file-formats)).

## Быстрый старт [#quickstart]

Установите пакет, соберите контекст, а затем переводите как обычно.

### 1. Установите `@generaltranslation/paraglide-js`

<Tabs items={['npm', 'yarn', 'bun', 'pnpm']}>
  <Tab value="npm">
    ```bash
    npm install --save-dev @generaltranslation/paraglide-js
    ```
  </Tab>

  <Tab value="yarn">
    ```bash
    yarn add --dev @generaltranslation/paraglide-js
    ```
  </Tab>

  <Tab value="bun">
    ```bash
    bun add --dev @generaltranslation/paraglide-js
    ```
  </Tab>

  <Tab value="pnpm">
    ```bash
    pnpm add --save-dev @generaltranslation/paraglide-js
    ```
  </Tab>
</Tabs>

### 2. Соберите контекст

Запустите [`paraglide-context`](/docs/integrations/paraglide/reference/paraglide-context) из каталога вашего приложения. С флагом `--verbose` команда выводит количество найденных использований и список выходных каталогов Paraglide JS, которые она задействовала.

```bash
npx paraglide-context --verbose
```

Рядом с каждым файлом сообщений базовой локали создаётся файл метаданных. Для каждого используемого сообщения в нём приводится код вокруг мест его использования, сгруппированный по исходным файлам:

```json title="messages/en.metadata.json"
{
  "greeting": {
    "sourceCode": {
      "src/Header.tsx": [
        {
          "before": "import { m } from './paraglide/messages.js';\n…",
          "target": "  return <h1>{m.greeting({ username })}</h1>;",
          "after": "}\n…"
        }
      ]
    }
  }
}
```

<Callout type="info">
  В предупреждениях указывается, что именно было пропущено и как это исправить: неразрешённый алиас импорта, отсутствующий языковой инструмент или каталог, не распознанный как выходные данные Paraglide JS. (См. [Разрешение импортов](/docs/integrations/paraglide/guides/resolving-imports).)
</Callout>

### 3. Переведите сообщения

Выполните [`gt translate`](/docs/cli/reference/commands/translate). CLI находит файл метаданных рядом с каждым файлом сообщений и отправляет его вместе с сообщениями в виде [метаданных, привязанных к ключам](/docs/cli/reference/keyed-metadata).

```bash
npx gt translate
```

Чтобы контекст оставался актуальным, собирайте его перед каждым переводом:

```json title="package.json"
{
  "scripts": {
    "translate": "paraglide-context && gt translate"
  }
}
```

<Callout type="info">
  Само по себе изменение контекста не запускает повторный перевод сообщения. Сообщение переводится заново только при изменении его исходного текста.
</Callout>

## Next steps

- /docs/integrations/paraglide/guides/resolving-imports
- /docs/integrations/paraglide/guides/adding-file-formats

## Sitemap

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