From 0c2e40d8be6030211c49c71f383a03ff95629961 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Thu, 30 Mar 2023 18:25:56 -0500 Subject: [PATCH] Language Settings: Fix error in old browsers (#2891) --- .../left/settings/SettingsLanguage.tsx | 50 +++++++++---------- src/lib/teact/teact-dom.ts | 1 - 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/components/left/settings/SettingsLanguage.tsx b/src/components/left/settings/SettingsLanguage.tsx index b30f912c4..9744d1687 100644 --- a/src/components/left/settings/SettingsLanguage.tsx +++ b/src/components/left/settings/SettingsLanguage.tsx @@ -9,6 +9,7 @@ import type { ISettings, LangCode } from '../../../types'; import type { ApiLanguage } from '../../../api/types'; import { setLanguage } from '../../../util/langProvider'; +import { IS_TRANSLATION_SUPPORTED } from '../../../util/windowEnvironment'; import useFlag from '../../../hooks/useFlag'; import useHistoryBack from '../../../hooks/useHistoryBack'; @@ -78,20 +79,17 @@ const SettingsLanguage: FC = ({ }, [setSettingOption]); const doNotTranslateText = useMemo(() => { - if (!doNotTranslate.length) { + if (!IS_TRANSLATION_SUPPORTED || !doNotTranslate.length) { return undefined; } - // Do not translate current language if (doNotTranslate.length === 1) { - if (!languages) { - return lang('Loading'); - } - return languages.find(({ langCode }) => langCode === doNotTranslate[0])?.nativeName; + const originalNames = new Intl.DisplayNames([language], { type: 'language' }); + return originalNames.of(doNotTranslate[0])!; } return lang('Languages', doNotTranslate.length); - }, [doNotTranslate, lang, languages]); + }, [doNotTranslate, lang, language]); const handleDoNotSelectOpen = useCallback(() => { onScreenSelect(SettingsScreens.DoNotTranslate); @@ -104,24 +102,26 @@ const SettingsLanguage: FC = ({ return (
-
- - {canTranslate && ( - - {lang('DoNotTranslate')} - {doNotTranslateText} - - )} -

- {lang('lng_translate_settings_about')} -

-
+ {IS_TRANSLATION_SUPPORTED && ( +
+ + {canTranslate && ( + + {lang('DoNotTranslate')} + {doNotTranslateText} + + )} +

+ {lang('lng_translate_settings_about')} +

+
+ )}
{options ? ( ( } if (DEBUG && $new) { - // @ts-ignore TS 4.9 bug https://github.com/microsoft/TypeScript/issues/51501 const newTarget = 'target' in $new && $new.target; if (newTarget && (!$current || ('target' in $current && newTarget !== $current.target))) { throw new Error('[Teact] Cached virtual element was moved within tree');