diff --git a/enjoy/src/renderer/components/medias/media-caption.tsx b/enjoy/src/renderer/components/medias/media-caption.tsx index 7b997db3..533dca10 100644 --- a/enjoy/src/renderer/components/medias/media-caption.tsx +++ b/enjoy/src/renderer/components/medias/media-caption.tsx @@ -39,7 +39,7 @@ export const MediaCaption = () => { setTranscriptionDraft, ipaMappings, } = useContext(MediaPlayerProviderContext); - const { EnjoyApp } = useContext(AppSettingsProviderContext); + const { EnjoyApp, learningLanguage } = useContext(AppSettingsProviderContext); const [activeIndex, setActiveIndex] = useState(0); const [selectedIndices, setSelectedIndices] = useState([]); const [multiSelecting, setMultiSelecting] = useState(false); @@ -415,9 +415,13 @@ export const MediaCaption = () => { const ipas = word.timeline.map((t) => t.timeline.map((s) => s.text).join("") ); - return `${word.text}(${convertWordIpaToNormal(ipas, { - mappings: ipaMappings, - }).join("")})`; + return `${word.text}(${ + learningLanguage.startsWith("en") + ? convertWordIpaToNormal(ipas, { + mappings: ipaMappings, + }).join("") + : ipas.join("") + })`; }) .join(" "); @@ -477,16 +481,19 @@ export const Caption = (props: { } = props; const { currentNotes, ipaMappings } = useContext(MediaPlayerProviderContext); + const { learningLanguage } = useContext(AppSettingsProviderContext); const notes = currentNotes.filter((note) => note.parameters?.quoteIndices); const [notedquoteIndices, setNotedquoteIndices] = useState([]); let words = caption.text.split(" "); const ipas = caption.timeline.map((w) => w.timeline.map((t) => - convertWordIpaToNormal( - t.timeline.map((s) => s.text), - { mappings: ipaMappings } - ).join("") + learningLanguage.startsWith("en") + ? convertWordIpaToNormal( + t.timeline.map((s) => s.text), + { mappings: ipaMappings } + ).join("") + : t.text ) ); diff --git a/enjoy/src/renderer/components/medias/media-captions/tab-content-translation.tsx b/enjoy/src/renderer/components/medias/media-captions/tab-content-translation.tsx index 1c3beb90..ac18c15f 100644 --- a/enjoy/src/renderer/components/medias/media-captions/tab-content-translation.tsx +++ b/enjoy/src/renderer/components/medias/media-captions/tab-content-translation.tsx @@ -80,12 +80,14 @@ const SelectedWords = (props: { > {word.timeline .map((t) => - convertWordIpaToNormal( - t.timeline.map((s) => s.text), - { - mappings: ipaMappings, - } - ).join("") + learningLanguage.startsWith("en") + ? convertWordIpaToNormal( + t.timeline.map((s) => s.text), + { + mappings: ipaMappings, + } + ).join("") + : t.text ) .join(" ")} diff --git a/enjoy/src/renderer/context/media-player-provider.tsx b/enjoy/src/renderer/context/media-player-provider.tsx index 8a90e8ca..bfa84d8f 100644 --- a/enjoy/src/renderer/context/media-player-provider.tsx +++ b/enjoy/src/renderer/context/media-player-provider.tsx @@ -123,7 +123,9 @@ export const MediaPlayerProvider = ({ children: React.ReactNode; }) => { const minPxPerSec = 150; - const { EnjoyApp, webApi } = useContext(AppSettingsProviderContext); + const { EnjoyApp, webApi, learningLanguage } = useContext( + AppSettingsProviderContext + ); const [layout, setLayout] = useState<{ name: string; @@ -340,7 +342,9 @@ export const MediaPlayerProvider = ({ ); labels[index] = [ labels[index] || "", - convertIpaToNormal(phone.text.trim()), + learningLanguage.startsWith("en") + ? convertIpaToNormal(phone.text.trim()) + : phone.text.trim(), ].join(""); }); } diff --git a/enjoy/src/utils.ts b/enjoy/src/utils.ts index db927ee2..64ead8c2 100644 --- a/enjoy/src/utils.ts +++ b/enjoy/src/utils.ts @@ -84,13 +84,23 @@ export const convertWordIpaToNormal = ( let j = i - 1; for (; j > 0 && j > i - 2; j--) { - if (consonantsRegex.test(ipas[j]) && !consonantsRegex.test(ipas[j - 1])) { + if ( + consonantsRegex.test(converted[j]) && + !IPA_CONSONANTS.trill.includes(converted[j]) && + !IPA_CONSONANTS.approximant.includes(converted[j]) && + !IPA_CONSONANTS.lateralApproximant.includes(converted[j]) + ) + break; + if ( + consonantsRegex.test(converted[j]) && + !consonantsRegex.test(converted[j - 1]) + ) { break; } } if (isVowel && mark) { - if (ipas[j]) { + if (converted[j] && consonantsRegex.test(converted[j])) { converted[j] = mark[0] + converted[j]; } else { converted[i] = mark[0] + converted[i];