6
StarHorizon_Public/Tools/ss14_ru/lokalisemodels.py
2026-01-24 12:49:55 +03:00

65 lines
2.1 KiB
Python

import typing
import os
from pydash import py_
from project import Project
class LocalePath:
def __init__(self, relative_file_path):
self.ru = os.path.join(Project().ru_locale_dir_path, relative_file_path)
self.en = os.path.join(Project().en_locale_dir_path, relative_file_path)
class LokaliseTranslation:
def __init__(self, data, key_name: typing.AnyStr):
self.key_name = key_name,
self.data = data
class LokaliseKey:
def __init__(self, data):
self.data = data
self.key_name = self.data.key_name['web']
self.key_base_name = self.get_key_base_name(self.key_name)
self.is_attr = self.check_is_attr()
def get_file_path(self):
relative_dir_path = '{relative_file_path}.ftl'.format(
relative_file_path='/'.join(self.data.key_name['web'].split('.')[0].split('::')))
return LocalePath(relative_dir_path)
def get_key_base_name(self, key_name):
splitted_name = key_name.split('.')
return splitted_name[0]
def get_key_last_name(self, key_name):
splitted_name = key_name.split('.')
return py_.last(splitted_name)
def get_parent_key(self):
if self.is_attr:
splitted_name = self.key_name.split('.')[0:-1]
return '.'.join(splitted_name)
else:
return None
def check_is_attr(self):
return len(self.key_name.split('.')) > 2
def serialize(self):
if self.is_attr:
return self.serialize_attr()
else:
return self.serialize_message()
def serialize_attr(self):
return '.{name} = {value}'.format(name=self.get_key_last_name(self.key_name), value=self.get_translation('ru').data['translation'])
def serialize_message(self):
return '{name} = {value}'.format(name=self.get_key_last_name(self.key_name), value=self.get_translation('ru').data['translation'])
def get_translation(self, language_iso='ru'):
return list(map(lambda data: LokaliseTranslation(key_name=self.data.key_name['web'], data=data), py_.filter(self.data.translations, {'language_iso': language_iso})))[0]