Initial commit from monorepo

This commit is contained in:
Ruslan Bakiev
2026-01-07 09:10:35 +07:00
commit 3db50d9637
371 changed files with 43223 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
{
"about": {
"title": "Маркетплейс сырья и сервисов",
"description": "Цифровая платформа, объединяющая производителей, покупателей, логистические компании, финансовые организации и сервисы контроля качества в единую экосистему."
}
}

View File

@@ -0,0 +1,29 @@
{
"aiAssistants": {
"header": {
"title": "AI агент"
},
"view": {
"fallbackName": "AI помощник",
"not_found": "Ассистент не найден",
"agentTitle": "Optovia AI агент",
"agentSubtitle": "Маршруты, офферы, заказы и статус доставки. Агент использует LangGraph + MCP.",
"you": "Вы",
"agentName": "Оптовия",
"typing": "Агент думает...",
"placeholder": "Спросите про офферы, маршруты или статус заказа",
"send": "Отправить",
"reset": "Очистить",
"welcome": "Привет! Я могу найти офферы с маршрутом до вашей точки, подсказать статус заказа и показать узлы логистики.",
"error": "Не получилось получить ответ от агента.",
"emptyResponse": "Нет ответа от агента."
},
"assistants": {
"optovia": {
"name": "Логистический агент",
"role": "AI ассистент Optovia",
"description": "Агент для маршрутов, офферов и статусов заказов."
}
}
}
}

17
i18n/locales/ru/auth.json Normal file
View File

@@ -0,0 +1,17 @@
{
"auth": {
"login": "Вход",
"register": "Регистрация",
"logout": "Выход",
"welcome_back": "Добро пожаловать",
"login_description": "Войдите в свой аккаунт Optovia",
"email": "Email",
"email_placeholder": "Ваш email",
"password": "Пароль",
"password_placeholder": "Введите пароль",
"login_button": "Войти",
"logging_in": "Вход...",
"no_account": "Нет аккаунта?",
"register_link": "Зарегистрироваться"
}
}

View File

@@ -0,0 +1,27 @@
{
"billing": {
"header": {
"title": "Баланс"
},
"states": {
"loading": "Загрузка баланса..."
},
"errors": {
"title": "Ошибка загрузки",
"load_failed": "Не удалось загрузить баланс",
"retry": "Повторить"
},
"balance": {
"label": "Текущий баланс",
"credits": "Пополнения",
"debits": "Списания"
},
"transactions": {
"title": "История операций",
"empty": "Операций пока нет",
"date": "Дата",
"code": "Код",
"amount": "Сумма"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"breadcrumbs": {
"cabinet": "Кабинет",
"orders": "Заказы",
"addresses": "Адреса",
"profile": "Профиль",
"team": "Компания",
"kyc": "Верификация",
"offers": "Предложения",
"new": "Создание",
"russia": "Россия",
"ai": "AI ассистент",
"goods": "Товары",
"locations": "Локации",
"request": "Заявка",
"companySwitch": "Смена компании",
"tokens": "Токены"
}
}

View File

@@ -0,0 +1,11 @@
{
"cabinetNav": {
"orders": "Мои заказы",
"addresses": "Мои адреса",
"billing": "Баланс",
"profile": "Профиль",
"team": "Компания",
"offers": "Мои предложения",
"ai": "AI ассистент"
}
}

View File

@@ -0,0 +1,7 @@
{
"catalogAddress": {
"badges": {
"default": "По умолчанию"
}
}
}

View File

@@ -0,0 +1,47 @@
{
"catalogHub": {
"states": {
"loading": "Загружаем информацию о хабе..."
},
"not_found": {
"title": "Логистический хаб не найден",
"subtitle": "Возможно, страница была удалена или указан неверный адрес"
},
"actions": {
"back_to_catalog": "Вернуться в каталог"
},
"sections": {
"offers": {
"title": "Предложения в этом хабе"
},
"suppliers": {
"title": "Поставщики, работающие через этот хаб"
},
"products": {
"title": "Доступные товары"
}
},
"empty": {
"offers": {
"title": "Пока нет предложений",
"subtitle": "В этом логистическом хабе пока нет активных предложений. Вы можете разместить своё!"
}
},
"labels": {
"default_supplier": "Поставщик"
},
"badges": {
"offers": "{count} предложений"
},
"meta": {
"title": "Логистический хаб | Optovia",
"title_with_name": "{name} — Логистический хаб | Optovia",
"description": "Логистический хаб {name}, {country} — {offers} предложений от {suppliers} поставщиков"
},
"nearbyHubs": {
"byRoad": "По автодороге",
"byRail": "По железной дороге",
"empty": "Нет доступных маршрутов"
}
}
}

View File

@@ -0,0 +1,20 @@
{
"catalogHubsSection": {
"header": {
"title": "Ключевые хабы и страны"
},
"actions": {
"view_all": "Смотреть все"
},
"empty": {
"no_hubs": "Нет доступных хабов"
},
"filters": {
"all": "Все",
"auto": "Авто",
"rail": "Ж/д",
"sea": "Море",
"air": "Авиа"
}
}
}

View File

@@ -0,0 +1,13 @@
{
"catalogLanding": {
"states": {
"loading": "Загружаем данные каталога..."
},
"actions": {
"open_map": "Открыть карту"
},
"labels": {
"distance_km": "{km} км"
}
}
}

View File

@@ -0,0 +1,29 @@
{
"catalogMap": {
"states": {
"loading": "Загружаем локации...",
"no_hubs": "Нет доступных хабов",
"no_suppliers": "Нет доступных поставщиков",
"no_offers": "Нет доступных предложений"
},
"actions": {
"list_view": "Список"
},
"tabs": {
"hubs": "Хабы",
"suppliers": "Компании",
"offers": "Офферы"
},
"hubsTab": "Хабы",
"noHubs": "Нет хабов",
"empty": {
"hubs": "Нет доступных хабов",
"offers": "Нет доступных предложений",
"suppliers": "Нет доступных поставщиков"
},
"labels": {
"country_unknown": "Страна не указана",
"distance_from_moscow": "{km} км от Москвы"
}
}
}

View File

@@ -0,0 +1,41 @@
{
"catalogOffer": {
"states": {
"loading": "Загружаем предложение..."
},
"not_found": {
"title": "Предложение не найдено",
"subtitle": "Возможно, страница была удалена или указан неверный адрес"
},
"actions": {
"back_to_catalog": "Вернуться в каталог"
},
"sections": {
"description": {
"title": "Описание"
},
"supplier": {
"title": "Поставщик"
},
"location": {
"title": "Локация"
}
},
"labels": {
"per_unit": "за {unit}",
"quantity_with_unit": "{quantity} {unit}",
"valid_until": "Действует до {date}"
},
"badges": {
"valid_until": "до {date}"
},
"units": {
"ton_short": "т"
},
"meta": {
"title": "Предложение | Optovia",
"title_with_name": "{title} | Optovia",
"description": "Предложение {title}"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"catalogOfferCard": {
"labels": {
"quantity_with_unit": "{quantity} {unit}",
"default_unit": "т",
"country_unknown": "Не указана"
}
}
}

View File

@@ -0,0 +1,17 @@
{
"catalogOffersSection": {
"header": {
"title": "Предложения"
},
"actions": {
"view_all": "Смотреть все"
},
"filters": {
"all": "Все",
"active": "Активные"
},
"empty": {
"no_offers": "Нет активных предложений"
}
}
}

View File

@@ -0,0 +1,59 @@
{
"catalogProduct": {
"states": {
"loading": "Загружаем информацию о товаре..."
},
"not_found": {
"title": "Товар не найден",
"subtitle": "Возможно, страница была удалена или указан неверный адрес"
},
"actions": {
"back_to_catalog": "Вернуться в каталог"
},
"labels": {
"category_unknown": "Категория не указана",
"offers_count": "{count} предложений",
"valid_until": "Действует до {date}",
"default_supplier": "Поставщик",
"supplier_offers": "{count} предложений",
"in_stock": "В наличии",
"per_unit": "за {unit}",
"price_single": "${price}",
"price_range": "${min} - ${max}"
},
"stats": {
"offers": "Активных предложений",
"suppliers": "Поставщиков",
"locations": "Локаций",
"price_range": "Диапазон цен"
},
"sections": {
"offers": {
"title": "Актуальные предложения"
},
"suppliers": {
"title": "Поставщики этого товара"
},
"locations": {
"title": "Где доступен этот товар"
}
},
"status": {
"active": "Активно",
"draft": "Черновик",
"cancelled": "Отменено",
"closed": "Закрыто",
"unknown": "Неизвестно"
},
"cta": {
"title": "Нужен этот товар?",
"subtitle": "Создайте запрос и получите предложения от проверенных поставщиков",
"action": "Создать запрос"
},
"meta": {
"title": "Товар | Optovia",
"title_with_name": "{name} | Optovia",
"description": "{name} — {offers} предложений от {suppliers} поставщиков"
}
}
}

View File

@@ -0,0 +1,40 @@
{
"catalogSupplier": {
"states": {
"loading": "Загружаем информацию о поставщике..."
},
"not_found": {
"title": "Поставщик не найден",
"subtitle": "Возможно, страница была удалена или указан неверный адрес"
},
"actions": {
"back_to_catalog": "Вернуться в каталог"
},
"sections": {
"offers": {
"title": "Активные предложения"
},
"products": {
"title": "Товары"
},
"locations": {
"title": "География поставок"
}
},
"badges": {
"verified": "Проверен",
"offers": "{count} предложений"
},
"labels": {
"on_time": "{percent}% вовремя",
"on_time_default": "89% вовремя",
"trusted_partner": "Надежный партнер"
},
"meta": {
"title": "Поставщик | Optovia",
"title_with_name": "{name} — Поставщик | Optovia",
"description": "Информация о поставщике",
"description_with_name": "Информация о поставщике {name}"
}
}
}

View File

@@ -0,0 +1,17 @@
{
"catalogSuppliersSection": {
"header": {
"title": "Проверенные компании"
},
"actions": {
"view_all": "Смотреть все"
},
"filters": {
"all": "Все",
"verified": "Проверенные"
},
"empty": {
"no_suppliers": "Нет зарегистрированных компаний"
}
}
}

View File

@@ -0,0 +1,40 @@
{
"clientOfferForm": {
"header": {
"title": "Характеристики товара"
},
"actions": {
"back": "Назад к выбору",
"chooseAnother": "Выбрать другой товар",
"save": "Сохранить",
"saving": "Сохранение..."
},
"error": {
"title": "Ошибка",
"retry": "Повторить",
"load": "Не удалось загрузить данные",
"save": "Не удалось сохранить данные"
},
"states": {
"loading": "Загружаем данные..."
},
"noSchema": {
"title": "Схема не настроена",
"description": "Для товара \"{name}\" не настроена схема характеристик в TerminusDB. Обратитесь к администратору."
},
"errors": {
"productNotFound": "Продукт с UUID {uuid} не найден",
"schemaNotFound": "Схема \"{schema}\" не найдена в TerminusDB"
},
"labels": {
"location": "Локация",
"location_empty": "Локации отсутствуют"
},
"success": {
"saved": "Данные сохранены!\\n\\n{payload}"
},
"debug": {
"schema_missing": "не указан"
}
}
}

View File

@@ -0,0 +1,39 @@
{
"clientOffersList": {
"header": {
"title": "Мои предложения"
},
"actions": {
"add": "Добавить",
"addOffer": "Добавить предложение"
},
"error": {
"title": "Ошибка",
"retry": "Попробовать снова",
"load": "Не удалось загрузить предложения"
},
"states": {
"loading": "Загружаем предложения..."
},
"labels": {
"untitled": "Без названия",
"quantity": "Количество",
"price": "Цена",
"location": "Локация",
"valid_until": "Действует до",
"not_specified": "Не указана",
"invalid_date": "Невалидная дата"
},
"status": {
"active": "Активно",
"draft": "Черновик",
"expired": "Истекло",
"sold": "Продано",
"unknown": "Неизвестно"
},
"empty": {
"title": "Нет предложений",
"subtitle": "Создайте своё первое предложение"
}
}
}

View File

@@ -0,0 +1,20 @@
{
"clientProfile": {
"actions": {
"debugTokens": "Отладка токенов"
},
"debugTokens": {
"title": "Отладка токенов",
"idToken": "ID Token",
"claims": "Claims",
"error": "Не удалось получить токены"
},
"states": {
"loading": "Загружаем профиль..."
},
"error": {
"load": "Ошибка загрузки профиля",
"save": "Ошибка сохранения профиля"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"clientRedirect": {
"status": {
"redirecting": "Перенаправляем на главную..."
}
}
}

View File

@@ -0,0 +1,82 @@
{
"clientTeam": {
"header": {
"title": "Ваша компания",
"createTitle": "Создание компании"
},
"actions": {
"switch": "Сменить компанию",
"add": "Добавить",
"addCompany": "Добавить компанию",
"inviteWip": "Функция приглашения участника в разработке"
},
"error": {
"title": "Ошибка",
"retry": "Повторить",
"load": "Не удалось загрузить компании"
},
"loading": {
"message": "Загружаем компании..."
},
"empty": {
"title": "У вас нет компании",
"subtitle": "Создайте компанию для работы на платформе",
"cta": "Стать участником"
},
"kyc": {
"notice": "Для работы на платформе необходимо пройти верификацию компании (KYC)",
"button": "Пройти верификацию →",
"pending": {
"title": "Заявка на проверке",
"description": "Ваша заявка на верификацию находится на рассмотрении. Мы уведомим вас о результате."
},
"approved": {
"title": "Верификация пройдена",
"description": "Ваша компания создаётся. Обновите страницу через несколько секунд."
},
"empty": {
"title": "Верификация компании",
"description": "Для работы на платформе необходимо пройти верификацию компании (KYC)",
"cta": "Пройти верификацию"
}
},
"members": {
"title": "Участники",
"invited": "Приглашен"
},
"inviteCard": {
"title": "Пригласить"
},
"invitations": {
"pending": "Ожидает ответа",
"sent": "Приглашение отправлено"
},
"membersLocked": {
"title": "🔒 Участники",
"subtitle": "Управление участниками будет доступно после прохождения верификации"
},
"kycStatus": {
"approved": "Верифицирована",
"inReview": "На проверке",
"pending": "Требуется верификация",
"rejected": "Верификация отклонена",
"default": "Требуется верификация"
},
"roles": {
"owner": "Владелец",
"admin": "Администратор",
"manager": "Менеджер",
"member": "Участник"
},
"invite": {
"title": "Пригласить участника",
"email": "Email",
"emailPlaceholder": "Введите email",
"role": "Роль",
"submit": "Отправить приглашение",
"cancel": "Отмена",
"error": "Не удалось отправить приглашение",
"success": "Приглашение отправлено"
}
}
}

View File

@@ -0,0 +1,11 @@
{
"clientTeamSwitch": {
"loading": {
"message": "Загружаем команды..."
},
"error": {
"load": "Не удалось загрузить команды",
"switch": "Не удалось переключить команду"
}
}
}

View File

@@ -0,0 +1,23 @@
{
"common": {
"loading": "Загрузка...",
"save": "Сохранить",
"cancel": "Отмена",
"refresh": "Обновить",
"error": "Ошибка",
"success": "Успех",
"retry": "Повторить",
"actions": {
"load_more": "Показать еще"
},
"pagination": {
"showing": "Показано {shown} из {total}"
},
"selectLocation": "Выберите локацию",
"theme_dark": "Темная тема",
"theme_light": "Светлая тема",
"values": {
"not_available": "Нет данных"
}
}
}

8
i18n/locales/ru/cta.json Normal file
View File

@@ -0,0 +1,8 @@
{
"cta": {
"title": "Готовы начать торговать?",
"description": "Присоединяйтесь к тысячам компаний, которые уже используют Optovia для своих сделок",
"start_selling": "Начать продавать",
"start_buying": "Начать покупать"
}
}

View File

@@ -0,0 +1,34 @@
{
"dashboard": {
"title": "Личный кабинет",
"home": "Главная",
"profile": "Профиль",
"team": "Команда",
"orders": "Мои заказы",
"switch_company": "Сменить компанию",
"locations_description": "Склады и точки доставки",
"favorites": "Избранное",
"products": "Мои товары",
"analytics": "Аналитика",
"welcome": "Добро пожаловать в ваш личный кабинет Optovia",
"profile_info": "Информация о профиле",
"activity": "Активность",
"quick_actions": "Быстрые действия",
"new_calculation": "Новый расчет",
"notifications": "Уведомления",
"visits_today": "Посещений сегодня",
"product_views": "Просмотров товаров",
"last_login": "Последний вход",
"find_products": "Найти товары",
"search_marketplace": "Поиск на маркетплейсе",
"materials": "Материалы",
"catalog": "Каталог товаров",
"profile_settings": "Настройки аккаунта",
"pass_kyc": "Пройти KYC верификацию",
"pass_kyc_desc": "Подтвердите личность для доступа ко всем функциям",
"add_team_member": "Добавить участника команды",
"add_team_member_desc": "Пригласите коллег для совместной работы",
"complete_profile": "Заполнить профиль",
"complete_profile_desc": "Добавьте информацию о компании и контакты"
}
}

View File

@@ -0,0 +1,11 @@
{
"footer": {
"buyers": "Покупателям",
"suppliers": "Поставщикам",
"services": "Сервисным компаниям",
"rights": "Все права защищены",
"privacy": "Политика конфиденциальности",
"terms": "Пользовательское соглашение",
"support": "Поддержка"
}
}

View File

@@ -0,0 +1,36 @@
{
"ganttTimeline": {
"states": {
"loading": "Загрузка timeline..."
},
"legend": {
"title": "Этапы доставки",
"auto": "Автоперевозка",
"sea": "Морская перевозка",
"rail": "Ж/д перевозка",
"services": "Услуги"
},
"modal": {
"title": "Детали рейса",
"company": {
"title": "Компания",
"tax_id": "ИНН:"
},
"dates": {
"title": "Даты",
"planned_loading": "План. погрузка:",
"actual_loading": "Факт. погрузка:",
"planned_unloading": "План. выгрузка:",
"actual_unloading": "Факт. выгрузка:"
},
"weight": {
"title": "Вес",
"planned": "Плановый:",
"at_loading": "При погрузке:",
"at_unloading": "При выгрузке:",
"unit": "т"
},
"not_specified": "Не указано"
}
}
}

View File

@@ -0,0 +1,27 @@
{
"goods": {
"title": "Товары",
"back": "Назад к поиску",
"filter_placeholder": "Поиск материалов",
"all_categories": "Все категории",
"metals": "Металлы",
"energy": "Энергоресурсы",
"chemicals": "Химия",
"per_ton": "за тонну",
"filters": "Фильтры",
"search": "Поиск",
"category": "Категория",
"price_range": "Ценовой диапазон",
"grid_view": "Плитка",
"list_view": "Список",
"description": "Материалы и товары доступные на платформе",
"error": {
"title": "Ошибка загрузки",
"retry": "Попробовать снова"
},
"empty": {
"title": "Нет товаров",
"description": "Товары пока не добавлены на платформу"
}
}
}

View File

@@ -0,0 +1,17 @@
{
"howto": {
"title": "Как это работает",
"step1": {
"title": "Найдите материалы",
"description": "Выберите нужное сырье, укажите количество и место доставки"
},
"step2": {
"title": "Сравните предложения",
"description": "Получите предложения от проверенных поставщиков с различными вариантами логистики"
},
"step3": {
"title": "Выберите сервисы",
"description": "Добавьте финансирование, страхование и контроль качества к вашей сделке"
}
}
}

8
i18n/locales/ru/kyc.json Normal file
View File

@@ -0,0 +1,8 @@
{
"kyc": {
"verification_status": "Статус верификации",
"team_verification_description": "Пройдите верификацию команды для создания заказов",
"start_verification": "Начать верификацию",
"check_status_in_odoo": "Статус проверяется администратором"
}
}

View File

@@ -0,0 +1,63 @@
{
"kycOverview": {
"header": {
"title": "Верификация KYC"
},
"errors": {
"title": "Ошибка",
"retry": "Повторить",
"not_authenticated": "Пользователь не аутентифицирован",
"load_failed": "Ошибка загрузки данных KYC"
},
"states": {
"loading": "Загружаем статус верификации..."
},
"labels": {
"approved_at": "Одобрено {date}"
},
"actions": {
"retry": "Повторить верификацию",
"back_to_team": "Вернуться к команде"
},
"choose_country": {
"title": "Выберите страну для верификации",
"subtitle": "Пройдите процедуру верификации компании для доступа ко всем функциям платформы."
},
"countries": {
"russia": {
"title": "Россия",
"description": "Верификация через ИНН с автозаполнением данных из базы ФНС",
"badge": "Доступно"
},
"kazakhstan": {
"title": "Казахстан",
"description": "Верификация через БИН (скоро)",
"badge": "Скоро"
}
},
"info": {
"title": "О процедуре верификации",
"point1": "Проверка займет 1-2 рабочих дня",
"point2": "Данные заполняются автоматически через официальные источники",
"point3": "После верификации доступна вся платформа"
},
"status": {
"title": {
"pending": "Заявка на рассмотрении",
"in_review": "Документы проверяются",
"approved": "Верификация пройдена",
"rejected": "Верификация отклонена",
"expired": "Срок заявки истек",
"unknown": "Неизвестный статус"
},
"description": {
"pending": "Ваша заявка в обработке. Ожидайте результат в течение 1-2 рабочих дней.",
"in_review": "Специалисты проверяют документы и данные компании.",
"approved": "Поздравляем! Компания успешно прошла верификацию.",
"rejected": "Верификация отклонена. Проверьте данные и попробуйте снова.",
"expired": "Срок действия заявки истек. Подайте новую заявку.",
"unknown": "Неизвестный статус заявки"
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"kycRussia": {
"header": {
"title": "Верификация для России",
"subtitle": "Заполните данные вашей организации. Все поля будут заполнены автоматически через поиск по ИНН."
},
"states": {
"submitting": "Отправляем заявку на верификацию..."
},
"errors": {
"title": "Ошибка отправки",
"not_authenticated": "Пользователь не аутентифицирован",
"no_team": "Сначала создайте компанию",
"create_failed": "Не удалось создать заявку",
"submit_failed": "Произошла ошибка при отправке заявки"
},
"success": {
"title": "Заявка успешно отправлена",
"description": "Ваша заявка на верификацию принята. Результат будет готов в течение 1-2 рабочих дней.",
"cta": "Посмотреть статус заявки →"
}
}
}

View File

@@ -0,0 +1,14 @@
{
"locations": {
"title": "Выберите место доставки",
"back": "Назад к поиску",
"list_view": "Список",
"map_view": "Карта",
"filters": "Фильтры",
"search": "Поиск города",
"search_placeholder": "Название города",
"regions": "Федеральные округа",
"all_regions": "Все регионы",
"all_countries": "Все страны"
}
}

8
i18n/locales/ru/nav.json Normal file
View File

@@ -0,0 +1,8 @@
{
"nav": {
"search": "Поиск",
"offers": "Предложения",
"suppliers": "Поставщики",
"hubs": "Хабы"
}
}

View File

@@ -0,0 +1,22 @@
{
"offersNew": {
"header": {
"title": "Выберите продукт"
},
"actions": {
"back": "Назад"
},
"errors": {
"title": "Ошибка",
"retry": "Попробовать снова",
"load_failed": "Не удалось загрузить продукты"
},
"states": {
"loading": "Загружаем продукты..."
},
"empty": {
"title": "Нет доступных продуктов",
"description": "Обратитесь к администратору для добавления продуктов"
}
}
}

View File

@@ -0,0 +1,31 @@
{
"orderCalendar": {
"header": {
"title": "Календарь рейсов"
},
"filters": {
"loading": "Погрузки",
"unloading": "Выгрузки"
},
"labels": {
"loading": "Погрузка",
"unloading": "Выгрузка",
"weight_unit": "т",
"service": "Услуга",
"service_stage": "Сервисный этап"
},
"months": "Авг 2024|Сен 2024|Окт 2024",
"stats": {
"title": "Статистика по периодам:",
"trips": "Рейсы:",
"companies": "Компании:",
"weight": "Вес:"
},
"transport": {
"auto": "Автоперевозка",
"rail": "Ж/д перевозка",
"sea": "Морская перевозка",
"air": "Авиаперевозка"
}
}
}

View File

@@ -0,0 +1,12 @@
{
"orderMap": {
"header": {
"title": "Маршрут логистики"
},
"stats": {
"distance_value": "{km} км",
"distance_label": "примерное расстояние",
"countries_label": "стран в маршруте"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"orders": {
"no_orders": "Нет заказов",
"no_orders_desc": "Начните с создания нового расчета",
"create_new": "Создать новый расчет"
}
}

View File

@@ -0,0 +1,51 @@
{
"ordersDetail": {
"header": {
"title": "Заказ #{id}"
},
"errors": {
"title": "Ошибка",
"retry": "Попробовать снова",
"load_failed": "Не удалось загрузить заказ"
},
"states": {
"loading": "Загружаем детали заказа..."
},
"labels": {
"unit_tons": "тонн",
"product_unknown": "Товар",
"delivery_days": "дней доставки",
"weight_unit": "т",
"trips": "рейсов",
"company_unknown": "Компания не указана",
"price_zero": "0 ₽",
"dates_undefined": "Даты не определены"
},
"status": {
"pending": "Ожидает",
"processing": "В обработке",
"in_transit": "В пути",
"delivered": "Доставлен",
"cancelled": "Отменен",
"unknown": "Неизвестно"
},
"sections": {
"stages": {
"title": "Этапы маршрута",
"companies": {
"title": "Компании",
"empty": "Компании не назначены"
},
"route_title": "Маршрут этапа",
"empty": "Этапы маршрута не определены"
},
"map": {
"title": "Общая карта маршрута"
},
"timeline": {
"title": "Timeline доставки",
"empty": "Нет данных для timeline"
}
}
}
}

View File

@@ -0,0 +1,29 @@
{
"ordersList": {
"actions": {
"new_calc": "Новый расчет"
},
"errors": {
"retry": "Попробовать снова"
},
"states": {
"loading": "Загружаем заказы..."
},
"filters": {
"all": "Все",
"pending": "Ожидают",
"processing": "В обработке",
"in_transit": "В пути",
"delivered": "Доставлены"
},
"card": {
"order_label": "Заказ",
"route": "Маршрут",
"product": "Товар",
"product_loading": "Загрузка...",
"unit_tons": "тонн",
"status": "Статус",
"stages_completed": "Этапов завершено: {done} / {total}"
}
}
}

View File

@@ -0,0 +1,30 @@
{
"profile": {
"description": "Управление данными профиля и настройками аккаунта",
"personal_info": "Личная информация",
"account_settings": "Настройки аккаунта",
"username": "Имя пользователя",
"first_name": "Имя",
"first_name_placeholder": "Введите имя",
"last_name": "Фамилия",
"last_name_placeholder": "Введите фамилию",
"phone": "Телефон",
"phone_placeholder": "+7 XXX XXX XX XX",
"avatar": "Аватар",
"regenerate_avatar": "Сменить аватар",
"save": "Сохранить",
"saving": "Сохранение",
"role": "Роль",
"language": "Язык интерфейса",
"notifications_settings": "Уведомления",
"email_notifications": "Email уведомления о новых предложениях",
"order_notifications": "Уведомления об обновлении заказов",
"security": "Безопасность",
"two_factor": "Двухфакторная аутентификация",
"not_configured": "Не настроена",
"last_login": "Последний вход",
"status": "Статус",
"active": "Активен",
"not_specified": "Не указан"
}
}

View File

@@ -0,0 +1,46 @@
{
"profileAddresses": {
"header": {
"title": "Мои адреса"
},
"actions": {
"add": "Добавить адрес",
"delete": "Удалить",
"confirm_delete": "Удалить этот адрес?"
},
"form": {
"title": "Новый адрес",
"mapLabel": "Выберите точку на карте",
"name": {
"label": "Название",
"placeholder": "Например: Офис, Склад, Производство"
},
"address": {
"label": "Адрес",
"placeholder": "Полный адрес"
},
"latitude": {
"label": "Широта",
"placeholder": "55.7558"
},
"longitude": {
"label": "Долгота",
"placeholder": "37.6173"
},
"save": "Сохранить",
"saving": "Сохранение..."
},
"states": {
"loading": "Загружаем адреса..."
},
"labels": {
"default": "По умолчанию"
},
"empty": {
"title": "Нет адресов",
"description": "У вас пока нет сохранённых адресов",
"cta": "Добавить первый адрес"
},
"status": {}
}
}

View File

@@ -0,0 +1,34 @@
{
"roles": {
"title": "Для кого наша платформа",
"producers": {
"title": "Производители",
"description": "Продавайте сырье напрямую покупателям через нашу платформу",
"benefit1": "Доска объявлений для продажи",
"benefit2": "Участие в аукционных тендерах",
"benefit3": "Доступ к финансированию",
"benefit4": "Логистические решения",
"cta": "Начать продавать"
},
"buyers": {
"title": "Покупатели",
"description": "Находите и покупайте сырье с гарантией качества и доставки",
"benefit1": "Поиск и сравнение предложений",
"benefit2": "Кредитование покупок",
"benefit3": "Страхование сделок",
"benefit4": "Контроль качества товаров",
"cta": "Начать покупать"
},
"services": {
"title": "Сервисные компании",
"description": "Предоставляйте услуги участникам маркетплейса и расширяйте клиентскую базу",
"benefit1": "Логистические компании",
"benefit2": "Финансовые организации",
"benefit3": "Лаборатории контроля качества",
"benefit4": "Страховые компании",
"cta": "Стать партнером"
},
"buyer": "Покупатель",
"seller": "Продавец"
}
}

View File

@@ -0,0 +1,15 @@
{
"routeMap": {
"states": {
"loading": "Загрузка карты..."
},
"popup": {
"companies": "Компании:"
},
"points": {
"source": "Точка отправления",
"destination": "Точка назначения",
"service": "Точка услуги"
}
}
}

View File

@@ -0,0 +1,81 @@
{
"search": {
"title": "Найти сырье",
"subtitle": "и промышленные сервисы",
"description": "Связывайтесь с поставщиками, получайте конкурентные цены и упрощайте процессы закупок",
"product_label": "Что вы ищете?",
"product_placeholder": "Выберите тип материала",
"quantity_label": "Количество",
"quantity_placeholder": "Объем",
"location_label": "Доставка в",
"location_placeholder": "Город или регион",
"search_button": "Найти",
"order_created": "Заявка создана",
"order_number": "Номер",
"verified_suppliers": "проверенных поставщиков",
"verified_logistics": "проверенных логистических",
"verified_banks": "проверенных банка",
"verified_insurance": "проверенные страховые",
"popular_requests": "Популярные запросы",
"delivery": "доставки",
"annual": "годовых",
"from_deal": "от сделки",
"suppliers_geography": "География поставщиков",
"total_cost": "Итоговая стоимость",
"material": "Материал",
"delivery_cost": "Доставка",
"insurance_cost": "Страхование",
"optional": "опц.",
"total": "Итого",
"implementation_time": "Сроки реализации",
"savings": "Экономия",
"geography": "География",
"need_help": "Нужна помощь?",
"manager_title": "Эксперт по сырьевым рынкам",
"presentation": "Презентация",
"presentation_duration": "1 час",
"any_language": "На любом языке",
"contact": "Связаться",
"continue": "Далее",
"results": "Результаты поиска",
"delivery_options": "Варианты доставки",
"new_search": "Новый поиск",
"logistics_cost": "стоимость логистики",
"choose_supplier": "Выбрать поставщика",
"filters": "Фильтры",
"supplier_filter": "Поиск поставщика",
"supplier_placeholder": "Название компании",
"logistics_type": "Тип логистики",
"all_logistics": "Все варианты",
"auto_only": "Только авто",
"multimodal": "Мультимодальная",
"list_view": "Список",
"map_view": "Карта",
"placeholder": "Поиск товаров, поставщиков...",
"error": "Ошибка!",
"units": {
"tons_short": "т"
},
"examples": {
"metal_sheet": {
"product": "Металл листовой",
"location": "Москва"
},
"green_coffee": {
"product": "Кофе зелёный",
"location": "Владивосток"
},
"wheat": {
"product": "Пшеница",
"location": "Ростов-на-Дону"
},
"cocoa": {
"product": "Какао-бобы",
"location": "Новороссийск"
}
},
"validation": {
"fill_product_location": "Заполните продукт и локацию"
}
}
}

View File

@@ -0,0 +1,12 @@
{
"searchPage": {
"hero": {
"title": "Поиск и подбор поставок",
"subtitle": "Введите товар, количество и локацию — подбор без авторизации. Всё найденное можно оформить в личном кабинете."
},
"cta": {
"catalog": "Каталог",
"orders": "Мои заказы"
}
}
}

View File

@@ -0,0 +1,11 @@
{
"sidebar": {
"exchange": "Биржа",
"ordersLogistics": "Заказы и логистика",
"seller": "Продавец",
"aiTools": "AI и инструменты",
"settings": "Настройки",
"createCompany": "Создать компанию",
"joinCompany": "Присоединиться"
}
}

View File

@@ -0,0 +1,9 @@
{
"stats": {
"title": "Optovia в цифрах",
"suppliers": "Поставщики",
"transactions": "Оборот сделок",
"service_companies": "Сервисные компании",
"support": "Поддержка"
}
}

View File

@@ -0,0 +1,14 @@
{
"supplier": {
"delivery_time": "Время доставки",
"logistics": "Логистические компании",
"financing": "Финансирование",
"insurance": "Страхование",
"quality_control": "Контроль качества",
"total_summary": "Итого к оплате",
"all_services_selected": "Все сервисы выбраны",
"final_cost": "Финальная стоимость",
"back_to_suppliers": "Назад к поставщикам",
"place_order": "Оформить заказ"
}
}

View File

@@ -0,0 +1,30 @@
{
"supplierFlow": {
"breadcrumb": {
"home": "Главная",
"search_results": "Результаты поиска",
"select_services": "Выбор сервисных компаний"
},
"sections": {
"logistics": {
"title": "Логистика",
"subtitle": "Выберите перевозчика"
},
"financing": {
"title": "Финансирование",
"subtitle": "Выберите банк"
},
"insurance": {
"title": "Страхование",
"subtitle": "Выберите страховую компанию"
},
"quality": {
"title": "Контроль качества",
"subtitle": "Выберите лабораторию"
}
},
"labels": {
"rating_reviews": "★ {rating} ({reviews})"
}
}
}

View File

@@ -0,0 +1,40 @@
{
"teams": {
"create_team": "Создать команду",
"team_name": "Название команды",
"team_name_placeholder": "Введите название команды",
"creating": "Создаем...",
"no_team": "У вас нет команды",
"no_team_description": "Создайте команду для совместной работы и прохождения KYC",
"create_first_team": "Стать участником",
"your_teams": "Ваши команды",
"create_new_team": "Создать новую команду",
"create_description": "Добавить команду для работы",
"switch_description": "Выберите команду для работы или создайте новую",
"switch_to": "Переключиться",
"active": "Активная",
"members": "Участники",
"invite_member": "Пригласить участника",
"kyc_verification": "Верификация KYC",
"created": "Создано",
"view_details": "Подробнее",
"start_kyc": "Пройти KYC",
"retry_kyc": "Повторить KYC",
"description": "Управляйте командами и проходите верификацию",
"status": {
"pending_kyc": "Требуется KYC",
"kyc_in_review": "KYC на рассмотрении",
"kyc_approved": "KYC одобрен",
"kyc_rejected": "KYC отклонен",
"suspended": "Заблокировано"
},
"company_type": {
"label": "Тип компании",
"buyer": "Покупатель",
"seller": "Продавец"
},
"errors": {
"create_failed": "Ошибка создания команды"
}
}
}

View File

@@ -0,0 +1,13 @@
{
"testMap": {
"title": "Тест карты Mapbox — космический перелёт",
"controls": {
"duration": "Длительность (мс):",
"min_zoom": "Мин. zoom (высота):",
"min_zoom_hint": "(меньше = выше в космос)",
"target_zoom": "Конечный zoom:",
"style": "Стиль карты:",
"globe": "Globe projection (3D глобус)"
}
}
}

View File

@@ -0,0 +1,5 @@
{
"testimonials": {
"title": "Отзывы наших клиентов"
}
}

View File

@@ -0,0 +1,7 @@
{
"timelineStages": {
"labels": {
"trips": "{count} рейсов"
}
}
}