mirror of https://github.com/tooot-app/app
parent
4b1d628c5e
commit
0d9992107c
|
@ -1,4 +1,5 @@
|
||||||
import { ActionSheetProvider } from '@expo/react-native-action-sheet'
|
import { ActionSheetProvider } from '@expo/react-native-action-sheet'
|
||||||
|
import getLanguage from '@helpers/getLanguage'
|
||||||
import queryClient from '@helpers/queryClient'
|
import queryClient from '@helpers/queryClient'
|
||||||
import i18n from '@root/i18n/i18n'
|
import i18n from '@root/i18n/i18n'
|
||||||
import Screens from '@root/Screens'
|
import Screens from '@root/Screens'
|
||||||
|
@ -12,7 +13,7 @@ import timezone from '@root/startup/timezone'
|
||||||
import { persistor, store } from '@root/store'
|
import { persistor, store } from '@root/store'
|
||||||
import * as Sentry from '@sentry/react-native'
|
import * as Sentry from '@sentry/react-native'
|
||||||
import AccessibilityManager from '@utils/accessibility/AccessibilityManager'
|
import AccessibilityManager from '@utils/accessibility/AccessibilityManager'
|
||||||
import { changeLanguage, getSettingsLanguage } from '@utils/slices/settingsSlice'
|
import { changeLanguage } from '@utils/slices/settingsSlice'
|
||||||
import ThemeManager from '@utils/styles/ThemeManager'
|
import ThemeManager from '@utils/styles/ThemeManager'
|
||||||
import * as Localization from 'expo-localization'
|
import * as Localization from 'expo-localization'
|
||||||
import * as SplashScreen from 'expo-splash-screen'
|
import * as SplashScreen from 'expo-splash-screen'
|
||||||
|
@ -83,10 +84,7 @@ const App: React.FC = () => {
|
||||||
if (bootstrapped) {
|
if (bootstrapped) {
|
||||||
log('log', 'App', 'loading actual app :)')
|
log('log', 'App', 'loading actual app :)')
|
||||||
log('log', 'App', `Locale: ${Localization.locale}`)
|
log('log', 'App', `Locale: ${Localization.locale}`)
|
||||||
const language =
|
const language = getLanguage()
|
||||||
Platform.OS === 'ios'
|
|
||||||
? Localization.locale
|
|
||||||
: getSettingsLanguage(store.getState())
|
|
||||||
if (!language) {
|
if (!language) {
|
||||||
if (Platform.OS !== 'ios') {
|
if (Platform.OS !== 'ios') {
|
||||||
store.dispatch(changeLanguage('en'))
|
store.dispatch(changeLanguage('en'))
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import analytics from '@components/analytics'
|
import analytics from '@components/analytics'
|
||||||
import { ParseHTML } from '@components/Parse'
|
import { ParseHTML } from '@components/Parse'
|
||||||
import CustomText from '@components/Text'
|
import CustomText from '@components/Text'
|
||||||
|
import getLanguage from '@helpers/getLanguage'
|
||||||
import { useTranslateQuery } from '@utils/queryHooks/translate'
|
import { useTranslateQuery } from '@utils/queryHooks/translate'
|
||||||
import { getSettingsLanguage } from '@utils/slices/settingsSlice'
|
|
||||||
import { StyleConstants } from '@utils/styles/constants'
|
import { StyleConstants } from '@utils/styles/constants'
|
||||||
import { useTheme } from '@utils/styles/ThemeManager'
|
import { useTheme } from '@utils/styles/ThemeManager'
|
||||||
import * as Localization from 'expo-localization'
|
import * as Localization from 'expo-localization'
|
||||||
|
@ -11,14 +11,10 @@ import { useTranslation } from 'react-i18next'
|
||||||
import { Pressable } from 'react-native'
|
import { Pressable } from 'react-native'
|
||||||
import { Circle } from 'react-native-animated-spinkit'
|
import { Circle } from 'react-native-animated-spinkit'
|
||||||
import detectLanguage from 'react-native-language-detection'
|
import detectLanguage from 'react-native-language-detection'
|
||||||
import { useSelector } from 'react-redux'
|
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
highlighted: boolean
|
highlighted: boolean
|
||||||
status: Pick<
|
status: Pick<Mastodon.Status, 'language' | 'spoiler_text' | 'content' | 'emojis'>
|
||||||
Mastodon.Status,
|
|
||||||
'language' | 'spoiler_text' | 'content' | 'emojis'
|
|
||||||
>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const TimelineTranslate = React.memo(
|
const TimelineTranslate = React.memo(
|
||||||
|
@ -30,9 +26,7 @@ const TimelineTranslate = React.memo(
|
||||||
const { t } = useTranslation('componentTimeline')
|
const { t } = useTranslation('componentTimeline')
|
||||||
const { colors } = useTheme()
|
const { colors } = useTheme()
|
||||||
|
|
||||||
const text = status.spoiler_text
|
const text = status.spoiler_text ? [status.spoiler_text, status.content] : [status.content]
|
||||||
? [status.spoiler_text, status.content]
|
|
||||||
: [status.content]
|
|
||||||
|
|
||||||
for (const i in text) {
|
for (const i in text) {
|
||||||
for (const emoji of status.emojis) {
|
for (const emoji of status.emojis) {
|
||||||
|
@ -56,7 +50,7 @@ const TimelineTranslate = React.memo(
|
||||||
detect()
|
detect()
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const settingsLanguage = useSelector(getSettingsLanguage)
|
const settingsLanguage = getLanguage()
|
||||||
const targetLanguage = settingsLanguage?.startsWith('en')
|
const targetLanguage = settingsLanguage?.startsWith('en')
|
||||||
? Localization.locale || settingsLanguage || 'en'
|
? Localization.locale || settingsLanguage || 'en'
|
||||||
: settingsLanguage || Localization.locale || 'en'
|
: settingsLanguage || Localization.locale || 'en'
|
||||||
|
@ -107,12 +101,7 @@ const TimelineTranslate = React.memo(
|
||||||
<CustomText
|
<CustomText
|
||||||
fontStyle='M'
|
fontStyle='M'
|
||||||
style={{
|
style={{
|
||||||
color:
|
color: isLoading || isSuccess ? colors.secondary : isError ? colors.red : colors.blue
|
||||||
isLoading || isSuccess
|
|
||||||
? colors.secondary
|
|
||||||
: isError
|
|
||||||
? colors.red
|
|
||||||
: colors.blue
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{isError
|
{isError
|
||||||
|
@ -127,9 +116,7 @@ const TimelineTranslate = React.memo(
|
||||||
: t('shared.translate.default')}
|
: t('shared.translate.default')}
|
||||||
</CustomText>
|
</CustomText>
|
||||||
<CustomText>
|
<CustomText>
|
||||||
{__DEV__
|
{__DEV__ ? ` Source: ${detectedLanguage}; Target: ${targetLanguage}` : undefined}
|
||||||
? ` Source: ${detectedLanguage}; Target: ${targetLanguage}`
|
|
||||||
: undefined}
|
|
||||||
</CustomText>
|
</CustomText>
|
||||||
{isLoading ? (
|
{isLoading ? (
|
||||||
<Circle
|
<Circle
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
import { store } from '@root/store'
|
||||||
|
import { getSettingsLanguage } from '@utils/slices/settingsSlice'
|
||||||
|
import * as Localization from 'expo-localization'
|
||||||
|
import { Platform } from "react-native"
|
||||||
|
|
||||||
|
const getLanguage = (): string => {
|
||||||
|
return Platform.OS === 'ios'
|
||||||
|
? Localization.locale
|
||||||
|
: getSettingsLanguage(store.getState())
|
||||||
|
}
|
||||||
|
|
||||||
|
export default getLanguage
|
Loading…
Reference in New Issue