Merge branch 'supported-languages' into 'develop'
Support source_languages and target_languages See merge request soapbox-pub/soapbox!1991
This commit is contained in:
commit
5a2d082437
|
@ -1,8 +1,9 @@
|
||||||
|
import { List as ImmutableList } from 'immutable';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { FormattedMessage, useIntl } from 'react-intl';
|
import { FormattedMessage, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import { translateStatus, undoStatusTranslation } from 'soapbox/actions/statuses';
|
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';
|
import { Stack } from './ui';
|
||||||
|
|
||||||
|
@ -16,11 +17,17 @@ const TranslateButton: React.FC<ITranslateButton> = ({ status }) => {
|
||||||
const dispatch = useAppDispatch();
|
const dispatch = useAppDispatch();
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
const features = useFeatures();
|
const features = useFeatures();
|
||||||
|
const instance = useInstance();
|
||||||
|
|
||||||
const me = useAppSelector((state) => state.me);
|
const me = useAppSelector((state) => state.me);
|
||||||
|
|
||||||
|
const sourceLanguages = instance.pleroma.getIn(['metadata', 'translation', 'source_languages']) as ImmutableList<string>;
|
||||||
|
const targetLanguages = instance.pleroma.getIn(['metadata', 'translation', 'target_languages']) as ImmutableList<string>;
|
||||||
|
|
||||||
const renderTranslate = me && ['public', 'unlisted'].includes(status.visibility) && status.contentHtml.length > 0 && status.language !== null && intl.locale !== status.language;
|
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<HTMLButtonElement> = (e) => {
|
const handleTranslate: React.MouseEventHandler<HTMLButtonElement> = (e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
|
@ -31,7 +38,7 @@ const TranslateButton: React.FC<ITranslateButton> = ({ status }) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!features.translations || !renderTranslate) return null;
|
if (!features.translations || !renderTranslate || !supportsLanguages) return null;
|
||||||
|
|
||||||
if (status.translation) {
|
if (status.translation) {
|
||||||
const languageNames = new Intl.DisplayNames([intl.locale], { type: 'language' });
|
const languageNames = new Intl.DisplayNames([intl.locale], { type: 'language' });
|
||||||
|
|
Loading…
Reference in New Issue