Files
OldThink/Tools/ss14_ru/lokalise_fluent_ast_comparer_manager.py
HitPanda 50abbcee11 [Feat] Translates + translate tools (#260)
* autotranslate python script

* 8/52 translated

* autotranslate finished

* updated autotranslate script

* fixes

* updated tool

* once more updated tool

* more translates

* more translates

* fixes
2024-01-20 05:10:24 +03:00

49 lines
1.9 KiB
Python

from fluent.syntax import ast
from fluentast import FluentAstMessage
from fluentastcomparer import FluentAstComparer
from fluentastmanager import FluentAstManager
class LokaliseFluentAstComparerManager:
def __init__(self, sourse_parsed: ast.Resource, target_parsed: ast.Resource):
self.sourse_parsed = sourse_parsed
self.target_parsed = target_parsed
self.comparer = FluentAstComparer(sourse_parsed, target_parsed)
self.ast_manager = FluentAstManager(sourse_parsed, target_parsed)
def for_update(self):
for_update = self.comparer.get_not_equal_exist_values_with_attrs()
if not len(for_update):
return []
return for_update
def update(self, for_update):
for update in for_update:
idx = self.comparer.sourse_parsed.body.index(update.element)
update_mess: FluentAstMessage = self.comparer.find_message_by_id_name(update.get_id_name(),
self.comparer.target_elements)
self.ast_manager.update_by_index(idx, update_mess.element)
return self.ast_manager.sourse_parsed
def for_delete(self):
for_delete = self.comparer.get_not_exist_id_names()
if len(for_delete):
keys = list(map(lambda el: el.get_id_name(), for_delete))
print(f'Следующие ключи есть в lokalise, но нет в файле. Возможно, их нужно удалить из lokalise: {keys}')
return for_delete
def for_create(self):
for_create = self.comparer.get_not_equal_id_names()
if len(for_create):
keys = list(map(lambda el: el.get_id_name(), for_create))
print(f'Следующих ключей файла нет в lokalise. Необходимо добавить: {keys}')
return for_create