
    Fgl                        S SK r S SKrS SKrS SKrS SKJrJr  S SKrS SKrS SK	r	S SK
r
S SKJr  S SKJr   " S S5      r " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)    N)dumpsloads)TextTranslationClient)AzureKeyCredentialc                   4    \ rS rSrS rS\4S jrS rS rSrg)	BaseTranslator   c                 4    Xl         X l        X0l        X@l        g N)servicelang_outlang_inmodel)selfr   r   r   r   s        b/Users/admin/workspace/ai/PDFMathTranslate/myenv/lib/python3.13/site-packages/pdf2zh/translator.py__init__BaseTranslator.__init__   s     
    returnc                     g r    )r   texts     r   	translateBaseTranslator.translate   s    r   c                     g r   r   r   s    r   __str__BaseTranslator.__str__   s    r   c                 R    U R                    SU R                   SU R                   3$ )N )r   r   r   r   s    r   r   r      s%    ,,qq??r   )r   r   r   r   N)	__name__
__module____qualname____firstlineno__r   strr   r   __static_attributes__r   r   r   r   r      s     @r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )GoogleTranslator    c                    > US:X  a  SOUnUS:X  a  SOUn[         TU ]  XX45        [        R                  " 5       U l        SU l        SS0U l        g )Nautozh-CNenzhttp://translate.google.com/m
User-AgentoMozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.1;SV1;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.04506.30))superr   requestsSessionsession	base_linkheadersr   r   r   r   r   	__class__s        r   r   GoogleTranslator.__init__!   sW    &&07h!V+$G;'')8  L
r   c                 n   US S nU R                   R                  U R                  U R                  U R                  US.U R
                  S9n[        R                  " SUR                  5      nUR                  S:X  a  SnU$ [        U5      S:X  a  [        S5      e[        R                  " US   5      nU$ )	N  )tlslq)paramsr5   z*(?s)class="(?:t0|result-container)">(.*?)<i  zIRREPARABLE TRANSLATION ERRORr   zEmpty translation result)r3   getr4   r   r   r5   refindallr   status_codelen
ValueErrorhtmlunescape)r   r   response	re_resultresults        r   r   GoogleTranslator.translate+   s    ET{<<##NN--t||$GLL $ 

 JJ98==
	 3&4F
 	 ^q 788]]9Q<0Fr   r4   r5   r3   r!   r"   r#   r$   r   r   r&   __classcell__r7   s   @r   r(   r(       s    
 r   r(   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )DeepLXTranslator>   c                   > US:X  a  SOUnUS:X  a  SOUn[         T	U ]  XX45         [        R                  " S5      n[        R                  " S5      (       d  SO[        R                  " S5      n[        R                  " 5       U l	        U S
U S3U l
        SS0U l        g ! [         a$  nUR
                  S   n[        SU S	35      UeS nAff = f)Nr+   zhr-   DEEPLX_AUTH_KEYDEEPLX_SERVER_URLzhttps://api.deeplx.orgr   The environment variable '' is required but not set./z
/translater.   r/   )r0   r   osgetenvKeyErrorargsrD   r1   r2   r3   r4   r5   )
r   r   r   r   r   auth_key
server_urlemissing_varr7   s
            r   r   DeepLXTranslator.__init__?   s    #v-48!V+$G;	yy!23H yy!455 )YY23   '')&<q
*=  L
  	&&)K,[M9ST	s   A	B! !
C+C

Cc                 j   US S nU R                   R                  U R                  [        U R                  US.5      U R
                  S9nUR                  S:X  a  [        UR                  5      nO![        S[        UR                  5      -   5      e US   nU$ ! [         a    Sn[        S5      ef = f)	Nr:   )target_langr   )r5      zHTTP error: data z!No valid key in DeepLX's response)r3   postr4   r   r   r5   rB   r   r   rD   r%   r[   rC   )r   r   rG   rI   s       r   r   DeepLXTranslator.translateV   s    ET{<<$$NN#'==  LL % 	
 3&8==)F^c(2F2F.GGHH	BF^FM 	BF@AA	Bs   B B2rK   rL   rN   s   @r   rP   rP   >   s    
. r   rP   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )DeepLTranslatort   c                   > US:X  a  SOUnUS:X  a  SOUn[         TU ]  XX45        [        R                  " 5       U l        [
        R                  " S5      n[
        R                  " S5      n[        R                  " XVS9U l	        g )Nr+   ZHENDEEPL_AUTH_KEYDEEPL_SERVER_URL)r^   )
r0   r   r1   r2   r3   rY   rZ   deepl
Translatorclient)r   r   r   r   r   r]   r^   r7   s          r   r   DeepLTranslator.__init__u   sm    !6)xWG;'')99-.YY12
&&xGr   c                 x    U R                   R                  UU R                  U R                  S9nUR                  $ )N)rc   source_lang)rs   translate_textr   r   r   r   r   rG   s      r   r   DeepLTranslator.translate~   s8    ;;-- . 

 }}r   )rs   r3   rL   rN   s   @r   rj   rj   t   s    H r   rj   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )OllamaTranslator   c                    > US:X  a  SOUnUS:X  a  SOUn[         TU ]  XX45        SS0U l        [        R                  " 5       U l        g Nr+   r,   r-   temperaturer   )r0   r   optionsollamaClientrs   r6   s        r   r   OllamaTranslator.__init__   sF    $f,(WG;%q)mmor   c                     U R                   R                  U R                  U R                  SSS.SSU R                   SU S3S./S9nUS	   S
   R                  5       $ )Nsystem<You are a professional,authentic machine translation engine.rolecontentuser0Translate the following markdown source text to r. Keep the formula notation $v*$ unchanged. Output translation directly without any additional text.
Source Text: 
Translated Text:)r   r   messagesmessager   )rs   chatr   r   r   striprx   s      r   r   OllamaTranslator.translate   s    ;;##**LL %]
 #!QRVR_R_Q`  aT  UY  TZ  Zl   m	 $ 
 	"9-3355r   rs   r   rL   rN   s   @r   r{   r{      s    &6 6r   r{   c                   6   ^  \ rS rSrU 4S jrS\4S jrSrU =r$ )OpenAITranslator   c                    > US:X  a  SOUnUS:X  a  SOUn[         TU ]  XX45        SS0U l        [        R                  " 5       U l        g r~   )r0   r   r   openaiOpenAIrs   r6   s        r   r   OpenAITranslator.__init__   sH    $f,(WG;%q) mmor   r   c                 *   U R                   R                  R                  R                  " SSU R                  0U R
                  DSSSS.SSU R                   SU S	3S./0D6nUR                  S
   R                  R                  R                  5       $ )Nr   r   r   r   r   r   r   r   r   r   r   )rs   r   completionscreater   r   r   choicesr   r   r   rx   s      r   r   OpenAITranslator.translate   s    ;;##//66 
**
ll

 %]
 #!QRVR_R_Q`  aT  UY  TZ  Zl   m	
 "**2288::r   r   	r!   r"   r#   r$   r   r%   r   r&   rM   rN   s   @r   r   r      s    &; ; ;r   r   c                   6   ^  \ rS rSrU 4S jrS\4S jrSrU =r$ )AzureTranslator   c                   > US:X  a  SOUnUS:X  a  SOUn[         TU ]  XX45         [        R                  S   n[        R                  S   n[        R                  S   n[        U5      n
[        XjUS
9U l	        [        R                  " S5      nUR                  [        R                  5        g ! [         a$  nUR
                  S   n	[        SU	 S	35      UeS nAff = f)Nr+   zzh-Hansr-   AZURE_APIKEYAZURE_ENDPOINTAZURE_REGIONr   rV   rW   )endpoint
credentialregionz0azure.core.pipeline.policies.http_logging_policy)r0   r   rY   environr[   r\   rD   r   r   rs   logging	getLoggersetLevelWARNING)r   r   r   r   r   api_keyr   r   r_   r`   r   loggerr7   s               r   r   AzureTranslator.__init__   s    &.HWG;	jjj0Gzz"23HZZ/F
 (0
+V

 ""#UV(  	j&&)K9+F`abhii	js   9B0 0
C:CCr   c                     U R                   R                  U/U R                  U R                  /S9nUS   R                  S   R
                  nU$ )N)bodyfrom_languageto_languager   )rs   r   r   r   translationsr   )r   r   rG   translated_texts       r   r   AzureTranslator.translate   sR    ;;((,, ) 
 #1+2215::r   )rs   r   rN   s   @r   r   r      s    ),  r   r   )rE   r   rY   r@   jsonr   r   rq   r   r   r1   azure.ai.translation.textr   azure.core.credentialsr   r   r(   rP   rj   r{   r   r   r   r   r   <module>r      s{      	 	      ; 5@ @"~ <3~ 3ln &6~ 64;~ ;8n r   