Language Settings: Fix error in old browsers (#2891)

This commit is contained in:
Alexander Zinchuk 2023-03-30 18:25:56 -05:00
parent 31e8a934e5
commit 0c2e40d8be
2 changed files with 25 additions and 26 deletions

View File

@ -9,6 +9,7 @@ import type { ISettings, LangCode } from '../../../types';
import type { ApiLanguage } from '../../../api/types'; import type { ApiLanguage } from '../../../api/types';
import { setLanguage } from '../../../util/langProvider'; import { setLanguage } from '../../../util/langProvider';
import { IS_TRANSLATION_SUPPORTED } from '../../../util/windowEnvironment';
import useFlag from '../../../hooks/useFlag'; import useFlag from '../../../hooks/useFlag';
import useHistoryBack from '../../../hooks/useHistoryBack'; import useHistoryBack from '../../../hooks/useHistoryBack';
@ -78,20 +79,17 @@ const SettingsLanguage: FC<OwnProps & StateProps> = ({
}, [setSettingOption]); }, [setSettingOption]);
const doNotTranslateText = useMemo(() => { const doNotTranslateText = useMemo(() => {
if (!doNotTranslate.length) { if (!IS_TRANSLATION_SUPPORTED || !doNotTranslate.length) {
return undefined; return undefined;
} }
// Do not translate current language
if (doNotTranslate.length === 1) { if (doNotTranslate.length === 1) {
if (!languages) { const originalNames = new Intl.DisplayNames([language], { type: 'language' });
return lang('Loading'); return originalNames.of(doNotTranslate[0])!;
}
return languages.find(({ langCode }) => langCode === doNotTranslate[0])?.nativeName;
} }
return lang('Languages', doNotTranslate.length); return lang('Languages', doNotTranslate.length);
}, [doNotTranslate, lang, languages]); }, [doNotTranslate, lang, language]);
const handleDoNotSelectOpen = useCallback(() => { const handleDoNotSelectOpen = useCallback(() => {
onScreenSelect(SettingsScreens.DoNotTranslate); onScreenSelect(SettingsScreens.DoNotTranslate);
@ -104,6 +102,7 @@ const SettingsLanguage: FC<OwnProps & StateProps> = ({
return ( return (
<div className="settings-content settings-language custom-scroll"> <div className="settings-content settings-language custom-scroll">
{IS_TRANSLATION_SUPPORTED && (
<div className="settings-item"> <div className="settings-item">
<Checkbox <Checkbox
label={lang('ShowTranslateButton')} label={lang('ShowTranslateButton')}
@ -122,6 +121,7 @@ const SettingsLanguage: FC<OwnProps & StateProps> = ({
{lang('lng_translate_settings_about')} {lang('lng_translate_settings_about')}
</p> </p>
</div> </div>
)}
<div className="settings-item"> <div className="settings-item">
{options ? ( {options ? (
<RadioGroup <RadioGroup

View File

@ -105,7 +105,6 @@ function renderWithVirtual<T extends VirtualElement | undefined>(
} }
if (DEBUG && $new) { if (DEBUG && $new) {
// @ts-ignore TS 4.9 bug https://github.com/microsoft/TypeScript/issues/51501
const newTarget = 'target' in $new && $new.target; const newTarget = 'target' in $new && $new.target;
if (newTarget && (!$current || ('target' in $current && newTarget !== $current.target))) { if (newTarget && (!$current || ('target' in $current && newTarget !== $current.target))) {
throw new Error('[Teact] Cached virtual element was moved within tree'); throw new Error('[Teact] Cached virtual element was moved within tree');