Словарь схемы 0.16.25 (7250 строк), ru.json, ручные правки падежей, перевод ключа name только в меню, release.sh для выкладки в релиз current. Claude-Session: https://claude.ai/code/session_01BFaqS6mH9sa99RWghq2j46
24 строки
903 B
Python
24 строки
903 B
Python
import json,glob,re
|
|
d=json.load(open('../part3.json'))
|
|
tr={}
|
|
for f in sorted(glob.glob('[a-d].tsv')):
|
|
for l in open(f,encoding='utf-8').read().split('\n'):
|
|
if not l.strip(): continue
|
|
i,t=l.split('\t',1); tr[int(i)]=t.replace('\\n','\n')
|
|
out={s:tr.get(i,s) for i,s in enumerate(d)}
|
|
json.dump(out,open('../part3.ru.json','w'),ensure_ascii=False,indent=1)
|
|
# checks
|
|
assert len(out)==len(d)==len(set(d))
|
|
pat=re.compile(r'%\{[^}]*\}|\{\{[^}]*\}\}|\{[^{}]*\}|\$\w+')
|
|
bad=0
|
|
for k,v in out.items():
|
|
if '—' in v or '–' in v: print('DASH',k);bad+=1
|
|
for m in pat.findall(k):
|
|
if m not in v: print('PH',k,'|',v);bad+=1
|
|
kept=sum(1 for k,v in out.items() if k==v)
|
|
print(len(out),'kept',kept,'bad',bad)
|
|
# Latin/Cyrillic mixed words
|
|
for k,v in out.items():
|
|
for w in re.findall(r'\w+',v):
|
|
if re.search('[а-яё]',w,re.I) and re.search('[a-z]',w,re.I): print('MIX',w,v)
|