feat: localization service and frontend integration
- Add localization-service microservice (locale resolution, translations) - Add frontend API routes /api/locale and /api/translations/[locale] - Add LocalizationProvider and localization context - Integrate localization into layout, EmptyChat, MessageInput components - Update MICROSERVICES.md architecture docs - Add localization-service to workspaces Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -256,11 +256,45 @@
|
||||
|
||||
---
|
||||
|
||||
### 3.10 Localization Service (реализован)
|
||||
|
||||
**Назначение:** Локализация на основе геопозиции. Определяет locale (язык) пользователя по данным из Geo Device Service.
|
||||
|
||||
**Расположение:** `apps/localization-service/`
|
||||
|
||||
**Зависимость:** Geo Device Service (вызывает `/api/context` для получения countryCode, client.language, Accept-Language).
|
||||
|
||||
**API:**
|
||||
- `GET /api/locale` — resolve locale по IP/заголовкам (гео через geo-device-service)
|
||||
- `POST /api/locale` — resolve locale с client data (screen, language, geo)
|
||||
- `GET /api/translations/:locale` — переводы для UI
|
||||
- `GET /api/locales` — список поддерживаемых локалей
|
||||
|
||||
**Данные (LocalizationContext):**
|
||||
- **locale** — BCP 47 language code (ru, en, de, ...)
|
||||
- **source** — geo | accept-language | client | fallback
|
||||
|
||||
**Приоритет определения locale:**
|
||||
1. client.language (браузер navigator.language)
|
||||
2. Accept-Language заголовок
|
||||
3. countryCode из геопозиции
|
||||
4. fallback: en
|
||||
|
||||
**Запуск:** `npm run dev:locale` или `PORT=4003 npm run start -w localization-service`
|
||||
|
||||
**Конфигурация:** `GEO_DEVICE_SERVICE_URL` — URL geo-device-service (по умолчанию http://localhost:4002)
|
||||
|
||||
**Интеграция:** Frontend вызывает `/api/locale`, `/api/translations/[locale]` (проксирует к сервису), клиент — `fetchLocaleWithClient()`, `fetchTranslations()` из `@/lib/localization`.
|
||||
|
||||
---
|
||||
|
||||
## 4. Матрица зависимостей
|
||||
|
||||
| Сервис | От кого получает вызовы | Кого вызывает |
|
||||
|-------------|----------------------------------|----------------------------------|
|
||||
| Gateway | Frontend | Chat, Storage, Uploads, Search |
|
||||
| Сервис | От кого получает вызовы | Кого вызывает |
|
||||
|----------------|----------------------------------|----------------------------------|
|
||||
| Gateway | Frontend | Chat, Storage, Uploads, Search |
|
||||
| Localization | Frontend | Geo Device Service |
|
||||
| Geo Device | Frontend, Localization | — |
|
||||
| Chat | Gateway | Research, LLM Proxy, Storage |
|
||||
| Research | Chat | Search, Uploads, LLM Proxy |
|
||||
| Search | Research, Chat (media) | SearXNG (внешний) |
|
||||
@@ -285,7 +319,8 @@ gooseek/
|
||||
│ ├── uploads-service/ # UploadManager, UploadStore
|
||||
│ ├── storage-service/ # DB, config
|
||||
│ ├── llm-proxy/ # Models registry, providers
|
||||
│ ├── geo-device-service/ # Геопозиция, устройство, браузер
|
||||
│ ├── geo-device-service/ # Геопозиция, устройство, браузер
|
||||
│ ├── localization-service/ # Локализация (зависит от geo-device)
|
||||
│ ├── shared-types/ # Общие типы, DTO
|
||||
│ └── shared-utils/ # formatHistory, splitText, computeSimilarity
|
||||
├── docker-compose.yaml
|
||||
|
||||
Reference in New Issue
Block a user