o
    㥵i                  	   @   s  d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ ddl	m
Z
mZ dd Zg Zd	d
gZeD ]1ZeedD ]'ZejddZdev rbe eZeeZedee de  ee q;q2eeZedee  ee
 d ZeedddZejeedZW d   n1 sw   Y  ee  Z!e!e Z"edee" de  e"D ]
Z#ede#  qee! Z$edee$ de  e$D ]
Z%ede%  qe Z&eD ]Z'e'e&e'< qeedddZej(e&edddd e)d W d   n	1 sw   Y  ede  ee
 d ZeZ*dd  e*d!D Z+eedddZejeedZW d   n	1 sAw   Y  e+D ]Z,ee,dddZejeedZ-W d   n	1 sdw   Y  ee  ee-   Z.ee-  ee   Z/e.D ]Z0d"e0 e-e0< ed#e0 d$e,  qe/D ]Z0e-e0= ed%e0 d&e,  qee1e-2 d'd( d)Z-ee,dddZej(e-edddd e)d W d   n	1 sw   Y  ede,  qHed* dS )+    N)OrderedDict)Path)logger   )DEFAULT_LANGUAGEI18N_FILE_PATHc                 C   sp   g }t | tjr't | jtjr'| jjdkr'| jD ]}t |tjr&||j	 qt
| D ]	}|t| q,|S )Ni18n)
isinstanceastCallfuncNameidargsStrappendsiter_child_nodesextendextract_i18n_strings)nodei18n_stringsarg
child_node r   I/home/ubuntu/.local/lib/python3.10/site-packages/fish_speech/i18n/scan.pyr      s   

r   fish_speechtoolsz*.pyzutf-8)encodingzi18n(zFound z i18n strings in zTotal unique: z.jsonr)object_pairs_hookz unused keys in 	z missing keys in wF   T)ensure_asciiindent	sort_keys
zUpdated c                 C   s   g | ]	}|j tkr|qS r   )stemr   ).0fr   r   r   
<listcomp>S   s    r+   z*.jsonz#!zAdded missing key: z to zDel extra key: z from c                 C   s   t t | d S )Nr   )liststandard_datakeysindex)xr   r   r   <lambda>p   s    r1   )keyDone)3r
   globjsoncollectionsr   pathlibr   logurur   corer   r   r   stringsfoldersfolderrglobr*   	read_textcodeparsetreer   infolenr   set	code_keysstandard_fileopenloadr-   r.   standard_keysunused_keys
unused_keymissing_keysmissing_keycode_keys_dictr   dumpwritedir_path	languages	lang_file	lang_datadiffmissr2   sorteditemsr   r   r   r   <module>   s    


