@@ -13,7 +13,14 @@ interface LanguageContextType {
1313const LanguageContext = createContext < LanguageContextType | undefined > ( undefined ) ;
1414
1515export function LanguageProvider ( { children } : { children : ReactNode } ) {
16- const defaultLanguage = ( env ( "NEXT_PUBLIC_DEFAULT_LANGUAGE" ) as Language ) || "en" ;
16+ const envLang = env ( "NEXT_PUBLIC_DEFAULT_LANGUAGE" ) ;
17+ const isValidLang = envLang && envLang in translations ;
18+
19+ if ( envLang && ! isValidLang ) {
20+ console . warn ( `[Minepanel] Language "${ envLang } " is not available. Available: ${ Object . keys ( translations ) . join ( ", " ) } . Falling back to "en".` ) ;
21+ }
22+
23+ const defaultLanguage = isValidLang ? ( envLang as Language ) : "en" ;
1724 const [ language , setLanguageState ] = useState < Language > ( defaultLanguage ) ;
1825
1926 useEffect ( ( ) => {
@@ -29,15 +36,15 @@ export function LanguageProvider({ children }: { children: ReactNode }) {
2936 localStorage . setItem ( "language" , lang ) ;
3037 } , [ ] ) ;
3138
32- const t = useCallback ( ( key : TranslationKey ) : string => {
33- return translations [ language ] [ key ] || key ;
34- } , [ language ] ) ;
35-
36- const value = useMemo (
37- ( ) => ( { language, setLanguage, t } ) ,
38- [ language , setLanguage , t ]
39+ const t = useCallback (
40+ ( key : TranslationKey ) : string => {
41+ return translations [ language ] [ key ] || key ;
42+ } ,
43+ [ language ]
3944 ) ;
4045
46+ const value = useMemo ( ( ) => ( { language, setLanguage, t } ) , [ language , setLanguage , t ] ) ;
47+
4148 return < LanguageContext . Provider value = { value } > { children } </ LanguageContext . Provider > ;
4249}
4350
0 commit comments