Compare commits

...

2 Commits

  1. 2
      dictionary.js
  2. 24
      src/QRScan/LastQr/index.js
  3. 4
      src/Redux/reducers/activation.js
  4. 34
      src/Redux/reducers/book.js
  5. 2
      src/Redux/reducers/comment.js
  6. 38
      src/Redux/reducers/public.js
  7. 2
      src/Redux/reducers/transport.js
  8. 4
      src/Redux/reducers/user.js
  9. 4
      src/Redux/reducers/userFactor.js
  10. 2
      src/Redux/reducers/userProduct.js
  11. 26
      src/views/AR/Item/index.js
  12. 28
      src/views/About/index.js
  13. 6
      src/views/Auth/Login/Cellphone/index.js
  14. 2
      src/views/Auth/Login/Code/index.js
  15. 12
      src/views/Auth/Profile/Birthdate/index.js
  16. 4
      src/views/Auth/Profile/Document/index.js
  17. 2
      src/views/Auth/Profile/Upload/index.js
  18. 116
      src/views/Auth/Profile/index.js
  19. 4
      src/views/Auth/Splash/index.js
  20. 4
      src/views/Callback/Status/index.js
  21. 34
      src/views/Cart/Table/index.js
  22. 4
      src/views/ChatList/Search/index.js
  23. 2
      src/views/ChatRoom/Body/Input/index.js
  24. 14
      src/views/ChatRoom/Body/Message/Comment/index.js
  25. 2
      src/views/ChatRoom/Body/Message/Inline/index.js
  26. 2
      src/views/ChatRoom/Body/Message/MultiSelect/index.js
  27. 14
      src/views/ChatRoom/Body/Message/Normal/index.js
  28. 12
      src/views/ChatRoom/Body/index.js
  29. 18
      src/views/ChatRoom/Info/index.js
  30. 32
      src/views/Checkout/Table/index.js
  31. 24
      src/views/Checkout/index.js
  32. 12
      src/views/Contact/index.js
  33. 26
      src/views/Download/Item/index.js
  34. 2
      src/views/Download/index.js
  35. 4
      src/views/Faq/index.js
  36. 24
      src/views/Home/Footer/index.js
  37. 2
      src/views/Home/HomeHeader/index.js
  38. 2
      src/views/Home/HomeScroll/index.js
  39. 2
      src/views/Home/HomeSearch/Select/index.js
  40. 8
      src/views/Home/HomeSearch/index.js
  41. 10
      src/views/Home/HomeSlider/Blog/index.js
  42. 8
      src/views/Home/HomeSlider/index.js
  43. 2
      src/views/Home/HomeStatic/Vitrin/index.js
  44. 4
      src/views/Home/HomeStatic/index.js
  45. 6
      src/views/Home/Membership/index.js
  46. 14
      src/views/Home/Navbar/Laptop/index.js
  47. 64
      src/views/Home/Navbar/Mobile/NavbarDrawer/NavbarDrawer.js
  48. 16
      src/views/Home/Navbar/Mobile/index.js
  49. 26
      src/views/MyBooks/index.js
  50. 4
      src/views/MyBooks_old/index.js
  51. 144
      src/views/NewProfile/index.js
  52. 28
      src/views/Orders/index.js
  53. 4
      src/views/Product/AddToCart/index.js
  54. 2
      src/views/Product/Comment/index.js
  55. 4
      src/views/Product/Gallery/Modal/index.js
  56. 4
      src/views/Product/Gallery/index.js
  57. 2
      src/views/Product/MaterialModal/index.js
  58. 44
      src/views/Product/index.js
  59. 4
      src/views/Products/Filters/index.js
  60. 30
      src/views/Products/Product/index.js
  61. 6
      src/views/Products/Select/index.js
  62. 8
      src/views/Products/index.js
  63. 10
      src/views/QR/SubjectsDropdown/index.js
  64. 26
      src/views/QR/index.js
  65. 24
      src/views/QRScan/LastQr/index.js
  66. 8
      src/views/QRScan/Modal/index.js
  67. 2
      src/views/Sample/index.js
  68. 4
      src/views/Support/Upload/index.js
  69. 36
      src/views/Support/index.js

@ -334,3 +334,5 @@ const items = [
"به دانوین خوش آمدید.", "به دانوین خوش آمدید.",
"درخواست شما با موفقیت انجام شد.", "درخواست شما با موفقیت انجام شد.",
]; ];
module.exports = items;

@ -4,18 +4,18 @@ import { Link } from "react-router-dom";
import "./index.scss"; import "./index.scss";
const grades = [ const grades = [
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
export default function LastQR(props) { export default function LastQR(props) {

@ -14,10 +14,10 @@ export default function activation(state = initialState, action) {
case "activation/update": case "activation/update":
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };
case "activation/updateStatus": case "activation/updateStatus":
toast.success("کتاب شما با موفقیت فعال گردید."); toast.success(window.t("کتاب شما با موفقیت فعال گردید."));
return { ...state, loading: false, error: null, updateStatus: true }; return { ...state, loading: false, error: null, updateStatus: true };
case "activation/add": case "activation/add":
toast.success("کتاب شما با موفقیت فعال گردید."); toast.success(window.t("کتاب شما با موفقیت فعال گردید."));
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };
case "activation/delete": case "activation/delete":
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };

@ -9,23 +9,23 @@ const initialState = {
filterResult: [], filterResult: [],
subjects: [], subjects: [],
levels: [], levels: [],
sortFilters: ["مرتب سازی", "محبوب ترین", "جدیدترین"], sortFilters: [window.t("مرتب سازی"), window.t("محبوب ترین"), window.t("جدیدترین")],
}; };
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
export default function book(state = initialState, action) { export default function book(state = initialState, action) {
let { type, data } = action; let { type, data } = action;
@ -35,14 +35,14 @@ export default function book(state = initialState, action) {
(item, index) => item.name (item, index) => item.name
); );
if (window.innerWidth < 1000) { if (window.innerWidth < 1000) {
itemsSubject.unshift("نام کتاب"); itemsSubject.unshift(window.t("نام کتاب"));
} }
let itemsLevel = (Array.isArray(data) ? data : []) let itemsLevel = (Array.isArray(data) ? data : [])
.map((item) => item.gradeId * 1) .map((item) => item.gradeId * 1)
.sort((a, b) => a - b) .sort((a, b) => a - b)
.map((e) => grades[e]); .map((e) => grades[e]);
if (window.innerWidth < 1000) { if (window.innerWidth < 1000) {
itemsLevel.unshift("پایه تحصیلی"); itemsLevel.unshift(window.t(window.t("پایه تحصیلی")));
} }
return { return {
...state, ...state,
@ -103,7 +103,7 @@ export default function book(state = initialState, action) {
? bySubjectFilter.filter((item1) => item1.name.indexOf(search) !== -1) ? bySubjectFilter.filter((item1) => item1.name.indexOf(search) !== -1)
: bySubjectFilter; : bySubjectFilter;
if (sort === "گران ترین") { if (sort === window.t("گران ترین")) {
finalSort = bySearchFilter.sort((item1, item2) => { finalSort = bySearchFilter.sort((item1, item2) => {
return item1.product[0].price - item2.product[0].price; return item1.product[0].price - item2.product[0].price;
}); });

@ -14,7 +14,7 @@ export default function comment(state = initialState, action) {
case "comment/update": case "comment/update":
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };
case "comment/add": case "comment/add":
toast.success("ثبت درخواست با موفقیت انجام شد"); toast.success(window.t("ثبت درخواست با موفقیت انجام شد"));
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };
case "comment/delete": case "comment/delete":
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };

@ -19,19 +19,19 @@ const initialState = {
}; };
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
export default function publicApi(state = initialState, action) { export default function publicApi(state = initialState, action) {
let { type, data } = action; let { type, data } = action;
@ -43,7 +43,7 @@ export default function publicApi(state = initialState, action) {
// if (window.innerWidth > 1000) { // if (window.innerWidth > 1000) {
const jadidTarin = data?.filter( const jadidTarin = data?.filter(
(item) => item.title === "کتابهای دانوین" (item) => item.title === window.t("کتابهای دانوین")
); );
itemsLevel = itemsLevel =
jadidTarin && jadidTarin[0] && jadidTarin[0].data jadidTarin && jadidTarin[0] && jadidTarin[0].data
@ -52,7 +52,7 @@ export default function publicApi(state = initialState, action) {
.sort((a, b) => a - b) .sort((a, b) => a - b)
.map((e) => grades[e]) .map((e) => grades[e])
: []; : [];
itemsLevel.unshift("پایه تحصیلی"); itemsLevel.unshift(window.t(window.t("پایه تحصیلی")));
// } // }
return { return {
@ -69,7 +69,7 @@ export default function publicApi(state = initialState, action) {
case "public/filter": case "public/filter":
const realList = const realList =
state.newProducts.length === 0 state.newProducts.length === 0
? state.homeData.filter((item) => item.title === "کتابهای دانوین")[0] ? state.homeData.filter((item) => item.title === window.t("کتابهای دانوین"))[0]
.data .data
: state.newProducts; : state.newProducts;
if (state.newProducts.length === 0) { if (state.newProducts.length === 0) {
@ -88,7 +88,7 @@ export default function publicApi(state = initialState, action) {
loading: false, loading: false,
error: null, error: null,
homeData: state.homeData.map((item) => homeData: state.homeData.map((item) =>
item.title === "کتابهای دانوین" item.title === window.t("کتابهای دانوین")
? { ...item, data: state.newProducts } ? { ...item, data: state.newProducts }
: { ...item } : { ...item }
), ),
@ -124,7 +124,7 @@ export default function publicApi(state = initialState, action) {
const bySearchFilter = search const bySearchFilter = search
? byLevelFilter.filter((item1) => item1.name.indexOf(search) !== -1) ? byLevelFilter.filter((item1) => item1.name.indexOf(search) !== -1)
: byLevelFilter; : byLevelFilter;
// if (sort === "گران ترین") { // if (sort === window.t("گران ترین")) {
// finalSort = bySearchFilter.sort((item1, item2) => { // finalSort = bySearchFilter.sort((item1, item2) => {
// return item1.product[0].price - item2.product[0].price; // return item1.product[0].price - item2.product[0].price;
// }); // });
@ -137,7 +137,7 @@ export default function publicApi(state = initialState, action) {
loading: false, loading: false,
error: null, error: null,
homeData: state.homeData.map((item) => homeData: state.homeData.map((item) =>
item.title === "کتابهای دانوین" item.title === window.t("کتابهای دانوین")
? { ...item, data: bySearchFilter } ? { ...item, data: bySearchFilter }
: { ...item } : { ...item }
), ),

@ -17,7 +17,7 @@ export default function transport(state = initialState, action) {
case "transport/add": case "transport/add":
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };
case "transport/setTransport": case "transport/setTransport":
toast.success("روش ارسال با موفقیت تغییر یافت!"); toast.success(window.t("روش ارسال با موفقیت تغییر یافت!"));
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };
case "transport/delete": case "transport/delete":
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };

@ -17,11 +17,11 @@ export default function user(state = initialState, action) {
case "user/register": case "user/register":
case "user/switchRole": case "user/switchRole":
case "public/sendOTP": case "public/sendOTP":
toast.success("کد به شماره شما ارسال گردید."); toast.success(window.t("کد به شماره شما ارسال گردید."));
return { ...state, loading: false, status: data.profile, error: null }; return { ...state, loading: false, status: data.profile, error: null };
case "user/otp/login": case "user/otp/login":
// window.location = "https://dnvn.ir/?" + Math.random(); // window.location = "https://dnvn.ir/?" + Math.random();
toast.success("به دانوین خوش آمدید."); toast.success(window.t("به دانوین خوش آمدید."));
return { return {
...state, ...state,

@ -17,10 +17,10 @@ export default function userFactor(state = initialState, action) {
case "userFactor/info": case "userFactor/info":
return { ...state, loading: false, info: data, error: null }; return { ...state, loading: false, info: data, error: null };
case "userFactor/update": case "userFactor/update":
toast.success("درخواست شما با موفقیت انجام شد."); toast.success(window.t("درخواست شما با موفقیت انجام شد."));
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };
case "userFactor/add": case "userFactor/add":
toast.success("درخواست شما با موفقیت انجام شد."); toast.success(window.t("درخواست شما با موفقیت انجام شد."));
return { ...state, loading: false, error: null, sum: data.payPrice }; return { ...state, loading: false, error: null, sum: data.payPrice };
case "userFactor/deleteUserOffCode": case "userFactor/deleteUserOffCode":
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };

@ -37,7 +37,7 @@ export default function userProduct(state = initialState, action) {
return { ...state, loading: false, error: null }; return { ...state, loading: false, error: null };
case "userProduct/add": case "userProduct/add":
if (window.location.pathname.indexOf("products") !== -1) { if (window.location.pathname.indexOf("products") !== -1) {
toast.success("درخواست شما با موفقیت انجام شد."); toast.success(window.t("درخواست شما با موفقیت انجام شد."));
} }
return { ...state, loading: false, error: null, sum: data.payPrice }; return { ...state, loading: false, error: null, sum: data.payPrice };
case "userProduct/delete": case "userProduct/delete":

@ -1,19 +1,19 @@
import React, { Component } from "react"; import React, { Component } from "react";
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
export default class Item extends Component { export default class Item extends Component {
render() { render() {

@ -28,7 +28,7 @@ const fontSize = {
export default class About extends Component { export default class About extends Component {
state = { state = {
first: { first: {
title: "درباره ما", title: window.t("درباره ما"),
text: "ما در دانوین با هدف ایجاد زیرساخت تعاملی و آموزشی با تولید محتوایی جذاب بصورت کتاب با کمک پلتفرم دانوین، قصد تغییراتی بنیادین در نظام آموزش و پرورش کشور داریم. دانوین پلتفرمی شامل کتاب، محتوای الکترونیکی، رویه های آموزشی، پشتیبانی علمی و نرم افزار ارائه خدمات با رویکرد مخاطب محور است.", text: "ما در دانوین با هدف ایجاد زیرساخت تعاملی و آموزشی با تولید محتوایی جذاب بصورت کتاب با کمک پلتفرم دانوین، قصد تغییراتی بنیادین در نظام آموزش و پرورش کشور داریم. دانوین پلتفرمی شامل کتاب، محتوای الکترونیکی، رویه های آموزشی، پشتیبانی علمی و نرم افزار ارائه خدمات با رویکرد مخاطب محور است.",
}, },
fury: { fury: {
@ -37,29 +37,29 @@ export default class About extends Component {
}, },
keywords: { keywords: {
title: "کیفیت آموزش را بالا میبریم", title: window.t("کیفیت آموزش را بالا میبریم"),
list: [ list: [
"شایستگی در ایجاد فهم علمی در موضوع هدف و در موضوعات وابسته به آن", window.t("شایستگی در ایجاد فهم علمی در موضوع هدف و در موضوعات وابسته به آن"),
"شایستگی در ایجاد زمینه ی معرفتی- ارزشی موثر برای محتواهای آموزشی", window.t("شایستگی در ایجاد زمینه ی معرفتی- ارزشی موثر برای محتواهای آموزشی"),
], ],
}, },
keywords2: { keywords2: {
title: "جذابیت کلید بهبود یادگیری", title: window.t("جذابیت کلید بهبود یادگیری"),
list: [ list: [
"بکارگیری عوامل متنوع سازگار با ارزشها برای علاقمندی دانش آموز و معلم به استفاده از محتوای دانوین", window.t("بکارگیری عوامل متنوع سازگار با ارزشها برای علاقمندی دانش آموز و معلم به استفاده از محتوای دانوین"),
"سازگار با نظام آ.پ : بطوریکه بتواند در مدارس فعلی مورد استفاده قرار گرفته و با نظام رسمی فعلی در تضاد نباشد", window.t("سازگار با نظام آ.پ : بطوریکه بتواند در مدارس فعلی مورد استفاده قرار گرفته و با نظام رسمی فعلی در تضاد نباشد"),
"در راستای نیل به سند تحول : تلاش برای نزدیکی گام به گام به آرمانها و اهداف سند تحول", window.t("در راستای نیل به سند تحول : تلاش برای نزدیکی گام به گام به آرمانها و اهداف سند تحول"),
], ],
}, },
advantages: { advantages: {
title: " مزیت رقابتی دانوین", title: " مزیت رقابتی دانوین",
list: [ list: [
"بکارگیری بروز ترین تکنولوژی های تولید و مدیریت محتوای آموزشی-تربیتی (مانند واقعیت افزوده)", window.t("بکارگیری بروز ترین تکنولوژی های تولید و مدیریت محتوای آموزشی-تربیتی (مانند واقعیت افزوده)"),
"دارای رویکرد آموزش سرگرم کننده ", window.t("دارای رویکرد آموزش سرگرم کننده "),
"بستر تعاملی و اشتراک گذاری فیلم و محتوای آموزشی", window.t("بستر تعاملی و اشتراک گذاری فیلم و محتوای آموزشی"),
"رویکرد معرفتی-ارزشی", window.t("رویکرد معرفتی-ارزشی"),
"ویدئو های منحصر بفرد", window.t("ویدئو های منحصر بفرد"),
"متن گفتگو محور ، روایی ، قابل فهم ،جذاب و سرگرم کننده", window.t("متن گفتگو محور ، روایی ، قابل فهم ،جذاب و سرگرم کننده"),
], ],
}, },
}; };

@ -48,7 +48,7 @@ export default class Cellphone extends Component {
} }
> >
<span style={{ fontSize: fontSize.desktop.span }}>09</span> <span style={{ fontSize: fontSize.desktop.span }}>09</span>
<img src={iran} alt="پرچم" /> <img src={iran} alt=window.t("پرچم") />
<input <input
style={{ fontSize: fontSize.desktop.span }} style={{ fontSize: fontSize.desktop.span }}
id="cellphone" id="cellphone"
@ -93,7 +93,7 @@ export default class Cellphone extends Component {
<div style={{ width: "48%", height: "100%", opacity: 0 }}> <div style={{ width: "48%", height: "100%", opacity: 0 }}>
<img <img
src={pic} src={pic}
alt="عکس" alt=window.t("عکس")
style={{ width: "100%", height: "100%" }} style={{ width: "100%", height: "100%" }}
/> />
</div> </div>
@ -119,7 +119,7 @@ export default class Cellphone extends Component {
} }
> >
<span style={{ fontSize: fontSize.mobile.span }}>09</span> <span style={{ fontSize: fontSize.mobile.span }}>09</span>
<img src={iran} alt="پرچم" /> <img src={iran} alt=window.t("پرچم") />
<input <input
id="cellphone" id="cellphone"
type="text" type="text"

@ -208,7 +208,7 @@ export default class Code extends Component {
<div style={{ width: "48%", height: "100%" }} className="d-flex"> <div style={{ width: "48%", height: "100%" }} className="d-flex">
{/* <img {/* <img
src={pic} src={pic}
alt="عکس" alt=window.t("عکس")
style={{ width: "100%", height: "100%" }} style={{ width: "100%", height: "100%" }}
/> */} /> */}
</div> </div>

@ -31,7 +31,7 @@ export default function Birthdate(props) {
<Input <Input
variant="standard" variant="standard"
name="day" name="day"
placeholder="روز" placeholder=window.t("روز")
maxLength={2} maxLength={2}
onInput={onInput.dayHandler} onInput={onInput.dayHandler}
parent={{ onChange }} parent={{ onChange }}
@ -41,7 +41,7 @@ export default function Birthdate(props) {
<Input <Input
variant="standard" variant="standard"
name="month" name="month"
placeholder="ماه" placeholder=window.t("ماه")
maxLength={2} maxLength={2}
onInput={onInput.monthHandler} onInput={onInput.monthHandler}
parent={{ onChange }} parent={{ onChange }}
@ -51,7 +51,7 @@ export default function Birthdate(props) {
<Input <Input
variant="standard" variant="standard"
name="year" name="year"
placeholder="سال" placeholder=window.t("سال")
maxLength={4} maxLength={4}
onInput={onInput.yearHandler} onInput={onInput.yearHandler}
parent={{ onChange }} parent={{ onChange }}
@ -67,7 +67,7 @@ export default function Birthdate(props) {
<Input <Input
variant="standard" variant="standard"
name="day" name="day"
placeholder="روز" placeholder=window.t("روز")
maxLength={2} maxLength={2}
onInput={onInput.dayHandler} onInput={onInput.dayHandler}
parent={{ onChange }} parent={{ onChange }}
@ -77,7 +77,7 @@ export default function Birthdate(props) {
<Input <Input
variant="standard" variant="standard"
name="month" name="month"
placeholder="ماه" placeholder=window.t("ماه")
maxLength={2} maxLength={2}
onInput={onInput.monthHandler} onInput={onInput.monthHandler}
parent={{ onChange }} parent={{ onChange }}
@ -87,7 +87,7 @@ export default function Birthdate(props) {
<Input <Input
variant="standard" variant="standard"
name="year" name="year"
placeholder="سال" placeholder=window.t("سال")
maxLength={4} maxLength={4}
onInput={onInput.yearHandler} onInput={onInput.yearHandler}
parent={{ onChange }} parent={{ onChange }}

@ -51,7 +51,7 @@ export default function Document(props) {
}} }}
> >
{parent.state[name].name || {parent.state[name].name ||
"گواهی تدریس ثبت شده و درحال بررسی می باشد"} window.t("گواهی تدریس ثبت شده و درحال بررسی می باشد")}
</span> </span>
</> </>
)} )}
@ -100,7 +100,7 @@ export default function Document(props) {
}} }}
> >
{parent.state[name].name || {parent.state[name].name ||
"گواهی تدریس ثبت شده و درحال بررسی می باشد"} window.t("گواهی تدریس ثبت شده و درحال بررسی می باشد")}
</span> </span>
</> </>
)} )}

@ -53,7 +53,7 @@ export default function Upload(props) {
? URL.createObjectURL(parent.state.file) ? URL.createObjectURL(parent.state.file)
: window.baseURL + "file/" + parent.state.file : window.baseURL + "file/" + parent.state.file
} }
alt={"کاربر"} alt={window.t("کاربر")}
/> />
)} )}
<input <input

@ -163,19 +163,19 @@ class Profile extends Component {
render() { render() {
if (this.props.setDone) return <Navigate path="/" />; if (this.props.setDone) return <Navigate path="/" />;
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
const { profile } = this.props; const { profile } = this.props;
return ( return (
@ -199,7 +199,7 @@ class Profile extends Component {
<div className="mb-2"> <div className="mb-2">
<Input <Input
name="firstName" name="firstName"
label="نام" label=window.t("نام")
parent={this} parent={this}
defaultValue={profile} defaultValue={profile}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
@ -209,7 +209,7 @@ class Profile extends Component {
<div className="mb-2"> <div className="mb-2">
<Input <Input
name="lastName" name="lastName"
label="نام خانوادگی" label=window.t("نام خانوادگی")
parent={this} parent={this}
defaultValue={profile} defaultValue={profile}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
@ -219,7 +219,7 @@ class Profile extends Component {
<div className="mb-2"> <div className="mb-2">
<Input <Input
name="username" name="username"
label="نام کاربری" label=window.t(window.t("نام کاربری"))
parent={this} parent={this}
defaultValue={profile} defaultValue={profile}
align="left" align="left"
@ -229,7 +229,7 @@ class Profile extends Component {
<div className="mb-2"> <div className="mb-2">
<Gender <Gender
options={["دختر", "پسر"]} options={[window.t("دختر"), window.t("پسر")]}
parent={this} parent={this}
name="gender" name="gender"
selectedOption={this.state.gender} selectedOption={this.state.gender}
@ -238,7 +238,7 @@ class Profile extends Component {
<div className="mb-2"> <div className="mb-2">
<Input <Input
name="nationalId" name="nationalId"
label="کد ملی/اتباع" label=window.t("کد ملی/اتباع")
parent={this} parent={this}
align="left" align="left"
maxLength={13} maxLength={13}
@ -261,9 +261,9 @@ class Profile extends Component {
<div className="mb-2" style={{ minWidth: "100%" }}> <div className="mb-2" style={{ minWidth: "100%" }}>
<Gender <Gender
parent={this} parent={this}
options={["معلم", "دانش آموز"]} options={[window.t("معلم"), window.t("دانش آموز")]}
name="status" name="status"
label={"عنوان"} label={window.t("عنوان")}
selectedOption={this.state.status} selectedOption={this.state.status}
/> />
</div> </div>
@ -273,7 +273,7 @@ class Profile extends Component {
parent={this} parent={this}
options={grades} options={grades}
name="gradeIds" name="gradeIds"
label={"پایه تحصیلی"} label={window.t(window.t("پایه تحصیلی"))}
selectedOptions={this.state.gradeIds} selectedOptions={this.state.gradeIds}
/> />
</div> </div>
@ -284,27 +284,27 @@ class Profile extends Component {
parent={this} parent={this}
options={grades} options={grades}
name="gradeIds" name="gradeIds"
label={"پایه تحصیلی"} label={window.t(window.t("پایه تحصیلی"))}
selectedOptions={this.state.gradeIds} selectedOptions={this.state.gradeIds}
/> />
</div> </div>
) : null} ) : null}
{this.state.status === "دانش آموز" && {this.state.status === window.t("دانش آموز") &&
this.state.gradeIds > 9 ? ( this.state.gradeIds > 9 ? (
<div className="mb-2"> <div className="mb-2">
<Select <Select
parent={this} parent={this}
options={[ options={[
"ریاضی", window.t("ریاضی"),
"تجربی", window.t("تجربی"),
"انسانی", window.t("انسانی"),
"فنی حرفهای", window.t("فنی حرفهای"),
"کاردانش", window.t("کاردانش"),
"معارف", window.t("معارف"),
]} ]}
name="field" name="field"
label={"رشته تحصیلی"} label={window.t("رشته تحصیلی")}
selectedOptions={this.state.gradeIds} selectedOptions={this.state.gradeIds}
/> />
</div> </div>
@ -314,7 +314,7 @@ class Profile extends Component {
parent={this} parent={this}
options={this.props.provinceList} options={this.props.provinceList}
name="provinceId" name="provinceId"
label={"استان"} label={window.t("استان")}
selectedOptions={this.state.provinceId} selectedOptions={this.state.provinceId}
/> />
</div> </div>
@ -323,7 +323,7 @@ class Profile extends Component {
parent={this} parent={this}
options={this.props.cityList} options={this.props.cityList}
name="cityId" name="cityId"
label={"شهرستان"} label={window.t("شهرستان")}
selectedOptions={this.state.cityId} selectedOptions={this.state.cityId}
/> />
</div> </div>
@ -332,7 +332,7 @@ class Profile extends Component {
parent={this} parent={this}
options={["chaharbagh", "mahalat"]} options={["chaharbagh", "mahalat"]}
name="zoneId" name="zoneId"
label={"شهر/روستا"} label={window.t("شهر/روستا")}
/> />
</div> */} </div> */}
{this.state.status === 1 ? ( {this.state.status === 1 ? (
@ -340,7 +340,7 @@ class Profile extends Component {
<Input <Input
parent={this} parent={this}
name="schools" name="schools"
label={"نام مدرسه"} label={window.t("نام مدرسه")}
defaultValue={profile} defaultValue={profile}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
/> />
@ -351,7 +351,7 @@ class Profile extends Component {
<Input <Input
parent={this} parent={this}
name="schools" name="schools"
label={"محل تدریس"} label={window.t("محل تدریس")}
defaultValue={profile} defaultValue={profile}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
/> />
@ -364,7 +364,7 @@ class Profile extends Component {
<Input <Input
parent={this} parent={this}
name="postalCode" name="postalCode"
label={"کد پستی"} label={window.t("کد پستی")}
align="left" align="left"
maxLength={10} maxLength={10}
inputMode="numeric" inputMode="numeric"
@ -375,7 +375,7 @@ class Profile extends Component {
<div className="mb-2"> <div className="mb-2">
<TextArea <TextArea
parent={this} parent={this}
label={"آدرس محل سکونت"} label={window.t("آدرس محل سکونت")}
name="address" name="address"
defaultValue={profile} defaultValue={profile}
/> />
@ -418,7 +418,7 @@ class Profile extends Component {
<Input <Input
name="firstName" name="firstName"
label="نام" label=window.t("نام")
parent={this} parent={this}
defaultValue={profile} defaultValue={profile}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
@ -426,7 +426,7 @@ class Profile extends Component {
/> />
<Input <Input
name="lastName" name="lastName"
label="نام خانوادگی" label=window.t("نام خانوادگی")
parent={this} parent={this}
defaultValue={profile} defaultValue={profile}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
@ -434,14 +434,14 @@ class Profile extends Component {
/> />
<Input <Input
name="username" name="username"
label="نام کاربری" label=window.t(window.t("نام کاربری"))
parent={this} parent={this}
align="left" align="left"
defaultValue={profile} defaultValue={profile}
onInput={onInput.englishAndNumberWithoutSpace} onInput={onInput.englishAndNumberWithoutSpace}
/> />
<Gender <Gender
options={["دختر", "پسر"]} options={[window.t("دختر"), window.t("پسر")]}
parent={this} parent={this}
name="gender" name="gender"
selectedOption={this.state.gender} selectedOption={this.state.gender}
@ -463,7 +463,7 @@ class Profile extends Component {
/> />
<Gender <Gender
parent={this} parent={this}
options={["معلم", "دانش آموز"]} options={[window.t("معلم"), window.t("دانش آموز")]}
name="status" name="status"
selectedOption={this.state.status} selectedOption={this.state.status}
/> />
@ -472,7 +472,7 @@ class Profile extends Component {
parent={this} parent={this}
options={grades} options={grades}
name="gradeIds" name="gradeIds"
label={"پایه تحصیلی"} label={window.t(window.t("پایه تحصیلی"))}
selectedOptions={this.state.gradeIds} selectedOptions={this.state.gradeIds}
/> />
) : null} ) : null}
@ -481,7 +481,7 @@ class Profile extends Component {
parent={this} parent={this}
options={grades} options={grades}
name="gradeIds" name="gradeIds"
label={"پایه تحصیلی"} label={window.t(window.t("پایه تحصیلی"))}
selectedOptions={this.state.gradeIds} selectedOptions={this.state.gradeIds}
/> />
) : null} ) : null}
@ -489,15 +489,15 @@ class Profile extends Component {
<Select <Select
parent={this} parent={this}
options={[ options={[
"ریاضی", window.t("ریاضی"),
"تجربی", window.t("تجربی"),
"انسانی", window.t("انسانی"),
"فنی حرفهای", window.t("فنی حرفهای"),
"کاردانش", window.t("کاردانش"),
"معارف", window.t("معارف"),
]} ]}
name="field" name="field"
label={"رشته تحصیلی"} label={window.t("رشته تحصیلی")}
selectedOptions={this.state.gradeIds} selectedOptions={this.state.gradeIds}
/> />
) : null} ) : null}
@ -506,27 +506,27 @@ class Profile extends Component {
parent={this} parent={this}
options={this.props.provinceList} options={this.props.provinceList}
name="provinceId" name="provinceId"
label={"استان"} label={window.t("استان")}
selectedOptions={this.state.provinceId} selectedOptions={this.state.provinceId}
/> />
<Select <Select
parent={this} parent={this}
options={this.props.cityList} options={this.props.cityList}
name="cityId" name="cityId"
label={"شهرستان"} label={window.t("شهرستان")}
selectedOptions={this.state.cityId} selectedOptions={this.state.cityId}
/> />
{/* <Select {/* <Select
parent={this} parent={this}
options={["chaharbagh", "mahalat"]} options={["chaharbagh", "mahalat"]}
name="zoneId" name="zoneId"
label={"شهر/روستا"} label={window.t("شهر/روستا")}
/> */} /> */}
{this.state.status === 1 ? ( {this.state.status === 1 ? (
<Input <Input
parent={this} parent={this}
name="schools" name="schools"
label={"نام مدرسه"} label={window.t("نام مدرسه")}
defaultValue={profile} defaultValue={profile}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
/> />
@ -535,7 +535,7 @@ class Profile extends Component {
<Input <Input
parent={this} parent={this}
name="schools" name="schools"
label={"محل تدریس"} label={window.t("محل تدریس")}
defaultValue={profile} defaultValue={profile}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
/> />
@ -546,7 +546,7 @@ class Profile extends Component {
<Input <Input
parent={this} parent={this}
name="postalCode" name="postalCode"
label={"کد پستی"} label={window.t("کد پستی")}
align="left" align="left"
maxLength={10} maxLength={10}
inputMode="numeric" inputMode="numeric"
@ -555,7 +555,7 @@ class Profile extends Component {
/> />
<TextArea <TextArea
parent={this} parent={this}
label={"آدرس محل سکونت"} label={window.t("آدرس محل سکونت")}
name="address" name="address"
defaultValue={profile} defaultValue={profile}
/> />

@ -9,14 +9,14 @@ export default function Splash(props) {
<> <>
{window.innerWidth > 1000 ? ( {window.innerWidth > 1000 ? (
<div className="splash d-flex flex-column justify-content-center align-items-center"> <div className="splash d-flex flex-column justify-content-center align-items-center">
<img src={logo} alt="لوگو" /> <img src={logo} alt=window.t("لوگو") />
<ProgressBar interval={600} offset={10} /> <ProgressBar interval={600} offset={10} />
<span className="splash__span">در حال بارگیری اطلاعات از سرور</span> <span className="splash__span">در حال بارگیری اطلاعات از سرور</span>
</div> </div>
) : null} ) : null}
{window.innerWidth < 1000 ? ( {window.innerWidth < 1000 ? (
<div className="mobile-splash d-flex flex-column justify-content-center align-items-center"> <div className="mobile-splash d-flex flex-column justify-content-center align-items-center">
<img src={logo} alt="لوگو" /> <img src={logo} alt=window.t("لوگو") />
<ProgressBar interval={600} offset={10} /> <ProgressBar interval={600} offset={10} />
<span className="mobile-splash__span">در حال بارگیری اطلاعات از سرور</span> <span className="mobile-splash__span">در حال بارگیری اطلاعات از سرور</span>
</div> </div>

@ -12,8 +12,8 @@ export default function Status(props) {
const textHandler = () => { const textHandler = () => {
return props.status return props.status
? "عملیات خرید شما با موفقیت انجام شد." ? window.t("عملیات خرید شما با موفقیت انجام شد.")
: "عملیات با موفقیت انجام نشد!"; : window.t("عملیات با موفقیت انجام نشد!");
}; };
return ( return (
<> <>

@ -17,19 +17,19 @@ const useStyles = makeStyles({
table: {}, table: {},
}); });
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
const maxMobileSize = 550; const maxMobileSize = 550;
const maxDesktopSize = 1250; const maxDesktopSize = 1250;
@ -196,7 +196,7 @@ const Item = (props) => {
<div className="mobile-cart-table-product__info d-flex flex-column p-1"> <div className="mobile-cart-table-product__info d-flex flex-column p-1">
<strong style={{ fontSize: fontSize.mobile.info.strong }}> <strong style={{ fontSize: fontSize.mobile.info.strong }}>
{`نسخه ${ {`نسخه ${
+data.product.productType === 1 ? "الکترونیکی" : "چاپی" +data.product.productType === 1 ? window.t("الکترونیکی") : window.t("چاپی")
} ${data.product.book.name} `} } ${data.product.book.name} `}
</strong> </strong>
<p style={{ fontSize: 12 }}> <p style={{ fontSize: 12 }}>
@ -204,7 +204,7 @@ const Item = (props) => {
</p> </p>
<span style={{ fontSize: 10 }}> <span style={{ fontSize: 10 }}>
همراه با: همراه با:
{data.product.book.items || "کد فعالسازی محتوای الکترونیک"} {data.product.book.items || window.t("کد فعالسازی محتوای الکترونیک")}
</span> </span>
{route !== "callback" ? ( {route !== "callback" ? (
<div className="mobile-cart-table-product__info--delete d-flex align-items-center align-self-end"> <div className="mobile-cart-table-product__info--delete d-flex align-items-center align-self-end">
@ -319,7 +319,7 @@ const Item = (props) => {
<div className="d-flex flex-column justify-content-center"> <div className="d-flex flex-column justify-content-center">
<strong style={{ fontSize: fontSize.desktop.info.strong }}> <strong style={{ fontSize: fontSize.desktop.info.strong }}>
{`نسخه ${ {`نسخه ${
+data.product?.productType === 1 ? "الکترونیکی" : "چاپی" +data.product?.productType === 1 ? window.t("الکترونیکی") : window.t("چاپی")
} ${data.product?.book?.name} `} } ${data.product?.book?.name} `}
</strong> </strong>
<p style={{ fontSize: fontSize?.desktop?.info.p }}> <p style={{ fontSize: fontSize?.desktop?.info.p }}>
@ -327,7 +327,7 @@ const Item = (props) => {
</p> </p>
<span style={{ fontSize: fontSize.desktop.info.span }}> <span style={{ fontSize: fontSize.desktop.info.span }}>
همراه با: همراه با:
{data.product?.book?.items || "کد فعالسازی محتوای الکترونیک"} {data.product?.book?.items || window.t("کد فعالسازی محتوای الکترونیک")}
</span> </span>
</div> </div>
</div> </div>

@ -17,9 +17,9 @@ export default function Search(props) {
<input <input
type="search" type="search"
style={{ fontSize: fontSize.desktop.input }} style={{ fontSize: fontSize.desktop.input }}
placeholder="جستجو" placeholder=window.t(window.t("جستجو"))
/> />
<img src={navbarSearch} alt="جستجو" /> <img src={navbarSearch} alt=window.t(window.t("جستجو")) />
</div> </div>
); );
} }

@ -145,7 +145,7 @@ export default class ChatInputs extends Component {
id="standard-textarea" id="standard-textarea"
label="" label=""
value={message} value={message}
placeholder="یک پیام بنویسید..." placeholder=window.t("یک پیام بنویسید...")
rowsMax={4} rowsMax={4}
onChange={(e) => typeText("text", e.target.value)} onChange={(e) => typeText("text", e.target.value)}
multiline multiline

@ -11,15 +11,15 @@ import ForwardIcon from "@material-ui/icons/Forward";
import DeleteIcon from "@material-ui/icons/Delete"; import DeleteIcon from "@material-ui/icons/Delete";
import ScheduleIcon from "@material-ui/icons/Schedule"; import ScheduleIcon from "@material-ui/icons/Schedule";
const menu = [ const menu = [
{ text: "پسند", icon: FavoriteIcon, onClick: () => {} }, { text: window.t("پسند"), icon: FavoriteIcon, onClick: () => {} },
{ text: "تبادل نظر", icon: TextsmsIcon, onClick: () => {} }, { text: window.t("تبادل نظر"), icon: TextsmsIcon, onClick: () => {} },
{ text: "پاسخ", icon: ReplyIcon, onClick: () => {} }, { text: window.t("پاسخ"), icon: ReplyIcon, onClick: () => {} },
{ text: "باز ارسال", icon: ForwardIcon, onClick: () => {} }, { text: window.t("باز ارسال"), icon: ForwardIcon, onClick: () => {} },
]; ];
const selfMenu = [ const selfMenu = [
{ text: "باز ارسال", icon: ForwardIcon, onClick: () => {} }, { text: window.t("باز ارسال"), icon: ForwardIcon, onClick: () => {} },
{ text: "ویرایش", icon: EditIcon, onClick: () => {} }, { text: window.t("ویرایش"), icon: EditIcon, onClick: () => {} },
{ text: "حذف", icon: DeleteIcon, onClick: () => {} }, { text: window.t(window.t("حذف")), icon: DeleteIcon, onClick: () => {} },
]; ];
export default class Comment extends Component { export default class Comment extends Component {
state = { messageMenu: null }; state = { messageMenu: null };

@ -8,7 +8,7 @@ export default class Message2D extends Component {
click(id) { click(id) {
if (this.props.isActive) { if (this.props.isActive) {
this.setState({ value: id }); this.setState({ value: id });
toast.success("ثبت شد"); toast.success(window.t("ثبت شد"));
this.props.action(); this.props.action();
} }
} }

@ -33,7 +33,7 @@ export default class RadioMessage extends Component {
{isActive && ( {isActive && (
<button <button
className="message-2d__submit" className="message-2d__submit"
onClick={() => toast.success("ثبت شد")} onClick={() => toast.success(window.t("ثبت شد"))}
> >
ثبت ثبت
<ArrowRightAltIcon <ArrowRightAltIcon

@ -19,15 +19,15 @@ import TextsmsIcon from "@material-ui/icons/Textsms";
import ScheduleIcon from "@material-ui/icons/Schedule"; import ScheduleIcon from "@material-ui/icons/Schedule";
const file = (fileId) => `${window.baseURL}/file/download/${fileId}`; const file = (fileId) => `${window.baseURL}/file/download/${fileId}`;
const menu = [ const menu = [
{ text: "پسند", icon: FavoriteIcon, onClick: () => {} }, { text: window.t("پسند"), icon: FavoriteIcon, onClick: () => {} },
{ text: "تبادل نظر", icon: TextsmsIcon, onClick: () => {} }, { text: window.t("تبادل نظر"), icon: TextsmsIcon, onClick: () => {} },
{ text: "پاسخ", icon: ReplyIcon, onClick: () => {} }, { text: window.t("پاسخ"), icon: ReplyIcon, onClick: () => {} },
{ text: "باز ارسال", icon: ForwardIcon, onClick: () => {} }, { text: window.t("باز ارسال"), icon: ForwardIcon, onClick: () => {} },
]; ];
const selfMenu = [ const selfMenu = [
{ text: "باز ارسال", icon: ForwardIcon, onClick: () => {} }, { text: window.t("باز ارسال"), icon: ForwardIcon, onClick: () => {} },
{ text: "ویرایش", icon: EditIcon, onClick: () => {} }, { text: window.t("ویرایش"), icon: EditIcon, onClick: () => {} },
{ text: "حذف", icon: DeleteIcon, onClick: () => {} }, { text: window.t(window.t("حذف")), icon: DeleteIcon, onClick: () => {} },
]; ];
export default class NormalMessage extends Component { export default class NormalMessage extends Component {
state = { messageMenu: null }; state = { messageMenu: null };

@ -171,7 +171,7 @@ class List extends Component {
createdAt: now.toString(), createdAt: now.toString(),
user: { user: {
id: "u1", id: "u1",
name: "علی", name: window.t("علی"),
}, },
}, },
], ],
@ -202,7 +202,7 @@ class List extends Component {
music: null, music: null,
user: { user: {
id: "u1", id: "u1",
name: "علی", name: window.t("علی"),
}, },
}, },
], ],
@ -234,7 +234,7 @@ class List extends Component {
music: null, music: null,
user: { user: {
id: "u1", id: "u1",
name: "علی", name: window.t("علی"),
}, },
}, },
], ],
@ -263,7 +263,7 @@ class List extends Component {
music: null, music: null,
user: { user: {
id: "u1", id: "u1",
name: "علی", name: window.t("علی"),
}, },
}, },
], ],
@ -292,7 +292,7 @@ class List extends Component {
music: music, music: music,
user: { user: {
id: "u1", id: "u1",
name: "علی", name: window.t("علی"),
}, },
}, },
], ],
@ -322,7 +322,7 @@ class List extends Component {
music: null, music: null,
user: { user: {
id: "u1", id: "u1",
name: "علی", name: window.t("علی"),
}, },
}, },
], ],

@ -75,12 +75,12 @@ export default class ChatInfo extends Component {
], ],
username: "MohammadReza", username: "MohammadReza",
educationalInfo: [ educationalInfo: [
"استاد علوم طبیعی پایه دوازدهم", window.t("استاد علوم طبیعی پایه دوازدهم"),
"کارشناس ارشد علوم و فنون از دانشگاه تهران", window.t("کارشناس ارشد علوم و فنون از دانشگاه تهران"),
], ],
name: "محسن محمدی", name: window.t("محسن محمدی"),
lastAct: "2 دقیقه پیش آنلاین بوده", lastAct: window.t("2 دقیقه پیش آنلاین بوده"),
bio: "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنام", bio: window.t("لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنام"),
}, },
}; };
} }
@ -136,7 +136,7 @@ export default class ChatInfo extends Component {
<img <img
className="desktop-contact-info__body--profileImage" className="desktop-contact-info__body--profileImage"
src={user.profileImages[0].src} src={user.profileImages[0].src}
alt="عکس کاربر" alt=window.t("عکس کاربر")
/> />
<h1 style={{ fontSize: fontSize.desktop.h1 }}>{user.name}</h1> <h1 style={{ fontSize: fontSize.desktop.h1 }}>{user.name}</h1>
<div className="desktop-contact-info__body--bio d-flex flex-column"> <div className="desktop-contact-info__body--bio d-flex flex-column">
@ -173,7 +173,7 @@ export default class ChatInfo extends Component {
<div> <div>
<h3 style={{ fontSize: fontSize.desktop.h3 }}>اعلانات</h3> <h3 style={{ fontSize: fontSize.desktop.h3 }}>اعلانات</h3>
<span style={{ fontSize: fontSize.desktop.span }}> <span style={{ fontSize: fontSize.desktop.span }}>
{alarms ? "روشن " : "خاموش"} {alarms ? "روشن " : window.t("خاموش")}
</span> </span>
</div> </div>
<AntSwitch <AntSwitch
@ -243,7 +243,7 @@ export default class ChatInfo extends Component {
<img <img
className="desktop-contact-info__body--profileImage" className="desktop-contact-info__body--profileImage"
src={user.profileImages[0].src} src={user.profileImages[0].src}
alt="عکس کاربر" alt=window.t("عکس کاربر")
/> />
<h1 style={{ fontSize: fontSize.mobile.h1 }}>{user.name}</h1> <h1 style={{ fontSize: fontSize.mobile.h1 }}>{user.name}</h1>
<div className="desktop-contact-info__body--bio d-flex flex-column"> <div className="desktop-contact-info__body--bio d-flex flex-column">
@ -280,7 +280,7 @@ export default class ChatInfo extends Component {
<div> <div>
<h3 style={{ fontSize: fontSize.mobile.h3 }}>اعلانات</h3> <h3 style={{ fontSize: fontSize.mobile.h3 }}>اعلانات</h3>
<span style={{ fontSize: fontSize.mobile.span }}> <span style={{ fontSize: fontSize.mobile.span }}>
{alarms ? "روشن " : "خاموش"} {alarms ? "روشن " : window.t("خاموش")}
</span> </span>
</div> </div>
<AntSwitch <AntSwitch

@ -16,19 +16,19 @@ const useStyles = makeStyles({
table: {}, table: {},
}); });
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
const maxMobileSize = 550; const maxMobileSize = 550;
const maxDesktopSize = 1250; const maxDesktopSize = 1250;
@ -158,7 +158,7 @@ const Item = (props) => {
<div className="mobile-cart-table-product__info d-flex flex-column p-1"> <div className="mobile-cart-table-product__info d-flex flex-column p-1">
<strong style={{ fontSize: fontSize.mobile.info.strong }}> <strong style={{ fontSize: fontSize.mobile.info.strong }}>
{`نسخه ${ {`نسخه ${
+data.product.productType === 1 ? "الکترونیکی" : "چاپی" +data.product.productType === 1 ? window.t("الکترونیکی") : window.t("چاپی")
} ${data.product.book.name} `} } ${data.product.book.name} `}
</strong> </strong>
<p style={{ fontSize: 12 }}> <p style={{ fontSize: 12 }}>
@ -166,7 +166,7 @@ const Item = (props) => {
</p> </p>
<span style={{ fontSize: 10 }}> <span style={{ fontSize: 10 }}>
همراه با: همراه با:
{data.product.book.items || "کد فعالسازی محتوای الکترونیک"} {data.product.book.items || window.t("کد فعالسازی محتوای الکترونیک")}
</span> </span>
</div> </div>
</div> </div>
@ -210,7 +210,7 @@ const Item = (props) => {
<span style={{ fontSize: 12 }}> <span style={{ fontSize: 12 }}>
{" "} {" "}
{`نسخه ${ {`نسخه ${
+data.product.productType === 1 ? "الکترونیکی" : "چاپی" +data.product.productType === 1 ? window.t("الکترونیکی") : window.t("چاپی")
}`} }`}
</span> </span>

@ -193,7 +193,7 @@ class Cart extends Component {
<div class="checkout__forms--right"> <div class="checkout__forms--right">
<Input <Input
name="recieverName" name="recieverName"
label={"نام و نام خانوادگی"} label={window.t("نام و نام خانوادگی")}
parent={this} parent={this}
defaultValue={factorInfo.recieverName} defaultValue={factorInfo.recieverName}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
@ -203,14 +203,14 @@ class Cart extends Component {
parent={this} parent={this}
options={this.props.provinceList} options={this.props.provinceList}
name="provinceId" name="provinceId"
label={"استان"} label={window.t("استان")}
selectedOptions={provinceId} selectedOptions={provinceId}
required required
/> />
<Input <Input
parent={this} parent={this}
name="recieverPostalCode" name="recieverPostalCode"
label={"کد پستی"} label={window.t("کد پستی")}
align="left" align="left"
maxLength={10} maxLength={10}
inputMode="numeric" inputMode="numeric"
@ -230,7 +230,7 @@ class Cart extends Component {
</div> </div>
<div class="checkout__forms--left"> <div class="checkout__forms--left">
<Input <Input
label={"شماره تماس"} label={window.t(window.t(window.t("شماره تماس")))}
name={"recieverPhone"} name={"recieverPhone"}
parent={this} parent={this}
defaultValue={factorInfo.recieverPhone} defaultValue={factorInfo.recieverPhone}
@ -241,7 +241,7 @@ class Cart extends Component {
parent={this} parent={this}
options={this.props.cityList} options={this.props.cityList}
name="cityId" name="cityId"
label={"شهرستان"} label={window.t("شهرستان")}
selectedOptions={cityId} selectedOptions={cityId}
required required
/> />
@ -249,7 +249,7 @@ class Cart extends Component {
<div style={{ height: "60px" }}> </div> <div style={{ height: "60px" }}> </div>
<TextArea <TextArea
parent={this} parent={this}
label={"توضیحات"} label={window.t("توضیحات")}
name="description" name="description"
defaultValue={factorInfo.description} defaultValue={factorInfo.description}
/> />
@ -369,14 +369,14 @@ class Cart extends Component {
<div class="checkout__forms--right2"> <div class="checkout__forms--right2">
<Input <Input
name="recieverName" name="recieverName"
label={"نام و نام خانوادگی"} label={window.t("نام و نام خانوادگی")}
parent={this} parent={this}
defaultValue={factorInfo.recieverName} defaultValue={factorInfo.recieverName}
onInput={onInput.persianOnly} onInput={onInput.persianOnly}
required required
/> />
<Input <Input
label={"شماره تماس"} label={window.t(window.t(window.t("شماره تماس")))}
name={"recieverPhone"} name={"recieverPhone"}
parent={this} parent={this}
defaultValue={factorInfo.recieverPhone} defaultValue={factorInfo.recieverPhone}
@ -386,7 +386,7 @@ class Cart extends Component {
parent={this} parent={this}
options={this.props.provinceList} options={this.props.provinceList}
name="provinceId" name="provinceId"
label={"استان"} label={window.t("استان")}
selectedOptions={provinceId} selectedOptions={provinceId}
required required
/> />
@ -394,14 +394,14 @@ class Cart extends Component {
parent={this} parent={this}
options={this.props.cityList} options={this.props.cityList}
name="cityId" name="cityId"
label={"شهرستان"} label={window.t("شهرستان")}
selectedOptions={cityId} selectedOptions={cityId}
required required
/> />
<Input <Input
parent={this} parent={this}
name="recieverPostalCode" name="recieverPostalCode"
label={"کد پستی"} label={window.t("کد پستی")}
align="left" align="left"
maxLength={10} maxLength={10}
inputMode="numeric" inputMode="numeric"
@ -421,7 +421,7 @@ class Cart extends Component {
<TextArea <TextArea
parent={this} parent={this}
label={"توضیحات"} label={window.t("توضیحات")}
name="description" name="description"
defaultValue={factorInfo.description} defaultValue={factorInfo.description}
/> />

@ -58,7 +58,7 @@ class Contact extends Component {
</div> </div>
<div className="contact__forms--left d-flex flex-column"> <div className="contact__forms--left d-flex flex-column">
<div className="contact__location d-flex align-items-center"> <div className="contact__location d-flex align-items-center">
<img src={location} alt="آدرس" className="m-1" /> <img src={location} alt=window.t("آدرس") className="m-1" />
<p style={{ fontSize: fontSize.desktop.p }}> <p style={{ fontSize: fontSize.desktop.p }}>
{contactData?.address || ""} {contactData?.address || ""}
</p> </p>
@ -71,13 +71,13 @@ class Contact extends Component {
<span style={{ fontSize: fontSize.desktop.span }}> <span style={{ fontSize: fontSize.desktop.span }}>
{contactData?.cellphone || ""} {contactData?.cellphone || ""}
</span> </span>
<img src={contact} alt="تماس" className="m-1" /> <img src={contact} alt=window.t("تماس") className="m-1" />
</div> </div>
<div className="d-flex align-items-center"> <div className="d-flex align-items-center">
<span style={{ fontSize: fontSize.desktop.span }}> <span style={{ fontSize: fontSize.desktop.span }}>
{contactData?.email || ""} {contactData?.email || ""}
</span> </span>
<img src={home} alt="خانه" className="m-1" /> <img src={home} alt=window.t(window.t(window.t("خانه"))) className="m-1" />
</div> </div>
</div> </div>
<div className="contact__map d-flex align-items-center mt-3"> <div className="contact__map d-flex align-items-center mt-3">
@ -106,7 +106,7 @@ class Contact extends Component {
<Support /> <Support />
<div className="mobile-contact__address d-flex flex-column"> <div className="mobile-contact__address d-flex flex-column">
<div className="mobile-contact__address--location d-flex align-items-center"> <div className="mobile-contact__address--location d-flex align-items-center">
<img src={location} alt="آدرس" className="m-1" /> <img src={location} alt=window.t("آدرس") className="m-1" />
<p style={{ fontSize: fontSize.mobile.p }}> <p style={{ fontSize: fontSize.mobile.p }}>
{contactData?.address || ""}{" "} {contactData?.address || ""}{" "}
</p> </p>
@ -119,13 +119,13 @@ class Contact extends Component {
<span style={{ fontSize: fontSize.mobile.span }}> <span style={{ fontSize: fontSize.mobile.span }}>
{contactData?.cellphone || ""}{" "} {contactData?.cellphone || ""}{" "}
</span> </span>
<img src={contact} alt="تماس" className="m-1" /> <img src={contact} alt=window.t("تماس") className="m-1" />
</div> </div>
<div className="d-flex align-items-center"> <div className="d-flex align-items-center">
<span style={{ fontSize: fontSize.mobile.span }}> <span style={{ fontSize: fontSize.mobile.span }}>
{contactData?.email || ""} {contactData?.email || ""}
</span> </span>
<img src={home} alt="خانه" className="m-1" /> <img src={home} alt=window.t(window.t(window.t("خانه"))) className="m-1" />
</div> </div>
</div> </div>
<div className="mobile-contact__address--map d-flex align-items-center mt-3"> <div className="mobile-contact__address--map d-flex align-items-center mt-3">

@ -16,19 +16,19 @@ const fontSize = {
}, },
}; };
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
export default class Item extends Component { export default class Item extends Component {
render() { render() {

@ -45,7 +45,7 @@ class AR extends Component {
> >
<img <img
src="https://dnvn.ir/api/v1/file/1851" src="https://dnvn.ir/api/v1/file/1851"
alt="واقعیت افزوده" alt=window.t(window.t("واقعیت افزوده"))
width="150" width="150"
/> />
</div> </div>

@ -99,7 +99,7 @@ class Faq extends Component {
<div className="faq__header--search d-flex align-items-center"> <div className="faq__header--search d-flex align-items-center">
<input <input
type="search" type="search"
placeholder="دنبال چه چیزی برات باشیم؟" placeholder=window.t("دنبال چه چیزی برات باشیم؟")
onChange={(e) => this.handleSearch(e.target.value)} onChange={(e) => this.handleSearch(e.target.value)}
/> />
<button <button
@ -150,7 +150,7 @@ class Faq extends Component {
</h1> </h1>
<input <input
type="search" type="search"
placeholder="دنبال چه چیزی برات باشیم؟" placeholder=window.t("دنبال چه چیزی برات باشیم؟")
onChange={(e) => this.handleSearch(e.target.value)} onChange={(e) => this.handleSearch(e.target.value)}
/> />
<button type="submit">جستجو</button> <button type="submit">جستجو</button>

@ -22,7 +22,7 @@ export default class Footer extends Component {
آموزش و پرورش کشور ایجاد کنیم. آموزش و پرورش کشور ایجاد کنیم.
</p> </p>
<div className="footer__location d-flex align-items-center mt-2"> <div className="footer__location d-flex align-items-center mt-2">
<img src={location} alt="آدرس" className="m-1" /> <img src={location} alt=window.t("آدرس") className="m-1" />
<p>آدرس: تهران، میدان فردوسی، خیابان موسوی، پلاک ۳۰</p> <p>آدرس: تهران، میدان فردوسی، خیابان موسوی، پلاک ۳۰</p>
</div> </div>
<div <div
@ -40,7 +40,7 @@ export default class Footer extends Component {
58795 58795
</a> </a>
<img src={contact} alt="تماس" className="m-1" /> <img src={contact} alt=window.t("تماس") className="m-1" />
</div> </div>
{/* <div {/* <div
className="d-flex align-items-center" className="d-flex align-items-center"
@ -54,11 +54,11 @@ export default class Footer extends Component {
> >
021-88814673 021-88814673
</a> </a>
<img src={contact} alt="تماس" className="m-1" /> <img src={contact} alt=window.t("تماس") className="m-1" />
</div> */} </div> */}
<div className="d-flex align-items-center"> <div className="d-flex align-items-center">
<span>Info@Danovin.ir</span> <span>Info@Danovin.ir</span>
<img src={home} alt="خانه" className="m-1" /> <img src={home} alt=window.t(window.t(window.t("خانه"))) className="m-1" />
</div> </div>
</div> </div>
</div> </div>
@ -103,7 +103,7 @@ export default class Footer extends Component {
کاربردی می باشد، کتابهای زیادی در شصت و سه{" "} کاربردی می باشد، کتابهای زیادی در شصت و سه{" "}
</p> </p>
<div className="mobile-footer__location d-flex align-items-center mt-2"> <div className="mobile-footer__location d-flex align-items-center mt-2">
<img src={location} alt="آدرس" className="m-1" /> <img src={location} alt=window.t("آدرس") className="m-1" />
<p> <p>
تهران خیابان انقلاب اسلامی بن بست سروش پلاک 2 طبقه چهار تهران خیابان انقلاب اسلامی بن بست سروش پلاک 2 طبقه چهار
</p> </p>
@ -114,11 +114,11 @@ export default class Footer extends Component {
> >
<div className="d-flex align-items-center"> <div className="d-flex align-items-center">
<span>02163462405</span> <span>02163462405</span>
<img src={contact} alt="تماس" className="m-1" /> <img src={contact} alt=window.t("تماس") className="m-1" />
</div> </div>
<div className="d-flex align-items-center"> <div className="d-flex align-items-center">
<span>Info@Danovin.ir</span> <span>Info@Danovin.ir</span>
<img src={home} alt="خانه" className="m-1" /> <img src={home} alt=window.t(window.t(window.t("خانه"))) className="m-1" />
</div> </div>
</div> </div>
</div> </div>
@ -156,10 +156,10 @@ export default class Footer extends Component {
Footer.defaultProps = { Footer.defaultProps = {
fastAccess: [ fastAccess: [
{ name: "صفحه اصلی", link: "/" }, { name: window.t("صفحه اصلی"), link: "/" },
{ name: "فروشگاه", link: "/shop" }, { name: window.t("فروشگاه"), link: "/shop" },
{ name: "سوالات متداول", link: "/faq" }, { name: window.t("سوالات متداول"), link: "/faq" },
{ name: "درباره ما", link: "/about" }, { name: window.t("درباره ما"), link: "/about" },
{ name: "تماس با ما", link: "/call" }, { name: window.t("تماس با ما"), link: "/call" },
], ],
}; };

@ -42,7 +42,7 @@ const Item = (props) => {
}}> }}>
<img <img
src={props.data.image} src={props.data.image}
alt="عکس" alt=window.t("عکس")
style={{ style={{
width: `${props.data.width}%`, width: `${props.data.width}%`,
height: "100%", height: "100%",

@ -20,7 +20,7 @@ export default class HomeScroll extends Component {
</div> </div>
<div className="mobile-home-scroll__header--more d-flex"> <div className="mobile-home-scroll__header--more d-flex">
<span>{moreText}</span> <span>{moreText}</span>
<img src={dropdown} alt="فلش" /> <img src={dropdown} alt=window.t("فلش") />
</div> </div>
</div> </div>
<div className="mobile-home-scroll__list d-flex"> <div className="mobile-home-scroll__list d-flex">

@ -56,7 +56,7 @@ export default function CustomizedSelects(props) {
filters: { filters: {
...parent.state.filters, ...parent.state.filters,
[name]: [name]:
e.target.value === "پایه تحصیلی" ? [] : [e.target.value], e.target.value === window.t(window.t("پایه تحصیلی")) ? [] : [e.target.value],
}, },
}) })
} }

@ -28,7 +28,7 @@ class HomeSearch extends Component {
return window.innerWidth > 1000 ? ( return window.innerWidth > 1000 ? (
<div className="home-search d-flex"> <div className="home-search d-flex">
<input <input
placeholder="جستجو در عناوین کتاب ..." placeholder=window.t("جستجو در عناوین کتاب ...")
className="home-search__input d-flex" className="home-search__input d-flex"
type="text" type="text"
name="searchBox" name="searchBox"
@ -40,7 +40,7 @@ class HomeSearch extends Component {
/> />
<div className="home-search__select"> <div className="home-search__select">
<Select options={levels} name="levels" parent={this} /> <Select options={levels} name="levels" parent={this} />
{/* <img src={dropdown} alt="فلش" style={{ position: "relative" }} /> */} {/* <img src={dropdown} alt=window.t("فلش") style={{ position: "relative" }} /> */}
</div> </div>
<button className="home-search__submit">جستجو</button> <button className="home-search__submit">جستجو</button>
</div> </div>
@ -49,13 +49,13 @@ class HomeSearch extends Component {
<div className="home-mobile-search d-flex"> <div className="home-mobile-search d-flex">
<div className="home-mobile-search__select" style={{ width: "100%" }}> <div className="home-mobile-search__select" style={{ width: "100%" }}>
<Select options={levels} name="levels" parent={this} /> <Select options={levels} name="levels" parent={this} />
<img src={dropdown} alt="فلش" /> <img src={dropdown} alt=window.t("فلش") />
</div> </div>
</div> </div>
<div className="home-mobile-search "> <div className="home-mobile-search ">
<input <input
ref="input" ref="input"
placeholder="نام یک کتاب را جستجو کنید" placeholder=window.t("نام یک کتاب را جستجو کنید")
className="home-mobile-search__input " className="home-mobile-search__input "
type="text" type="text"
name="searchBox" name="searchBox"

@ -18,10 +18,10 @@ const fontSize = {
}; };
const colors = [ const colors = [
{ name: "علمی تخیلی", color: "red" }, { name: window.t("علمی تخیلی"), color: "red" },
{ name: "سیاسی", color: "blue" }, { name: window.t("سیاسی"), color: "blue" },
{ name: "تاریخی", color: "orange" }, { name: window.t("تاریخی"), color: "orange" },
{ name: "ورزشی", color: "yellow" }, { name: window.t("ورزشی"), color: "yellow" },
]; ];
export default class Simple extends Component { export default class Simple extends Component {
render() { render() {
@ -132,7 +132,7 @@ export default class Simple extends Component {
</div> </div>
</div> </div>
<Link to={`/blogs/${data.id}`}> <Link to={`/blogs/${data.id}`}>
{data.buttonText || "ادامه مطلب"} {data.buttonText || window.t(window.t("ادامه مطلب"))}
</Link> </Link>
</div> </div>
<span <span

@ -34,7 +34,7 @@ const SimpleHeader = (props) => {
className="home-scroll__header--more d-flex align-items-center" className="home-scroll__header--more d-flex align-items-center"
> >
<span style={{ fontSize: fontSize.desktop.h1 }}>بیشتر</span> <span style={{ fontSize: fontSize.desktop.h1 }}>بیشتر</span>
<img src={dropdown} alt="فلش" /> <img src={dropdown} alt=window.t("فلش") />
</Link> </Link>
) : null} ) : null}
</div> </div>
@ -51,7 +51,7 @@ const SimpleHeader = (props) => {
className="mobile-home-scroll__header--more d-flex align-items-center" className="mobile-home-scroll__header--more d-flex align-items-center"
> >
<span>بیشتر</span> <span>بیشتر</span>
<img src={dropdown} alt="فلش" /> <img src={dropdown} alt=window.t("فلش") />
</Link> </Link>
) : null} */} ) : null} */}
</div> </div>
@ -74,7 +74,7 @@ const TabHeader = (props) => {
className="home-scroll__header--more d-flex align-items-center" className="home-scroll__header--more d-flex align-items-center"
> >
<span style={{ fontSize: fontSize.desktop.h1 }}>بیشتر</span> <span style={{ fontSize: fontSize.desktop.h1 }}>بیشتر</span>
<img src={dropdown} alt="فلش" /> <img src={dropdown} alt=window.t("فلش") />
</Link> */} </Link> */}
</div> </div>
) : null} ) : null}
@ -86,7 +86,7 @@ const TabHeader = (props) => {
</div> </div>
{/* <div className="mobile-home-scroll__header--more d-flex align-items-center"> {/* <div className="mobile-home-scroll__header--more d-flex align-items-center">
<span>بیشتر</span> <span>بیشتر</span>
<img src={dropdown} alt="فلش" /> <img src={dropdown} alt=window.t("فلش") />
</div> */} </div> */}
</div> </div>
) : null} ) : null}

@ -53,7 +53,7 @@ const Item = (props) => {
> >
<img <img
src={`https://dnvn.ir/api/v1/file/${data.fileId}`} src={`https://dnvn.ir/api/v1/file/${data.fileId}`}
alt={"عکس محصول"} alt={window.t("عکس محصول")}
/> />
</div> </div>
); );

@ -87,7 +87,7 @@ const Item = (props) => {
</div> </div>
<img <img
src={`https://dnvn.ir/api/v1/file/${props.data.fileId}`} src={`https://dnvn.ir/api/v1/file/${props.data.fileId}`}
alt="عکس" alt=window.t("عکس")
/> />
</div> </div>
) : ( ) : (
@ -100,7 +100,7 @@ const Item = (props) => {
> >
<img <img
src={`https://dnvn.ir/api/v1/file/${props.data.fileId}`} src={`https://dnvn.ir/api/v1/file/${props.data.fileId}`}
alt="عکس" alt=window.t("عکس")
style={{ float: "left" }} style={{ float: "left" }}
/> />
<div className="d-flex flex-column"> <div className="d-flex flex-column">

@ -16,8 +16,8 @@ class Membership extends Component {
<p>مشخصات خودت رو وارد کنید و امتیاز هدیه بگیرید</p> <p>مشخصات خودت رو وارد کنید و امتیاز هدیه بگیرید</p>
</div> </div>
<div className="d-flex"> <div className="d-flex">
<Input label={"نام و نام خانوادگی"} name={"name"} /> <Input label={window.t("نام و نام خانوادگی")} name={"name"} />
<Input label={"شماره تماس"} name={"mobile"} /> <Input label={window.t(window.t(window.t("شماره تماس")))} name={"mobile"} />
<button className="membership__submit">ثبت </button> <button className="membership__submit">ثبت </button>
</div> </div>
</div> </div>
@ -35,7 +35,7 @@ class Membership extends Component {
<Input label={"نامونام خانوادگی"} name={"name"} /> <Input label={"نامونام خانوادگی"} name={"name"} />
</div> </div>
<div> <div>
<Input label={"شماره تماس"} name={"mobile"} /> <Input label={window.t(window.t(window.t("شماره تماس")))} name={"mobile"} />
</div> </div>
<button className="mobile-membership__submit">ثبت </button> <button className="mobile-membership__submit">ثبت </button>
</div> </div>

@ -36,7 +36,7 @@ class LaptopNavbar extends Component {
<nav className="laptop-navbar d-flex"> <nav className="laptop-navbar d-flex">
<div className="d-flex"> <div className="d-flex">
<Link to="/" className="laptop-navbar__logo"> <Link to="/" className="laptop-navbar__logo">
<img src={logo} alt="لوگو" /> <img src={logo} alt=window.t("لوگو") />
</Link> </Link>
<ul className="laptop-navbar__list d-flex"> <ul className="laptop-navbar__list d-flex">
{links.map((item, i) => ( {links.map((item, i) => (
@ -92,7 +92,7 @@ class LaptopNavbar extends Component {
width="20" width="20"
height="23" height="23"
src={basket} src={basket}
alt="سبد خرید" alt=window.t("سبد خرید")
style={{ marginRight: 5 }} style={{ marginRight: 5 }}
/> />
</Link> </Link>
@ -176,10 +176,10 @@ export default connect((state) => ({ status: state.user.status }), {
})(LaptopNavbar); })(LaptopNavbar);
LaptopNavbar.defaultProps = { LaptopNavbar.defaultProps = {
links: [ links: [
{ name: "صفحه اصلی", to: "/", page: "home" }, { name: window.t("صفحه اصلی"), to: "/", page: "home" },
{ name: "فروشگاه", to: "/products", page: "products" }, { name: window.t("فروشگاه"), to: "/products", page: "products" },
{ name: "سوالات متداول", to: "/faq", page: "faq" }, { name: window.t("سوالات متداول"), to: "/faq", page: "faq" },
{ name: "درباره ما", to: "/about", page: "about" }, { name: window.t("درباره ما"), to: "/about", page: "about" },
{ name: "پشتیبانی", to: "/contact", page: "contact" }, { name: window.t("پشتیبانی"), to: "/contact", page: "contact" },
], ],
}; };

@ -29,37 +29,37 @@ class NavbarDrawer extends Component {
const statusx = proxy.status(); const statusx = proxy.status();
this.links = [ this.links = [
{ {
name: "صفحه اصلی", name: window.t("صفحه اصلی"),
link: "/", link: "/",
icon: <img src={mobileHome} alt="صفحه اصلی" />, icon: <img src={mobileHome} alt=window.t("صفحه اصلی") />,
toast: "", toast: "",
message: "", message: "",
}, },
{ {
name: "ورود یا ثبت نام", name: "ورود یا ثبت نام",
link: "/auth", link: "/auth",
icon: <img src={mobileLogout} alt="کتابهای من" />, icon: <img src={mobileLogout} alt=window.t("کتابهای من") />,
toast: "", toast: "",
message: "", message: "",
}, },
{ {
name: "درباره ما", name: window.t("درباره ما"),
link: "/about", link: "/about",
icon: <img src={mobileBlog} alt="کتابهای من" />, icon: <img src={mobileBlog} alt=window.t("کتابهای من") />,
toast: "", toast: "",
message: "", message: "",
}, },
{ {
name: "فروشگاه", name: window.t("فروشگاه"),
link: "/products", link: "/products",
icon: <img src={mobileBlog} alt="کتابهای من" />, icon: <img src={mobileBlog} alt=window.t("کتابهای من") />,
toast: "", toast: "",
message: "", message: "",
}, },
{ {
name: "سبد خرید", name: window.t("سبد خرید"),
link: "/cart", link: "/cart",
icon: <img src={mobileBlog} alt="کتابهای من" />, icon: <img src={mobileBlog} alt=window.t("کتابهای من") />,
toast: "", toast: "",
message: "", message: "",
}, },
@ -71,9 +71,9 @@ class NavbarDrawer extends Component {
message: "", message: "",
}, },
{ {
name: "پشتیبانی", name: window.t("پشتیبانی"),
link: "/support", link: "/support",
icon: <img src={mobileDanger} alt="پشتیبانی" />, icon: <img src={mobileDanger} alt=window.t("پشتیبانی") />,
toast: "", toast: "",
message: "", message: "",
// onClick: this.props.logout, // onClick: this.props.logout,
@ -81,37 +81,37 @@ class NavbarDrawer extends Component {
]; ];
this.links2 = [ this.links2 = [
{ {
name: "صفحه اصلی", name: window.t("صفحه اصلی"),
link: "/", link: "/",
icon: <img src={mobileHome} alt="صفحه اصلی" />, icon: <img src={mobileHome} alt=window.t("صفحه اصلی") />,
toast: "", toast: "",
message: "", message: "",
}, },
{ {
name: "واقعیت افزوده", name: window.t(window.t("واقعیت افزوده")),
link: "/ar", link: "/ar",
icon: <img src={mobileAr} alt="واقعیت افزوده" />, icon: <img src={mobileAr} alt=window.t(window.t("واقعیت افزوده")) />,
toast: "", toast: "",
message: "", message: "",
}, },
{ {
name: "بارکد خوان", name: window.t("بارکد خوان"),
link: "/qr-scan", link: "/qr-scan",
icon: <img src={qrcode} alt="بارکد خوان" />, icon: <img src={qrcode} alt=window.t("بارکد خوان") />,
toast: "", toast: "",
message: "", message: "",
}, },
{ {
name: "کتابهای من", name: window.t("کتابهای من"),
link: "/mybooks", link: "/mybooks",
icon: <img src={mobileBlog} alt="کتابهای من" />, icon: <img src={mobileBlog} alt=window.t("کتابهای من") />,
toast: "", toast: "",
message: "", message: "",
}, },
{ {
name: "سبد خرید", name: window.t("سبد خرید"),
link: "/cart", link: "/cart",
icon: <img src={mobileBasket} alt="فروشگاه" />, icon: <img src={mobileBasket} alt=window.t("فروشگاه") />,
toast: "", toast: "",
message: "", message: "",
}, },
@ -123,31 +123,31 @@ class NavbarDrawer extends Component {
message: "", message: "",
}, },
{ {
name: "دانوینیها", name: window.t("دانوینیها"),
link: "/", link: "/",
icon: <img src={mobileProfile} alt="دانوینیها" />, icon: <img src={mobileProfile} alt=window.t("دانوینیها") />,
toast: "به زودی این بخش فعال می شود", toast: window.t("به زودی این بخش فعال می شود"),
message: "به زودی", message: "به زودی",
}, },
{ {
name: "پشتیبانی", name: window.t("پشتیبانی"),
link: "/support", link: "/support",
icon: <img src={mobileDanger} alt="پشتیبانی" />, icon: <img src={mobileDanger} alt=window.t("پشتیبانی") />,
toast: "", toast: "",
message: "", message: "",
// onClick: this.props.logout, // onClick: this.props.logout,
}, },
{ {
name: "ویرایش مشخصات", name: window.t(window.t("ویرایش مشخصات")),
link: "/profile", link: "/profile",
icon: <img src={mobileMail} alt="ویرایش مشخصات" />, icon: <img src={mobileMail} alt=window.t(window.t("ویرایش مشخصات")) />,
toast: "", toast: "",
// message: "4 پیام", // message: "4 پیام",
}, },
{ {
name: "بروز رسانی", name: window.t("بروز رسانی"),
link: "/", link: "/",
icon: <img src={mobileLogout} alt="خروج" />, icon: <img src={mobileLogout} alt=window.t(window.t(window.t("خروج"))) />,
toast: "", toast: "",
message: "", message: "",
onClick: () => { onClick: () => {
@ -155,9 +155,9 @@ class NavbarDrawer extends Component {
}, },
}, },
{ {
name: "خروج", name: window.t(window.t(window.t("خروج"))),
link: "/auth", link: "/auth",
icon: <img src={mobileLogout} alt="خروج" />, icon: <img src={mobileLogout} alt=window.t(window.t(window.t("خروج"))) />,
toast: "", toast: "",
message: "", message: "",
onClick: () => { onClick: () => {

@ -18,7 +18,7 @@ function BackButton({ children }) {
let history = useHistory(); let history = useHistory();
return ( return (
<div type="button" onClick={() => history.goBack()}> <div type="button" onClick={() => history.goBack()}>
<img src={back} alt="بازگشت" /> <img src={back} alt=window.t("بازگشت") />
</div> </div>
); );
} }
@ -82,10 +82,10 @@ export default function MobileNavbar(props) {
style={{ marginTop: 10 }} style={{ marginTop: 10 }}
onClick={toggleDrawer("right", true)} onClick={toggleDrawer("right", true)}
> >
<img src={hamburger} alt="منو" /> <img src={hamburger} alt=window.t("منو") />
</div> </div>
<Link to="/" className="mobile-navbar__logo2" style={{}}> <Link to="/" className="mobile-navbar__logo2" style={{}}>
<img src={logo} alt="لوگو" className="logo" /> <img src={logo} alt=window.t("لوگو") className="logo" />
</Link> </Link>
</div> </div>
<div className="mobile-navbar__left d-flex" style={{ marginLeft: 10 }}> <div className="mobile-navbar__left d-flex" style={{ marginLeft: 10 }}>
@ -115,23 +115,23 @@ export default function MobileNavbar(props) {
// style={{ transform: page !== "home" ? "translateX(-29px)" : "none" }} // style={{ transform: page !== "home" ? "translateX(-29px)" : "none" }}
> >
<Link to="/"> <Link to="/">
<img src={logo} alt="لوگو" /> <img src={logo} alt=window.t("لوگو") />
</Link> </Link>
</div> */} </div> */}
<div <div
className="mobile-navbar__menu" className="mobile-navbar__menu"
onClick={toggleDrawer("right", true)} onClick={toggleDrawer("right", true)}
> >
<img src={hamburger} alt="منو" /> <img src={hamburger} alt=window.t("منو") />
<Link to="/"> <Link to="/">
<img src={logo} alt="لوگو" className="logo" /> <img src={logo} alt=window.t("لوگو") className="logo" />
</Link> </Link>
</div> </div>
<div className="mobile-navbar__left"> <div className="mobile-navbar__left">
{page === "home" || page === "download" ? ( {page === "home" || page === "download" ? (
<Link to={"/products"}> <Link to={"/products"}>
<img src={search} alt="جستجو" /> <img src={search} alt=window.t(window.t("جستجو")) />
</Link> </Link>
) : ( ) : (
<div className="d-flex align-items-center"> <div className="d-flex align-items-center">
@ -139,7 +139,7 @@ export default function MobileNavbar(props) {
window.location.pathname !== "/mybooks" && window.location.pathname !== "/mybooks" &&
window.location.pathname !== "/profile" && ( window.location.pathname !== "/profile" && (
<Link to={"/products"}> <Link to={"/products"}>
<img src={search} alt="جستجو" /> <img src={search} alt=window.t(window.t("جستجو")) />
</Link> </Link>
)} )}
{window.location.pathname !== "/qr-scan" && {window.location.pathname !== "/qr-scan" &&

@ -6,19 +6,19 @@ import moment from "jalali-moment";
import "./index.scss"; import "./index.scss";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
class MyBooks extends Component { class MyBooks extends Component {
componentDidMount() { componentDidMount() {

@ -125,7 +125,7 @@ const Item = (props) => {
<div className="mobile-products-product d-flex flex-column"> <div className="mobile-products-product d-flex flex-column">
<img <img
src={`https://dnvn.ir/api/v1/file/${data.product.book.fileIds}`} src={`https://dnvn.ir/api/v1/file/${data.product.book.fileIds}`}
alt={"عکس مجصول"} alt={window.t("عکس مجصول")}
/> />
<div className="mobile-products-product__info d-flex flex-column"> <div className="mobile-products-product__info d-flex flex-column">
<h1 style={{ fontSize: fontSize.mobile.h1 }}> <h1 style={{ fontSize: fontSize.mobile.h1 }}>
@ -140,7 +140,7 @@ const Item = (props) => {
<div className="products-product d-flex flex-column"> <div className="products-product d-flex flex-column">
<img <img
src={`https://dnvn.ir/api/v1/file/${data.product.book.fileIds}`} src={`https://dnvn.ir/api/v1/file/${data.product.book.fileIds}`}
alt={"عکس مجصول"} alt={window.t("عکس مجصول")}
/> />
<div className="mobile-products-product__info d-flex flex-column"> <div className="mobile-products-product__info d-flex flex-column">
<h1 style={{ fontSize: fontSize.desktop.h1 }}> <h1 style={{ fontSize: fontSize.desktop.h1 }}>

@ -41,8 +41,8 @@ class NewProfile extends Component {
username: "", username: "",
address: "", address: "",
email: "", email: "",
gender: "دختر", gender: window.t("دختر"),
userRoleId: "دانش آموز", userRoleId: window.t("دانش آموز"),
nationalId: "", nationalId: "",
provinceId: "", provinceId: "",
phone: "", phone: "",
@ -67,7 +67,7 @@ class NewProfile extends Component {
} }
onChange = (name, value) => { onChange = (name, value) => {
if (name === "gardeId" && this.state.userRoleId === "معلم") { if (name === "gardeId" && this.state.userRoleId === window.t("معلم")) {
this.setState((prevState) => ({ this.setState((prevState) => ({
gradeId: [...prevState.gradeId, value], gradeId: [...prevState.gradeId, value],
})); }));
@ -187,19 +187,19 @@ class NewProfile extends Component {
render() { render() {
const { profile } = this.props; const { profile } = this.props;
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
return ( return (
<> <>
@ -221,7 +221,7 @@ class NewProfile extends Component {
<div className="mb-2"> <div className="mb-2">
<Input <Input
name="firstName" name="firstName"
label="نام" label=window.t("نام")
parent={this} parent={this}
defaultValue={profile} defaultValue={profile}
/> />
@ -229,7 +229,7 @@ class NewProfile extends Component {
<div className="mb-2"> <div className="mb-2">
<Input <Input
name="lastName" name="lastName"
label="نام خانوادگی" label=window.t("نام خانوادگی")
parent={this} parent={this}
defaultValue={profile} defaultValue={profile}
/> />
@ -237,7 +237,7 @@ class NewProfile extends Component {
<div className="mb-2"> <div className="mb-2">
<Input <Input
name="username" name="username"
label="نام کاربری" label=window.t(window.t("نام کاربری"))
parent={this} parent={this}
defaultValue={profile} defaultValue={profile}
align="left" align="left"
@ -246,7 +246,7 @@ class NewProfile extends Component {
<div className="mb-2"> <div className="mb-2">
<Gender <Gender
options={["دختر", "پسر"]} options={[window.t("دختر"), window.t("پسر")]}
parent={this} parent={this}
name="gender" name="gender"
selectedOption={this.state.gender} selectedOption={this.state.gender}
@ -255,7 +255,7 @@ class NewProfile extends Component {
<div className="mb-2"> <div className="mb-2">
<Input <Input
name="nationalId" name="nationalId"
label="کد ملی" label=window.t("کد ملی")
parent={this} parent={this}
align="left" align="left"
defaultValue={profile} defaultValue={profile}
@ -272,49 +272,49 @@ class NewProfile extends Component {
<div className="mb-2" style={{ minWidth: "100%" }}> <div className="mb-2" style={{ minWidth: "100%" }}>
<Gender <Gender
parent={this} parent={this}
options={["معلم", "دانش آموز"]} options={[window.t("معلم"), window.t("دانش آموز")]}
name="userRoleId" name="userRoleId"
label={"عنوان"} label={window.t("عنوان")}
selectedOption={this.state.userRoleId} selectedOption={this.state.userRoleId}
/> />
</div> </div>
{this.state.userRoleId === "دانش آموز" ? ( {this.state.userRoleId === window.t("دانش آموز") ? (
<div className="mb-2"> <div className="mb-2">
<Select <Select
parent={this} parent={this}
options={grades} options={grades}
name="gradeId" name="gradeId"
label={"پایه تحصیلی"} label={window.t(window.t("پایه تحصیلی"))}
/> />
</div> </div>
) : null} ) : null}
{this.state.userRoleId === "معلم" ? ( {this.state.userRoleId === window.t("معلم") ? (
<div className="mb-2"> <div className="mb-2">
<MultipleSelector <MultipleSelector
parent={this} parent={this}
options={grades} options={grades}
name="gradeId" name="gradeId"
label={"پایه تحصیلی"} label={window.t(window.t("پایه تحصیلی"))}
selectedOptions={this.state.gradeId} selectedOptions={this.state.gradeId}
/> />
</div> </div>
) : null} ) : null}
{this.state.userRoleId === "دانش آموز" && {this.state.userRoleId === window.t("دانش آموز") &&
this.state.gradeId > 9 ? ( this.state.gradeId > 9 ? (
<div className="mb-2"> <div className="mb-2">
<Select <Select
parent={this} parent={this}
options={[ options={[
"ریاضی", window.t("ریاضی"),
"تجربی", window.t("تجربی"),
"انسانی", window.t("انسانی"),
"فنی حرفهای", window.t("فنی حرفهای"),
"کاردانش", window.t("کاردانش"),
"معارف", window.t("معارف"),
]} ]}
name="field" name="field"
label={"رشته تحصیلی"} label={window.t("رشته تحصیلی")}
selectedOptions={this.state.gradeId} selectedOptions={this.state.gradeId}
/> />
</div> </div>
@ -325,7 +325,7 @@ class NewProfile extends Component {
parent={this} parent={this}
options={["karaj", "tehran"]} options={["karaj", "tehran"]}
name="province" name="province"
label={"استان"} label={window.t("استان")}
/> />
</div> </div>
<div className="mb-2"> <div className="mb-2">
@ -333,7 +333,7 @@ class NewProfile extends Component {
parent={this} parent={this}
options={["karaj", "tehran"]} options={["karaj", "tehran"]}
name="city" name="city"
label={"شهرستان"} label={window.t("شهرستان")}
/> />
</div> </div>
<div className="mb-2"> <div className="mb-2">
@ -341,25 +341,25 @@ class NewProfile extends Component {
parent={this} parent={this}
options={["chaharbagh", "mahalat"]} options={["chaharbagh", "mahalat"]}
name="zoneId" name="zoneId"
label={"شهر/روستا"} label={window.t("شهر/روستا")}
/> />
</div> </div>
{this.state.userRoleId === "دانش آموز" ? ( {this.state.userRoleId === window.t("دانش آموز") ? (
<div className="mb-2"> <div className="mb-2">
<Input <Input
parent={this} parent={this}
name="schoolId" name="schoolId"
label={"نام مدرسه"} label={window.t("نام مدرسه")}
defaultValue={profile} defaultValue={profile}
/> />
</div> </div>
) : null} ) : null}
{this.state.userRoleId === "معلم" ? ( {this.state.userRoleId === window.t("معلم") ? (
<div className="mb-2"> <div className="mb-2">
<Input <Input
parent={this} parent={this}
name="schoolId" name="schoolId"
label={"محل تدریس"} label={window.t("محل تدریس")}
defaultValue={profile} defaultValue={profile}
/> />
</div> </div>
@ -368,7 +368,7 @@ class NewProfile extends Component {
<Input <Input
parent={this} parent={this}
name="postalCode" name="postalCode"
label={"کد پستی"} label={window.t("کد پستی")}
align="left" align="left"
defaultValue={profile} defaultValue={profile}
/> />
@ -376,7 +376,7 @@ class NewProfile extends Component {
<div className="mb-2"> <div className="mb-2">
<TextArea <TextArea
parent={this} parent={this}
label={"آدرس محل سکونت"} label={window.t("آدرس محل سکونت")}
name="address" name="address"
/> />
</div> </div>
@ -398,31 +398,31 @@ class NewProfile extends Component {
<Upload name="file" parent={this} /> <Upload name="file" parent={this} />
<Input <Input
name="firstName" name="firstName"
label="نام" label=window.t("نام")
parent={this} parent={this}
onInput={this.forcePersian} onInput={this.forcePersian}
/> />
<Input <Input
name="lastName" name="lastName"
label="نام خانوادگی" label=window.t("نام خانوادگی")
parent={this} parent={this}
onInput={this.forcePersian} onInput={this.forcePersian}
/> />
<Input <Input
name="username" name="username"
label="نام کاربری" label=window.t(window.t("نام کاربری"))
parent={this} parent={this}
align="left" align="left"
/> />
<Gender <Gender
options={["دختر", "پسر"]} options={[window.t("دختر"), window.t("پسر")]}
parent={this} parent={this}
name="gender" name="gender"
selectedOption={this.state.gender} selectedOption={this.state.gender}
/> />
<Input <Input
name="nationalId" name="nationalId"
label="کد ملی" label=window.t("کد ملی")
parent={this} parent={this}
align="left" align="left"
maxLength={10} maxLength={10}
@ -431,41 +431,41 @@ class NewProfile extends Component {
<Birthdate /> <Birthdate />
<Gender <Gender
parent={this} parent={this}
options={["معلم", "دانش آموز"]} options={[window.t("معلم"), window.t("دانش آموز")]}
name="userRoleId" name="userRoleId"
selectedOption={this.state.userRoleId} selectedOption={this.state.userRoleId}
/> />
{this.state.userRoleId === "دانش آموز" ? ( {this.state.userRoleId === window.t("دانش آموز") ? (
<Select <Select
parent={this} parent={this}
options={grades} options={grades}
name="gradeId" name="gradeId"
label={"پایه تحصیلی"} label={window.t(window.t("پایه تحصیلی"))}
/> />
) : null} ) : null}
{this.state.userRoleId === "معلم" ? ( {this.state.userRoleId === window.t("معلم") ? (
<MultipleSelector <MultipleSelector
parent={this} parent={this}
options={grades} options={grades}
name="gradeId" name="gradeId"
label={"پایه تحصیلی"} label={window.t(window.t("پایه تحصیلی"))}
selectedOptions={this.state.gradeId} selectedOptions={this.state.gradeId}
/> />
) : null} ) : null}
{this.state.userRoleId === "دانش آموز" && {this.state.userRoleId === window.t("دانش آموز") &&
Number(this.state.gradeId) > 9 ? ( Number(this.state.gradeId) > 9 ? (
<Select <Select
parent={this} parent={this}
options={[ options={[
"ریاضی", window.t("ریاضی"),
"تجربی", window.t("تجربی"),
"انسانی", window.t("انسانی"),
"فنی حرفهای", window.t("فنی حرفهای"),
"کاردانش", window.t("کاردانش"),
"معارف", window.t("معارف"),
]} ]}
name="field" name="field"
label={"رشته تحصیلی"} label={window.t("رشته تحصیلی")}
selectedOptions={this.state.gradeId} selectedOptions={this.state.gradeId}
/> />
) : null} ) : null}
@ -474,36 +474,36 @@ class NewProfile extends Component {
parent={this} parent={this}
options={["karaj", "tehran"]} options={["karaj", "tehran"]}
name="provinceId" name="provinceId"
label={"استان"} label={window.t("استان")}
/> />
<Select <Select
parent={this} parent={this}
options={["karaj", "tehran"]} options={["karaj", "tehran"]}
name="cityId" name="cityId"
label={"شهرستان"} label={window.t("شهرستان")}
/> />
<Select <Select
parent={this} parent={this}
options={["chaharbagh", "mahalat"]} options={["chaharbagh", "mahalat"]}
name="zoneId" name="zoneId"
label={"شهر/روستا"} label={window.t("شهر/روستا")}
/> />
{this.state.userRoleId === "دانش آموز" ? ( {this.state.userRoleId === window.t("دانش آموز") ? (
<Input parent={this} name="schoolId" label={"نام مدرسه"} /> <Input parent={this} name="schoolId" label={window.t("نام مدرسه")} />
) : null} ) : null}
{this.state.userRoleId === "معلم" ? ( {this.state.userRoleId === window.t("معلم") ? (
<Input parent={this} name="schoolId" label={"محل تدریس"} /> <Input parent={this} name="schoolId" label={window.t("محل تدریس")} />
) : null} ) : null}
{this.state.userRoleId === "معلم" ? ( {this.state.userRoleId === window.t("معلم") ? (
<Document parent={this} name="docFileIds" /> <Document parent={this} name="docFileIds" />
) : null} ) : null}
<Input <Input
parent={this} parent={this}
name="postalCode" name="postalCode"
label={"کد پستی"} label={window.t("کد پستی")}
align="left" align="left"
/> />
<TextArea parent={this} label={"آدرس محل سکونت"} name="address" /> <TextArea parent={this} label={window.t("آدرس محل سکونت")} name="address" />
<div className="mobile-auth-profile__footer d-flex justify-content-center"> <div className="mobile-auth-profile__footer d-flex justify-content-center">
<button onClick={() => this.onSubmit()}>ذخیره</button> <button onClick={() => this.onSubmit()}>ذخیره</button>
</div> </div>

@ -5,19 +5,19 @@ import { userFactor } from "~/Redux/actions";
import "./index.css"; import "./index.css";
import moment from "jalali-moment"; import moment from "jalali-moment";
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
class Orders extends Component { class Orders extends Component {
componentDidMount() { componentDidMount() {
@ -61,7 +61,7 @@ class Orders extends Component {
className="order-data-container-item-row1-order-status-text" className="order-data-container-item-row1-order-status-text"
> >
{ {
["پرداخت نشده", "در حال پردازش", "ارسال شد", "لغو شد"][ [window.t("پرداخت نشده"), window.t("در حال پردازش"), window.t(window.t("ارسال شد")), window.t("لغو شد")][
item.condition item.condition
] ]
} }

@ -107,7 +107,7 @@ function AddToCart(props) {
style={{ fontSize: fontSize.desktop.button, opacity: 0.3 }} style={{ fontSize: fontSize.desktop.button, opacity: 0.3 }}
className="product-addtocart__box--digitalButton" className="product-addtocart__box--digitalButton"
> >
{page === "digital" ? "کتاب چاپی" : "نسخه الکترونیک"} {page === "digital" ? "کتاب چاپی" : window.t("نسخه الکترونیک")}
<img src={ebook_blue} alt="" /> <img src={ebook_blue} alt="" />
</Link> </Link>
<button <button
@ -124,7 +124,7 @@ function AddToCart(props) {
count: 1, count: 1,
}); });
else { else {
toast.info("جهت ادامه فرآیند خرید وارد حساب خود شوید"); toast.info(window.t("جهت ادامه فرآیند خرید وارد حساب خود شوید"));
localStorage.setItem("afterLogin", window.location.pathname); localStorage.setItem("afterLogin", window.location.pathname);
localStorage.setItem( localStorage.setItem(
"pushToCart", "pushToCart",

@ -40,7 +40,7 @@ export default function Comment(props) {
className="comment__user" className="comment__user"
style={{ fontSize: fontSize.desktop.strong }} style={{ fontSize: fontSize.desktop.strong }}
> >
{comment.username || "کاربر میهمان"} {comment.username || window.t("کاربر میهمان")}
</strong> </strong>
<p className="comment__text" style={{ fontSize: fontSize.desktop.p }}> <p className="comment__text" style={{ fontSize: fontSize.desktop.p }}>
{comment.text} {comment.text}

@ -16,7 +16,7 @@ const Modal = (props) => {
<div className="modal__display"> <div className="modal__display">
{ {
displayed.type === 'image' ? displayed.type === 'image' ?
<img src={displayed.value} alt="عکس" /> : null <img src={displayed.value} alt=window.t("عکس") /> : null
} }
{ {
displayed.type === 'film' ? displayed.type === 'film' ?
@ -54,7 +54,7 @@ const Item = (props) => {
<div className="modal-carousel-item"> <div className="modal-carousel-item">
{ {
props.data.type === 'image' ? props.data.type === 'image' ?
<img src={props.data.value} alt="عکس" /> : null <img src={props.data.value} alt=window.t("عکس") /> : null
} }
{ {
props.data.type === 'film' ? props.data.type === 'film' ?

@ -19,7 +19,7 @@ export default function Gallery(props) {
{selectedMedia.type === "image" ? ( {selectedMedia.type === "image" ? (
<img <img
src={`https://dnvn.ir/api/v1/file/${selectedMedia.id}`} src={`https://dnvn.ir/api/v1/file/${selectedMedia.id}`}
alt={"عکس"} alt={window.t("عکس")}
/> />
) : null} ) : null}
{selectedMedia.type === "film" ? <Video /> : null} {selectedMedia.type === "film" ? <Video /> : null}
@ -88,7 +88,7 @@ const Item = (props) => {
className="product-gallery-item d-flex" className="product-gallery-item d-flex"
> >
{item.type === "image" ? ( {item.type === "image" ? (
<img src={`https://dnvn.ir/api/v1/file/${item.id}`} alt={"عکس"} /> <img src={`https://dnvn.ir/api/v1/file/${item.id}`} alt={window.t("عکس")} />
) : null} ) : null}
{item.type === "film" ? ( {item.type === "film" ? (
<Video fileId={`https://dnvn.ir/api/v1/file/${item.id}`} /> <Video fileId={`https://dnvn.ir/api/v1/file/${item.id}`} />

@ -74,7 +74,7 @@ function SimpleModal(props) {
کامنت خود را وارد کرده و دکمه ثبت را بزنید. کامنت خود را وارد کرده و دکمه ثبت را بزنید.
</h2> </h2>
<textarea <textarea
placeholder="متن پیام" placeholder=window.t("متن پیام")
name="description" name="description"
rows="5" rows="5"
onChange={(e) => setText(e.target.value)} onChange={(e) => setText(e.target.value)}

@ -30,19 +30,19 @@ import "./index.scss";
const maxDesktopSize = 1250; const maxDesktopSize = 1250;
const maxMobileSize = 550; const maxMobileSize = 550;
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
const fontSize = { const fontSize = {
desktop: { desktop: {
@ -64,7 +64,7 @@ function Addbutton({ page, info, pushToCart, userId }) {
} }
let productId = localStorage.getItem("pushToCart"); let productId = localStorage.getItem("pushToCart");
if (productId) { if (productId) {
toast.info("جهت ادامه فرآیند خرید وارد حساب خود شوید"); toast.info(window.t("جهت ادامه فرآیند خرید وارد حساب خود شوید"));
localStorage.removeItem("pushToCart"); localStorage.removeItem("pushToCart");
pushToCart({ pushToCart({
@ -85,7 +85,7 @@ function Addbutton({ page, info, pushToCart, userId }) {
count: 1, count: 1,
}); });
else { else {
toast.info("جهت ادامه فرآیند خرید وارد حساب خود شوید"); toast.info(window.t("جهت ادامه فرآیند خرید وارد حساب خود شوید"));
localStorage.setItem("afterLogin", window.location.pathname); localStorage.setItem("afterLogin", window.location.pathname);
localStorage.setItem( localStorage.setItem(
"pushToCart", "pushToCart",
@ -145,7 +145,7 @@ class Product extends Component {
<Info <Info
subTitle={`پایه ${grades[info.gradeId]}`} subTitle={`پایه ${grades[info.gradeId]}`}
title={`${info.name} ${grades[info.gradeId]}`} title={`${info.name} ${grades[info.gradeId]}`}
description={info.description || "توضیحات محصول خالیست"} description={info.description || window.t("توضیحات محصول خالیست")}
/> />
<AddToCart <AddToCart
@ -169,7 +169,7 @@ class Product extends Component {
</h3> </h3>
<button onClick={() => this.handleOpenComment()}> <button onClick={() => this.handleOpenComment()}>
ارسال نظر ارسال نظر
<img src={send_comment} alt="ارسال نظر" /> <img src={send_comment} alt=window.t("ارسال نظر") />
</button> </button>
</div> </div>
@ -217,7 +217,7 @@ class Product extends Component {
info.name info.name
} پایه ${grades[info.gradeId]}`}</h1> } پایه ${grades[info.gradeId]}`}</h1>
<h2 style={{ fontSize: fontSize.mobile.h2 }}> <h2 style={{ fontSize: fontSize.mobile.h2 }}>
{page !== "digital" ? "نسخه چاپی" : "نسخه الکترونیک"} {page !== "digital" ? window.t("نسخه چاپی") : window.t("نسخه الکترونیک")}
</h2> </h2>
<h3 style={{ fontSize: fontSize.mobile.h1 }}> <h3 style={{ fontSize: fontSize.mobile.h1 }}>
{page === "digital" {page === "digital"
@ -242,7 +242,7 @@ class Product extends Component {
className="mobile-product__header--digitalButton" className="mobile-product__header--digitalButton"
style={{ fontSize: fontSize.mobile.a, opacity: 0.3 }} style={{ fontSize: fontSize.mobile.a, opacity: 0.3 }}
> >
{page === "digital" ? "نسخه چاپی" : "نسخه الکترونیک"} {page === "digital" ? window.t("نسخه چاپی") : window.t("نسخه الکترونیک")}
</Link> </Link>
<Link <Link
to={ to={
@ -250,7 +250,7 @@ class Product extends Component {
} }
onClick={() => onClick={() =>
!info.sampleFileId !info.sampleFileId
? toast.info("برای این کتاب نمونهای درج نشده است.") ? toast.info(window.t("برای این کتاب نمونهای درج نشده است."))
: null : null
} }
className="mobile-product__header--purchase" className="mobile-product__header--purchase"
@ -271,7 +271,7 @@ class Product extends Component {
<div className="mobile-product__abstraction d-flex flex-column"> <div className="mobile-product__abstraction d-flex flex-column">
<h3 style={{ fontSize: fontSize.mobile.h3 }}>معرفی کتاب</h3> <h3 style={{ fontSize: fontSize.mobile.h3 }}>معرفی کتاب</h3>
<p style={{ fontSize: fontSize.mobile.p }}> <p style={{ fontSize: fontSize.mobile.p }}>
{info.description || "توضیحات محصول خالیست"} {info.description || window.t("توضیحات محصول خالیست")}
</p> </p>
</div> </div>
<div className="mobile-product__modules d-flex flex-column"> <div className="mobile-product__modules d-flex flex-column">
@ -299,7 +299,7 @@ class Product extends Component {
</h3> </h3>
<button onClick={() => this.handleOpenComment()}> <button onClick={() => this.handleOpenComment()}>
ارسال نظر ارسال نظر
<img src={send_comment} alt="ارسال نظر" /> <img src={send_comment} alt=window.t("ارسال نظر") />
</button> </button>
</div> </div>
<div className="mobile-product__comments--list d-flex"> <div className="mobile-product__comments--list d-flex">

@ -20,14 +20,14 @@ export default class Filtesrs extends React.Component {
name="subject" name="subject"
parent={parent} parent={parent}
data={parent.props.subjects} data={parent.props.subjects}
title="دسته بندی موضوعی" title=window.t("دسته بندی موضوعی")
theme="#D7FF17" theme="#D7FF17"
/> />
<TypicalFilters <TypicalFilters
name="level" name="level"
parent={parent} parent={parent}
data={parent.props.levels} data={parent.props.levels}
title="پایه تحصیلی" title=window.t(window.t("پایه تحصیلی"))
theme="#FF8917" theme="#FF8917"
/> />
</div> </div>

@ -10,19 +10,19 @@ import { connect } from "react-redux";
import { userProduct } from "~/Redux/actions"; import { userProduct } from "~/Redux/actions";
import "./index.scss"; import "./index.scss";
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
function Product(props) { function Product(props) {
@ -53,7 +53,7 @@ function Product(props) {
<img <img
className="pimg" className="pimg"
src={`https://dnvn.ir/api/v1/file/${product.fileIds}`} src={`https://dnvn.ir/api/v1/file/${product.fileIds}`}
alt={"عکس مجصول"} alt={window.t("عکس مجصول")}
/> />
<div className="mobile-products-product__info d-flex flex-column"> <div className="mobile-products-product__info d-flex flex-column">
<h1>{`${product.name} پایه ${grades[product.gradeId]}`}</h1> <h1>{`${product.name} پایه ${grades[product.gradeId]}`}</h1>
@ -157,7 +157,7 @@ function Product(props) {
count: 1, count: 1,
}); });
else { else {
toast.info("جهت ادامه فرآیند خرید وارد حساب خود شوید"); toast.info(window.t("جهت ادامه فرآیند خرید وارد حساب خود شوید"));
localStorage.setItem("afterLogin", window.location.pathname); localStorage.setItem("afterLogin", window.location.pathname);
localStorage.setItem("pushToCart", product.product[0].id); localStorage.setItem("pushToCart", product.product[0].id);
Navigate({ path: "/auth" }); Navigate({ path: "/auth" });

@ -48,9 +48,9 @@ export default function CustomizedSelects(props) {
id="demo-customized-select-native" id="demo-customized-select-native"
value={props.parent.state[props.name]} value={props.parent.state[props.name]}
onChange={(e) => onChange={(e) =>
e.target.value !== "نام کتاب" && e.target.value !== window.t("نام کتاب") &&
e.target.value !== "مرتب سازی" && e.target.value !== window.t("مرتب سازی") &&
e.target.value !== "پایه تحصیلی" e.target.value !== window.t(window.t("پایه تحصیلی"))
? props.parent.setState({ ? props.parent.setState({
selectedFilters: { selectedFilters: {
...props.parent.state.selectedFilters, ...props.parent.state.selectedFilters,

@ -54,7 +54,7 @@ class Products extends Component {
window.location.search.length window.location.search.length
) === "cart" ) === "cart"
) { ) {
toast.info("ابتدا یک محصول به سبد خریدتان اضافه کنید."); toast.info(window.t("ابتدا یک محصول به سبد خریدتان اضافه کنید."));
} }
} }
@ -92,10 +92,10 @@ class Products extends Component {
<input <input
type="search" type="search"
style={{ fontSize: 15 }} style={{ fontSize: 15 }}
placeholder={"جستجو"} placeholder={window.t(window.t("جستجو"))}
onChange={(e) => this.handleProductSearch(e.target.value)} onChange={(e) => this.handleProductSearch(e.target.value)}
/> />
<img src={navbarSearch} alt="جستجو" /> <img src={navbarSearch} alt=window.t(window.t("جستجو")) />
</div> </div>
<div className="mobile-products__filters d-flex"> <div className="mobile-products__filters d-flex">
<div className="d-flex"> <div className="d-flex">
@ -155,5 +155,5 @@ export default connect(
)(Products); )(Products);
Products.defaultProps = { Products.defaultProps = {
sortItems: ["پرفروش ترین", "جدیدترین"], sortItems: ["پرفروش ترین", window.t("جدیدترین")],
}; };

@ -55,7 +55,7 @@ export default function Dropdown(props) {
style={{ fontSize: fontSize.desktop.input }} style={{ fontSize: fontSize.desktop.input }}
onChange={(e) => handleSearch(e.target.value)} onChange={(e) => handleSearch(e.target.value)}
/> />
<img src={navbarSearch} alt="جستجو" /> <img src={navbarSearch} alt=window.t(window.t("جستجو")) />
</div> </div>
<ul> <ul>
{search {search
@ -70,10 +70,10 @@ export default function Dropdown(props) {
Dropdown.defaultProps = { Dropdown.defaultProps = {
subjects: [ subjects: [
{ id: 0, name: "مقدمه" }, { id: 0, name: window.t("مقدمه") },
{ id: 1, name: "سخنی با خوانندگان" }, { id: 1, name: window.t("سخنی با خوانندگان") },
{ id: 2, name: "آتشفشانها و اقیانوسها" }, { id: 2, name: window.t("آتشفشانها و اقیانوسها") },
{ id: 3, name: "نحوه جدایی صفحات کره" }, { id: 3, name: window.t("نحوه جدایی صفحات کره") },
], ],
}; };

@ -27,18 +27,18 @@ function Navigate({ path }) {
} }
const maxDesktopSize = 1250; const maxDesktopSize = 1250;
const grades = [ const grades = [
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
class QR extends Component { class QR extends Component {
state = { state = {
@ -224,7 +224,7 @@ class QR extends Component {
<div> <div>
<img <img
src={exit} src={exit}
alt="انصراف" alt=window.t("انصراف")
onClick={() => onClick={() =>
// this.props.logout({}) // this.props.logout({})
this.setState({ menu: !this.state.menu }) this.setState({ menu: !this.state.menu })

@ -5,18 +5,18 @@ import "./index.scss";
const grades = [ const grades = [
"0", "0",
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
export default function LastQR(props) { export default function LastQR(props) {

@ -45,7 +45,7 @@ class QRModal extends Component {
<div className="d-flex" style={{ justifyContent: "center" }}> <div className="d-flex" style={{ justifyContent: "center" }}>
<Input <Input
name="pageNumber" name="pageNumber"
// label="نام" // label=window.t("نام")
parent={this} parent={this}
defaultValue={pageNumber} defaultValue={pageNumber}
maxLength={3} maxLength={3}
@ -63,7 +63,7 @@ class QRModal extends Component {
"/qr?id=" + (pageNumber ? "oloom4-" + pageNumber : tail) "/qr?id=" + (pageNumber ? "oloom4-" + pageNumber : tail)
} }
> >
{hasZ10 ? "علوم چهارم" : "تایید"} {hasZ10 ? window.t("علوم چهارم") : window.t("تایید")}
</Link> </Link>
{hasZ10 ? ( {hasZ10 ? (
<Link className="button" to={"/qr?id=" + tail}> <Link className="button" to={"/qr?id=" + tail}>
@ -105,7 +105,7 @@ class QRModal extends Component {
</span> </span>
<Input <Input
name="pageNumber" name="pageNumber"
// label="نام" // label=window.t("نام")
parent={this} parent={this}
defaultValue={pageNumber} defaultValue={pageNumber}
maxLength={3} maxLength={3}
@ -123,7 +123,7 @@ class QRModal extends Component {
"/qr?id=" + (pageNumber ? "oloom4-" + pageNumber : tail) "/qr?id=" + (pageNumber ? "oloom4-" + pageNumber : tail)
} }
> >
{hasZ10 ? "علوم چهارم" : "تایید"} {hasZ10 ? window.t("علوم چهارم") : window.t("تایید")}
</Link> </Link>
{hasZ10 ? ( {hasZ10 ? (
<Link className="button" to={"/qr?id=" + tail}> <Link className="button" to={"/qr?id=" + tail}>

@ -35,7 +35,7 @@ export default function Sample({ fileId }) {
> >
<Page <Page
pageNumber={pageNumber} pageNumber={pageNumber}
noData="نمونه ای برای این محصول درج نشده است" noData=window.t("نمونه ای برای این محصول درج نشده است")
/> />
</Document> </Document>
<p> <p>

@ -37,7 +37,7 @@ export default function Document(props) {
margin: "auto", margin: "auto",
}} }}
> >
{parent.state.file?.name || "تصویر بارگزاری شد"} {parent.state.file?.name || window.t("تصویر بارگزاری شد")}
</span> </span>
) : ( ) : (
<span style={{ fontSize: fontSize.mobile.span }}> <span style={{ fontSize: fontSize.mobile.span }}>
@ -64,7 +64,7 @@ export default function Document(props) {
margin: "auto", margin: "auto",
}} }}
> >
{parent.state.file?.name || "فایل ثبت شد"} {parent.state.file?.name || window.t("فایل ثبت شد")}
</span> </span>
) : ( ) : (
<span <span

@ -11,19 +11,19 @@ import { connect } from "react-redux";
const maxDesktopSize = 1250; const maxDesktopSize = 1250;
const maxMobileSize = 550; const maxMobileSize = 550;
const grades = [ const grades = [
"پیش دبستان", window.t("پیش دبستان"),
"اول", window.t("اول"),
"دوم", window.t("دوم"),
"سوم", window.t("سوم"),
"چهارم", window.t("چهارم"),
"پنجم", window.t("پنجم"),
"ششم", window.t("ششم"),
"هفتم", window.t("هفتم"),
"هشتم", window.t("هشتم"),
"نهم", window.t("نهم"),
"دهم", window.t("دهم"),
"یازدهم", window.t("یازدهم"),
"دوازدهم", window.t("دوازدهم"),
]; ];
const fontSize = { const fontSize = {
desktop: { desktop: {
@ -81,7 +81,7 @@ class Support extends Component {
} }
render() { render() {
let { status } = this.props; let { status } = this.props;
let opt = ["واحد مورد نظر", "واحد فروش", "واحد فنی", "واحد محتوایی"]; let opt = [window.t("واحد مورد نظر"), window.t("واحد فروش"), window.t("واحد فنی"), window.t("واحد محتوایی")];
opt = opt.map((e) => [e, e]); opt = opt.map((e) => [e, e]);
return ( return (
<> <>
@ -96,11 +96,11 @@ class Support extends Component {
{status ? null : ( {status ? null : (
<> <>
<Input <Input
label={"نام و نام خانوادگی"} label={window.t("نام و نام خانوادگی")}
name={"name"} name={"name"}
parent={this} parent={this}
/> />
<Input label={"شماره تماس"} name={"cellphone"} parent={this} /> <Input label={window.t(window.t(window.t("شماره تماس")))} name={"cellphone"} parent={this} />
</> </>
)} )}
<Select <Select
@ -113,7 +113,7 @@ class Support extends Component {
} }
parent={this} parent={this}
/> />
{this.state.unit === "واحد محتوایی" ? ( {this.state.unit === window.t("واحد محتوایی") ? (
<Select <Select
required required
name="bookId" name="bookId"
@ -132,7 +132,7 @@ class Support extends Component {
) : null} ) : null}
<Input label={"موضوع "} name={"subject"} parent={this} required /> <Input label={"موضوع "} name={"subject"} parent={this} required />
<Input <Input
label={"متن"} label={window.t("متن")}
name={"text"} name={"text"}
parent={this} parent={this}
multiline multiline

Loading…
Cancel
Save