@@ -14,7 +14,7 @@ import {
1414 updateLoadingText ,
1515 wait ,
1616} from "./utils.js" ;
17- import { tts } from "./tts.js" ;
17+ import { tts , setLanguageAndFindVoice } from "./tts.js" ;
1818import { toPdf } from "./pdf_export.js" ;
1919import { toCsv } from "./csv_export.js" ;
2020import { loadLexicon } from "./lexicon.js" ;
@@ -101,7 +101,8 @@ async function transcribe(mode, translate = false, inputText = null) {
101101 lang === "Ukrainian" ||
102102 lang === "Czech" ||
103103 lang === "Russian" ||
104- lang === "Lituanian"
104+ lang === "Lituanian" ||
105+ lang === "French"
105106 ) {
106107 [ value , values ] = processGermanIpa ( value ) ;
107108 }
@@ -179,7 +180,8 @@ async function transcribe(mode, translate = false, inputText = null) {
179180 lang === "Czech" ||
180181 lang === "Lithuanian" ||
181182 lang === "Russian" ||
182- lang === "Ukrainian"
183+ lang === "Ukrainian" ||
184+ lang === "French"
183185 ) {
184186 [ value , values ] = processGermanIpa ( value ) ;
185187 } else {
@@ -313,7 +315,8 @@ async function transcribe(mode, translate = false, inputText = null) {
313315 lang === "Czech" ||
314316 lang === "Ukrainian" ||
315317 lang === "Lituanian" ||
316- lang === "Russian"
318+ lang === "Russian" ||
319+ lang === "French"
317320 ) {
318321 [ value , values ] = processGermanIpa ( results [ i ] ?. value || "" ) ;
319322 } else {
@@ -395,7 +398,8 @@ async function transcribe(mode, translate = false, inputText = null) {
395398 lang === "Czech" ||
396399 lang === "Lituanian" ||
397400 lang === "Russian" ||
398- lang === "Ukrainian"
401+ lang === "Ukrainian" ||
402+ lang === "French"
399403 ) {
400404 Array . from ( document . querySelectorAll ( ".ipa" ) ) . map ( ( x ) => {
401405 if (
@@ -611,6 +615,23 @@ async function updateOptionsUponLanguageSelection(event) {
611615 useDictionary = "true" ;
612616 }
613617 console . log ( "changing language to " , selectedLanguage ) ;
618+
619+ // Update help button
620+ const helpButton = document . getElementById ( "help_button" ) ;
621+ if ( helpButton ) {
622+ if ( selectedLanguage && selectedLanguage !== "-- select an option --" ) {
623+ helpButton . style . display = "inline-block" ;
624+ helpButton . onclick = ( ) => {
625+ const helpUrl = `help/${ selectedLanguage
626+ . toLowerCase ( )
627+ . replace ( / \s + / g, "_" ) } .html`;
628+ window . open ( helpUrl , "_blank" ) ;
629+ } ;
630+ } else {
631+ helpButton . style . display = "none" ;
632+ }
633+ }
634+
614635 try {
615636 if ( urlParams . get ( "lang" ) !== selectedLanguage ) {
616637 window . history . pushState ( { } , "" , `?lang=${ selectedLanguage } ` ) ;
@@ -652,7 +673,7 @@ async function updateOptionsUponLanguageSelection(event) {
652673 loadedLanguages [ selectedLanguage ] = true ;
653674 }
654675
655- selectTTS ( lang . ttsCode ) ;
676+ setLanguageAndFindVoice ( lang . ttsCode ) ;
656677
657678 function updateSelectOptions ( selectedValue , selectElement , options ) {
658679 selectElement . innerHTML = "" ;
@@ -676,17 +697,8 @@ async function updateOptionsUponLanguageSelection(event) {
676697 console . log ( "Finished changing language to " , selectedLanguage ) ;
677698 await processTextParam ( ) ;
678699 rememberText ( ) ;
679- }
680-
681- function selectTTS ( language ) {
682- const voices = Array . from ( document . querySelector ( "#tts" ) . options ) ;
683- const relevantVoices = voices . filter ( ( option ) =>
684- ( option . getAttribute ( "data-lang" ) || "" ) . includes ( language ) ,
685- ) ;
686-
687- if ( relevantVoices . length > 0 ) {
688- document . querySelector ( "#tts" ) . value = relevantVoices [ 0 ] . value ;
689- }
700+ globalThis . transcriptionLang = selectedLanguage ;
701+ globalThis . transcriptionLangCode = lang . ttsCode ;
690702}
691703
692704const isDarkMode = ( ) => document . body . classList . contains ( "dark_mode" ) ;
0 commit comments