Improved translation response

This commit is contained in:
Zhiyuan Zheng 2022-02-08 22:19:24 +01:00
parent 11c22907af
commit 311020285d
5 changed files with 35 additions and 14 deletions

View File

@ -4,7 +4,7 @@
"native": "220206", "native": "220206",
"major": 3, "major": 3,
"minor": 4, "minor": 4,
"patch": 0, "patch": 1,
"expo": "44.0.0" "expo": "44.0.0"
}, },
"description": "tooot app for Mastodon", "description": "tooot app for Mastodon",

View File

@ -53,7 +53,9 @@ const apiTooot = async <T = unknown>({
Accept: '*/*', Accept: '*/*',
...headers ...headers
}, },
...(body && { data: body }) ...(body && { data: body }),
validateStatus: status =>
url.includes('translate') ? status < 500 : status === 200
}) })
.then(response => { .then(response => {
return Promise.resolve({ return Promise.resolve({

View File

@ -32,6 +32,9 @@ const TimelineTranslate = React.memo(
const settingsLanguage = useSelector(getSettingsLanguage) const settingsLanguage = useSelector(getSettingsLanguage)
if (Localization.locale.includes(tootLanguage)) {
return null
}
if (settingsLanguage?.includes(tootLanguage)) { if (settingsLanguage?.includes(tootLanguage)) {
return null return null
} }
@ -88,13 +91,19 @@ const TimelineTranslate = React.memo(
{isError {isError
? t('shared.translate.failed') ? t('shared.translate.failed')
: isSuccess : isSuccess
? t('shared.translate.succeed', { ? typeof data?.error === 'string'
provider: data?.provider, ? t(`shared.translate.${data.error}`)
source: data?.sourceLanguage : t('shared.translate.succeed', {
}) provider: data?.provider,
source: data?.sourceLanguage
})
: t('shared.translate.default')} : t('shared.translate.default')}
</Text>
<Text>
{__DEV__ {__DEV__
? ` Source: ${status.language}; Target: ${settingsLanguage}` ? ` Source: ${status.language}; Target: ${
Localization.locale || settingsLanguage || 'en'
}`
: undefined} : undefined}
</Text> </Text>
{isLoading ? ( {isLoading ? (
@ -105,7 +114,7 @@ const TimelineTranslate = React.memo(
/> />
) : null} ) : null}
</Pressable> </Pressable>
{data {data && data.error === undefined
? data.text.map((d, i) => ( ? data.text.map((d, i) => (
<ParseHTML <ParseHTML
key={i} key={i}

View File

@ -81,7 +81,9 @@
"translate": { "translate": {
"default": "Translate", "default": "Translate",
"succeed": "Translated by {{provider}} from {{source}}", "succeed": "Translated by {{provider}} from {{source}}",
"failed": "Translation failed" "failed": "Translation failed",
"source_not_supported": "toot's language is not supported",
"target_not_supported": "The target language is not supported"
}, },
"header": { "header": {
"shared": { "shared": {

View File

@ -3,11 +3,19 @@ import haptics from '@components/haptics'
import { AxiosError } from 'axios' import { AxiosError } from 'axios'
import { QueryFunctionContext, useQuery, UseQueryOptions } from 'react-query' import { QueryFunctionContext, useQuery, UseQueryOptions } from 'react-query'
type Translations = { type Translations =
provider: string | {
sourceLanguage: string error: undefined
text: string[] provider: string
} sourceLanguage: string
text: string[]
}
| {
error: string
provider: undefined
sourceLanguage: undefined
text: undefined
}
export type QueryKeyTranslate = [ export type QueryKeyTranslate = [
'Translate', 'Translate',