First commit
This commit is contained in:
50
custom_components/daily/localize.py
Normal file
50
custom_components/daily/localize.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import logging
|
||||
import json
|
||||
import os
|
||||
from .const import LANGUAGE_FILES_DIR, SUPPORTED_LANGUAGES
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def localize(string, language):
|
||||
# try opening language file
|
||||
language = language.lower()
|
||||
translated_string = None
|
||||
main_path = os.path.dirname(__file__)
|
||||
stringpath = string.split(".")
|
||||
try:
|
||||
# if the language is not english and the language is supported
|
||||
if language != "en" and language in SUPPORTED_LANGUAGES:
|
||||
with open(
|
||||
os.path.join(
|
||||
main_path, LANGUAGE_FILES_DIR + os.sep + language + ".json"
|
||||
)
|
||||
) as f:
|
||||
data = json.load(f)
|
||||
translated_string = get_string_from_data(stringpath, data)
|
||||
# fallback to english in case string wasn't found
|
||||
if language == "en" or not isinstance(translated_string, str):
|
||||
with open(
|
||||
os.path.join(main_path, LANGUAGE_FILES_DIR + os.sep + "en.json")
|
||||
) as f:
|
||||
data = json.load(f)
|
||||
translated_string = get_string_from_data(stringpath, data)
|
||||
# if still not found, just return the string parameter
|
||||
if isinstance(translated_string, str):
|
||||
return translated_string
|
||||
else:
|
||||
return string
|
||||
except OSError:
|
||||
_LOGGER.error(
|
||||
"Couldn't load translations language file for {}".format(language)
|
||||
)
|
||||
|
||||
|
||||
def get_string_from_data(stringpath, data):
|
||||
data_to_walk = data
|
||||
for p in stringpath:
|
||||
if isinstance(data_to_walk, str):
|
||||
return data_to_walk
|
||||
if p in data_to_walk:
|
||||
data_to_walk = data_to_walk[p]
|
||||
return data_to_walk
|
||||
Reference in New Issue
Block a user