瀏覽代碼

Fix: Re-synchronized services database schema and frontend component for localization

unknown 1 周之前
父節點
當前提交
0b791be385
共有 5 個文件被更改,包括 77 次插入5 次删除
  1. 3 3
      backend/routers/catalog.py
  2. 10 0
      src/locales/en.json
  3. 11 1
      src/locales/me.json
  4. 10 0
      src/locales/ru.json
  5. 43 1
      src/locales/translations.json

+ 3 - 3
backend/routers/catalog.py

@@ -12,7 +12,7 @@ async def get_materials():
 
 @router.get("/services", response_model=List[schemas.ServiceBase])
 async def get_services():
-    return db.execute_query("SELECT id, name_key, description_key, tech_type, is_active FROM services WHERE is_active = TRUE")
+    return db.execute_query("SELECT * FROM services WHERE is_active = TRUE")
 
 @router.get("/admin/materials")
 async def admin_get_materials(token: str = Depends(auth_utils.oauth2_scheme)):
@@ -67,8 +67,8 @@ async def admin_create_service(data: schemas.ServiceCreate, token: str = Depends
     payload = auth_utils.decode_token(token)
     if not payload or payload.get("role") != 'admin':
         raise HTTPException(status_code=403, detail="Admin role required")
-    query = "INSERT INTO services (name_key, description_key, tech_type, is_active) VALUES (%s, %s, %s, %s)"
-    srv_id = db.execute_commit(query, (data.name_key, data.description_key, data.tech_type, data.is_active))
+    query = "INSERT INTO services (name_en, name_ru, name_me, desc_en, desc_ru, desc_me, tech_type, is_active) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"
+    srv_id = db.execute_commit(query, (data.name_en, data.name_ru, data.name_me, data.desc_en, data.desc_ru, data.desc_me, data.tech_type, data.is_active))
     return {"id": srv_id}
 
 @router.patch("/admin/services/{srv_id}")

+ 10 - 0
src/locales/en.json

@@ -89,6 +89,7 @@
     "logOut": "Log Out",
     "materials": "Materials",
     "myOrders": "My Orders",
+    "portfolio": "Portfolio",
     "philosophy": "Our Philosophy",
     "register": "Register",
     "services": "Services"
@@ -122,9 +123,18 @@
     "title": "Core",
     "titleGradient": "Technologies"
   },
+  "portfolio": {
+    "title": "Project",
+    "titleGradient": "Showcase",
+    "description": "Explore our successful 3D printing projects realized for our local customers in Montenegro.",
+    "empty": "Our gallery is growing. Check back soon!"
+  },
   "upload": {
     "addressPlaceholder": "City, ZIP, Address (free form)",
     "badge": "Place Your Project",
+    "allowPortfolio": "Allow featuring in public portfolio",
+    "allowPortfolioDesc": "We'll show photos of your print to inspire other customers.",
+    "selectMaterial": "Select Material",
     "browse": "browse files",
     "continue": "Submit Request",
     "description": "Upload a file or provide a link to a model (Thingiverse, Printables, etc.). We'll contact you for details.",

+ 11 - 1
src/locales/me.json

@@ -88,7 +88,8 @@
     "logIn": "Prijavi se",
     "logOut": "Odjavi se",
     "materials": "Materijali",
-    "myOrders": "Moji nalozi",
+    "myOrders": "Moje narudžbe",
+    "portfolio": "Portfolio",
     "philosophy": "Naš pristup",
     "register": "Registruj se",
     "services": "Usluge"
@@ -122,9 +123,18 @@
     "title": "Glavne",
     "titleGradient": "tehnologije"
   },
+  "portfolio": {
+    "title": "Galerija",
+    "titleGradient": "radova",
+    "description": "Istražite naše uspješne projekte 3D štampe realizovane za naše klijente u Crnoj Gori.",
+    "empty": "Naša galerija raste. Navratite uskoro!"
+  },
   "upload": {
     "addressPlaceholder": "Grad, Poštanski broj, Adresa (slobodna forma)",
     "badge": "Kreiranje projekta",
+    "allowPortfolio": "Dozvoli objavljivanje u javnom portfoliju",
+    "allowPortfolioDesc": "Prikazaćemo fotografije tvog modela kako bismo inspirisali druge kupce.",
+    "selectMaterial": "Odaberi materijal",
     "browse": "pretraži datoteke",
     "continue": "Pošalji zahtjev",
     "description": "Otpremite datoteku ili navedite link do modela (Thingiverse, Printables i dr.). Kontaktiraćemo vas radi detalja.",

+ 10 - 0
src/locales/ru.json

@@ -89,6 +89,7 @@
     "logOut": "Выйти",
     "materials": "Материалы",
     "myOrders": "Мои заказы",
+    "portfolio": "Портфолио",
     "philosophy": "Наш подход",
     "register": "Регистрация",
     "services": "Услуги"
@@ -122,9 +123,18 @@
     "title": "Технологии",
     "titleGradient": "реализации"
   },
+  "portfolio": {
+    "title": "Галерея",
+    "titleGradient": "работ",
+    "description": "Ознакомьтесь с нашими успешными проектами 3D-печати, реализованными для клиентов в Черногории.",
+    "empty": "Наша галерея пополняется. Заходите позже!"
+  },
   "upload": {
     "addressPlaceholder": "Город, Индекс, Адрес (в свободной форме)",
     "badge": "Оформление заказа",
+    "allowPortfolio": "Разрешить публикацию в портфолио",
+    "allowPortfolioDesc": "Мы покажем фото вашего изделия, чтобы вдохновить других клиентов.",
+    "selectMaterial": "Выберите материал",
     "browse": "выбрать файлы",
     "continue": "Отправить заказ",
     "description": "Загрузите файл или укажите ссылку на модель (Thingiverse, Printables и др.). Мы свяжемся с вами для уточнения деталей.",

+ 43 - 1
src/locales/translations.json

@@ -346,9 +346,14 @@
     },
     "myOrders": {
       "en": "My Orders",
-      "me": "Moji nalozi",
+      "me": "Moje narudžbe",
       "ru": "Мои заказы"
     },
+    "portfolio": {
+      "en": "Portfolio",
+      "me": "Portfolio",
+      "ru": "Портфолио"
+    },
     "philosophy": {
       "en": "Our Philosophy",
       "me": "Naš pristup",
@@ -470,6 +475,28 @@
       "ru": "реализации"
     }
   },
+  "portfolio": {
+    "title": {
+      "en": "Project",
+      "me": "Galerija",
+      "ru": "Галерея"
+    },
+    "titleGradient": {
+      "en": "Showcase",
+      "me": "radova",
+      "ru": "работ"
+    },
+    "description": {
+      "en": "Explore our successful 3D printing projects realized for our local customers in Montenegro.",
+      "me": "Istražite naše uspješne projekte 3D štampe realizovane za naše klijente u Crnoj Gori.",
+      "ru": "Ознакомьтесь с нашими успешными проектами 3D-печати, реализованными для клиентов в Черногории."
+    },
+    "empty": {
+      "en": "Our gallery is growing. Check back soon!",
+      "me": "Naša galerija raste. Navratite uskoro!",
+      "ru": "Наша галерея пополняется. Заходите позже!"
+    }
+  },
   "upload": {
     "addressPlaceholder": {
       "en": "City, ZIP, Address (free form)",
@@ -481,6 +508,21 @@
       "me": "Kreiranje projekta",
       "ru": "Оформление заказа"
     },
+    "allowPortfolio": {
+      "en": "Allow featuring in public portfolio",
+      "me": "Dozvoli objavljivanje u javnom portfoliju",
+      "ru": "Разрешить публикацию в портфолио"
+    },
+    "allowPortfolioDesc": {
+      "en": "We'll show photos of your print to inspire other customers.",
+      "me": "Prikazaćemo fotografije tvog modela kako bismo inspirisali druge kupce.",
+      "ru": "Мы покажем фото вашего изделия, чтобы вдохновить других клиентов."
+    },
+    "selectMaterial": {
+      "en": "Select Material",
+      "me": "Odaberi materijal",
+      "ru": "Выберите материал"
+    },
     "browse": {
       "en": "browse files",
       "me": "pretraži datoteke",