Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85e9142a32
|
||
|
|
054a45246e
|
@@ -76,7 +76,7 @@ function AjouteTradiksyon({showSwitch, disableSwitch, tradiksyonOtomatik, setTra
|
|||||||
aria-haspopup='true'
|
aria-haspopup='true'
|
||||||
onClick={handleClick}
|
onClick={handleClick}
|
||||||
>
|
>
|
||||||
Ajouter une traduction <br /> 🇺🇸 🇫🇷 🇪🇸 🇩🇪 🇮🇹
|
Ajouter une traduction <br /> 🇺🇸 🇫🇷 🇪🇸 🇩🇪 🇮🇹 🇧🇷 🇯🇵 🇰🇷
|
||||||
</Button>
|
</Button>
|
||||||
<StyledMenu
|
<StyledMenu
|
||||||
keepMounted
|
keepMounted
|
||||||
@@ -123,6 +123,27 @@ function AjouteTradiksyon({showSwitch, disableSwitch, tradiksyonOtomatik, setTra
|
|||||||
}}
|
}}
|
||||||
onClick={handleClose}
|
onClick={handleClose}
|
||||||
>🇮🇹 Italien</StyledMenuItem>
|
>🇮🇹 Italien</StyledMenuItem>
|
||||||
|
<StyledMenuItem
|
||||||
|
id='pt'
|
||||||
|
classes={{
|
||||||
|
root: classes.root
|
||||||
|
}}
|
||||||
|
onClick={handleClose}
|
||||||
|
>🇧🇷 Portugais</StyledMenuItem>
|
||||||
|
<StyledMenuItem
|
||||||
|
id='ja'
|
||||||
|
classes={{
|
||||||
|
root: classes.root
|
||||||
|
}}
|
||||||
|
onClick={handleClose}
|
||||||
|
>🇯🇵 Japonais</StyledMenuItem>
|
||||||
|
<StyledMenuItem
|
||||||
|
id='ko'
|
||||||
|
classes={{
|
||||||
|
root: classes.root
|
||||||
|
}}
|
||||||
|
onClick={handleClose}
|
||||||
|
>🇰🇷 Coréen</StyledMenuItem>
|
||||||
</StyledMenu>
|
</StyledMenu>
|
||||||
</Root>
|
</Root>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -65,6 +65,21 @@ const textLabels = {
|
|||||||
title: 'Traduzione',
|
title: 'Traduzione',
|
||||||
help: 'Traduzione del testo',
|
help: 'Traduzione del testo',
|
||||||
emoji: '🇮🇹'
|
emoji: '🇮🇹'
|
||||||
|
},
|
||||||
|
pt: {
|
||||||
|
title: 'Tradução',
|
||||||
|
help: 'Tradução da letra',
|
||||||
|
emoji: '🇧🇷'
|
||||||
|
},
|
||||||
|
ja: {
|
||||||
|
title: '翻訳',
|
||||||
|
help: '歌詞の翻訳',
|
||||||
|
emoji: '🇯🇵'
|
||||||
|
},
|
||||||
|
ko: {
|
||||||
|
title: '번역',
|
||||||
|
help: '가사 번역',
|
||||||
|
emoji: '🇰🇷'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +93,7 @@ function EkriTeks({canAutoTranslate, selectedTeks, setSelectedTeks}) {
|
|||||||
const {data: session} = useSession()
|
const {data: session} = useSession()
|
||||||
const {jwt, user} = session
|
const {jwt, user} = session
|
||||||
const [teksEkri, setTeksEkri] = useState({awtis: '', tit: '', transkripsyon: ''})
|
const [teksEkri, setTeksEkri] = useState({awtis: '', tit: '', transkripsyon: ''})
|
||||||
const [tradiksyon, setTradiksyon] = useState({fr: '', en: '', es: '', de: '', it: ''})
|
const [tradiksyon, setTradiksyon] = useState({fr: '', en: '', es: '', de: '', it: '', pt: '', ja: '', ko: ''})
|
||||||
const [kiChawLang, setKiChwalang] = useState(['fr'])
|
const [kiChawLang, setKiChwalang] = useState(['fr'])
|
||||||
const [error, setError] = useState('')
|
const [error, setError] = useState('')
|
||||||
const [success, setSuccess] = useState('')
|
const [success, setSuccess] = useState('')
|
||||||
@@ -112,7 +127,7 @@ function EkriTeks({canAutoTranslate, selectedTeks, setSelectedTeks}) {
|
|||||||
const handleClick = async () => {
|
const handleClick = async () => {
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
const {awtis, tit, transkripsyon} = teksEkri
|
const {awtis, tit, transkripsyon} = teksEkri
|
||||||
const {fr, en, es, de, it} = tradiksyon
|
const {fr, en, es, de, it, pt, ja, ko} = tradiksyon
|
||||||
|
|
||||||
if (teksEkri.awtis === '' || teksEkri.tit === '' || teksEkri.transkripsyon === '') {
|
if (teksEkri.awtis === '' || teksEkri.tit === '' || teksEkri.transkripsyon === '') {
|
||||||
setError({message: 'Certains champs sont obligatoires'})
|
setError({message: 'Certains champs sont obligatoires'})
|
||||||
@@ -139,7 +154,10 @@ function EkriTeks({canAutoTranslate, selectedTeks, setSelectedTeks}) {
|
|||||||
anglais: en === '' ? null : en,
|
anglais: en === '' ? null : en,
|
||||||
espagnol: es === '' ? null : es,
|
espagnol: es === '' ? null : es,
|
||||||
allemand: de === '' ? null : de,
|
allemand: de === '' ? null : de,
|
||||||
italien: it === '' ? null : it
|
italien: it === '' ? null : it,
|
||||||
|
portugais: pt === '' ? null : pt,
|
||||||
|
japonais: ja === '' ? null : ja,
|
||||||
|
coreen: ko === '' ? null : ko
|
||||||
},
|
},
|
||||||
user: {
|
user: {
|
||||||
id: user.id,
|
id: user.id,
|
||||||
@@ -184,7 +202,10 @@ function EkriTeks({canAutoTranslate, selectedTeks, setSelectedTeks}) {
|
|||||||
anglais: en === '' ? null : en,
|
anglais: en === '' ? null : en,
|
||||||
espagnol: es === '' ? null : es,
|
espagnol: es === '' ? null : es,
|
||||||
allemand: de === '' ? null : de,
|
allemand: de === '' ? null : de,
|
||||||
italien: it === '' ? null : it
|
italien: it === '' ? null : it,
|
||||||
|
portugais: pt === '' ? null : pt,
|
||||||
|
japonais: ja === '' ? null : ja,
|
||||||
|
coreen: ko === '' ? null : ko
|
||||||
},
|
},
|
||||||
user: {
|
user: {
|
||||||
id: user.id,
|
id: user.id,
|
||||||
@@ -211,7 +232,7 @@ function EkriTeks({canAutoTranslate, selectedTeks, setSelectedTeks}) {
|
|||||||
|
|
||||||
const handleReset = () => {
|
const handleReset = () => {
|
||||||
setTeksEkri({awtis: '', tit: '', transkripsyon: ''})
|
setTeksEkri({awtis: '', tit: '', transkripsyon: ''})
|
||||||
setTradiksyon({fr: '', en: '', es: '', de: '', it: ''})
|
setTradiksyon({fr: '', en: '', es: '', de: '', it: '', pt: '', ja: '', ko: ''})
|
||||||
setKiChwalang(['fr'])
|
setKiChwalang(['fr'])
|
||||||
setCurrentTeksId(null)
|
setCurrentTeksId(null)
|
||||||
setTradiksyonOtomatik(false)
|
setTradiksyonOtomatik(false)
|
||||||
@@ -244,7 +265,10 @@ function EkriTeks({canAutoTranslate, selectedTeks, setSelectedTeks}) {
|
|||||||
en: selectedTeks?.traductions?.anglais || '',
|
en: selectedTeks?.traductions?.anglais || '',
|
||||||
es: selectedTeks?.traductions?.espagnol || '',
|
es: selectedTeks?.traductions?.espagnol || '',
|
||||||
de: selectedTeks?.traductions?.allemand || '',
|
de: selectedTeks?.traductions?.allemand || '',
|
||||||
it: selectedTeks?.traductions?.italien || ''
|
it: selectedTeks?.traductions?.italien || '',
|
||||||
|
pt: selectedTeks?.traductions?.portugais || '',
|
||||||
|
ja: selectedTeks?.traductions?.japonais || '',
|
||||||
|
ko: selectedTeks?.traductions?.coreen || ''
|
||||||
})
|
})
|
||||||
|
|
||||||
const jennLangId = () => {
|
const jennLangId = () => {
|
||||||
@@ -270,6 +294,18 @@ function EkriTeks({canAutoTranslate, selectedTeks, setSelectedTeks}) {
|
|||||||
ids.push('it')
|
ids.push('it')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (selectedTeks?.traductions?.portugais) {
|
||||||
|
ids.push('pt')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedTeks?.traductions?.japonais) {
|
||||||
|
ids.push('ja')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedTeks?.traductions?.coreen) {
|
||||||
|
ids.push('ko')
|
||||||
|
}
|
||||||
|
|
||||||
return ids
|
return ids
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,7 +409,7 @@ function EkriTeks({canAutoTranslate, selectedTeks, setSelectedTeks}) {
|
|||||||
</form>
|
</form>
|
||||||
<AjouteTradiksyon
|
<AjouteTradiksyon
|
||||||
showSwitch={Boolean(canAutoTranslate) && Boolean(!currentTeksId)}
|
showSwitch={Boolean(canAutoTranslate) && Boolean(!currentTeksId)}
|
||||||
disableSwitch={tradiksyon.fr === '' || tradiksyon.en !== '' || tradiksyon.es !== '' || tradiksyon.de !== '' || tradiksyon.it !== ''}
|
disableSwitch={tradiksyon.fr === '' || tradiksyon.en !== '' || tradiksyon.es !== '' || tradiksyon.de !== '' || tradiksyon.it !== '' || tradiksyon.pt !== '' || tradiksyon.ja !== '' || tradiksyon.ko !== ''}
|
||||||
tradiksyonOtomatik={tradiksyonOtomatik}
|
tradiksyonOtomatik={tradiksyonOtomatik}
|
||||||
setTradiksyonOtomatik={setTradiksyonOtomatik}
|
setTradiksyonOtomatik={setTradiksyonOtomatik}
|
||||||
chwaLang={kiChawLang}
|
chwaLang={kiChawLang}
|
||||||
|
|||||||
+49
-66
@@ -1,9 +1,10 @@
|
|||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
import {useEffect} from 'react'
|
import {useEffect, useState} from 'react'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import Box from '@mui/material/Box'
|
import Box from '@mui/material/Box'
|
||||||
import Grid from '@mui/material/Grid'
|
import Tabs from '@mui/material/Tabs'
|
||||||
|
import Tab from '@mui/material/Tab'
|
||||||
import Typography from '@mui/material/Typography'
|
import Typography from '@mui/material/Typography'
|
||||||
import Tooltip from '@mui/material/Tooltip'
|
import Tooltip from '@mui/material/Tooltip'
|
||||||
import {useMediaQuery} from '@mui/material'
|
import {useMediaQuery} from '@mui/material'
|
||||||
@@ -78,54 +79,30 @@ const Root = styled('div')((
|
|||||||
},
|
},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const LANG_NAMES = {fr: 'Français', en: 'English', es: 'Español', de: 'Deutsch', it: 'Italiano'}
|
const LANG_NAMES = {
|
||||||
|
fr: 'Français', en: 'English', es: 'Español', de: 'Deutsch', it: 'Italiano',
|
||||||
|
pt: 'Português', ja: '日本語', ko: '한국어',
|
||||||
|
}
|
||||||
|
|
||||||
|
const TRAD_FIELDS = [
|
||||||
|
{field: 'anglais', title: 'English'},
|
||||||
|
{field: 'francais', title: 'Français'},
|
||||||
|
{field: 'espagnol', title: 'Español'},
|
||||||
|
{field: 'allemand', title: 'Deutsch'},
|
||||||
|
{field: 'italien', title: 'Italiano'},
|
||||||
|
{field: 'portugais', title: 'Português'},
|
||||||
|
{field: 'japonais', title: '日本語'},
|
||||||
|
{field: 'coreen', title: '한국어'},
|
||||||
|
]
|
||||||
|
|
||||||
const langToArray = parole => {
|
const langToArray = parole => {
|
||||||
const langArray = []
|
if (!parole || !parole.traductions) {
|
||||||
|
return []
|
||||||
if (parole && parole.traductions) {
|
|
||||||
const {francais, anglais, espagnol, allemand, italien} = parole.traductions
|
|
||||||
|
|
||||||
if (anglais) {
|
|
||||||
langArray.push({title: 'English', lang: anglais})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (francais) {
|
return TRAD_FIELDS
|
||||||
langArray.push({title: 'Français', lang: francais})
|
.filter(({field}) => parole.traductions[field])
|
||||||
}
|
.map(({field, title}) => ({title, lang: parole.traductions[field]}))
|
||||||
|
|
||||||
if (espagnol) {
|
|
||||||
langArray.push({title: 'Español', lang: espagnol})
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allemand) {
|
|
||||||
langArray.push({title: 'Deutsch', lang: allemand})
|
|
||||||
}
|
|
||||||
|
|
||||||
if (italien) {
|
|
||||||
langArray.push({title: 'Italiano', lang: italien})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return langArray
|
|
||||||
}
|
|
||||||
|
|
||||||
const alignTeks = (langArray, isMobile) => {
|
|
||||||
if (langArray.length > 0 && !isMobile) {
|
|
||||||
return 'justify'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (langArray.length > 0 && isMobile) {
|
|
||||||
return 'justify'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (langArray.length === 0 && isMobile) {
|
|
||||||
return 'justify'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (langArray.length === 0 && !isMobile) {
|
|
||||||
return 'center'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const ExplicitTooltip = Tooltip
|
const ExplicitTooltip = Tooltip
|
||||||
@@ -135,6 +112,7 @@ export default function Teks({parole}) {
|
|||||||
const langArray = langToArray(parole)
|
const langArray = langToArray(parole)
|
||||||
const enhancedAliases = getAlias(parole.artistes, parole.prioriteArtistes, true)
|
const enhancedAliases = getAlias(parole.artistes, parole.prioriteArtistes, true)
|
||||||
const coverFmt = formatKuveti(parole.couverture)
|
const coverFmt = formatKuveti(parole.couverture)
|
||||||
|
const [tab, setTab] = useState(0)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const isBrowser = () => typeof window !== 'undefined'
|
const isBrowser = () => typeof window !== 'undefined'
|
||||||
@@ -231,35 +209,40 @@ export default function Teks({parole}) {
|
|||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
<Grid container justifycontent='center' spacing={1}>
|
<Box sx={{maxWidth: 700, margin: '0 auto'}} className={classes.gridText}>
|
||||||
<Grid size={{xs: 12, md: langArray.length > 0 ? 6 : null}}>
|
<Tabs
|
||||||
<Box className={classes.gridText}>
|
value={tab}
|
||||||
<Typography align='center' sx={{marginBottom: '0.5em'}} variant='h4'>
|
onChange={(event, value) => setTab(value)}
|
||||||
Transcription
|
variant='scrollable'
|
||||||
|
scrollButtons='auto'
|
||||||
|
centered={langArray.length === 0}
|
||||||
|
sx={{borderBottom: 1, borderColor: 'divider', mb: 2}}
|
||||||
|
>
|
||||||
|
<Tab label='Transcription' />
|
||||||
|
{langArray.map(({title}) => (
|
||||||
|
<Tab key={title} label={title} />
|
||||||
|
))}
|
||||||
|
</Tabs>
|
||||||
|
{tab === 0 && (
|
||||||
|
<>
|
||||||
{parole.langueSource && parole.langueSource !== 'ka' && (
|
{parole.langueSource && parole.langueSource !== 'ka' && (
|
||||||
<Typography component='span' variant='body2' color='text.secondary' sx={{ml: 1}}>
|
<Typography align='center' variant='body2' color='text.secondary' sx={{mb: 1}}>
|
||||||
({LANG_NAMES[parole.langueSource]})
|
({LANG_NAMES[parole.langueSource]})
|
||||||
</Typography>
|
</Typography>
|
||||||
)}
|
)}
|
||||||
</Typography>
|
<Typography paragraph='true' align={isMobile ? 'justify' : 'center'} component='span'>
|
||||||
<Typography paragraph='true' align={alignTeks(langArray, isMobile)} component='span'>
|
|
||||||
{formatJsonString(parole.transcription)}
|
{formatJsonString(parole.transcription)}
|
||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
</>
|
||||||
</Grid>
|
)}
|
||||||
{langArray.map(({title, lang}) => (
|
{langArray.map(({title, lang}, index) => (
|
||||||
<Grid key={title} size={{xs: 12, md: 6}}>
|
tab === index + 1 && (
|
||||||
<Box className={classes.gridText}>
|
<Typography key={title} paragraph='true' align='justify' component='span'>
|
||||||
<Typography align='center' sx={{marginBottom: '0.5em'}} variant='h4'>
|
|
||||||
{title}
|
|
||||||
</Typography>
|
|
||||||
<Typography paragraph='true' align='justify' component='span'>
|
|
||||||
{formatJsonString(lang)}
|
{formatJsonString(lang)}
|
||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
)
|
||||||
</Grid>
|
|
||||||
))}
|
))}
|
||||||
</Grid>
|
</Box>
|
||||||
</Root>
|
</Root>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user