Переглянути джерело

fix: complete localization for admin dashboard

unknown 1 день тому
батько
коміт
60ea5e5a40
2 змінених файлів з 94 додано та 10 видалено
  1. 84 0
      src/locales/translations.admin.json
  2. 10 10
      src/pages/Admin.vue

+ 84 - 0
src/locales/translations.admin.json

@@ -13,6 +13,12 @@
         "ru": "Разрешить чат",
         "ua": "Дозволити чат"
       },
+      "chatWithClient": {
+        "en": "Chat with Client",
+        "me": "Čat sa klijentom",
+        "ru": "Чат с клиентом",
+        "ua": "Чат з клієнтом"
+      },
       "cancel": {
         "en": "Cancel",
         "me": "Otkaži",
@@ -141,6 +147,12 @@
       "ua": "Дешборд"
     },
     "fields": {
+      "address": {
+        "en": "Address",
+        "me": "Adresa",
+        "ru": "Адрес",
+        "ua": "Адреса"
+      },
       "action": {
         "en": "Action",
         "me": "Akcija",
@@ -153,6 +165,12 @@
         "ru": "Активен",
         "ua": "Активний"
       },
+      "notActive": {
+        "en": "Not Active / Private",
+        "me": "Nije aktivno / Privatno",
+        "ru": "Не активен / Приватный",
+        "ua": "Не активний / Приватний"
+      },
       "category": {
         "en": "Category",
         "me": "Kategorija",
@@ -207,6 +225,12 @@
         "ru": "Детали",
         "ua": "Деталі"
       },
+      "deliveryType": {
+        "en": "Delivery Type",
+        "me": "Tip dostave",
+        "ru": "Тип доставки",
+        "ua": "Тип доставки"
+      },
       "email": {
         "en": "Email Address",
         "me": "Email adresa",
@@ -261,6 +285,24 @@
         "ru": "Название",
         "ua": "Назва"
       },
+      "nameEn": {
+        "en": "Name (EN)",
+        "me": "Naziv (EN)",
+        "ru": "Название (EN)",
+        "ua": "Назва (EN)"
+      },
+      "nameRu": {
+        "en": "Name (RU)",
+        "me": "Naziv (RU)",
+        "ru": "Название (RU)",
+        "ua": "Назва (RU)"
+      },
+      "nameUa": {
+        "en": "Name (UA)",
+        "me": "Naziv (UA)",
+        "ru": "Название (UA)",
+        "ua": "Назва (UA)"
+      },
       "noPhotos": {
         "en": "No photos yet",
         "me": "Nema fotografija",
@@ -309,6 +351,12 @@
         "ru": "Фотоотчет",
         "ua": "Фотозвіт"
       },
+      "pickup": {
+        "en": "In-Store Pickup",
+        "me": "Preuzimanje u radnji",
+        "ru": "Самовывоз",
+        "ua": "Самовивіз"
+      },
       "portfolioAllowed": {
         "en": "Portfolio Allowed",
         "me": "Portfolio dozvoljen",
@@ -405,6 +453,12 @@
         "ru": "Время",
         "ua": "Час"
       },
+      "totalPrice": {
+        "en": "Total Price",
+        "me": "Ukupna cijena",
+        "ru": "Итоговая цена",
+        "ua": "Загальна ціна"
+      },
       "title": {
         "en": "Title",
         "me": "Naslov",
@@ -431,12 +485,42 @@
         "ru": "Действия",
         "ua": "Дії"
       },
+      "action": {
+        "en": "Action",
+        "me": "Akcija",
+        "ru": "Действие",
+        "ua": "Дія"
+      },
       "chat": {
         "en": "Chat",
         "me": "Čat",
         "ru": "Чат",
         "ua": "Чат"
       },
+      "date": {
+        "en": "Date",
+        "me": "Datum",
+        "ru": "Дата",
+        "ua": "Дата"
+      },
+      "details": {
+        "en": "Details",
+        "me": "Detalji",
+        "ru": "Детали",
+        "ua": "Деталі"
+      },
+      "fiscalization": {
+        "en": "Fiscalization",
+        "me": "Fiskalizacija",
+        "ru": "Фискализация",
+        "ua": "Фіскалізація"
+      },
+      "target": {
+        "en": "Target",
+        "me": "Cilj",
+        "ru": "Объект",
+        "ua": "Об'єкт"
+      },
       "contact": {
         "en": "Contact",
         "me": "Kontakt",

+ 10 - 10
src/pages/Admin.vue

@@ -143,12 +143,12 @@
               <!-- Material Modal Form -->
               <form v-if="activeTab === 'materials'" @submit.prevent="handleSaveMaterial" class="space-y-4">
                 <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.nameEn") }}</label><input v-model="matForm.name_en" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
-                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">Name (RU)</label><input v-model="matForm.name_ru" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
-                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">Name (UA)</label><input v-model="matForm.name_ua" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
+                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.nameRu") }}</label><input v-model="matForm.name_ru" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
+                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.nameUa") }}</label><input v-model="matForm.name_ua" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
                 <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.pricePerCm3") }}</label><input v-model.number="matForm.price_per_cm3" type="number" step="0.01" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
                 
                 <div class="space-y-1">
-                  <label class="text-[10px] font-bold uppercase ml-1">Available Colors</label>
+                  <label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.colors") }}</label>
                   <div class="flex gap-2">
                     <input v-model="newColor" @keydown.enter.prevent="addColor" class="flex-1 bg-background border border-border/50 rounded-xl px-4 py-2 text-sm" placeholder="e.g. Red" />
                     <Button type="button" variant="hero" @click="addColor">Add</Button>
@@ -169,8 +169,8 @@
               <!-- Service Modal Form -->
               <form v-if="activeTab === 'services'" @submit.prevent="handleSaveService" class="space-y-4">
                 <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.nameEn") }}</label><input v-model="svcForm.name_en" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
-                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">Name (RU)</label><input v-model="svcForm.name_ru" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
-                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">Tech Type</label><input v-model="svcForm.tech_type" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
+                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.nameRu") }}</label><input v-model="svcForm.name_ru" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
+                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.techType") }}</label><input v-model="svcForm.tech_type" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
                 <div class="flex gap-3 pt-6 border-t border-border/10">
                   <Button type="button" variant="ghost" class="flex-1" @click="closeModals">{{ t("admin.actions.cancel") }}</Button>
                   <Button type="submit" variant="hero" class="flex-1">{{ t("admin.actions.save") }}</Button>
@@ -179,13 +179,13 @@
 
               <!-- User Creation Form -->
               <form v-if="activeTab === 'users'" @submit.prevent="handleSaveUser" class="space-y-4">
-                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">Email</label><input v-model="userForm.email" type="email" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
-                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">Password</label><input v-model="userForm.password" type="password" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
+                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.email") }}</label><input v-model="userForm.email" type="email" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
+                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.password") }}</label><input v-model="userForm.password" type="password" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
                 <div class="grid grid-cols-2 gap-4">
-                   <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">First Name</label><input v-model="userForm.first_name" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
-                   <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">Last Name</label><input v-model="userForm.last_name" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
+                   <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.firstName") }}</label><input v-model="userForm.first_name" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
+                   <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.lastName") }}</label><input v-model="userForm.last_name" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
                 </div>
-                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">Phone</label><input v-model="userForm.phone" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
+                <div class="space-y-1"><label class="text-[10px] font-bold uppercase ml-1">{{ t("admin.fields.phone") }}</label><input v-model="userForm.phone" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm" /></div>
                 <div class="flex gap-3 pt-6 border-t border-border/10">
                   <Button type="button" variant="ghost" class="flex-1" @click="closeModals">{{ t("admin.actions.cancel") }}</Button>
                   <Button type="submit" variant="hero" class="flex-1">{{ t("admin.actions.save") }}</Button>