@@ -9,7 +9,6 @@ import Grow from '@material-ui/core/Grow';
99import Popper from '@material-ui/core/Popper' ;
1010import MenuList from '@material-ui/core/MenuList' ;
1111import styled from '@emotion/styled' ;
12- import { css } from '@emotion/core' ;
1312
1413import { Language } from '../../../i18n/config' ;
1514import ThemeContext from '../../design-tokens/ThemeContext' ;
@@ -25,34 +24,48 @@ import Icon from '../Icon';
2524
2625const VERDACCIO_UI_GITHUB_REPOSITORY = 'https://github.com/verdaccio/ui' ;
2726
28- const getTranslatedCurrentLanguage = (
29- t : TFunction
30- ) : { [ key : string ] : { translation : string ; icon : React . ComponentProps < typeof Icon > [ 'name' ] } } => ( {
31- 'en-us' : {
32- translation : t ( 'lng.english' ) ,
33- icon : 'usa' ,
34- } ,
35- 'fr-fr' : {
36- translation : t ( 'lng.french' ) ,
37- icon : 'france' ,
38- } ,
39- 'pt-br' : {
40- translation : t ( 'lng.portuguese' ) ,
41- icon : 'brazil' ,
42- } ,
43- 'de-de' : {
44- translation : t ( 'lng.german' ) ,
45- icon : 'germany' ,
46- } ,
47- 'es-es' : {
48- translation : t ( 'lng.spanish' ) ,
49- icon : 'spain' ,
50- } ,
51- 'zh-cn' : {
52- translation : t ( 'lng.chinese' ) ,
53- icon : 'china' ,
54- } ,
55- } ) ;
27+ const getTranslatedCurrentLanguageDetails = (
28+ t : TFunction ,
29+ currentLanguage : string
30+ ) : { translation : string ; icon : React . ComponentProps < typeof Icon > [ 'name' ] } => {
31+ switch ( currentLanguage ) {
32+ case 'fr-FR' :
33+ return {
34+ translation : t ( 'lng.french' ) ,
35+ icon : 'france' ,
36+ } ;
37+ case 'pt-BR' :
38+ return {
39+ translation : t ( 'lng.portuguese' ) ,
40+ icon : 'brazil' ,
41+ } ;
42+ case 'de-DE' :
43+ return {
44+ translation : t ( 'lng.german' ) ,
45+ icon : 'germany' ,
46+ } ;
47+ case 'es-ES' :
48+ return {
49+ translation : t ( 'lng.spanish' ) ,
50+ icon : 'spain' ,
51+ } ;
52+ case 'zh-CN' :
53+ return {
54+ translation : t ( 'lng.chinese' ) ,
55+ icon : 'china' ,
56+ } ;
57+ case 'ja-JP' :
58+ return {
59+ translation : t ( 'lng.japanese' ) ,
60+ icon : 'japan' ,
61+ } ;
62+ default :
63+ return {
64+ translation : t ( 'lng.english' ) ,
65+ icon : 'usa' ,
66+ } ;
67+ }
68+ } ;
5669
5770const LanguageSwitch = ( ) => {
5871 const themeContext = useContext ( ThemeContext ) ;
@@ -65,9 +78,9 @@ const LanguageSwitch = () => {
6578 }
6679
6780 const languages = ( i18next . options . resources ? Object . keys ( i18next . options . resources ) : [ ] ) as Array < Language > ;
68- const currentLanguage : Language = i18next . language || i18next . options ?. fallbackLng ?. [ 0 ] ;
81+ const currentLanguage = themeContext . language ;
6982
70- const { translation : userLanguage } = getTranslatedCurrentLanguage ( t ) [ currentLanguage . toLowerCase ( ) ] ;
83+ const { translation : userLanguage } = getTranslatedCurrentLanguageDetails ( t , currentLanguage ) ;
7184
7285 const handleToggle = useCallback ( ( ) => {
7386 setOpen ( prevOpen => ! prevOpen ) ;
@@ -124,7 +137,7 @@ const LanguageSwitch = () => {
124137 { languages
125138 . filter ( language => language !== currentLanguage )
126139 . map ( language => {
127- const { icon, translation } = getTranslatedCurrentLanguage ( t ) [ language . toLowerCase ( ) ] ;
140+ const { icon, translation } = getTranslatedCurrentLanguageDetails ( t , language ) ;
128141 return (
129142 < StyledMenuItem
130143 key = { language }
0 commit comments