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": "Raw Materials & Services Marketplace",
"description": "Digital platform connecting producers, buyers, logistics companies, financial organizations and quality control services in a unified ecosystem."
}
}

View File

@@ -0,0 +1,29 @@
{
"aiAssistants": {
"header": {
"title": "AI agent"
},
"view": {
"fallbackName": "AI assistant",
"not_found": "Assistant not found",
"agentTitle": "Optovia AI agent",
"agentSubtitle": "Routes, offers, orders and delivery status. Powered by LangGraph + MCP.",
"you": "You",
"agentName": "Optovia",
"typing": "Agent is thinking...",
"placeholder": "Ask about offers, routes or an order status",
"send": "Send",
"reset": "Reset",
"welcome": "Hi! I can find offers with routes to your destination, get order status, and list logistics nodes.",
"error": "Failed to get a reply from the agent.",
"emptyResponse": "No response from agent."
},
"assistants": {
"optovia": {
"name": "Logistics agent",
"role": "Optovia AI assistant",
"description": "Agent for routes, offers and order statuses."
}
}
}
}

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

@@ -0,0 +1,17 @@
{
"auth": {
"login": "Login",
"register": "Sign Up",
"logout": "Sign Out",
"welcome_back": "Welcome Back",
"login_description": "Sign in to your Optovia account",
"email": "Email",
"email_placeholder": "Your email",
"password": "Password",
"password_placeholder": "Enter password",
"login_button": "Sign In",
"logging_in": "Signing in...",
"no_account": "Don't have an account?",
"register_link": "Sign up"
}
}

View File

@@ -0,0 +1,28 @@
{
"billing": {
"header": {
"title": "Balance"
},
"states": {
"loading": "Loading balance..."
},
"errors": {
"title": "Loading error",
"load_failed": "Failed to load balance",
"retry": "Retry"
},
"balance": {
"label": "Current balance",
"credits": "Credits",
"debits": "Debits"
},
"transactions": {
"title": "Transaction history",
"empty": "No transactions yet",
"date": "Date",
"reason": "Reason",
"amount": "Amount",
"status": "Status"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"breadcrumbs": {
"cabinet": "Cabinet",
"orders": "Orders",
"addresses": "Addresses",
"profile": "Profile",
"team": "Company",
"kyc": "Verification",
"offers": "Offers",
"new": "New",
"russia": "Russia",
"ai": "AI Assistant",
"goods": "Goods",
"locations": "Locations",
"request": "Request",
"companySwitch": "Company switch",
"tokens": "Tokens"
}
}

View File

@@ -0,0 +1,11 @@
{
"cabinetNav": {
"orders": "My orders",
"addresses": "My addresses",
"billing": "Balance",
"profile": "Profile",
"team": "Company",
"offers": "My offers",
"ai": "AI assistant"
}
}

View File

@@ -0,0 +1,7 @@
{
"catalogAddress": {
"badges": {
"default": "Default"
}
}
}

View File

@@ -0,0 +1,47 @@
{
"catalogHub": {
"states": {
"loading": "Loading hub info..."
},
"not_found": {
"title": "Logistics hub not found",
"subtitle": "The page may have been removed or the address is incorrect"
},
"actions": {
"back_to_catalog": "Back to catalog"
},
"sections": {
"offers": {
"title": "Offers in this hub"
},
"suppliers": {
"title": "Suppliers working through this hub"
},
"products": {
"title": "Available products"
}
},
"empty": {
"offers": {
"title": "No offers yet",
"subtitle": "There are no active offers in this logistics hub yet. You can publish yours!"
}
},
"labels": {
"default_supplier": "Supplier"
},
"badges": {
"offers": "{count} offers"
},
"meta": {
"title": "Logistics hub | Optovia",
"title_with_name": "{name} — Logistics hub | Optovia",
"description": "Logistics hub {name}, {country} — {offers} offers from {suppliers} suppliers"
},
"nearbyHubs": {
"byRoad": "By Road",
"byRail": "By Rail",
"empty": "No connections available"
}
}
}

View File

@@ -0,0 +1,20 @@
{
"catalogHubsSection": {
"header": {
"title": "Key hubs and countries"
},
"actions": {
"view_all": "View all"
},
"empty": {
"no_hubs": "No hubs available"
},
"filters": {
"all": "All",
"auto": "Auto",
"rail": "Rail",
"sea": "Sea",
"air": "Air"
}
}
}

View File

@@ -0,0 +1,13 @@
{
"catalogLanding": {
"states": {
"loading": "Loading catalog data..."
},
"actions": {
"open_map": "Open map"
},
"labels": {
"distance_km": "{km} km"
}
}
}

View File

@@ -0,0 +1,29 @@
{
"catalogMap": {
"states": {
"loading": "Loading locations...",
"no_hubs": "No hubs available",
"no_suppliers": "No suppliers available",
"no_offers": "No offers available"
},
"actions": {
"list_view": "Back to catalog"
},
"tabs": {
"hubs": "Hubs",
"suppliers": "Suppliers",
"offers": "Offers"
},
"empty": {
"hubs": "No hubs available",
"offers": "No offers available",
"suppliers": "No suppliers available"
},
"labels": {
"country_unknown": "Country not specified",
"distance_from_moscow": "{km} km from Moscow"
},
"hubsTab": "Hubs",
"noHubs": "No hubs"
}
}

View File

@@ -0,0 +1,41 @@
{
"catalogOffer": {
"states": {
"loading": "Loading offer..."
},
"not_found": {
"title": "Offer not found",
"subtitle": "The page may have been removed or the address is incorrect"
},
"actions": {
"back_to_catalog": "Back to catalog"
},
"sections": {
"description": {
"title": "Description"
},
"supplier": {
"title": "Supplier"
},
"location": {
"title": "Location"
}
},
"labels": {
"per_unit": "per {unit}",
"quantity_with_unit": "{quantity} {unit}",
"valid_until": "Valid until {date}"
},
"badges": {
"valid_until": "until {date}"
},
"units": {
"ton_short": "t"
},
"meta": {
"title": "Offer | Optovia",
"title_with_name": "{title} | Optovia",
"description": "Offer {title}"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"catalogOfferCard": {
"labels": {
"quantity_with_unit": "{quantity} {unit}",
"default_unit": "t",
"country_unknown": "Not specified"
}
}
}

View File

@@ -0,0 +1,17 @@
{
"catalogOffersSection": {
"header": {
"title": "Offers"
},
"actions": {
"view_all": "View all"
},
"filters": {
"all": "All",
"active": "Active"
},
"empty": {
"no_offers": "No active offers"
}
}
}

View File

@@ -0,0 +1,59 @@
{
"catalogProduct": {
"states": {
"loading": "Loading product info..."
},
"not_found": {
"title": "Product not found",
"subtitle": "The page may have been removed or the address is incorrect"
},
"actions": {
"back_to_catalog": "Back to catalog"
},
"labels": {
"category_unknown": "Category not specified",
"offers_count": "{count} offers",
"valid_until": "Valid until {date}",
"default_supplier": "Supplier",
"supplier_offers": "{count} offers",
"in_stock": "In stock",
"per_unit": "per {unit}",
"price_single": "${price}",
"price_range": "${min} - ${max}"
},
"stats": {
"offers": "Active offers",
"suppliers": "Suppliers",
"locations": "Locations",
"price_range": "Price range"
},
"sections": {
"offers": {
"title": "Current offers"
},
"suppliers": {
"title": "Suppliers for this product"
},
"locations": {
"title": "Where this product is available"
}
},
"status": {
"active": "Active",
"draft": "Draft",
"cancelled": "Cancelled",
"closed": "Closed",
"unknown": "Unknown"
},
"cta": {
"title": "Need this product?",
"subtitle": "Create a request and get offers from verified suppliers",
"action": "Create request"
},
"meta": {
"title": "Product | Optovia",
"title_with_name": "{name} | Optovia",
"description": "{name} — {offers} offers from {suppliers} suppliers"
}
}
}

View File

@@ -0,0 +1,40 @@
{
"catalogSupplier": {
"states": {
"loading": "Loading supplier info..."
},
"not_found": {
"title": "Supplier not found",
"subtitle": "The page may have been removed or the address is incorrect"
},
"actions": {
"back_to_catalog": "Back to catalog"
},
"sections": {
"offers": {
"title": "Active offers"
},
"products": {
"title": "Products"
},
"locations": {
"title": "Supply geography"
}
},
"badges": {
"verified": "Verified",
"offers": "{count} offers"
},
"labels": {
"on_time": "{percent}% on time",
"on_time_default": "89% on time",
"trusted_partner": "Trusted partner"
},
"meta": {
"title": "Supplier | Optovia",
"title_with_name": "{name} — Supplier | Optovia",
"description": "Supplier information",
"description_with_name": "Supplier information for {name}"
}
}
}

View File

@@ -0,0 +1,17 @@
{
"catalogSuppliersSection": {
"header": {
"title": "Verified companies"
},
"actions": {
"view_all": "View all"
},
"filters": {
"all": "All",
"verified": "Verified"
},
"empty": {
"no_suppliers": "No registered companies"
}
}
}

View File

@@ -0,0 +1,40 @@
{
"clientOfferForm": {
"header": {
"title": "Product details"
},
"actions": {
"back": "Back to selection",
"chooseAnother": "Choose another product",
"save": "Save",
"saving": "Saving..."
},
"error": {
"title": "Error",
"retry": "Try again",
"load": "Failed to load data",
"save": "Failed to save data"
},
"states": {
"loading": "Loading data..."
},
"noSchema": {
"title": "Schema not configured",
"description": "The product \"{name}\" has no characteristics schema in TerminusDB. Contact administrator."
},
"errors": {
"productNotFound": "Product with UUID {uuid} not found",
"schemaNotFound": "Schema \"{schema}\" not found in TerminusDB"
},
"labels": {
"location": "Location",
"location_empty": "No locations available"
},
"success": {
"saved": "Data saved!\\n\\n{payload}"
},
"debug": {
"schema_missing": "not specified"
}
}
}

View File

@@ -0,0 +1,39 @@
{
"clientOffersList": {
"header": {
"title": "My offers"
},
"actions": {
"add": "Add",
"addOffer": "Add offer"
},
"error": {
"title": "Error",
"retry": "Try again",
"load": "Failed to load offers"
},
"states": {
"loading": "Loading offers..."
},
"labels": {
"untitled": "Untitled",
"quantity": "Quantity",
"price": "Price",
"location": "Location",
"valid_until": "Valid until",
"not_specified": "Not specified",
"invalid_date": "Invalid date"
},
"status": {
"active": "Active",
"draft": "Draft",
"expired": "Expired",
"sold": "Sold",
"unknown": "Unknown"
},
"empty": {
"title": "No offers",
"subtitle": "Create your first offer"
}
}
}

View File

@@ -0,0 +1,20 @@
{
"clientProfile": {
"actions": {
"debugTokens": "Debug tokens"
},
"debugTokens": {
"title": "Debug tokens",
"idToken": "ID Token",
"claims": "Claims",
"error": "Unable to load tokens"
},
"states": {
"loading": "Loading profile..."
},
"error": {
"load": "Failed to load profile",
"save": "Failed to save profile"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"clientRedirect": {
"status": {
"redirecting": "Redirecting to home..."
}
}
}

View File

@@ -0,0 +1,82 @@
{
"clientTeam": {
"header": {
"title": "Your company",
"createTitle": "Create company"
},
"actions": {
"switch": "Switch company",
"add": "Add",
"addCompany": "Add company",
"inviteWip": "Member invitation is in development"
},
"error": {
"title": "Error",
"retry": "Retry",
"load": "Failed to load companies"
},
"loading": {
"message": "Loading companies..."
},
"empty": {
"title": "You have no company",
"subtitle": "Create a company to work on the platform",
"cta": "Become a member"
},
"kyc": {
"notice": "To work on the platform, complete company verification (KYC)",
"button": "Complete verification →",
"pending": {
"title": "Application under review",
"description": "Your verification request is being reviewed. We will notify you of the result."
},
"approved": {
"title": "Verification complete",
"description": "Your company is being created. Please refresh the page in a few seconds."
},
"empty": {
"title": "Company verification",
"description": "To work on the platform, you need to complete company verification (KYC)",
"cta": "Start verification"
}
},
"members": {
"title": "Members",
"invited": "Invited"
},
"inviteCard": {
"title": "Invite"
},
"invitations": {
"pending": "Pending response",
"sent": "Invitation sent"
},
"membersLocked": {
"title": "🔒 Members",
"subtitle": "Member management will be available after verification"
},
"kycStatus": {
"approved": "Verified",
"inReview": "Under review",
"pending": "Verification required",
"rejected": "Verification rejected",
"default": "Verification required"
},
"roles": {
"owner": "Owner",
"admin": "Administrator",
"manager": "Manager",
"member": "Member"
},
"invite": {
"title": "Invite member",
"email": "Email",
"emailPlaceholder": "Enter email address",
"role": "Role",
"submit": "Send invitation",
"cancel": "Cancel",
"error": "Failed to send invitation",
"success": "Invitation sent"
}
}
}

View File

@@ -0,0 +1,11 @@
{
"clientTeamSwitch": {
"loading": {
"message": "Loading teams..."
},
"error": {
"load": "Failed to load teams",
"switch": "Failed to switch team"
}
}
}

View File

@@ -0,0 +1,23 @@
{
"common": {
"loading": "Loading...",
"save": "Save",
"cancel": "Cancel",
"refresh": "Refresh",
"error": "Error",
"success": "Success",
"retry": "Retry",
"actions": {
"load_more": "Load more"
},
"pagination": {
"showing": "Showing {shown} of {total}"
},
"selectLocation": "Select location",
"theme_dark": "Dark mode",
"theme_light": "Light mode",
"values": {
"not_available": "Not available"
}
}
}

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

@@ -0,0 +1,8 @@
{
"cta": {
"title": "Ready to Start Trading?",
"description": "Join thousands of companies already using Optovia for their deals",
"start_selling": "Start Selling",
"start_buying": "Start Buying"
}
}

View File

@@ -0,0 +1,34 @@
{
"dashboard": {
"title": "Dashboard",
"home": "Home",
"profile": "Profile",
"team": "Team",
"orders": "My Orders",
"favorites": "Favorites",
"products": "My Products",
"analytics": "Analytics",
"welcome": "Welcome to your Optovia personal dashboard",
"profile_info": "Profile Information",
"activity": "Activity",
"quick_actions": "Quick Actions",
"new_calculation": "New calculation",
"notifications": "Notifications",
"visits_today": "Visits today",
"product_views": "Product views",
"last_login": "Last login",
"find_products": "Find Products",
"search_marketplace": "Search marketplace",
"materials": "Materials",
"catalog": "Product catalog",
"profile_settings": "Account settings",
"pass_kyc": "Complete KYC Verification",
"pass_kyc_desc": "Verify your identity to access all features",
"add_team_member": "Add Team Member",
"add_team_member_desc": "Invite colleagues to collaborate",
"complete_profile": "Complete Profile",
"complete_profile_desc": "Add company information and contacts",
"switch_company": "Switch Company",
"locations_description": "Warehouses and delivery points"
}
}

View File

@@ -0,0 +1,11 @@
{
"footer": {
"buyers": "For Buyers",
"suppliers": "For Suppliers",
"services": "For Service Companies",
"rights": "All rights reserved",
"privacy": "Privacy Policy",
"terms": "Terms of Service",
"support": "Support"
}
}

View File

@@ -0,0 +1,36 @@
{
"ganttTimeline": {
"states": {
"loading": "Loading timeline..."
},
"legend": {
"title": "Delivery stages",
"auto": "Road transport",
"sea": "Sea transport",
"rail": "Rail transport",
"services": "Services"
},
"modal": {
"title": "Trip details",
"company": {
"title": "Company",
"tax_id": "Tax ID:"
},
"dates": {
"title": "Dates",
"planned_loading": "Planned loading:",
"actual_loading": "Actual loading:",
"planned_unloading": "Planned unloading:",
"actual_unloading": "Actual unloading:"
},
"weight": {
"title": "Weight",
"planned": "Planned:",
"at_loading": "At loading:",
"at_unloading": "At unloading:",
"unit": "t"
},
"not_specified": "Not specified"
}
}
}

View File

@@ -0,0 +1,27 @@
{
"goods": {
"title": "Goods",
"back": "Back to Search",
"filter_placeholder": "Search materials",
"all_categories": "All Categories",
"metals": "Metals",
"energy": "Energy Resources",
"chemicals": "Chemicals",
"per_ton": "per ton",
"filters": "Filters",
"search": "Search",
"category": "Category",
"price_range": "Price Range",
"grid_view": "Grid",
"list_view": "List",
"description": "Materials and products available on the platform",
"error": {
"title": "Failed to load",
"retry": "Try again"
},
"empty": {
"title": "No products",
"description": "Products have not been added to the platform yet"
}
}
}

View File

@@ -0,0 +1,17 @@
{
"howto": {
"title": "How It Works",
"step1": {
"title": "Find Materials",
"description": "Select the raw materials you need, specify quantity and delivery location"
},
"step2": {
"title": "Compare Offers",
"description": "Get offers from verified suppliers with various logistics options"
},
"step3": {
"title": "Choose Services",
"description": "Add financing, insurance and quality control to your deal"
}
}
}

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

@@ -0,0 +1,8 @@
{
"kyc": {
"verification_status": "Verification Status",
"team_verification_description": "Complete team verification to create orders",
"start_verification": "Start Verification",
"check_status_in_odoo": "Status is being reviewed by administrator"
}
}

View File

@@ -0,0 +1,63 @@
{
"kycOverview": {
"header": {
"title": "KYC verification"
},
"errors": {
"title": "Error",
"retry": "Retry",
"not_authenticated": "User not authenticated",
"load_failed": "Failed to load KYC data"
},
"states": {
"loading": "Loading verification status..."
},
"labels": {
"approved_at": "Approved {date}"
},
"actions": {
"retry": "Retry verification",
"back_to_team": "Back to team"
},
"choose_country": {
"title": "Select a country for verification",
"subtitle": "Complete company verification to access all platform features."
},
"countries": {
"russia": {
"title": "Russia",
"description": "Verification via INN with auto-fill from FTS database",
"badge": "Available"
},
"kazakhstan": {
"title": "Kazakhstan",
"description": "Verification via BIN (soon)",
"badge": "Coming soon"
}
},
"info": {
"title": "About verification",
"point1": "Verification takes 1-2 business days",
"point2": "Data auto-filled from official sources",
"point3": "Full platform access after verification"
},
"status": {
"title": {
"pending": "Application under review",
"in_review": "Documents are being checked",
"approved": "Verification passed",
"rejected": "Verification rejected",
"expired": "Application expired",
"unknown": "Unknown status"
},
"description": {
"pending": "Your application is processing. Expect results within 1-2 business days.",
"in_review": "Specialists are checking documents and company data.",
"approved": "Congratulations! The company has passed verification.",
"rejected": "Verification rejected. Check data and try again.",
"expired": "Application expired. Submit a new one.",
"unknown": "Unknown application status"
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"kycRussia": {
"header": {
"title": "Verification for Russia",
"subtitle": "Fill in your organization data. Fields will be auto-filled via INN lookup."
},
"states": {
"submitting": "Submitting verification request..."
},
"errors": {
"title": "Submission error",
"not_authenticated": "User not authenticated",
"no_team": "Please create a company first",
"create_failed": "Failed to create request",
"submit_failed": "An error occurred while submitting the request"
},
"success": {
"title": "Request sent successfully",
"description": "Your verification request has been accepted. Result will be ready within 1-2 business days.",
"cta": "View request status →"
}
}
}

View File

@@ -0,0 +1,14 @@
{
"locations": {
"title": "Select Delivery Location",
"back": "Back to Search",
"list_view": "List",
"map_view": "Map",
"filters": "Filters",
"search": "Search City",
"search_placeholder": "City name",
"regions": "Federal Districts",
"all_regions": "All Regions",
"all_countries": "All countries"
}
}

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

@@ -0,0 +1,8 @@
{
"nav": {
"search": "Search",
"offers": "Offers",
"suppliers": "Suppliers",
"hubs": "Hubs"
}
}

View File

@@ -0,0 +1,22 @@
{
"offersNew": {
"header": {
"title": "Select a product"
},
"actions": {
"back": "Back"
},
"errors": {
"title": "Error",
"retry": "Try again",
"load_failed": "Failed to load products"
},
"states": {
"loading": "Loading products..."
},
"empty": {
"title": "No products available",
"description": "Contact the administrator to add products"
}
}
}

View File

@@ -0,0 +1,31 @@
{
"orderCalendar": {
"header": {
"title": "Trips calendar"
},
"filters": {
"loading": "Loading",
"unloading": "Unloading"
},
"labels": {
"loading": "Loading",
"unloading": "Unloading",
"weight_unit": "t",
"service": "Service",
"service_stage": "Service stage"
},
"months": "Aug 2024|Sep 2024|Oct 2024",
"stats": {
"title": "Period stats:",
"trips": "Trips:",
"companies": "Companies:",
"weight": "Weight:"
},
"transport": {
"auto": "Road transport",
"rail": "Rail transport",
"sea": "Sea transport",
"air": "Air transport"
}
}
}

View File

@@ -0,0 +1,12 @@
{
"orderMap": {
"header": {
"title": "Logistics route"
},
"stats": {
"distance_value": "{km} km",
"distance_label": "approximate distance",
"countries_label": "countries in route"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"orders": {
"no_orders": "No orders",
"no_orders_desc": "Start by creating a new calculation",
"create_new": "Create new calculation"
}
}

View File

@@ -0,0 +1,51 @@
{
"ordersDetail": {
"header": {
"title": "Order #{id}"
},
"errors": {
"title": "Error",
"retry": "Try again",
"load_failed": "Failed to load order"
},
"states": {
"loading": "Loading order details..."
},
"labels": {
"unit_tons": "tons",
"product_unknown": "Product",
"delivery_days": "delivery days",
"weight_unit": "t",
"trips": "trips",
"company_unknown": "Company not specified",
"price_zero": "0 ₽",
"dates_undefined": "Dates not set"
},
"sections": {
"stages": {
"title": "Route stages",
"companies": {
"title": "Companies",
"empty": "No companies assigned"
},
"route_title": "Stage route",
"empty": "Route stages are not defined"
},
"map": {
"title": "Overall route map"
},
"timeline": {
"title": "Delivery timeline",
"empty": "No data for timeline"
}
},
"status": {
"pending": "Pending",
"processing": "Processing",
"in_transit": "In transit",
"delivered": "Delivered",
"cancelled": "Cancelled",
"unknown": "Unknown"
}
}
}

View File

@@ -0,0 +1,29 @@
{
"ordersList": {
"actions": {
"new_calc": "New calculation"
},
"errors": {
"retry": "Try again"
},
"states": {
"loading": "Loading orders..."
},
"filters": {
"all": "All",
"pending": "Pending",
"processing": "Processing",
"in_transit": "In Transit",
"delivered": "Delivered"
},
"card": {
"order_label": "Order",
"route": "Route",
"product": "Product",
"product_loading": "Loading...",
"unit_tons": "tons",
"status": "Status",
"stages_completed": "Stages completed: {done} / {total}"
}
}
}

View File

@@ -0,0 +1,30 @@
{
"profile": {
"description": "Manage your profile data and account settings",
"personal_info": "Personal Information",
"account_settings": "Account Settings",
"username": "Username",
"first_name": "First Name",
"first_name_placeholder": "Enter first name",
"last_name": "Last Name",
"last_name_placeholder": "Enter last name",
"phone": "Phone",
"phone_placeholder": "+1 XXX XXX XXXX",
"avatar": "Avatar",
"regenerate_avatar": "Regenerate avatar",
"save": "Save",
"saving": "Saving",
"role": "Role",
"language": "Interface language",
"notifications_settings": "Notifications",
"email_notifications": "Email notifications about new offers",
"order_notifications": "Order update notifications",
"security": "Security",
"two_factor": "Two-factor authentication",
"not_configured": "Not configured",
"last_login": "Last login",
"status": "Status",
"active": "Active",
"not_specified": "Not specified"
}
}

View File

@@ -0,0 +1,46 @@
{
"profileAddresses": {
"header": {
"title": "My addresses"
},
"actions": {
"add": "Add address",
"confirm_delete": "Delete this address?",
"delete": "Delete"
},
"form": {
"title": "New address",
"name": {
"label": "Name",
"placeholder": "e.g. Office, Warehouse, Production"
},
"address": {
"label": "Address",
"placeholder": "Full address"
},
"latitude": {
"label": "Latitude",
"placeholder": "55.7558"
},
"longitude": {
"label": "Longitude",
"placeholder": "37.6173"
},
"save": "Save",
"saving": "Saving...",
"mapLabel": "Select a point on the map"
},
"states": {
"loading": "Loading addresses..."
},
"labels": {
"default": "Default"
},
"empty": {
"description": "You have no saved addresses yet",
"cta": "Add first address",
"title": "No addresses"
},
"status": {}
}
}

View File

@@ -0,0 +1,34 @@
{
"roles": {
"title": "Who Our Platform Is For",
"producers": {
"title": "Producers",
"description": "Sell raw materials directly to buyers through our platform",
"benefit1": "Sales bulletin board",
"benefit2": "Auction tender participation",
"benefit3": "Access to financing",
"benefit4": "Logistics solutions",
"cta": "Start Selling"
},
"buyers": {
"title": "Buyers",
"description": "Find and purchase raw materials with quality and delivery guarantees",
"benefit1": "Search and compare offers",
"benefit2": "Purchase financing",
"benefit3": "Deal insurance",
"benefit4": "Product quality control",
"cta": "Start Buying"
},
"services": {
"title": "Service Companies",
"description": "Provide services to marketplace participants and expand your client base",
"benefit1": "Logistics companies",
"benefit2": "Financial organizations",
"benefit3": "Quality control laboratories",
"benefit4": "Insurance companies",
"cta": "Become a Partner"
},
"buyer": "Buyer",
"seller": "Seller"
}
}

View File

@@ -0,0 +1,15 @@
{
"routeMap": {
"states": {
"loading": "Loading map..."
},
"popup": {
"companies": "Companies:"
},
"points": {
"source": "Departure point",
"destination": "Destination point",
"service": "Service point"
}
}
}

View File

@@ -0,0 +1,81 @@
{
"search": {
"title": "Find Raw Materials",
"subtitle": "& Industrial Services",
"description": "Connect with suppliers, get competitive prices, and streamline your procurement process",
"product_label": "What are you looking for?",
"product_placeholder": "Select material type",
"quantity_label": "Quantity",
"quantity_placeholder": "Amount",
"location_label": "Delivery to",
"location_placeholder": "City or region",
"search_button": "Search",
"order_created": "Order Created",
"order_number": "Number",
"verified_suppliers": "verified suppliers",
"verified_logistics": "verified logistics companies",
"verified_banks": "verified banks",
"verified_insurance": "verified insurance companies",
"delivery": "delivery",
"annual": "annually",
"from_deal": "of deal value",
"suppliers_geography": "Suppliers Geography",
"total_cost": "Total Cost",
"material": "Material",
"delivery_cost": "Delivery",
"insurance_cost": "Insurance",
"optional": "opt.",
"total": "Total",
"implementation_time": "Implementation time",
"savings": "Savings",
"geography": "Geography",
"need_help": "Need help?",
"manager_title": "Raw materials market expert",
"presentation": "Presentation",
"presentation_duration": "1 hour",
"any_language": "In any language",
"contact": "Contact",
"continue": "Continue",
"results": "Search Results",
"delivery_options": "Delivery Options",
"new_search": "New Search",
"logistics_cost": "logistics cost",
"choose_supplier": "Choose Supplier",
"filters": "Filters",
"supplier_filter": "Search Supplier",
"supplier_placeholder": "Company name",
"logistics_type": "Logistics Type",
"all_logistics": "All Options",
"auto_only": "Auto Only",
"multimodal": "Multimodal",
"list_view": "List",
"map_view": "Map",
"placeholder": "Search products, suppliers...",
"error": "Error!",
"units": {
"tons_short": "t"
},
"popular_requests": "Popular requests",
"examples": {
"metal_sheet": {
"product": "Sheet metal",
"location": "Moscow"
},
"green_coffee": {
"product": "Green coffee",
"location": "Vladivostok"
},
"wheat": {
"product": "Wheat",
"location": "Rostov-on-Don"
},
"cocoa": {
"product": "Cocoa beans",
"location": "Novorossiysk"
}
},
"validation": {
"fill_product_location": "Fill in product and location"
}
}
}

View File

@@ -0,0 +1,12 @@
{
"searchPage": {
"hero": {
"title": "Search and select supplies",
"subtitle": "Enter product, quantity, and location — search without authorization. You can complete in your cabinet."
},
"cta": {
"catalog": "Catalog",
"orders": "My orders"
}
}
}

View File

@@ -0,0 +1,11 @@
{
"sidebar": {
"exchange": "Exchange",
"ordersLogistics": "Orders & Logistics",
"seller": "Seller",
"aiTools": "AI & Tools",
"settings": "Settings",
"createCompany": "Create company",
"joinCompany": "Join company"
}
}

View File

@@ -0,0 +1,9 @@
{
"stats": {
"title": "Optovia in Numbers",
"suppliers": "Suppliers",
"transactions": "Transaction Volume",
"service_companies": "Service Companies",
"support": "Support"
}
}

View File

@@ -0,0 +1,14 @@
{
"supplier": {
"delivery_time": "Delivery Time",
"logistics": "Logistics Companies",
"financing": "Financing",
"insurance": "Insurance",
"quality_control": "Quality Control",
"total_summary": "Total Amount",
"all_services_selected": "All services selected",
"final_cost": "Final Cost",
"back_to_suppliers": "Back to Suppliers",
"place_order": "Place Order"
}
}

View File

@@ -0,0 +1,30 @@
{
"supplierFlow": {
"breadcrumb": {
"home": "Home",
"search_results": "Search results",
"select_services": "Select service companies"
},
"sections": {
"logistics": {
"title": "Logistics",
"subtitle": "Choose a carrier"
},
"financing": {
"title": "Financing",
"subtitle": "Choose a bank"
},
"insurance": {
"title": "Insurance",
"subtitle": "Choose an insurance company"
},
"quality": {
"title": "Quality control",
"subtitle": "Choose a laboratory"
}
},
"labels": {
"rating_reviews": "★ {rating} ({reviews})"
}
}
}

View File

@@ -0,0 +1,40 @@
{
"teams": {
"create_team": "Create Team",
"team_name": "Team Name",
"team_name_placeholder": "Enter team name",
"creating": "Creating...",
"no_team": "You don't have a team",
"no_team_description": "Create a team for collaboration and KYC verification",
"create_first_team": "Become a Member",
"your_teams": "Your Teams",
"create_new_team": "Create New Team",
"members": "Members",
"invite_member": "Invite member",
"kyc_verification": "KYC verification",
"created": "Created",
"view_details": "View Details",
"start_kyc": "Start KYC",
"retry_kyc": "Retry KYC",
"description": "Manage teams and pass verification",
"status": {
"pending_kyc": "KYC Required",
"kyc_in_review": "KYC Under Review",
"kyc_approved": "KYC Approved",
"kyc_rejected": "KYC Rejected",
"suspended": "Suspended"
},
"company_type": {
"label": "Company type",
"buyer": "Buyer",
"seller": "Seller"
},
"errors": {
"create_failed": "Failed to create team"
},
"active": "Active",
"create_description": "Add a team for work",
"switch_description": "Choose a team to work with or create a new one",
"switch_to": "Switch to"
}
}

View File

@@ -0,0 +1,13 @@
{
"testMap": {
"title": "Mapbox test — space flight",
"controls": {
"duration": "Duration (ms):",
"min_zoom": "Min. zoom (altitude):",
"min_zoom_hint": "(lower = higher into space)",
"target_zoom": "Target zoom:",
"style": "Map style:",
"globe": "Globe projection (3D globe)"
}
}
}

View File

@@ -0,0 +1,5 @@
{
"testimonials": {
"title": "Client Testimonials"
}
}

View File

@@ -0,0 +1,7 @@
{
"timelineStages": {
"labels": {
"trips": "{count} trips"
}
}
}

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": "Точка услуги"
}
}
}

Some files were not shown because too many files have changed in this diff Show More