* autotranslate python script * 8/52 translated * autotranslate finished * updated autotranslate script * fixes * updated tool * once more updated tool * more translates * more translates * fixes
49 lines
1.9 KiB
Python
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
|