как изменять язык в Python (интерфейса) при помощи файла .config?

я пишу маленькую ОС на пайтон, используя библиотеки os и json (основные).

как сделать так, чтобы можно было менять язык и хранить его в файлах .config?

к примеру, если пользователь выбирает английский язык, то интерфейс ОС меняется на английский язык.

вот мой код:

import os
import json
import random
import time

import keyboard
from colorama import Fore
from tqdm import tqdm
import hashlib
import keyboard as keyb
import math
import pygame



# Пример использования функции

def display_pixel_art():
    art = """
     __  __             _        ___   ____  
    |  \/  |           (_)      / _ \ / __ \ 
    | \  / | ___  _ __  _  ___ | | | | |  | |
    | |\/| |/ _ \| '_ \| |/ _ \| | | | |  | |
    | |  | | (_) | | | | |  __/| |_| | |__| |
    |_|  |_|\___/|_| |_|_|\___| \___/ \____/ 
    """
    print(art)

def check_account():
    if os.path.exists('data.json'):
        with open('data.json', 'r') as file:
            try:
                accounts = json.load(file)
                if not isinstance(accounts, list):
                    raise ValueError("Неверный формат данных")
            except (json.JSONDecodeError, ValueError):
                pygame.init()
                pygame.mixer.music.load("Error.mp3")
                pygame.mixer.music.play(0)
                print("Ошибка чтения файла данных. Создание нового аккаунта.")
                accounts = []
                create_account(accounts)
                return

            if not accounts:
                create_account(accounts)
            else:
                print("Доступные аккаунты:")
                for i, account in enumerate(accounts):
                    if isinstance(account, dict) and 'username' in account:
                        print(f"{i + 1}. {account['username']}")
                    else:
                        print(f"{i + 1}. Неверный формат аккаунта")
                choice = int(input("Выберите номер аккаунта: ")) - 1
                if 0 <= choice < len(accounts) and isinstance(accounts[choice], dict):
                    account_menu(accounts, choice)
                else:
                    pygame.init()
                    pygame.mixer.music.load("Error.mp3")
                    pygame.mixer.music.play(0)
                    print("❌ Неверный выбор.")
    else:
        create_account([])
def create_account(accounts):
    print("Рабочие аккаунты не были найдены! Создайте новый аккаунт!")
    username = input("Введите ваше имя пользователя: ")
    password = input("Введите ваш пароль: ")
    is_admin = input("Являетесь ли вы администратором? (да/нет): ").strip().lower() == 'да'

    for i in tqdm(range(100), desc="Прогресс добавления аккаунта"):
        time.sleep(0.1)
    account = {'username': username, 'password': password, 'is_admin': is_admin}
    accounts.append(account)
    with open('data.json', 'w') as file:
        json.dump(accounts, file)
    print(f"Аккаунт создан. Добро пожаловать, {username}!")

def delete_account(accounts, index):
    del accounts[index]
    with open('data.json', 'w') as file:
        json.dump(accounts, file)
    print("Удаление аккаунта...")

    for i in tqdm(range(100), desc="Прогресс удаления аккаунта..."):
        time.sleep(0.1)
    print("Аккаунт удален.")

def change_username(accounts, index):
    new_username = input("Введите новое имя пользователя: ")
    accounts[index]['username'] = new_username
    with open('data.json', 'w') as file:
        json.dump(accounts, file)
    print(f"Имя пользователя изменено. Ваше имя теперь {new_username}")

def cmd_def(accounts=None):
    print("введите комаду, пакет свойства, или help, чтобы узнать все команды_")
    defend_help = input("")
    if defend_help == "help" or "?":
        print("весь функционал MC-DOS")
        print("- DIR = вывести все пакеты устройств/файлы")
        print("- DIR %файл% = вывести содержимое файла/пакета устройства")
        print("- exit выход из MC-DOS")
        print("- cd {файл} перейти к директории файла")
        print("- help или ? = вывести справочник по MS-DOS")
        print("- create_file = создать файл")
        print("- delete_file = удалить файл")
    if defend_help == "DIR":
        list_files()
    if defend_help == "exit":
        print("выход из MC-DOS")
        display_pixel_art()
    if defend_help == create_file:
        create_file()
    if defend_help == "delete_file":
        delete_file()
    if defend_help == "create_accont":
        create_account(accounts)

def explorer_file():
    print("1. список файлов")
    print("2. создать файл")
    print("3. удалить файл")
    print("4. открыть файл")
    explorer_time = input("")
    if explorer_time == "1":
        list_files()
    if explorer_time == "2":
        create_file()
    if explorer_time == "3":
        delete_file()
    if explorer_time == "4":
        open_file()
def monii():
    artfromaerica = """
     __  __             _          
    |  \/  |           (_)       
    | \  / | ___  _ __  _  ___ 
    | |\/| |/ _ \| '_ \| |/ _ | 
    | |  | | (_) | | | | |  __/  
                                 """
    time.sleep(10)
    print("from community MONIE!")
    time.sleep(1)
    print("loading...")
    time.sleep(10)
    print("пожалуйста, дождитесь пока обнавляются файлы конфигурации и настроек.")
    time.sleep(5)


def account_menu(accounts, index):
    while True:
        print("\nМеню аккаунта:")
        print("1. Изменить имя пользователя")
        print("2. Удалить аккаунт")
        print("3. Выйти")
        choice = input("Выберите действие: ")
        if choice == '1':
            change_username(accounts, index)
        elif choice == '2':
            delete_account(accounts, index)
            break
        elif choice == '3':
            break
        else:
            pygame.init()
            pygame.mixer.music.load("Error.mp3")
            pygame.mixer.music.play(0)
            print("❌ Неверный выбор. Попробуйте снова.")

def list_files():
    print("Список файлов в текущей директории:")
    for file in os.listdir('.'):
        if os.path.isfile(file):
            print(f"- {file}")

def create_file():
    while True:
        filename = input("Введите имя файла для создания: ")
        if os.path.exists(filename):
            pygame.init()
            pygame.mixer.music.load("Error.mp3")
            pygame.mixer.music.play(0)
            print(f"❌ Файл с именем {filename} уже существует. Пожалуйста, выберите другое имя.")
        else:
            with open(filename, 'w') as file:
                file.write("")
            print(f"Файл {filename} создан.")
            break

def delete_file():
    filename = input("Введите имя файла для удаления: ")
    if os.path.exists(filename):
        if is_system_file(filename) and not is_admin():
            pygame.init()
            pygame.mixer.music.load("Error.mp3")
            pygame.mixer.music.play(0)
            print(f"❌ ERORR: файл {filename} системный, и не может быть удален без прав администратора ")
        else:
            os.remove(filename)
            print(f"Файл {filename} удален.")
    else:
        print(f"Файл {filename} не найден.")

def open_file():
    filename = input("Введите имя файла для открытия: ")
    if os.path.exists(filename):
        with open(filename, 'r') as file:
            content = file.read()
            print(f"Содержимое файла {filename}:\n{content}")
    else:
        pygame.init()
        pygame.mixer.music.load("Error.mp3")
        pygame.mixer.music.play(0)
        print(f"⚠ Файл {filename} не найден.")

def is_system_file(filename):
    system_files = ['data.json', 'account.json', "CMD_DATE.txt", "cmd.json.date.file"]
    return filename in system_files

def is_admin():
    if os.path.exists('data.json'):
        with open('data.json', 'r') as file:
            accounts = json.load(file)
            for account in accounts:
                if account.get('is_admin'):
                    return True
    return False

def nah():

    print("привет! Это настройки,")
    print("1. аккаунт и безопасноть")
    print("2. антивирус")
    print("3. приложения")
    print("4. обновления и улучшения")
    print("5. язык и время")
    print("6. настройки поиска")
    print("7. игры")
    print("8. конфидициальность")
    print("9. память")
    nastoechki = input("")
    if nastoechki == "1":
        print("настройки аккаунта:")
        print("1. список аккаунтов")
        print("2. изменить имя аккаунту")
        one_pnct = input("")
        if one_pnct == "1":
            check_account()
        elif one_pnct == "2":
            change_username()
        else:
            print(f"ERROR FROM ACCOUNT.JSON : THE NAME {one_pnct} NOT DIFFEND")
    if nastoechki == "2":
        print("проверка обновления антивируса..")
        time.sleep(20)
        my_list = ["проверка прошла успешно, обновления не найденны.","скаченно новое дополнение для антивируса KL21.version21"]

        random_element = random.choice(my_list)
        print(random_element)
        print("настройки антивируса:")
def report_menu():
        print("on this OS the “rOOt_mode” will be launched in 40 seconds")
        time.sleep(1)
        print('launching the file "root.data')
        print(Fore.BLUE + "No COMMANDS")
        print("restart the file root.date_")
        time.sleep(1)
        print("The root menu from system Monie00. ")
        print(Fore.LIGHTGREEN_EX + "this system is now ready for commands.")
        print("1 launch the file systemROOTADMIN, or get new root updates")
        power_of = input("")
        if power_of == "1":
            systemROOTADMIN()
        if power_of == "power_off":
            print("this feature is not yet available. please turn off your computer to exit RECOVERY MOD")



def systemROOTADMIN():
    ROOT = 1
    ROOT = True
    print("please select the account to which ROOT rights will be installed, or UPDATE ROOT!")
    print("check ROOT version..")
    time.sleep(4)
    print("exit from file: rebort.date")
    time.sleep(1)
    print("INF: please wait 60 seconds for monieOS to connect you to root rights. do not turn off the computer, as this may lead to bad consequences.")
    print("ERROR: NO CC FILE ON OS")
    time.sleep(1)
    print("installation..")
    time.sleep(1)
    print("definition..")
    time.sleep(1)
    print("definition complete: file weighs about 1GB, file name: @%ROOTOSSTART%@")
    time.sleep(1)
    print("installation..")
    time.sleep(2)
    print("thank you for downloading ROOT rights from MONIE OS")
    print("This OS is unlocked and cannot be trusted. Be careful!")
    print("INF: turn off your computer after 20 seconds. OS and BIOS security check")
    print(Fore.BLUE + "No COMMANDS")
    print("the system checks the Date.json file and adds common files.")
    time.sleep(5)
    print(Fore.WHITE + "No COMMANDS")
    print(Fore.RED + "ERROR: the system was unable to check the OS because ROOT rights were set. be careful with the OS!")
    print("please restart yours OS")
def Wipe_Cache_Partition():
    print("Do you agree that the entire OS cache will be deleted? (includes - deleting the update log, clearing recent actions, cache CMD cash, and system CASHE?")
    print("- NO <---- no.index")
    print("- NO <---- no.index")
    print("- NO <---- no.index")
    print("- NO <---- no.index")
    print("- YES <--- index.go")
    wipe_cash = input("")
    if wipe_cash == "YES":
        print(Fore.RED + "FULL DELETION OF THE CACHE CAN RESULT IN THE CONSEQUENCES OF DELETION OF IMPORTANT DATA IN APPLICATIONS!!!!!")

        print("launch delete_cash.dmp")
        time.sleep(1)
        print("delete_cash.dmp is launched!")
        time.sleep(12)
        print("all cash to be delete! NO ERROR FROM TERMINAL")

if __name__ == "__main__":
    display_pixel_art()
    keyboard.add_hotkey('ctrl+del+m', report_menu)
    keyboard.add_hotkey('alt + f4', display_pixel_art)


    while True:
        print("\nГлавное меню:")
        print(Fore. LIGHTWHITE_EX + "1. Проверить аккаунт")
        print("2. проводник")
        print("3. CMD")
        print("4. Отключить систему")
        choice = input("Выберите действие: ")
        if choice == '1':
            check_account()
        elif choice == '2':
            explorer_file()
        elif choice == '3':
            cmd_def()
        elif choice == "5":
            nah()
        elif choice == '4':
            break
        elif choice == "delete_cash":
            Wipe_Cache_Partition()
        elif choice == "version_mode":
            print("версия ОС = LOLIPOP B1.12, версия ROOT MODE = 0.0.0.1, ")
        else:
            pygame.init()
            pygame.mixer.music.load("Error.mp3")
            pygame.mixer.music.play(0)
            print("❌ Неверный выбор. Попробуйте снова.")
input("")
#version = B1.12, version ROOTS MODE = 0.0.0.1,debag mode = 0.0.0

Ответы (0 шт):