Ë
    ?“Éi²  ã                  ó˜   — d dl mZ d dlZd dlZd dlmZ  ed¬«       G d„ d«      «       Z G d„ d	e«      Z G d
„ d«      Z	 e	«       Z
dd„Zy)é    )ÚannotationsN)Ú	dataclassT)Úfrozenc                  ó4   — e Zd ZU ded<   ded<   ded<   dd„Zy)ÚTranslationResultz
str | NoneÚenÚptÚarc                ó¬   — i }| j                   r| j                   |d<   | j                  r| j                  |d<   | j                  r| j                  |d<   |S )Nr   r	   r
   ©r   r	   r
   )ÚselfÚouts     úGD:\satge\Panafrican Journalism Award\project\app\services\translator.pyÚas_dictzTranslationResult.as_dict   sH   € Ø ˆØ�7Š7ØŸ™ˆC�‰IØ�7Š7ØŸ™ˆC�‰IØ�7Š7ØŸ™ˆC�‰IØˆ
ó    N)Úreturnúdict[str, str])Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   © r   r   r   r      s   … àƒNØƒNØƒNôr   r   c                  ó   — e Zd Zy)ÚTranslatorErrorN)r   r   r   r   r   r   r   r      s   „ Ør   r   c                  óh   — e Zd ZdZ ej
                  «       ZdZd	d„Zd	d„Z	e
d
d„«       Zdd„Zdd„Zy)Ú_ArgosTranslatoruÑ   Argos Translate wrapper.

    Design goals:
    - load installed languages once
    - avoid re-translation when target already exists
    - cascade FRâ†’ENâ†’PT/AR
    - keep failure isolated per language
    Fc                ó   — d | _         y )N)Ú
_translate)r   s    r   Ú__init__z_ArgosTranslator.__init__*   s	   € Øˆ�r   c                óœ  — | j                   j                  ry | j                   j                  5  | j                   j                  r
	 d d d «       y 	 ddlm} 	 |j                  «        || _        d| j                   _        d d d «       y # t
        $ r}t        d«      |‚d }~ww xY w# t
        $ r}t        d«      |‚d }~ww xY w# 1 sw Y   y xY w)Nr   )Ú	translateuR   Argos Translate n'est pas importable. VÃ©rifie que 'argostranslate' est installÃ©.ue   Impossible de charger les langues Argos installÃ©es. VÃ©rifie les packages FRâ†’EN, ENâ†’PT, ENâ†’AR.T)	Ú	__class__Ú_initializedÚ
_init_lockÚargostranslater!   Ú	Exceptionr   Úget_installed_languagesr   )r   r   Úes      r   Ú_ensure_loadedz_ArgosTranslator._ensure_loaded-   s¿   € Ø�>‰>×&Ò&ØØ�^‰^×&Ó&Ø�~‰~×*Ò*Ø÷ 'Ð&ðÝBðØ×2Ñ2Ô4ð )ˆDŒOØ*.ˆD�N‰NÔ'÷' 'Ð&øô
 ò Ü%Øhóàðûðûô ò Ü%Ø{óàðûðú÷ 'Ð&úsM   ®CÁBÁB%Á'CÂ	B"ÂBÂB"Â"CÂ%	B?Â.B:Â:B?Â?CÃCc                óÞ   — | €yt        | «      }|j                  dd«      j                  dd«      }t        j                  dd|«      }t        j                  dd|«      }|j	                  «       S )	NÚ z
Ú
Úz[ \t]+Ú z\n{3,}z

)ÚstrÚreplaceÚreÚsubÚstrip)ÚtextÚss     r   Ú_clean_textz_ArgosTranslator._clean_textE   s`   € àˆ<ØÜ�‹IˆØ�I‰I�f˜dÓ#×+Ñ+¨D°$Ó7ˆÜ�F‰F�9˜c 1Ó%ˆÜ�F‰F�9˜f aÓ(ˆØ�w‰w‹yÐr   c                óœ   — | j                  «        | j                  st        d«      ‚t        | j                  j	                  |||«      «      S )Nu   Argos Translate non initialisÃ©)r)   r   r   r/   r!   )r   r4   Ú	from_codeÚto_codes       r   Ú_translate_onez_ArgosTranslator._translate_oneO   s?   € Ø×ÑÔØ�ŠÜ!Ð"CÓDÐDÜ�4—?‘?×,Ñ,¨T°9¸gÓFÓGÐGr   c                óÈ  — | j                  |«      }|sddddœS ddddœ}	 | j                  |dd«      }| j                  |«      |d<   |d   rX	 | j                  |d   dd«      }| j                  |«      |d<   	 | j                  |d   dd«      }| j                  |«      |d<   |S |S # t        $ r d|d<   Y Œow xY w# t        $ r d|d<   Y ŒSw xY w# t        $ r	 d|d<   Y |S w xY w)Nr+   r   Úfrr   r	   r
   )r6   r:   r&   )r   r4   Úcleanedr   Úen_textÚpt_textÚar_texts          r   Útranslate_allz_ArgosTranslator.translate_allU   s"  € Ø×"Ñ" 4Ó(ˆÙØ B¨bÑ1Ð1à%'¨r¸Ñ<ˆð	Ø×)Ñ)¨'°4¸Ó>ˆGØ×(Ñ(¨Ó1ˆC�‰Ið
 ˆtŠ9ðØ×-Ñ-¨c°$©i¸¸tÓD�Ø ×,Ñ,¨WÓ5��D‘	ðØ×-Ñ-¨c°$©i¸¸tÓD�Ø ×,Ñ,¨WÓ5��D‘	ð ˆ
ˆsˆ
øô# ò 	ØˆC�‹Ið	ûô ò Ø��D“	ðûô ò Ø��D’	àˆ
ðús5   ¡'B' Á*B; Á9*C Â'B8Â7B8Â;CÃCÃC!Ã C!N)r   ÚNone)r4   r/   r   r/   )r4   r/   r8   r/   r9   r/   r   r/   ©r4   r/   r   r   )r   r   r   Ú__doc__Ú	threadingÚLockr$   r#   r   r)   Ústaticmethodr6   r:   rA   r   r   r   r   r      sE   „ ñð  �—‘Ó!€JØ€Lóó/ð0 òó ðóHôr   r   c                ó,   — t         j                  | «      S )a  Translate french text to {en, pt, ar}.

    Returns a dict with keys: en, pt, ar.
    - empty/whitespace input returns empty strings
    - errors are swallowed per-language (return empty string)

    This function is safe to call from request handlers.
    )Ú_translator_singletonrA   )r4   s    r   rA   rA   w   s   € ô !×.Ñ.¨tÓ4Ð4r   rC   )Ú
__future__r   r1   rE   Údataclassesr   r   ÚRuntimeErrorr   r   rI   rA   r   r   r   Ú<module>rM      sX   ðÝ "ã 	Û Ý !ñ �$Ô÷ð ó ðô 	�lô 	÷Tñ Tñn )Ó*Ð ô
5r   