Language Settings: Fix error in old browsers (#2891)
This commit is contained in:
parent
31e8a934e5
commit
0c2e40d8be
@ -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
|
||||||
|
|||||||
@ -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');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user