@crm-market/template-shared 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/components/AddAddress/index.vue +10 -12
  2. package/components/Cart/index.vue +15 -17
  3. package/components/ChangePassword/index.vue +11 -13
  4. package/components/Checkout/index.vue +35 -37
  5. package/components/Common/DashboardNavigation.vue +11 -13
  6. package/components/Common/PageBanner.vue +4 -6
  7. package/components/Common/ProductCard.vue +38 -52
  8. package/components/Common/Services.vue +10 -12
  9. package/components/Contact/ContactForm.vue +13 -18
  10. package/components/Dashboard/index.vue +8 -10
  11. package/components/EditAddress/index.vue +14 -16
  12. package/components/EditProfile/index.vue +10 -12
  13. package/components/ForgotPassword/index.vue +7 -9
  14. package/components/Layout/Copyright.vue +3 -5
  15. package/components/Layout/Footer.vue +36 -51
  16. package/components/Layout/FooterTwo.vue +34 -40
  17. package/components/Layout/MiddleHeader.vue +11 -9
  18. package/components/Layout/MiddleHeaderThree.vue +7 -5
  19. package/components/Layout/MiddleHeaderTwo.vue +9 -7
  20. package/components/Layout/Navbar.vue +10 -8
  21. package/components/Layout/NavbarStyleThree.vue +10 -8
  22. package/components/Layout/NavbarStyleTwo.vue +8 -6
  23. package/components/Layout/ResponsiveNavbar.vue +40 -38
  24. package/components/Layout/TopHeader.vue +30 -63
  25. package/components/Login/index.vue +14 -19
  26. package/components/MyAccount/index.vue +31 -31
  27. package/components/OrderDetails/index.vue +16 -18
  28. package/components/OrderHistory/index.vue +13 -15
  29. package/components/ProductDetails/index.vue +17 -15
  30. package/components/Products/RecentlyViewed.vue +12 -14
  31. package/components/Products/index.vue +20 -18
  32. package/components/Register/index.vue +14 -19
  33. package/components/Wishlist/index.vue +12 -14
  34. package/composables/useI18n.ts +114 -0
  35. package/locales/ar.json +234 -0
  36. package/locales/en.json +234 -0
  37. package/locales/ru.json +234 -0
  38. package/locales/uk.json +234 -0
  39. package/nuxt.config.ts +1 -0
  40. package/package.json +6 -4
  41. package/pages/about-us.vue +2 -1
  42. package/pages/address.vue +2 -1
  43. package/pages/cart.vue +2 -1
  44. package/pages/categories.vue +2 -1
  45. package/pages/change-password.vue +2 -1
  46. package/pages/checkout.vue +2 -1
  47. package/pages/contact.vue +2 -1
  48. package/pages/dashboard.vue +2 -1
  49. package/pages/edit-address.vue +2 -1
  50. package/pages/edit-profile.vue +2 -1
  51. package/pages/faq.vue +2 -1
  52. package/pages/forgot-password.vue +2 -1
  53. package/pages/login.vue +2 -1
  54. package/pages/my-account.vue +2 -1
  55. package/pages/order-details.vue +2 -1
  56. package/pages/order-history.vue +2 -1
  57. package/pages/privacy-policy.vue +2 -1
  58. package/pages/product-details.vue +2 -1
  59. package/pages/products.vue +2 -1
  60. package/pages/register.vue +2 -1
  61. package/pages/terms-conditions.vue +2 -1
  62. package/pages/wishlist.vue +2 -1
  63. package/plugins/i18n.ts +7 -0
  64. package/plugins/vuetify.ts +0 -1
@@ -16,41 +16,38 @@
16
16
  <div class="authentication-form">
17
17
  <ul class="nav nav-tabs login-tabs" id="myTab" role="tablist">
18
18
  <li class="nav-item" role="presentation">
19
- <NuxtLink to="/login" class="nav-link">Login</NuxtLink>
19
+ <NuxtLink to="/login" class="nav-link">{{ t('auth.login') }}</NuxtLink>
20
20
  </li>
21
21
  <li class="nav-item" role="presentation">
22
22
  <NuxtLink to="/register" class="nav-link active">
23
- Register
23
+ {{ t('auth.register') }}
24
24
  </NuxtLink>
25
25
  </li>
26
26
  </ul>
27
- <p>
28
- If you have an account, sign in with your username or email
29
- address.
30
- </p>
27
+ <p>{{ t('auth.loginDescription') }}</p>
31
28
  <form>
32
29
  <div class="form-group mb-4">
33
- <label class="label">Username *</label>
30
+ <label class="label">{{ t('auth.username') }} *</label>
34
31
  <input
35
32
  type="text"
36
33
  class="form-control"
37
- placeholder="Enter your user name"
34
+ :placeholder="t('auth.username')"
38
35
  />
39
36
  </div>
40
37
  <div class="form-group mb-4">
41
- <label class="label">Email Address *</label>
38
+ <label class="label">{{ t('auth.email') }} *</label>
42
39
  <input
43
40
  type="email"
44
41
  class="form-control"
45
- placeholder="Enter your email address"
42
+ :placeholder="t('auth.email')"
46
43
  />
47
44
  </div>
48
45
  <div class="form-group mb-4">
49
- <label class="label">Password *</label>
46
+ <label class="label">{{ t('auth.password') }} *</label>
50
47
  <input
51
48
  type="password"
52
49
  class="form-control"
53
- placeholder="Enter password"
50
+ :placeholder="t('auth.password')"
54
51
  />
55
52
  </div>
56
53
  <div class="form-group mb-4">
@@ -58,17 +55,17 @@
58
55
  type="submit"
59
56
  class="btn btn-warning btn-pill text-white w-100 d-block"
60
57
  >
61
- Register
58
+ {{ t('auth.register') }}
62
59
  </button>
63
60
  </div>
64
61
  <div class="form-group mb-0">
65
62
  <p class="text-secondary ms-1 text-primary">
66
- Already have an account?
63
+ {{ t('auth.haveAccount') }}
67
64
  <NuxtLink
68
65
  to="/login"
69
66
  class="text-decoration-none text-primary"
70
67
  >
71
- Login
68
+ {{ t('auth.login') }}
72
69
  </NuxtLink>
73
70
  </p>
74
71
  </div>
@@ -81,8 +78,6 @@
81
78
  </div>
82
79
  </template>
83
80
 
84
- <script>
85
- export default {
86
- name: "Register",
87
- };
81
+ <script setup lang="ts">
82
+ const { t } = useI18n();
88
83
  </script>
@@ -5,13 +5,13 @@
5
5
  <table class="table align-middle">
6
6
  <thead>
7
7
  <tr>
8
- <th scope="col">Product</th>
9
- <th scope="col">Name</th>
10
- <th scope="col">Unit Price</th>
11
- <th scope="col">Quantity</th>
12
- <th scope="col">Subtotal</th>
13
- <th scope="col">Add To Cart</th>
14
- <th scope="col">Remove</th>
8
+ <th scope="col">{{ t('product.product') }}</th>
9
+ <th scope="col">{{ t('product.name') }}</th>
10
+ <th scope="col">{{ t('product.unitPrice') }}</th>
11
+ <th scope="col">{{ t('product.quantity') }}</th>
12
+ <th scope="col">{{ t('product.subtotal') }}</th>
13
+ <th scope="col">{{ t('product.addToCart') }}</th>
14
+ <th scope="col">{{ t('product.remove') }}</th>
15
15
  </tr>
16
16
  </thead>
17
17
  <tbody>
@@ -40,7 +40,7 @@
40
40
  <span class="price">$79</span>
41
41
  </td>
42
42
  <td>
43
- <button class="btn btn-warning text-white">Add To Cart</button>
43
+ <button class="btn btn-warning text-white">{{ t('product.addToCart') }}</button>
44
44
  </td>
45
45
  <td>
46
46
  <button class="border-0 p-0 bg-transparent remove">
@@ -73,7 +73,7 @@
73
73
  <span class="price">$119</span>
74
74
  </td>
75
75
  <td>
76
- <button class="btn btn-warning text-white">Add To Cart</button>
76
+ <button class="btn btn-warning text-white">{{ t('product.addToCart') }}</button>
77
77
  </td>
78
78
  <td>
79
79
  <button class="border-0 p-0 bg-transparent remove">
@@ -106,7 +106,7 @@
106
106
  <span class="price">$397</span>
107
107
  </td>
108
108
  <td>
109
- <button class="btn btn-warning text-white">Add To Cart</button>
109
+ <button class="btn btn-warning text-white">{{ t('product.addToCart') }}</button>
110
110
  </td>
111
111
  <td>
112
112
  <button class="border-0 p-0 bg-transparent remove">
@@ -121,8 +121,6 @@
121
121
  </div>
122
122
  </template>
123
123
 
124
- <script>
125
- export default {
126
- name: "Wishlist",
127
- };
124
+ <script setup lang="ts">
125
+ const { t } = useI18n();
128
126
  </script>
@@ -0,0 +1,114 @@
1
+ import { ref, computed } from 'vue';
2
+
3
+ type LocaleCode = 'en' | 'uk' | 'ru' | 'ar';
4
+
5
+ interface LocaleOption {
6
+ code: LocaleCode;
7
+ name: string;
8
+ dir: 'ltr' | 'rtl';
9
+ flag: string;
10
+ }
11
+
12
+ const LOCALES: LocaleOption[] = [
13
+ { code: 'en', name: 'English', dir: 'ltr', flag: '\u{1F1EC}\u{1F1E7}' },
14
+ { code: 'uk', name: '\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430', dir: 'ltr', flag: '\u{1F1FA}\u{1F1E6}' },
15
+ { code: 'ru', name: '\u0420\u0443\u0441\u0441\u043A\u0438\u0439', dir: 'ltr', flag: '\u{1F1F7}\u{1F1FA}' },
16
+ { code: 'ar', name: '\u0627\u0644\u0639\u0631\u0628\u064A\u0629', dir: 'rtl', flag: '\u{1F1F8}\u{1F1E6}' },
17
+ ];
18
+
19
+ // Lazy-load locale files
20
+ const localeModules: Record<LocaleCode, () => Promise<any>> = {
21
+ en: () => import('../locales/en.json'),
22
+ uk: () => import('../locales/uk.json'),
23
+ ru: () => import('../locales/ru.json'),
24
+ ar: () => import('../locales/ar.json'),
25
+ };
26
+
27
+ const currentLocale = ref<LocaleCode>('uk');
28
+ const messages = ref<Record<string, any>>({});
29
+ const isLoaded = ref(false);
30
+
31
+ // Отримати вкладене значення за шляхом через крапку: t('nav.home') -> messages.nav.home
32
+ function getNestedValue(obj: any, path: string): string | undefined {
33
+ return path.split('.').reduce((acc, key) => acc?.[key], obj);
34
+ }
35
+
36
+ export const useI18n = () => {
37
+ // Завантажити повідомлення для обраної локалі
38
+ const loadLocale = async (code: LocaleCode) => {
39
+ try {
40
+ const mod = await localeModules[code]();
41
+ messages.value = mod.default || mod;
42
+ currentLocale.value = code;
43
+ isLoaded.value = true;
44
+
45
+ // Зберегти у localStorage
46
+ if (import.meta.client) {
47
+ localStorage.setItem('locale', code);
48
+
49
+ // Встановити RTL напрямок для арабської
50
+ const locale = LOCALES.find(l => l.code === code);
51
+ if (locale) {
52
+ document.documentElement.dir = locale.dir;
53
+ document.documentElement.lang = code;
54
+ if (locale.dir === 'rtl') {
55
+ document.body.classList.add('rtl');
56
+ } else {
57
+ document.body.classList.remove('rtl');
58
+ }
59
+ }
60
+ }
61
+ } catch (e) {
62
+ console.error(`Failed to load locale: ${code}`, e);
63
+ }
64
+ };
65
+
66
+ // Функція перекладу
67
+ const t = (key: string, params?: Record<string, string | number>): string => {
68
+ let value = getNestedValue(messages.value, key);
69
+ if (typeof value !== 'string') return key;
70
+
71
+ // Замінити {param} плейсхолдери
72
+ if (params) {
73
+ Object.entries(params).forEach(([k, v]) => {
74
+ value = (value as string).replace(`{${k}}`, String(v));
75
+ });
76
+ }
77
+ return value;
78
+ };
79
+
80
+ // Ініціалізувати з localStorage або значення за замовчуванням
81
+ const initLocale = async () => {
82
+ let code: LocaleCode = 'uk';
83
+ if (import.meta.client) {
84
+ const saved = localStorage.getItem('locale') as LocaleCode;
85
+ if (saved && LOCALES.some(l => l.code === saved)) {
86
+ code = saved;
87
+ }
88
+ }
89
+ await loadLocale(code);
90
+ };
91
+
92
+ const setLocale = async (code: LocaleCode) => {
93
+ await loadLocale(code);
94
+ };
95
+
96
+ const currentLocaleOption = computed(() =>
97
+ LOCALES.find(l => l.code === currentLocale.value) || LOCALES[0]
98
+ );
99
+
100
+ const direction = computed(() => currentLocaleOption.value.dir);
101
+ const isRTL = computed(() => direction.value === 'rtl');
102
+
103
+ return {
104
+ t,
105
+ locale: currentLocale,
106
+ locales: LOCALES,
107
+ currentLocaleOption,
108
+ direction,
109
+ isRTL,
110
+ setLocale,
111
+ initLocale,
112
+ isLoaded,
113
+ };
114
+ };
@@ -0,0 +1,234 @@
1
+ {
2
+ "nav": {
3
+ "aboutUs": "\u0645\u0646 \u0646\u062d\u0646",
4
+ "faqs": "\u0627\u0644\u0623\u0633\u0626\u0644\u0629 \u0627\u0644\u0634\u0627\u0626\u0639\u0629",
5
+ "helpContact": "\u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629 \u0648\u0627\u0644\u0627\u062a\u0635\u0627\u0644",
6
+ "flashSale": "\u062a\u062e\u0641\u064a\u0636\u0627\u062a \u0633\u0631\u064a\u0639\u0629 {percent}% \u062e\u0635\u0645",
7
+ "home": "\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629",
8
+ "products": "\u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a",
9
+ "categories": "\u0627\u0644\u0641\u0626\u0627\u062a",
10
+ "about": "\u0645\u0646 \u0646\u062d\u0646",
11
+ "contact": "\u0627\u062a\u0635\u0644 \u0628\u0646\u0627",
12
+ "browseCategories": "\u062a\u0635\u0641\u062d \u0627\u0644\u0641\u0626\u0627\u062a",
13
+ "searchProducts": "\u0627\u0628\u062d\u062b \u0639\u0646 \u0645\u0646\u062a\u062c\u0627\u062a...",
14
+ "search": "\u0628\u062d\u062b",
15
+ "allCategories": "\u062c\u0645\u064a\u0639 \u0627\u0644\u0641\u0626\u0627\u062a",
16
+ "allProducts": "\u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a",
17
+ "hotline": "\u0627\u0644\u062e\u0637 \u0627\u0644\u0633\u0627\u062e\u0646",
18
+ "noCategories": "\u0644\u0627 \u062a\u0648\u062c\u062f \u0641\u0626\u0627\u062a",
19
+ "pages": "\u0627\u0644\u0635\u0641\u062d\u0627\u062a",
20
+ "blog": "\u0627\u0644\u0645\u062f\u0648\u0651\u0646\u0629",
21
+ "ourBlog": "\u0645\u062f\u0648\u0651\u0646\u062a\u0646\u0627",
22
+ "blogDetails": "\u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0645\u0642\u0627\u0644",
23
+ "tags": "\u0627\u0644\u0648\u0633\u0648\u0645",
24
+ "author": "\u0627\u0644\u0645\u0624\u0644\u0641",
25
+ "authentication": "\u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629",
26
+ "shop": "\u0627\u0644\u0645\u062a\u062c\u0631",
27
+ "productLayouts": "\u062a\u062e\u0637\u064a\u0637\u0627\u062a \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a",
28
+ "productsStep": "\u062e\u0637\u0648\u0627\u062a \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a",
29
+ "adminPage": "\u0644\u0648\u062d\u0629 \u0627\u0644\u0625\u062f\u0627\u0631\u0629"
30
+ },
31
+ "auth": {
32
+ "login": "\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644",
33
+ "register": "\u0625\u0646\u0634\u0627\u0621 \u062d\u0633\u0627\u0628",
34
+ "loginDescription": "\u0625\u0630\u0627 \u0643\u0627\u0646 \u0644\u062f\u064a\u0643 \u062d\u0633\u0627\u0628\u060c \u0633\u062c\u0651\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a.",
35
+ "usernameOrEmail": "\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a",
36
+ "username": "\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645",
37
+ "email": "\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a",
38
+ "password": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
39
+ "yourPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643",
40
+ "remember": "\u062a\u0630\u0643\u0631\u0646\u064a",
41
+ "lostPassword": "\u0647\u0644 \u0646\u0633\u064a\u062a \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\u061f",
42
+ "noAccount": "\u0644\u064a\u0633 \u0644\u062f\u064a\u0643 \u062d\u0633\u0627\u0628\u061f",
43
+ "haveAccount": "\u0644\u062f\u064a\u0643 \u062d\u0633\u0627\u0628 \u0628\u0627\u0644\u0641\u0639\u0644\u061f",
44
+ "forgotPassword": "\u0646\u0633\u064a\u062a \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
45
+ "enterEmail": "\u0623\u062f\u062e\u0644 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a",
46
+ "changePassword": "\u062a\u063a\u064a\u064a\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
47
+ "oldPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u0642\u062f\u064a\u0645\u0629",
48
+ "newPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062c\u062f\u064a\u062f\u0629",
49
+ "confirmPassword": "\u062a\u0623\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
50
+ "savePassword": "\u062d\u0641\u0638 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
51
+ "logOut": "\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c"
52
+ },
53
+ "account": {
54
+ "loginYour": "\u0633\u062c\u0651\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0625\u0644\u0649",
55
+ "account": "\u0627\u0644\u062d\u0633\u0627\u0628",
56
+ "yourCart": "\u0633\u0644\u0629 \u0627\u0644\u062a\u0633\u0648\u0651\u0642",
57
+ "viewCart": "\u0639\u0631\u0636 \u0627\u0644\u0633\u0644\u0629",
58
+ "checkout": "\u0625\u062a\u0645\u0627\u0645 \u0627\u0644\u0634\u0631\u0627\u0621",
59
+ "dashboard": "\u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645",
60
+ "yourAccount": "\u062d\u0633\u0627\u0628\u0643",
61
+ "yourOrders": "\u0637\u0644\u0628\u0627\u062a\u0643",
62
+ "editProfile": "\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a",
63
+ "editAddress": "\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u0639\u0646\u0648\u0627\u0646",
64
+ "orderHistory": "\u0633\u062c\u0644 \u0627\u0644\u0637\u0644\u0628\u0627\u062a",
65
+ "orderDetails": "\u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0637\u0644\u0628",
66
+ "address": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
67
+ "addAddress": "\u0625\u0636\u0627\u0641\u0629 \u0639\u0646\u0648\u0627\u0646",
68
+ "billingAddress": "\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0641\u0648\u0627\u062a\u064a\u0631",
69
+ "navigation": "\u0627\u0644\u062a\u0646\u0642\u0644",
70
+ "myAccount": "\u062d\u0633\u0627\u0628\u064a",
71
+ "country": "\u0627\u0644\u0628\u0644\u062f",
72
+ "stateCounty": "\u0627\u0644\u0645\u062d\u0627\u0641\u0638\u0629",
73
+ "zip": "\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f\u064a",
74
+ "phone": "\u0627\u0644\u0647\u0627\u062a\u0641",
75
+ "email": "\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a",
76
+ "password": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631"
77
+ },
78
+ "product": {
79
+ "addToCart": "\u0623\u0636\u0641 \u0625\u0644\u0649 \u0627\u0644\u0633\u0644\u0629",
80
+ "inCart": "\u0641\u064a \u0627\u0644\u0633\u0644\u0629",
81
+ "addToWishlist": "\u0623\u0636\u0641 \u0625\u0644\u0649 \u0627\u0644\u0645\u0641\u0636\u0644\u0629",
82
+ "inStock": "\u0645\u062a\u0648\u0641\u0631",
83
+ "quantity": "\u0627\u0644\u0643\u0645\u064a\u0629",
84
+ "subtotal": "\u0627\u0644\u0645\u062c\u0645\u0648\u0639 \u0627\u0644\u0641\u0631\u0639\u064a",
85
+ "unitPrice": "\u0633\u0639\u0631 \u0627\u0644\u0648\u062d\u062f\u0629",
86
+ "name": "\u0627\u0644\u0627\u0633\u0645",
87
+ "remove": "\u0625\u0632\u0627\u0644\u0629",
88
+ "freeDelivery": "\u062a\u0648\u0635\u064a\u0644 \u0645\u062c\u0627\u0646\u064a \u0627\u0644\u064a\u0648\u0645",
89
+ "moneyBack": "\u0636\u0645\u0627\u0646 \u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0627\u0644\u0623\u0645\u0648\u0627\u0644 100%",
90
+ "returnPolicy": "\u0633\u064a\u0627\u0633\u0629 \u0625\u0631\u062c\u0627\u0639 \u0627\u0644\u0645\u0646\u062a\u062c \u062e\u0644\u0627\u0644 7 \u0623\u064a\u0627\u0645",
91
+ "sku": "\u0631\u0645\u0632 \u0627\u0644\u0645\u0646\u062a\u062c",
92
+ "category": "\u0627\u0644\u0641\u0626\u0629",
93
+ "share": "\u0645\u0634\u0627\u0631\u0643\u0629",
94
+ "reviews": "\u0627\u0644\u062a\u0642\u064a\u064a\u0645\u0627\u062a",
95
+ "viewingProduct": "\u0623\u0634\u062e\u0627\u0635 \u064a\u0634\u0627\u0647\u062f\u0648\u0646 \u0647\u0630\u0627 \u0627\u0644\u0645\u0646\u062a\u062c",
96
+ "style": "\u0627\u0644\u0646\u0645\u0637",
97
+ "capacity": "\u0627\u0644\u0633\u0639\u0629",
98
+ "color": "\u0627\u0644\u0644\u0648\u0646",
99
+ "noProducts": "\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0645\u0646\u062a\u062c\u0627\u062a",
100
+ "loading": "\u062c\u0627\u0631\u064d \u0627\u0644\u062a\u062d\u0645\u064a\u0644...",
101
+ "productsFound": "\u0645\u0646\u062a\u062c\u0627\u062a \u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u064a\u0647\u0627",
102
+ "clearAll": "\u0645\u0633\u062d \u0627\u0644\u0643\u0644",
103
+ "filterByCategories": "\u062a\u0635\u0641\u064a\u0629 \u062d\u0633\u0628 \u0627\u0644\u0641\u0626\u0627\u062a",
104
+ "clearFilter": "\u0645\u0633\u062d \u0627\u0644\u062a\u0635\u0641\u064a\u0629",
105
+ "priceRange": "\u0646\u0637\u0627\u0642 \u0627\u0644\u0633\u0639\u0631",
106
+ "min": "\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649",
107
+ "max": "\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649",
108
+ "apply": "\u062a\u0637\u0628\u064a\u0642",
109
+ "sortBy": "\u062a\u0631\u062a\u064a\u0628 \u062d\u0633\u0628",
110
+ "newest": "\u0627\u0644\u0623\u062d\u062f\u062b",
111
+ "priceLowHigh": "\u0627\u0644\u0633\u0639\u0631: \u0645\u0646 \u0627\u0644\u0623\u0642\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u0639\u0644\u0649",
112
+ "priceHighLow": "\u0627\u0644\u0633\u0639\u0631: \u0645\u0646 \u0627\u0644\u0623\u0639\u0644\u0649 \u0625\u0644\u0649 \u0627\u0644\u0623\u0642\u0644",
113
+ "nameAZ": "\u0627\u0644\u0627\u0633\u0645 \u0623-\u064a",
114
+ "bestSellers": "\u0627\u0644\u0623\u0643\u062b\u0631 \u0645\u0628\u064a\u0639\u064b\u0627",
115
+ "featuredProducts": "\u0645\u0646\u062a\u062c\u0627\u062a \u0645\u0645\u064a\u0632\u0629",
116
+ "trendingProducts": "\u0645\u0646\u062a\u062c\u0627\u062a \u0631\u0627\u0626\u062c\u0629",
117
+ "newArrivals": "\u0648\u0635\u0644 \u062d\u062f\u064a\u062b\u064b\u0627",
118
+ "wishlist": "\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0623\u0645\u0646\u064a\u0627\u062a",
119
+ "productDetails": "\u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0645\u0646\u062a\u062c",
120
+ "product": "\u0627\u0644\u0645\u0646\u062a\u062c"
121
+ },
122
+ "cart": {
123
+ "cart": "\u0627\u0644\u0633\u0644\u0629",
124
+ "cartTotals": "\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0633\u0644\u0629",
125
+ "total": "\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a",
126
+ "subtotal": "\u0627\u0644\u0645\u062c\u0645\u0648\u0639 \u0627\u0644\u0641\u0631\u0639\u064a",
127
+ "coupon": "\u0642\u0633\u064a\u0645\u0629",
128
+ "applyCoupon": "\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0642\u0633\u064a\u0645\u0629",
129
+ "updatePrice": "\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0633\u0639\u0631",
130
+ "proceedToCheckout": "\u0627\u0644\u0645\u062a\u0627\u0628\u0639\u0629 \u0625\u0644\u0649 \u0627\u0644\u062f\u0641\u0639",
131
+ "cartEmpty": "\u0627\u0644\u0633\u0644\u0629 \u0641\u0627\u0631\u063a\u0629",
132
+ "shipping": "\u0627\u0644\u0634\u062d\u0646"
133
+ },
134
+ "checkout": {
135
+ "billingDetails": "\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0641\u0648\u0627\u062a\u064a\u0631",
136
+ "firstName": "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0644",
137
+ "lastName": "\u0627\u0644\u0643\u0646\u064a\u0629",
138
+ "emailAddress": "\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a",
139
+ "companyName": "\u0627\u0633\u0645 \u0627\u0644\u0634\u0631\u0643\u0629 (\u0627\u062e\u062a\u064a\u0627\u0631\u064a)",
140
+ "countryRegion": "\u0627\u0644\u062f\u0648\u0644\u0629/\u0627\u0644\u0645\u0646\u0637\u0642\u0629",
141
+ "streetAddress": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
142
+ "addressLine1": "\u0633\u0637\u0631 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 1",
143
+ "addressLine2": "\u0633\u0637\u0631 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 2",
144
+ "townCity": "\u0627\u0644\u0645\u062f\u064a\u0646\u0629",
145
+ "postalCode": "\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f\u064a",
146
+ "phone": "\u0627\u0644\u0647\u0627\u062a\u0641",
147
+ "phoneNumber": "\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641",
148
+ "additionalInfo": "\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0625\u0636\u0627\u0641\u064a\u0629",
149
+ "notes": "\u0645\u0644\u0627\u062d\u0638\u0627\u062a (\u0627\u062e\u062a\u064a\u0627\u0631\u064a)",
150
+ "yourOrder": "\u0637\u0644\u0628\u0643",
151
+ "paymentOption": "\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u062f\u0641\u0639",
152
+ "cardPayment": "\u0627\u0644\u062f\u0641\u0639 \u0628\u0627\u0644\u0628\u0637\u0627\u0642\u0629",
153
+ "cashOnDelivery": "\u0627\u0644\u062f\u0641\u0639 \u0639\u0646\u062f \u0627\u0644\u0627\u0633\u062a\u0644\u0627\u0645",
154
+ "placeOrder": "\u062a\u0623\u0643\u064a\u062f \u0627\u0644\u0637\u0644\u0628"
155
+ },
156
+ "footer": {
157
+ "gotQuestion": "\u0644\u062f\u064a\u0643 \u0633\u0624\u0627\u0644\u061f \u0627\u062a\u0635\u0644 \u0628\u0646\u0627 \u0639\u0644\u0649 \u0645\u062f\u0627\u0631 \u0627\u0644\u0633\u0627\u0639\u0629",
158
+ "storeDescription": "\u0645\u062a\u062c\u0631\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0644\u0623\u0641\u0636\u0644 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a \u0648\u0627\u0644\u0639\u0631\u0648\u0636.",
159
+ "subscribe": "\u0627\u0634\u062a\u0631\u0643 \u0641\u064a \u0627\u0644\u0646\u0634\u0631\u0629 \u0627\u0644\u0625\u062e\u0628\u0627\u0631\u064a\u0629",
160
+ "enterEmail": "\u0623\u062f\u062e\u0644 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a",
161
+ "submitNow": "\u0623\u0631\u0633\u0644 \u0627\u0644\u0622\u0646",
162
+ "followUs": "\u062a\u0627\u0628\u0639\u0646\u0627",
163
+ "allRightsReserved": "\u062c\u0645\u064a\u0639 \u0627\u0644\u062d\u0642\u0648\u0642 \u0645\u062d\u0641\u0648\u0638\u0629",
164
+ "getToKnowUs": "\u062a\u0639\u0631\u0651\u0641 \u0639\u0644\u064a\u0646\u0627",
165
+ "letUsHelp": "\u062f\u0639\u0646\u0627 \u0646\u0633\u0627\u0639\u062f\u0643",
166
+ "popularCategories": "\u0627\u0644\u0641\u0626\u0627\u062a \u0627\u0644\u0634\u0627\u0626\u0639\u0629",
167
+ "aboutTheShop": "\u0639\u0646 \u0627\u0644\u0645\u062a\u062c\u0631",
168
+ "returnPolicy": "\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u0625\u0631\u062c\u0627\u0639",
169
+ "productReplacement": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0627\u0644\u0645\u0646\u062a\u062c",
170
+ "shopWithPoints": "\u0627\u0644\u062a\u0633\u0648\u0651\u0642 \u0628\u0627\u0644\u0646\u0642\u0627\u0637",
171
+ "careers": "\u0627\u0644\u0648\u0638\u0627\u0626\u0641",
172
+ "storeLocation": "\u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u062a\u062c\u0631",
173
+ "newsCenter": "\u0645\u0631\u0643\u0632 \u0627\u0644\u0623\u062e\u0628\u0627\u0631",
174
+ "downloadApp": "\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u062a\u0637\u0628\u064a\u0642"
175
+ },
176
+ "services": {
177
+ "fastDelivery": "\u062a\u0648\u0635\u064a\u0644 \u0633\u0631\u064a\u0639",
178
+ "fastDeliveryDesc": "\u062a\u0648\u0635\u064a\u0644 \u0628\u0633\u0631\u0639\u0629 \u0627\u0644\u0628\u0631\u0642",
179
+ "securedPayment": "\u062f\u0641\u0639 \u0622\u0645\u0646",
180
+ "securedPaymentDesc": "\u062a\u0633\u0648\u0651\u0642 \u0628\u062b\u0642\u0629",
181
+ "moneyBack": "\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0627\u0644\u0623\u0645\u0648\u0627\u0644",
182
+ "moneyBackDesc": "\u0636\u0645\u0627\u0646 \u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0627\u0644\u0623\u0645\u0648\u0627\u0644 100%",
183
+ "support247": "\u062f\u0639\u0645 \u0639\u0644\u0649 \u0645\u062f\u0627\u0631 \u0627\u0644\u0633\u0627\u0639\u0629",
184
+ "support247Desc": "\u062f\u0627\u0626\u0645\u064b\u0627 \u0647\u0646\u0627 \u0645\u0646 \u0623\u062c\u0644\u0643"
185
+ },
186
+ "contact": {
187
+ "getInTouch": "\u062a\u0648\u0627\u0635\u0644 \u0645\u0639\u0646\u0627",
188
+ "contactDescription": "\u0628\u0648\u0627\u0628\u062a\u0643 \u0625\u0644\u0649 \u0627\u0644\u062a\u0645\u064a\u0651\u0632: \u062a\u0648\u0627\u0635\u0644 \u0645\u0639\u0646\u0627 \u0648\u0627\u0643\u062a\u0634\u0641 \u0639\u0627\u0644\u0645\u064b\u0627 \u0645\u0646 \u0627\u0644\u0625\u0645\u0643\u0627\u0646\u064a\u0627\u062a",
189
+ "yourName": "\u0627\u0633\u0645\u0643",
190
+ "yourEmail": "\u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a",
191
+ "yourSubject": "\u0627\u0644\u0645\u0648\u0636\u0648\u0639",
192
+ "yourMessage": "\u0631\u0633\u0627\u0644\u062a\u0643",
193
+ "writeMessage": "\u0627\u0643\u062a\u0628 \u0631\u0633\u0627\u0644\u0629",
194
+ "enterName": "\u0623\u062f\u062e\u0644 \u0627\u0633\u0645\u0643",
195
+ "enterEmail": "\u0623\u062f\u062e\u0644 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a"
196
+ },
197
+ "order": {
198
+ "orderNumber": "\u0631\u0642\u0645 \u0627\u0644\u0637\u0644\u0628",
199
+ "orderCreatedAt": "\u062a\u0627\u0631\u064a\u062e \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0637\u0644\u0628",
200
+ "backHistory": "\u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u0627\u0644\u0633\u062c\u0644",
201
+ "status": "\u0627\u0644\u062d\u0627\u0644\u0629",
202
+ "paid": "\u0645\u062f\u0641\u0648\u0639",
203
+ "pending": "\u0642\u064a\u062f \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631",
204
+ "failed": "\u0641\u0634\u0644",
205
+ "trash": "\u0627\u0644\u0645\u0647\u0645\u0644\u0627\u062a",
206
+ "order": "\u0627\u0644\u0637\u0644\u0628"
207
+ },
208
+ "common": {
209
+ "save": "\u062d\u0641\u0638",
210
+ "saveChange": "\u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a",
211
+ "edit": "\u062a\u0639\u062f\u064a\u0644",
212
+ "default": "\u0627\u0641\u062a\u0631\u0627\u0636\u064a",
213
+ "clickHere": "\u0627\u0646\u0642\u0631 \u0647\u0646\u0627",
214
+ "changeImage": "\u062a\u063a\u064a\u064a\u0631 \u0627\u0644\u0635\u0648\u0631\u0629",
215
+ "location": "\u0627\u0644\u0645\u0648\u0642\u0639",
216
+ "searchLocation": "\u0627\u0628\u062d\u062b \u0639\u0646 \u0645\u0648\u0642\u0639\u0643",
217
+ "selectLocation": "\u0627\u062e\u062a\u0631 \u0645\u0648\u0642\u0639\u064b\u0627",
218
+ "deliverProducts": "\u0623\u064a\u0646 \u062a\u0631\u064a\u062f \u062a\u0648\u0635\u064a\u0644 \u0645\u0646\u062a\u062c\u0627\u062a\u0643\u061f",
219
+ "privacyPolicy": "\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062e\u0635\u0648\u0635\u064a\u0629",
220
+ "termsConditions": "\u0627\u0644\u0634\u0631\u0648\u0637 \u0648\u0627\u0644\u0623\u062d\u0643\u0627\u0645",
221
+ "helpCenter": "\u0645\u0631\u0643\u0632 \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629"
222
+ },
223
+ "lang": {
224
+ "english": "English",
225
+ "ukrainian": "\u0627\u0644\u0623\u0648\u0643\u0631\u0627\u0646\u064a\u0629",
226
+ "russian": "\u0627\u0644\u0631\u0648\u0633\u064a\u0629",
227
+ "arabic": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
228
+ },
229
+ "currency": {
230
+ "usd": "USD $",
231
+ "eur": "EUR \u20ac",
232
+ "uah": "UAH \u20b4"
233
+ }
234
+ }