11import { Button , Menu , MenuItem , Typography } from "@mui/material" ;
2- import { useEffect , useState } from "react" ;
2+ import { useState , useEffect } from "react" ;
33import Image from "next/image" ;
44import Turkish from "src/assets/flags/turkish.png" ;
55import English from "src/assets/flags/english.png" ;
66import { useTranslation } from "react-i18next" ;
77
88const LanguageSelector = ( ) => {
99 const [ anchorEl , setAnchorEl ] = useState ( null ) ;
10+ const { i18n, t } = useTranslation ( ) ;
11+
1012 const open = Boolean ( anchorEl ) ;
13+
14+ const currentLanguageCode = i18n . language ;
15+
1116 const handleClick = ( event ) => {
1217 setAnchorEl ( event . currentTarget ) ;
1318 } ;
19+
1420 const handleClose = ( ) => {
1521 setAnchorEl ( null ) ;
1622 } ;
17- const [ language , setLanguage ] = useState ( "turkish" ) ;
18-
19- const { i18n } = useTranslation ( ) ;
20-
21- useEffect ( ( ) => {
22- switch ( language ) {
23- case "turkish" :
24- i18n . changeLanguage ( "tr" ) ;
25- break ;
26-
27- case "english" :
28- i18n . changeLanguage ( "en" ) ;
2923
30- default :
31- i18n . changeLanguage ( "en" ) ;
32- break ;
33- }
34- } , [ language ] ) ;
24+ const handleLanguageChange = ( langCode ) => {
25+ i18n . changeLanguage ( langCode ) ;
26+ handleClose ( ) ;
27+ } ;
3528
3629 useEffect ( ( ) => {
3730 const handleResize = ( ) => {
3831 setAnchorEl ( null ) ;
3932 } ;
4033 window . addEventListener ( "resize" , handleResize ) ;
4134 return ( ) => window . removeEventListener ( "resize" , handleResize ) ;
42- } , [ setAnchorEl ] ) ;
35+ } , [ ] ) ;
4336
44- const { t } = useTranslation ( ) ;
4537 const tr = t ( "languages.tr" ) ;
4638 const en = t ( "languages.en" ) ;
4739
48- useEffect ( ( ) => {
49- const handleResize = ( ) => {
50- setAnchorEl ( null ) ;
51- } ;
52- window . addEventListener ( "resize" , handleResize ) ;
53- return ( ) => window . removeEventListener ( "resize" , handleResize ) ;
54- } , [ setAnchorEl ] ) ;
55-
5640 return (
5741 < >
5842 < Button
@@ -63,14 +47,12 @@ const LanguageSelector = () => {
6347 sx = { { backgroundColor : "transparent" } }
6448 onClick = { handleClick }
6549 >
66- { language === "turkish" && (
67- < Image src = { Turkish } alt = "Turkish" width = { 24 } height = { 24 } />
68- ) }
69-
70- { language === "english" && (
71- < Image src = { English } alt = "English" width = { 24 } height = { 24 } />
72- ) }
73-
50+ < Image
51+ src = { currentLanguageCode === "tr" ? Turkish : English }
52+ alt = { currentLanguageCode === "tr" ? "Turkish Flag" : "English Flag" }
53+ width = { 24 }
54+ height = { 24 }
55+ />
7456 < Typography
7557 sx = { {
7658 fontWeight : 300 ,
@@ -80,9 +62,7 @@ const LanguageSelector = () => {
8062 ml : 0.5 ,
8163 } }
8264 >
83- { language === "turkish" && tr }
84-
85- { language === "english" && en }
65+ { currentLanguageCode === "tr" ? tr : en }
8666 </ Typography >
8767 </ Button >
8868 < Menu
@@ -95,22 +75,8 @@ const LanguageSelector = () => {
9575 } }
9676 sx = { { mt : 1 , "& .MuiMenu-paper" : { backgroundColor : "#0A3B7A" } } }
9777 >
98- < MenuItem
99- onClick = { ( e ) => {
100- setLanguage ( "turkish" ) ;
101- setAnchorEl ( false ) ;
102- } }
103- >
104- { tr }
105- </ MenuItem >
106- < MenuItem
107- onClick = { ( e ) => {
108- setLanguage ( "english" ) ;
109- setAnchorEl ( false ) ;
110- } }
111- >
112- { en }
113- </ MenuItem >
78+ < MenuItem onClick = { ( ) => handleLanguageChange ( "tr" ) } > { tr } </ MenuItem >
79+ < MenuItem onClick = { ( ) => handleLanguageChange ( "en" ) } > { en } </ MenuItem >
11480 </ Menu >
11581 </ >
11682 ) ;
0 commit comments