# Vue: TranslationCatalog
URL: https://generaltranslation.com/ru/docs/vue/reference/types/translation-catalog.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Содержит все переводы в формате обычных строк и форматированного контента для одной локали. Справочник API для TranslationCatalog.

CLI генерирует этот объект, ключами которого служат хеши, а callback [`LoadTranslations`](/docs/vue/reference/types/load-translations) возвращает его плагину. Код приложения обычно обращается к каталогам через компоненты перевода и компонуемые функции, а не напрямую.

## Обзор [#overview]

```ts
import type { JsxChildren } from 'generaltranslation/types';

type TranslationCatalog = Record<string, JsxChildren>;
```

| Участник          | Описание                                                                                  | Тип                                                               |
| ----------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| [`hash`](#hash)   | Стабильный ключ каталога, вычисляемый на основе исходного контента и метаданных перевода. | `string`                                                          |
| [`value`](#value) | Обычный перевод `STRING` или сериализованный перевод форматированного контента.           | [`JsxChildren`](/docs/platform/core/reference/types/jsx-children) |

## Участники [#members]

### `hash`

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

Каждый ключ свойства соответствует одной извлечённой исходной записи. Идентификатор обычной строки включает исходную строку и необязательный `$context`. Для форматированного контента он также включает его структуру и метаданные [`<T>`](/docs/vue/reference/components/t).

Считайте хеши непрозрачными значениями. Позвольте CLI `gt` генерировать и обновлять их: изменение исходного контента или метаданных, влияющих на хеш, создаёт другой ключ.

### `value`

**Тип** [`JsxChildren`](/docs/platform/core/reference/types/jsx-children) · **Обязательно**

Обычная запись `STRING` хранит переводимую строку. Расширенная запись [`<T>`](/docs/vue/reference/components/t) хранит сериализованное дерево содержимого, используемое рендерером Vue.

Публичный тип для передачи данных включает все скалярные формы, используемые в сгенерированных каталогах:

```ts
type JsxChildren = boolean | null | JsxChild | JsxChild[];
type JsxChild = string | JsxElement | Variable;
```

Булевы значения и `null` могут использоваться как скалярные значения расширенного содержимого, в том числе во вложенном содержимом element и branch. Для вручную создаваемых массивов child используется более узкая форма `JsxChild[]`. Не создавайте вручную сериализованные записи element или variable: их индексы и метаданные должны соответствовать извлечённому дереву source.

## Поведение поиска [#lookup-behavior]

[`useGT()`](/docs/vue/reference/composables/use-gt), [`t()`](/docs/vue/reference/functions/t) и [`useMessages()`](/docs/vue/reference/composables/use-messages) поддерживают для поиска обычных строк только строковые значения каталога. При отсутствии ключа или значении, не являющемся строкой, используется исходная строка.

[`<T>`](/docs/vue/reference/components/t) обрабатывает форматированный контент и использует исходный слот, если подходящий перевод отсутствует. Для локали по умолчанию каталог не нужен, поскольку исходный контент служит резервным вариантом.

## Пример [#example]

Возвращает сгенерированный объект JSON в виде каталога:

```ts title="src/loadTranslations.ts"
import type { LoadTranslations, TranslationCatalog } from 'gt-vue';

const loadTranslations: LoadTranslations = async (locale) => {
  const module = await import(`./_gt/${locale}.json`);
  return module.default as TranslationCatalog;
};

export default loadTranslations;
```

Возвращает `{}`, если для локали нет каталога и вместо него должен отображаться исходный контент.

## Sitemap

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