feat(i18n): add initial Russian localization for documentation and site config

- Added full Russian translations for all main documentation sections () into .
- Sections translated include: key features, installation, getting started, all core concepts, advanced features, API reference, FAQ, links, additional modules, contributing, and license.
- Updated  to ensure language switching is available and Russian locale is active.
- Each Russian file preserves the structure and formatting of the original Markdown, with machine-aided draft translation for immediate use.
- Lays the groundwork for UI language switching (en/ru) and enables further manual translation refinement and review.
This commit is contained in:
Sergey Penkovsky
2025-08-14 15:46:53 +03:00
parent 248bf4c8c5
commit 9fee26c524
20 changed files with 682 additions and 10 deletions

View File

@@ -0,0 +1,102 @@
---
sidebar_position: 5
---
# Использование аннотаций и генерация кода
CherryPick предоставляет продвинутую эргономику и безопасный DI благодаря **аннотациям Dart** и генерации кода. Это позволяет избавить вас от рутины — просто аннотируйте классы, поля и модули, запускайте генератор и используйте полностью автосвязанный DI!
## Как это работает
1. **Аннотируйте** сервисы, провайдеры и поля с помощью `cherrypick_annotations`.
2. **Генерируйте** код с помощью `cherrypick_generator` и `build_runner`.
3. **Используйте** автосгенерированные модули и миксины для автоматического внедрения.
---
## Поддерживаемые аннотации
| Аннотация | Target | Описание |
|---------------------|---------------|--------------------------------------------------------------|
| `@injectable()` | класс | Включает автоподстановку полей (генерируется mixin) |
| `@inject()` | поле | Автоподстановка через DI (работает с @injectable) |
| `@module()` | класс | DI-модуль: методы — провайдеры и сервисы |
| `@provide` | метод | Регистрирует как DI-провайдер (можно с параметрами) |
| `@instance` | метод/класс | Регистрирует новый экземпляр (на каждый resolve, factory) |
| `@singleton` | метод/класс | Регистрация как синглтон (один экземпляр на скоуп) |
| `@named` | поле/параметр | Использование именованных экземпляров для внедрения/resolve |
| `@scope` | поле/параметр | Внедрение/resolve из другого (именованного) скоупа |
| `@params` | параметр | Добавляет user-defined параметры во время resolve |
---
## Пример Field Injection
```dart
import 'package:cherrypick_annotations/cherrypick_annotations.dart';
@injectable()
class ProfilePage with _\$ProfilePage {
@inject()
late final AuthService auth;
@inject()
@scope('profile')
late final ProfileManager manager;
@inject()
@named('admin')
late final UserService adminUserService;
}
```
- После запуска build_runner миксин `_ProfilePage` будет сгенерирован для внедрения.
- Вызовите `myProfilePage.injectFields();` чтобы все зависимости были внедрены автоматически.
## Пример модуля/провайдера
```dart
@module()
abstract class AppModule {
@singleton
AuthService provideAuth(Api api) => AuthService(api);
@named('logging')
@provide
Future<Logger> provideLogger(@params Map<String, dynamic> args) async => ...;
}
```
---
## Шаги использования
1. Добавьте зависимости в `pubspec.yaml`.
2. Аннотируйте классы и модули.
3. Генерируйте код командой build_runner.
4. Регистрируйте модули и используйте автосвязь.
---
## Расширенные возможности
- Используйте `@named` для внедрения по ключу.
- Используйте `@scope` для внедрения из разных скоупов.
- Используйте `@params` для передачи runtime-параметров.
---
## Советы и FAQ
- После изменений в DI-коде запускайте build_runner заново.
- Не редактируйте `.g.dart` вручную.
- Ошибки некорректных аннотаций определяются автоматически.
---
## Ссылки
- [Подробнее про аннотации (en)](doc/annotations_en.md)
- [cherrypick_annotations/README.md](../cherrypick_annotations/README.md)
- [cherrypick_generator/README.md](../cherrypick_generator/README.md)
- Полный пример: [`examples/postly`](../examples/postly)