From 2f2ae8237dcb58907b5a6118be76ec58e9a0f551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Sat, 10 Dec 2022 23:16:06 +0100 Subject: [PATCH] Support source_languages and target_languages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- app/soapbox/components/translate-button.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/soapbox/components/translate-button.tsx b/app/soapbox/components/translate-button.tsx index 03a43722a..ead0b894a 100644 --- a/app/soapbox/components/translate-button.tsx +++ b/app/soapbox/components/translate-button.tsx @@ -1,8 +1,9 @@ +import { List as ImmutableList } from 'immutable'; import React from 'react'; import { FormattedMessage, useIntl } from 'react-intl'; import { translateStatus, undoStatusTranslation } from 'soapbox/actions/statuses'; -import { useAppDispatch, useAppSelector, useFeatures } from 'soapbox/hooks'; +import { useAppDispatch, useAppSelector, useFeatures, useInstance } from 'soapbox/hooks'; import { Stack } from './ui'; @@ -16,11 +17,17 @@ const TranslateButton: React.FC = ({ status }) => { const dispatch = useAppDispatch(); const intl = useIntl(); const features = useFeatures(); + const instance = useInstance(); const me = useAppSelector((state) => state.me); + const sourceLanguages = instance.pleroma.getIn(['metadata', 'translation', 'source_languages']) as ImmutableList; + const targetLanguages = instance.pleroma.getIn(['metadata', 'translation', 'target_languages']) as ImmutableList; + const renderTranslate = me && ['public', 'unlisted'].includes(status.visibility) && status.contentHtml.length > 0 && status.language !== null && intl.locale !== status.language; + const supportsLanguages = (!sourceLanguages || sourceLanguages.includes(status.language!)) && (!targetLanguages || targetLanguages.includes(intl.locale)); + const handleTranslate: React.MouseEventHandler = (e) => { e.stopPropagation(); @@ -31,7 +38,7 @@ const TranslateButton: React.FC = ({ status }) => { } }; - if (!features.translations || !renderTranslate) return null; + if (!features.translations || !renderTranslate || !supportsLanguages) return null; if (status.translation) { const languageNames = new Intl.DisplayNames([intl.locale], { type: 'language' });