Интернационализация для всех сервисов сервера

This commit is contained in:
parent 7491ce455d
commit ba8cea01e7
13 changed files with 1011 additions and 206 deletions

View file

@ -20,7 +20,9 @@ from models.network import (
WiFiDevice,
)
import subprocess
from utils.i18n import get_translations, _
from babel.support import Translations
from fastapi import Depends
class NetworkService:
"""Сервис для взаимодействия с NetworkManager через D-Bus.
@ -29,7 +31,7 @@ class NetworkService:
их конфигурациях IP, Wi-Fi и состояниях.
"""
def __init__(self):
def __init__(self, translations: Translations = Depends(get_translations("services"))):
"""Инициализирует сервис NetworkManager.
Устанавливает системный D-Bus и создаёт объекты для взаимодействия с
@ -38,6 +40,7 @@ class NetworkService:
self.system_bus = sd_bus_open_system()
self.nm = NetworkManager(self.system_bus)
self.nm_settings = NetworkManagerSettings(self.system_bus)
self.translations = translations
async def get_ip_method(self, device: NetworkDeviceGeneric, ip_type: str) -> str:
"""Получает метод IP (например, "auto", "manual") для указанного устройства.
@ -226,9 +229,9 @@ class NetworkService:
hostname = result.stdout.strip()
return {"hostname": hostname}
except subprocess.CalledProcessError as e:
raise RuntimeError(f"Failed to execute hostname: {e}")
raise RuntimeError(self.translations.gettext("Не удалось выполнить команду hostname: {error}").format(error=str(e)))
except Exception as e:
raise RuntimeError(f"Error processing hostname output: {e}")
raise RuntimeError(self.translations.gettext("Ошибка обработки вывода hostname: {error}").format(error=str(e)))
async def get_interfaces_by_state(
self,