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,24 +102,26 @@ const SettingsLanguage: FC<OwnProps & StateProps> = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="settings-content settings-language custom-scroll">
|
<div className="settings-content settings-language custom-scroll">
|
||||||
<div className="settings-item">
|
{IS_TRANSLATION_SUPPORTED && (
|
||||||
<Checkbox
|
<div className="settings-item">
|
||||||
label={lang('ShowTranslateButton')}
|
<Checkbox
|
||||||
checked={canTranslate}
|
label={lang('ShowTranslateButton')}
|
||||||
onCheck={handleShouldTranslateChange}
|
checked={canTranslate}
|
||||||
/>
|
onCheck={handleShouldTranslateChange}
|
||||||
{canTranslate && (
|
/>
|
||||||
<ListItem
|
{canTranslate && (
|
||||||
onClick={handleDoNotSelectOpen}
|
<ListItem
|
||||||
>
|
onClick={handleDoNotSelectOpen}
|
||||||
{lang('DoNotTranslate')}
|
>
|
||||||
<span className="settings-item__current-value">{doNotTranslateText}</span>
|
{lang('DoNotTranslate')}
|
||||||
</ListItem>
|
<span className="settings-item__current-value">{doNotTranslateText}</span>
|
||||||
)}
|
</ListItem>
|
||||||
<p className="settings-item-description mb-0 mt-1">
|
)}
|
||||||
{lang('lng_translate_settings_about')}
|
<p className="settings-item-description mb-0 mt-1">
|
||||||
</p>
|
{lang('lng_translate_settings_about')}
|
||||||
</div>
|
</p>
|
||||||
|
</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