mirror of
https://gitlab.com/pulsechaincom/staking-deposit-cli.git
synced 2025-01-10 21:11:21 +00:00
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
import inspect
|
|
from functools import reduce
|
|
import json
|
|
from typing import (
|
|
Any,
|
|
Dict,
|
|
List,
|
|
)
|
|
import os
|
|
|
|
from eth2deposit.utils.constants import INTL_CONTENT_PATH
|
|
|
|
|
|
def _get_from_dict(dataDict: Dict[str, Any], mapList: List[str]) -> str:
|
|
'''
|
|
Iterate nested dictionaries
|
|
'''
|
|
return reduce(dict.get, mapList, dataDict) # type: ignore
|
|
|
|
|
|
def load_text(lang: str, params: List[str], file_path: str='', func: str='') -> str:
|
|
'''
|
|
Determine and return the appropriate internationalisation text for a given `lang` and `params`
|
|
'''
|
|
if file_path == '':
|
|
# Auto-detect file-path based on call stack
|
|
file_path = inspect.stack()[1].filename
|
|
file_path = file_path[:-3] + '.json' # replace .py with .json
|
|
|
|
if func == '':
|
|
# Auto-detect function based on call stack
|
|
func = inspect.stack()[1].function
|
|
|
|
# Determine path to json text
|
|
file_path_list = os.path.normpath(file_path).split(os.path.sep)
|
|
rel_path_list = file_path_list[file_path_list.index('eth2deposit') + 1:]
|
|
json_path = os.path.join(INTL_CONTENT_PATH, lang, *rel_path_list)
|
|
|
|
# browse json until text is found
|
|
with open(json_path) as f:
|
|
text_dict = json.load(f)
|
|
return _get_from_dict(text_dict, [func] + params)
|