进一步的 kvmd 国际化(汉化)支持,添加配置入口

yaml 配置示例:
```
languages:
    console: zh
    web: zh
```
This commit is contained in:
mofeng-git
2024-08-14 22:54:12 +08:00
parent 5b25b3661f
commit 35397c5414
47 changed files with 567 additions and 181 deletions

View File

@@ -40,7 +40,7 @@ from ... import aiotools
from .. import BasePlugin
from .. import get_plugin_class
from ...lanuages import Lanuages
from ...languages import Languages
# =====
class MsdError(Exception):
@@ -53,43 +53,43 @@ class MsdOperationError(OperationError, MsdError):
class MsdIsBusyError(IsBusyError, MsdError):
def __init__(self) -> None:
gettext=Lanuages().gettext
gettext=Languages().gettext
super().__init__(gettext("Performing another MSD operation, please try again later"))
class MsdOfflineError(MsdOperationError):
def __init__(self) -> None:
gettext=Lanuages().gettext
gettext=Languages().gettext
super().__init__(gettext("MSD is not found"))
class MsdConnectedError(MsdOperationError):
def __init__(self) -> None:
gettext=Lanuages().gettext
gettext=Languages().gettext
super().__init__(gettext("MSD is connected to Server, but shouldn't for this operation"))
class MsdDisconnectedError(MsdOperationError):
def __init__(self) -> None:
gettext=Lanuages().gettext
gettext=Languages().gettext
super().__init__(gettext("MSD is disconnected from Server, but should be for this operation"))
class MsdImageNotSelected(MsdOperationError):
def __init__(self) -> None:
gettext=Lanuages().gettext
gettext=Languages().gettext
super().__init__(gettext("The image is not selected"))
class MsdUnknownImageError(MsdOperationError):
def __init__(self) -> None:
gettext=Lanuages().gettext
gettext=Languages().gettext
super().__init__(gettext("The image is not found in the storage"))
class MsdImageExistsError(MsdOperationError):
def __init__(self) -> None:
gettext=Lanuages().gettext
gettext=Languages().gettext
super().__init__(gettext("This image is already exists"))

View File

@@ -31,7 +31,7 @@ from . import BaseMsdReader
from . import BaseMsdWriter
from . import BaseMsd
from ...lanuages import Lanuages
from ...languages import Lanuages
# =====
class MsdDisabledError(MsdOperationError):

View File

@@ -28,7 +28,7 @@ import time
from typing import AsyncGenerator
from ....lanuages import Lanuages
from ....languages import Languages
from ....logging import get_logger
from ....inotify import InotifyMask
@@ -44,7 +44,7 @@ from ....validators.kvm import valid_msd_image_name
from .... import aiotools
from .... import fstab
from ....lanuages import Lanuages
from ....languages import Languages
from .. import MsdIsBusyError
from .. import MsdOfflineError
@@ -142,7 +142,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes
self.__notifier = aiotools.AioNotifier()
self.__state = _State(self.__notifier)
self.gettext=Lanuages().gettext
self.gettext=Languages().gettext
logger = get_logger(0)
logger.info(self.gettext("Using OTG gadget %r as MSD"), gadget)

View File

@@ -27,13 +27,13 @@ from .... import usb
from .. import MsdOperationError
from ....lanuages import Lanuages
from ....languages import Languages
# =====
class MsdDriveLockedError(MsdOperationError):
def __init__(self) -> None:
super().__init__(Lanuages().gettext("MSD drive is locked on IO operation"))
super().__init__(Languages().gettext("MSD drive is locked on IO operation"))
# =====

View File

@@ -31,7 +31,7 @@ from typing import Optional
import aiofiles
import aiofiles.os
from ....lanuages import Lanuages
from ....languages import Languages
from .... import aiotools
from .... import aiohelpers
@@ -294,4 +294,4 @@ class Storage(_StorageDc):
async def remount_rw(self, rw: bool, fatal: bool=True) -> None:
if not (await aiohelpers.remount("MSD", self.__remount_cmd, rw)):
if fatal:
raise MsdError(Lanuages().gettext("Can't execute remount helper"))
raise MsdError(Languages().gettext("Can't execute remount helper"))