o
    Ph	                     @   sP   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 G dd deZ
dS )	    )UnsupportedMethod)Language)BaseTranslator)Tuple)Requestc                
   @   s   e Zd ZdZe fdefddZdedededeeef fd	d
ZdedefddZ	de
defddZdefddZdefddZdS )TranslateComTranslatez7
    translatepy's implementation of translate.com
    requestc                 C   s   || _ d| _d| _d S )Nz3https://www.translate.com/translator/ajax_translatez:https://www.translate.com/translator/ajax_lang_auto_detect)sessiontranslate_urllangdetect_url)selfr    r   _/var/www/html/env_mimamsha/lib/python3.10/site-packages/translatepy/translators/translatecom.py__init__   s   
zTranslateComTranslate.__init__textdestination_languagesource_languagereturnc                 C   sP   |dkr	|  |}| jj| j|||ddd}|jdk r&| d }||fS dS )zp
        This is the translating endpoint

        Must return a tuple with (detected_language, result)
        autofalse)text_to_translatesource_langtranslated_languse_cache_onlydatai  translated_textN)	_languager	   postr
   status_codejson)r   r   r   r   r   resultr   r   r   
_translate   s   

z TranslateComTranslate._translatec                 C   s*   | j j| jd|id}|  | d S )zn
        This is the language detection endpoint

        Must return a string with the language code
        r   r   language)r	   r   r   raise_for_statusr    )r   r   r   r   r   r   r      s   zTranslateComTranslate._languager#   c                 C   s   |j S )z
        This is the language validation function
        It receives a "translatepy.language.Language" object and returns the correct language code

        Must return a string with the correct language code
        )alpha2)r   r#   r   r   r   _language_normalize*   s   z)TranslateComTranslate._language_normalizec                 C   s    t | dv rtdS t|S )z
        This is the language denormalization function
        It receives a string with the translator language code and returns a "translatepy.language.Language" object

        Must return a string with the correct language code
        >   zh-cnzhzho)strlowerr   )r   language_coder   r   r   _language_denormalize3   s   z+TranslateComTranslate._language_denormalizec                 C   s   dS )NzTranslate.comr   )r   r   r   r   __str__>   s   zTranslateComTranslate.__str__N)__name__
__module____qualname____doc__r   r   r*   r   r"   r   r   r&   r-   r.   r   r   r   r   r      s    "	r   N)translatepy.exceptionsr   translatepy.languager   translatepy.translators.baser   translatepy.utils.annotationsr   translatepy.utils.requestr   r   r   r   r   r   <module>   s    