Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions docs/src/content/docs/ru/guides/i18n.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,7 @@ import UIStringsList from '~/components/ui-strings-list.astro';

<LanguagesList startsSentence /> — все переведённые строки пользовательского
интерфейса на указанных языках предоставляются «из коробки», и мы приветствуем
[вклад в добавление дополнительных языков по
умолчанию](https://github.com/withastro/starlight/blob/main/CONTRIBUTING.md).
[вклад в добавление дополнительных языков по умолчанию](https://github.com/withastro/starlight/blob/main/CONTRIBUTING.md).

Вы можете добавить переводы для дополнительных языков, которые вы поддерживаете — или переопределить наши стандартные тексты — через коллекцию данных `i18n`.

Expand Down Expand Up @@ -279,7 +278,7 @@ export const collections = {

Дополнительную информацию о схемах коллекции контента см. в разделе [Определение схемы коллекции](https://docs.astro.build/ru/guides/content-collections/#%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D1%85%D0%B5%D0%BC%D1%8B-%D0%BA%D0%BE%D0%BB%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8) в документации Astro.

## Использование переводов пользовательского интерфейса
## Использование UI-переводов

Вы можете получить доступ к [встроенным строкам пользовательского интерфейса](/ru/guides/i18n/#перевод-интерфейса-starlight) Starlight, а также к [пользовательским](/ru/guides/i18n/#расширение-схемы-перевода) и [предоставляемым плагинами](/ru/reference/plugins/#injecttranslations) строкам пользовательского интерфейса через единый API на базе [i18next](https://www.i18next.com/).
Это включает поддержку таких функций, как [интерполяция](https://www.i18next.com/translation-function/interpolation) и [плюрализация](https://www.i18next.com/translation-function/plurals).
Expand All @@ -300,6 +299,9 @@ export const GET = (context) => {
};
```

В контексте плагина Starlight вы можете использовать хелпер [`useTranslations()`](/ru/reference/plugins/#usetranslations) для доступа к этому API для конкретного языка.
Дополнительную информацию смотрите в [справочнике по плагинам](/ru/reference/plugins/).

### Рендеринг строки пользовательского интерфейса

Отрисовка строк пользовательского интерфейса с помощью функции `locals.t()`.
Expand Down
42 changes: 17 additions & 25 deletions docs/src/content/docs/ru/guides/overriding-components.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,11 @@ import { Steps } from '@astrojs/starlight/components';
```astro
---
// src/components/EmailLink.astro
import type { Props } from '@astrojs/starlight/props';

const email = '[email protected]';
---

<a href="mailto:[email protected]">
Связаться с нами по электронной почте
</a>
<a href=`mailto:${email}`>Напишите мне</a>
```

3. Сообщите Starlight, что нужно использовать ваш компонент, указав его в параметре конфигурации [`components`](/ru/reference/configuration/#components) в `astro.config.mjs`:
Expand Down Expand Up @@ -72,52 +71,46 @@ import { Steps } from '@astrojs/starlight/components';

Пример ниже показывает компонент, который отображает ссылку на электронную почту наряду со стандартным компонентом `SocialIcons`:

```astro {4,8}
```astro {3,7}
---
// src/components/EmailLink.astro
import type { Props } from '@astrojs/starlight/props';
import Default from '@astrojs/starlight/components/SocialIcons.astro';
---

<a href="mailto:[email protected]"> Связаться с нами по электронной почте </a>
<Default {...Astro.props}><slot /></Default>
<Default><slot /></Default>
```

При использовании встроенного компонента внутри вашего компонента:

- Передайте в него `Astro.props`. Это гарантирует, что он получит все данные, необходимые для отображения.
- Добавьте [`<slot />`](https://docs.astro.build/ru/basics/astro-components/#slots) внутрь компонента по умолчанию. Это гарантирует, что если компоненту передаются какие-либо дочерние элементы, Astro знает, где их отображать.
При рендеринге встроенного компонента внутри пользовательского компонента добавьте [`<slot />`](https://docs.astro.build/ru/basics/astro-components/#%D1%81%D0%BB%D0%BE%D1%82%D1%8B) внутрь компонента по умолчанию. Это гарантирует, что если компоненту переданы дочерние элементы, Astro будет знать, где их отобразить.

Если вы повторно используете компоненты [`PageFrame`](/ru/reference/overrides/#pageframe) или [`TwoColumnContent`](/ru/reference/overrides/#twocolumncontent), содержащие [именованные слоты](https://docs.astro.build/ru/basics/astro-components/#именованые-слоты), вам также необходимо [перенести](https://docs.astro.build/ru/basics/astro-components/#перенос-слотов) эти слоты.

Ниже показан пользовательский компонент, который повторно использует компонент `TwoColumnContent`, содержащий дополнительный именованный слот `right-sidebar`, нуждающийся в переносе:

```astro {9}
```astro {8}
---
// src/components/CustomContent.astro
import type { Props } from '@astrojs/starlight/props';
import Default from '@astrojs/starlight/components/TwoColumnContent.astro';
---

<Default {...Astro.props}>
<Default>
<slot />
<slot name="right-sidebar" slot="right-sidebar" />
</Default>
```

## Использование данных страницы

При переопределении компонента Starlight ваша реализация получает стандартный объект `Astro.props`, содержащий все данные для текущей страницы.
При переопределении компонента Starlight вы можете получить доступ к глобальному объекту [`starlightRoute`](/ru/guides/route-data/), который содержит все данные для текущей страницы.
Это позволяет вам использовать эти значения для управления тем, как ваш компонент будет отображаться.

Например, вы можете прочитать метаданные страницы как `Astro.props.entry.data`. В следующем примере компонент [`PageTitle`](/ru/reference/overrides/#pagetitle) использует этот объект для отображения текущего заголовка страницы:
В следующем примере заменяющий компонент [`PageTitle`](/ru/reference/overrides/#pagetitle) отображает заголовок текущей страницы, установленный в метаданных контента:

```astro {5} "{title}"
```astro {4} "{title}"
---
// src/components/Title.astro
import type { Props } from '@astrojs/starlight/props';

const { title } = Astro.props.entry.data;
const { title } = Astro.locals.starlightRoute.entry.data;
---

<h1 id="_top">{title}</h1>
Expand All @@ -129,32 +122,31 @@ const { title } = Astro.props.entry.data;
</style>
```

Узнайте больше обо всех доступных свойствах в [Справочнике по переопределениям](/ru/reference/overrides/#параметры-компонентов).
Узнайте больше обо всех доступных свойствах в [Справочнике по данным маршрута](/ru/reference/route-data/).

### Переопределение только на определённых страницах

Переопределение компонентов применяется ко всем страницам. Тем не менее, вы можете осуществлять условную отрисовку, используя значения из `Astro.props`, чтобы определить, когда показывать ваш интерфейс, когда показывать интерфейс Starlight, или даже когда показывать что-то совершенно другое.
Переопределение компонентов применяется ко всем страницам. Тем не менее, вы можете осуществлять условную отрисовку, используя значения из `starlightRoute`, чтобы определить, когда показывать ваш интерфейс, когда показывать интерфейс Starlight, или даже когда показывать что-то совершенно другое.

В следующем примере компонент, переопределяющий [`Footer`](/ru/reference/overrides/#footer) от Starlight, отображает надпись «Создано с помощью Starlight 🌟» только на главной странице, а на всех остальных страницах показывает футер по умолчанию:

```astro
---
// src/components/ConditionalFooter.astro
import type { Props } from '@astrojs/starlight/props';
import Default from '@astrojs/starlight/components/Footer.astro';

const isHomepage = Astro.props.slug === '';
const isHomepage = Astro.locals.starlightRoute.id === '';
---

{
isHomepage ? (
<footer>Создано с помощью Starlight 🌟</footer>
) : (
<Default {...Astro.props}>
<Default>
<slot />
</Default>
)
}
```

Узнайте больше об условной отрисовке в руководстве [Синтаксис Astro](https://docs.astro.build/ru/basics/astro-syntax/#динамический-html).
Узнайте больше об отрисовке по условию в руководстве [Синтаксис Astro](https://docs.astro.build/ru/basics/astro-syntax/#динамический-html).
2 changes: 1 addition & 1 deletion docs/src/content/docs/ru/guides/sidebar.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ starlight({
Starlight может автоматически генерировать группу в вашей боковой панели, основываясь на директориях в вашей документации.
Это полезно, когда вы не хотите вручную вводить каждый элемент боковой панели в группе.

По умолчанию страницы сортируются в алфавитном порядке в соответствии со свойством [`slug`](/ru/reference/overrides/#slug) или именем файла.
По умолчанию страницы сортируются в алфавитном порядке в соответствии со свойством [`slug`](/ru/reference/route-data/#slug) или именем файла.

Добавьте автогенерируемую группу, используя объект со свойствами `label` и `autogenerate`. Ваша конфигурация `autogenerate` должна указывать `directory`, которая будет использоваться для записей боковой панели. Например, со следующей конфигурацией:

Expand Down
21 changes: 19 additions & 2 deletions docs/src/content/docs/ru/reference/configuration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -461,8 +461,10 @@ starlight({

Pagefind не может быть включен, если для параметра [`prerender`](#prerender) установлено значение `false`.

Установите `pagefind` в объект, чтобы настроить клиент поиска Pagefind.
Смотрите главу [Настройка ранжирования результатов Pagefind](https://pagefind.app/docs/ranking/) в документации Pagefind для получения дополнительной информации о том, как использовать параметр `pagefind.ranking` для управления расчётом ранжирования результатов поиска.
Установите объект в качестве значения `pagefind` для настройки клиента поиска Pagefind:

- Смотрите [Настройка ранжирования результатов Pagefind](https://pagefind.app/docs/ranking/) в документации Pagefind для получения дополнительных сведений об использовании опции `pagefind.ranking` для управления порядком сортировки результатов поиска.
- Смотрите [Поиск по нескольким сайтам](https://pagefind.app/docs/multisite/) в документации Pagefind для получения дополнительных сведений об использовании опции `pagefind.mergeIndex` для управления поиском по нескольким сайтам.

#### `PagefindOptions`

Expand All @@ -474,6 +476,21 @@ interface PagefindOptions {
termSaturation?: number;
termSimilarity?: number;
};
indexWeight?: number;
mergeIndex?: Array<{
bundlePath: string;
indexWeight?: number;
basePath?: string;
baseUrl?: string;
mergeFilter?: Record<string, string | string[]>;
language?: string;
ranking?: {
pageLength?: number;
termFrequency?: number;
termSaturation?: number;
termSimilarity?: number;
};
}>;
}
```

Expand Down
Loading