File tree Expand file tree Collapse file tree 1 file changed +27
-0
lines changed
src/components/translator Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -538,6 +538,33 @@ const LanguageSelector = (props: Props): React.ReactElement => {
538538 return ( ) => current . removeEventListener ( 'change' , handleMediaChange ) ;
539539 } , [ ] ) ;
540540
541+ const initializedBestSrc = React . useRef ( false ) ;
542+ React . useEffect ( ( ) => {
543+ if ( initializedBestSrc . current ) return ;
544+ let best = srcLang ;
545+ let bestSize = ( pairs [ srcLang ] && pairs [ srcLang ] . size ) || 0 ;
546+ const keys = Object . keys ( pairs as Record < string , Set < string > > ) ;
547+ for ( let i = 0 ; i < keys . length ; i ++ ) {
548+ const k = keys [ i ] ;
549+ const size = ( pairs [ k ] && pairs [ k ] . size ) || 0 ;
550+ if ( size > bestSize ) {
551+ best = k ;
552+ bestSize = size ;
553+ }
554+ }
555+ if ( best && best !== srcLang ) {
556+ setSrcLang ( best ) ;
557+ if ( ! isPair ( pairs , best , tgtLang ) ) {
558+ const it = pairs [ best ] && ( pairs [ best ] as Set < string > ) . values ( ) ;
559+ const first = it ? it . next ( ) . value : undefined ;
560+ if ( first ) {
561+ setTgtLang ( first ) ;
562+ }
563+ }
564+ }
565+ initializedBestSrc . current = true ;
566+ } , [ pairs ] ) ;
567+
541568 const SelectorComponent = showMobile ? MobileLanguageSelector : DesktopLanguageSelector ;
542569
543570 return (
You can’t perform that action at this time.
0 commit comments