17
17
18
18
# Supported translators
19
19
TRANSLATORS = {
20
- 'OpenAI' : OpenAICompatibleTranslator ,
21
20
'OpenAI Compatible' : OpenAICompatibleTranslator ,
21
+ 'OpenAI' : OpenAICompatibleTranslator ,
22
22
'google' : GoogleTranslator ,
23
23
}
24
24
@@ -270,14 +270,14 @@ def main():
270
270
index = 0
271
271
)
272
272
273
- # Only show API key input if not set in environment
274
- if not os .getenv ("OPENAI_API_KEY" ):
273
+ # Get API key from environment or user input
274
+ api_key = os .getenv ("OPENAI_API_KEY" , "" )
275
+ if not api_key :
275
276
api_key = st .text_input (
276
277
"API Key" ,
277
- value = "" ,
278
+ value = "sk-xxx " ,
278
279
type = "password"
279
280
)
280
- os .environ ["OPENAI_API_KEY" ] = api_key
281
281
282
282
# Different default API base for OpenAI and OpenAI Compatible
283
283
default_base = "https://api.openai.com/v1" if translator_name == 'OpenAI' else DEFAULT_API_BASE
@@ -293,9 +293,15 @@ def main():
293
293
value = os .getenv ("OPENAI_MODEL" , default_model )
294
294
)
295
295
296
- # Update environment variables
297
- os .environ ["OPENAI_API_BASE" ] = api_base
298
- os .environ ["OPENAI_MODEL" ] = model
296
+ # Store API settings in session state
297
+ if 'api_settings' not in st .session_state :
298
+ st .session_state .api_settings = {}
299
+ st .session_state .api_settings .update ({
300
+ 'api_key' : api_key ,
301
+ 'api_base' : api_base ,
302
+ 'model' : model
303
+ })
304
+
299
305
target_lang = LANGUAGE_OPTIONS [target_lang ]
300
306
else :
301
307
# For Google Translator, show target language selection
@@ -338,9 +344,15 @@ def main():
338
344
with col2 :
339
345
st .header ("Translated" )
340
346
341
- # Configure translator with selected source language
347
+ # Configure translator with selected source language and API settings
342
348
TranslatorClass = TRANSLATORS [translator_name ]
343
- translator = TranslatorClass (source = source_lang , target = target_lang )
349
+ translator = TranslatorClass (
350
+ source = source_lang ,
351
+ target = target_lang ,
352
+ api_key = st .session_state .api_settings .get ('api_key' ),
353
+ base_url = st .session_state .api_settings .get ('api_base' ),
354
+ model = st .session_state .api_settings .get ('model' )
355
+ )
344
356
345
357
# Translate current batch of pages
346
358
translated_pages = translate_pdf_pages (
@@ -392,7 +404,13 @@ def main():
392
404
use_container_width = True ):
393
405
# Configure translator
394
406
TranslatorClass = TRANSLATORS [translator_name ]
395
- translator = TranslatorClass (source = source_lang , target = target_lang )
407
+ translator = TranslatorClass (
408
+ source = source_lang ,
409
+ target = target_lang ,
410
+ api_key = st .session_state .api_settings .get ('api_key' ),
411
+ base_url = st .session_state .api_settings .get ('api_base' ),
412
+ model = st .session_state .api_settings .get ('model' )
413
+ )
396
414
397
415
# Translate all pages
398
416
output_doc = pymupdf .open ()
0 commit comments