Ë
    Ò—Äjt<  ã                   óB   — d dl Z d dlmZ ddlmZmZ  G d„ de«      ZdZy)é    N)ÚElementTreeé   )ÚUserÚUserExceptionc                   óv   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zed„ «       Ze	d„ «       Z
ed„ «       Zd„ Zd	„ Zd
„ Zd„ Zˆ xZS )ÚTranslationFilez! Encapsulate a translation file. c           
      ó–  •— t        ‰| �  di |¤Ž t        j                  j	                  |«      rJ| j                  dj                  |«      «       	 t        j                  |«      j                  «       | _
        nt        j                  t        «      | _
        || _        || _        || _        i | _        i | _        i | _        g }| j                  D ]ç  }|j,                  dk7  rŒ|j/                  |«       d}g }	|D ]?  }
|
j,                  dk(  r|
j0                  }Œ|
j,                  dk(  sŒ/|	j/                  |
«       ŒA |sŒo|	| j(                  |<   |	D ]e  }|j3                  d	«      }|�|j0                  sŒ#|j3                  d
«      }|�|j0                  sŒC|j0                  | j*                  |j0                  <   Œg Œé |D ]  }| j                  j5                  |«       Œ d| _        d| _        d| _        d| _        d| _        d| _         d| _!        g | _"        y# t        $ r*}t        dj                  |dt        |«      «      «      ‚d}~ww xY w)z" Initialise the translation file. zReading {0}...z
{}: {}: {}zinvalid translation fileNÚcontextÚ ÚnameÚmessageÚsourceÚtranslationr   © )#ÚsuperÚ__init__ÚosÚpathÚisfileÚprogressÚformatr   ÚparseÚgetrootÚ_rootÚ	Exceptionr   ÚstrÚ
fromstringÚ	_EMPTY_TSÚ_ts_fileÚ_no_obsoleteÚ_no_summaryÚ_updated_contextsÚ	_contextsÚ_translationsÚtagÚappendÚtextÚfindÚremoveÚ_nr_newÚ_nr_new_duplicatesÚ"_nr_new_using_existing_translationÚ_nr_existingÚ_nr_kept_obsoleteÚ_nr_discarded_obsoleteÚ_nr_discarded_untranslatedÚ_new_message_els)ÚselfÚts_fileÚno_obsoleteÚ
no_summaryÚkwargsÚeÚcontext_elsÚ
context_elr   Úmessage_elsÚelÚ
message_elÚ	source_elÚtranslation_elÚ	__class__s                 €úcC:\Users\pivot\Documents\cueki\casual-preloader\Lib\site-packages\PyQt6/lupdate/translation_file.pyr   zTranslationFile.__init__   s)  ø€ ô 	‰ÑÑ"˜6Ò"ä�7‰7�>‰>˜'Ô"Ø�M‰MÐ*×1Ñ1°'Ó:Ô;ðEÜ(×.Ñ.¨wÓ7×?Ñ?ÓA�•
ô %×/Ñ/´	Ó:ˆDŒJàˆŒØ'ˆÔØ%ˆÔØ!#ˆÔð ˆŒð  ˆÔàˆØŸ*œ*ˆJØ�~‰~ Ò*Øà×Ñ˜zÔ*àˆDØˆKã �Ø—6‘6˜VÒ#ØŸ7™7‘DØ—V‘V˜yÓ(Ø×&Ñ& rÕ*ð	 !ò Ø'2�—‘˜tÑ$ã"-�JØ *§¡°Ó 9�IØ Ð(°	·²Ø à%/§_¡_°]Ó%C�NØ%Ð-°^×5HÒ5HØ à9G×9LÑ9L�D×&Ñ& y§~¡~Ò6ñ #.ð% %ó> &ˆJØ�J‰J×Ñ˜jÕ)ð &ð ˆŒØ"#ˆÔØ23ˆÔ/ØˆÔØ!"ˆÔØ&'ˆÔ#Ø*+ˆÔ'ð !#ˆÕøôE ò EÜ#Ø$×+Ñ+¨GØ :¼CÀ»FóDóEð EûðEús   Á(H È	IÈ%IÉIc           	      ó–  — | j                  dj                  | j                  |j                  «      «       |j                  D �]ò  }	 | j
                  |j                     }| j                  |j                  «      }|j                  D �]ª  }| j                  ||«      }|�$|j                  |«       | j                  ||«       n| j                  ||«      }|€q| j                  |«      }|j                  |«       | j                  dj                  | j                  |j                   «      «      «       | xj"                  dz  c_        nÉ| j                  dj                  | j                  |j                   «      «      «       |j%                  d«      D ]C  }|j'                  d«      dk(  sŒ|j(                  r|j*                  d= Œ2|j-                  dd	«       ŒE || j.                  v r| xj0                  dz  c_        n| xj2                  dz  c_        |j5                  d
| j7                  |«      «       �Œ­ �Œõ y# t        $ r g }Y �Œçw xY w)z7 Update the translation file from a SourceFile object. zUpdating {0} from {1}...NzAdded new message '{0}'r   zUpdated message '{0}'r   ÚtypeÚvanishedÚ
unfinishedr   )r   r   r   ÚfilenameÚcontextsr#   r   ÚKeyErrorÚ_get_updated_message_elsÚmessagesÚ_find_messager)   Ú_add_message_elÚ_make_message_elr&   Úprettyr   r*   ÚfindallÚgetr'   ÚattribÚsetr1   r+   r-   ÚinsertÚ_make_location_el)r2   r   r
   r:   Úupdated_message_elsr   r<   r>   s           r@   ÚupdatezTranslationFile.updatej   s  € ð 	�‰Ø*×1Ñ1°$·-±-ØŸ™ó)ô	*ð —•ˆGð!Ø"Ÿn™n¨W¯\©\Ñ:�ð
 #'×"?Ñ"?ÀÇÁÓ"MÐà"×+Õ+�Ø!×/Ñ/°¸ÓE�
àÐ)à×&Ñ& zÔ2Ø×(Ñ(¨Ð5HÕIð "&×!3Ñ!3°GØ,ó".�Jð Ð%Ø!%×!6Ñ!6°wÓ!?�JØ'×.Ñ.¨zÔ:à—M‘MØ5×<Ñ<Ø$(§K¡K°·±Ó$?óAôBð —L’L AÑ%–Là—M‘MØ3×:Ñ:Ø$(§K¡K°·±Ó$?óAôBð +5×*<Ñ*<¸]Ö*K˜Ø)×-Ñ-¨fÓ5¸ÓCØ-×2Ò2Ø$2×$9Ñ$9¸&Ñ$Aà .× 2Ñ 2°6¸<Õ Hð +Lð " T×%:Ñ%:Ñ:Ø×/Ò/°1Ñ4Ö/à×)Ò)¨QÑ.Õ)à×!Ñ! ! T×%;Ñ%;¸GÓ%DÖEòW ,ñ 'øô ò !Ø “ð!ús   ÁH9È9IÉIc                 ó  — | j                   j                  «       D �]>  \  }}d}|D �]0  }| j                  |j                  d«      j                  «      }|j                  d«      }|�»|j                  r¯| j
                  r6| j                  dj                  |«      «       | xj                  dz  c_        Œ�|j                  dd«       |€| j                  |«      }| j                  ||«       | j                  dj                  |«      «       | xj                  dz  c_        Œü| j                  d	j                  |«      «       | xj                  dz  c_        �Œ3 �ŒA t        | j                  j!                  «       «      D ]}  }t#        j$                  d
«      }t#        j$                  d«      }||_        |j'                  |«       |j)                  | j                  |   «       | j*                  j'                  |«       Œ | j                  dj                  | j,                  «      «       | j*                  D ]  }	t#        j.                  |	d¬«       Œ t1        | j,                  ddd¬«      5 }
|
j3                  d«       |
j3                  d«       t#        j"                  | j*                  «      j3                  |
d¬«       |
j3                  d«       ddd«       | j4                  s| j7                  «        yy# 1 sw Y   Œ'xY w)z4 Write the translation file back to the filesystem. Nr   r   z Discarded obsolete message '{0}'r   rB   rC   zKept obsolete message '{0}'z$Discarded untranslated message '{0}'r
   r   zWriting {0}...ú    )ÚspaceÚwzutf-8Ú
)ÚencodingÚnewlinez'<?xml version="1.0" encoding="utf-8"?>
z<!DOCTYPE TS>
Úunicode)r[   )r#   ÚitemsrM   r(   r'   r    r   r   r/   rQ   rH   rK   r.   r0   Úsortedr"   Úkeysr   ÚElementr&   Úextendr   r   ÚindentÚopenÚwriter!   Ú_summary)r2   r   r:   rT   r<   r   r>   r9   Úname_elr;   Úfs              r@   re   zTranslationFile.write¨   s€  € ð
 "&§¡×!5Ñ!5×!7ÑˆD�+Ø"&Ðä)�
ØŸ™ Z§_¡_°XÓ%>×%CÑ%CÓD�à!+§¡°Ó!?�Ø!Ð-°.×2EÒ2EØ×(Ò(ØŸ™Ø B× IÑ IØ(.ó!0ô1ð ×3Ò3°qÑ8Ö3à&×*Ñ*¨6°:Ô>à.Ð6Ø26×2OÑ2OØ$(ó3*Ð/ð ×,Ñ,¨ZÐ9LÔMàŸ™Ø =× DÑ DÀVÓ LôNà×.Ò.°!Ñ3Ö.à—M‘MØB×IÑIØ$*ó,ô-ð ×3Ò3°qÑ8×3ò5 *ð "8ô@ ˜4×1Ñ1×6Ñ6Ó8Ö9ˆDÜ$×,Ñ,¨YÓ7ˆJä!×)Ñ)¨&Ó1ˆGØˆGŒLØ×Ñ˜gÔ&à×Ñ˜d×4Ñ4°TÑ:Ô;à�J‰J×Ñ˜jÕ)ð :ð 	�‰Ð&×-Ñ-¨d¯m©mÓ<Ô=ð —*”*ˆBÜ×Ñ˜r¨Ö0ð ô �$—-‘- ¨wÀÕEÈØ�G‰GÐ>Ô?Ø�G‰GÐ%Ô&Ü×#Ñ# D§J¡JÓ/×5Ñ5°aÀ)Ð5ÔLØ�G‰G�DŒM÷	 Fð ×ÒØ�M‰M�Oð  ÷ FÐEús   É+A$K5Ë5K>c                 ót   — | j                  d«      D ]  }| j                  |«       Œ |j                  | «       y)z> Add a message element to a list of updated message elements. ÚlocationN)rN   r)   r&   )r<   rT   Úlocation_els      r@   rK   zTranslationFile._add_message_elè   s7   € ð
 &×-Ñ-¨jÖ9ˆKØ×Ñ˜kÕ*ð :ð 	×"Ñ" :Õ.ó    c                 ó  — |D ]ý  }d}d}d}g }|D ]œ  }|j                   dk(  r|j                  }Œ|j                   dk(  r|j                  }Œ;|j                   dk(  r|j                  }ŒW|j                   j                  d«      sŒs|j                  |j                   dd |j                  g«       Œž ||j                  k7  rŒ¼||j
                  k7  rŒÌ|| j                  |«      k7  rŒá||j                  j                  k7  rŒû|c S  y)z7 Return the message element for a message from a list. r   r   ÚcommentÚextracommentúextra-é   N)	r%   r'   Ú
startswithr&   r   rn   Ú_get_message_extra_commentsÚembedded_commentsÚextras)	Úclsr   r:   r<   r   rn   Úextra_commentru   r;   s	            r@   rJ   zTranslationFile._find_messageó   s÷   € ó &ˆJØˆFØˆGØˆMØˆFó !�Ø—6‘6˜XÒ%ØŸW™W‘FØ—V‘V˜yÒ(Ø Ÿg™g‘GØ—V‘V˜~Ò-Ø$&§G¡G‘MØ—V‘V×&Ñ& xÕ0Ø—M‘M 2§6¡6¨!¨" :¨r¯w©wÐ"7Õ8ð !ð ˜Ÿ™Ò'Øà˜'Ÿ/™/Ò)Øà × ?Ñ ?ÀÓ HÒHØà˜×2Ñ2×9Ñ9Ò9ØàÒð= &ð@ rl   c                 óL   — dj                  | j                  j                  «      S )zA Return a message's extra comments as they appear in a .ts file. Ú )Újoinrt   Úextra_comments)r   s    r@   rs   z+TranslationFile._get_message_extra_comments  s   € ð �x‰x˜×1Ñ1×@Ñ@ÓAÐArl   c                 óh   — 	 | j                   |   }|S # t        $ r g }|| j                   |<   Y |S w xY w)z< Return the list of updated message elements for a context. )r"   rG   )r2   r   rT   s      r@   rH   z(TranslationFile._get_updated_message_els  sM   € ð	?Ø"&×"8Ñ"8¸Ñ">Ðð
 #Ð"øô	 ò 	?Ø"$ÐØ+>ˆD×"Ñ" 4Ò(à"Ð"ð		?ús   ‚ “1°1c                 ó2  — t        j                  dt        j                  j	                  |j
                  t        j                  j                  t        j                  j                  | j                  «      «      ¬«      t        |j                  «      ¬«      S )z Return a 'location' element. rj   )Ústart)rE   Úline)r   ra   r   r   ÚrelpathrE   ÚdirnameÚabspathr   r   Úline_nr)r2   r   s     r@   rS   z!TranslationFile._make_location_el*  sd   € ô ×"Ñ" :ÜŸ™Ÿ™¨×)9Ñ)9Ü Ÿg™gŸo™o¬b¯g©g¯o©o¸d¿m¹mÓ.LÓMð )ó Oä˜Ÿ™Ó)ô+ð 	+rl   c                 óÈ  — i }|j                   j                  r|j                   j                  |d<   |j                  rd|d<   t        j                  d|«      }t        j                  d«      }|j
                  |_        |j                  |«       |j                  r7t        j                  d«      }|j                  |_        |j                  |«       |j                   j                  r<t        j                  d«      }| j                  |«      |_        |j                  |«       t        j                  dd	¬
«      }| j                  j                  |j
                  «      }|rU||_        | j                  dj                  | j                  |j
                  «      «      «       | xj                   dz  c_        |j                  r$|j                  t        j                  d«      «       |j                  |«       |j                   j"                  D ]5  \  }	}
t        j                  d|	z   «      }|
|_        |j                  |«       Œ7 | j$                  j                  |«       |S )z Return a 'message' element. ÚidÚyesÚnumerusr   r   rn   ro   r   rD   )rB   z%Reused existing translation for '{0}'r   Únumerusformrp   )rt   Ú
message_idr‡   r   ra   r   r'   r&   rn   r{   rs   r$   rO   r   r   rM   r,   ru   r1   )r2   r   Úattrsr<   r=   Ú
comment_elÚextracomment_elr>   r   ÚfieldÚvaluer;   s               r@   rL   z TranslationFile._make_message_el2  s÷  € ð ˆà×$Ñ$×/Ò/Ø!×3Ñ3×>Ñ>ˆE�$‰Kà�?Š?Ø$ˆE�)Ñä ×(Ñ(¨°EÓ:ˆ
ä×'Ñ'¨Ó1ˆ	Ø Ÿ™ˆ	ŒØ×Ñ˜)Ô$à�?Š?Ü$×,Ñ,¨YÓ7ˆJØ%Ÿo™oˆJŒOØ×Ñ˜jÔ)à×$Ñ$×3Ò3Ü)×1Ñ1°.ÓAˆOØ#'×#CÑ#CÀGÓ#LˆOÔ Ø×Ñ˜oÔ.ä$×,Ñ,¨]Ø!ô#ˆð
 ×(Ñ(×,Ñ,¨W¯^©^Ó<ˆÙØ"-ˆNÔà�M‰MØ;×BÑBØ ŸK™K¨¯©Ó7ó9ô:ð ×3Ò3°qÑ8Õ3à�?Š?Ø×!Ñ!¤+×"5Ñ"5Ø!ó##ô $ð 	×Ñ˜.Ô)à#×5Ñ5×<Ô<‰LˆE�5Ü×$Ñ$ X°Ñ%5Ó6ˆBØˆBŒGØ×Ñ˜bÕ!ð =ð
 	×Ñ×$Ñ$ ZÔ0àÐrl   c                 óP  ‡ ‡— g Šˆ ˆfd„}‰ j                   rZ‰ j                  r- |dj                  ‰ j                   ‰ j                  «      «       n! |dj                  ‰ j                   «      «       ‰ j                  r! |dj                  ‰ j                  «      «       ‰ j                  r! |dj                  ‰ j                  «      «       ‰ j
                  r! |dj                  ‰ j
                  «      «       ‰ j                  r! |dj                  ‰ j                  «      «       ‰ j                  r! |dj                  ‰ j                  «      «       ‰s+‰j                  d	j                  ‰ j                  ¬
«      «       t        t        j                  j                  ‰«      «       y)z- Display the summary of changes to the user. c                 óˆ   •— ‰s+‰j                  dj                  ‰j                  ¬«      «       ‰j                  d| z   «       y )NzSummary of changes to {ts}:©ÚtsrW   )r&   r   r   )r   r2   Úsummary_liness    €€r@   Úsummaryz)TranslationFile._summary.<locals>.summaryp  s@   ø€ ñ !Ø×$Ñ$Ø5×<Ñ<ÀÇÁÐ<ÓNôPð × Ñ  ¨$¡Õ/rl   z0{0} new messages were added (and {1} duplicates)z{0} new messages were addedz){0} messages reused existing translationsz {0} existing messages were foundz{0} obsolete messages were keptz${0} obsolete messages were discardedz({0} untranslated messages were discardedz{ts} was unchangedr‘   N)r*   r+   r   r,   r-   r.   r/   r0   r&   r   Úprintr   Úlineseprz   )r2   r”   r“   s   ` @r@   rf   zTranslationFile._summaryj  sl  ù€ ð ˆõ	0ð �<Š<Ø×&Ò&ÙÐJ×QÑQØŸ™ d×&=Ñ&=ó?õ @ñ Ð5×<Ñ<¸T¿\¹\ÓJÔKà×2Ò2ÙÐ?×FÑFØ×;Ñ;ó=ô >ð ×ÒÙÐ6×=Ñ=Ø×%Ñ%ó'ô (ð ×!Ò!ÙÐ5×<Ñ<Ø×*Ñ*ó,ô -ð ×&Ò&ÙÐ:×AÑAØ×/Ñ/ó1ô 2ð ×*Ò*ÙÐ>×EÑEØ×3Ñ3ó5ô 6ñ Ø× Ñ Ð!5×!<Ñ!<ÀÇÁÐ!<Ó!NÔOäŒb�j‰j�o‰o˜mÓ,Õ-rl   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rU   re   ÚstaticmethodrK   ÚclassmethodrJ   rs   rH   rS   rL   rf   Ú__classcell__)r?   s   @r@   r   r      sn   ø„ Ù+ôL#ò\<Fò|>ð@ ñ/ó ð/ð ñ#ó ð#ðJ ñBó ðBò
	#ò+ò6öp-.rl   r   z<TS version="2.1">
</TS>
)r   Ú	xml.etreer   Úuserr   r   r   r   r   rl   r@   Ú<module>r       s&   ðó& 
Ý !ç %ô~.�dô ~.ðF�	rl   