From 6d22a18ba781d4042503aac270209204b6a226e7 Mon Sep 17 00:00:00 2001 From: catborise Date: Fri, 6 Nov 2026 23:16:41 +0300 Subject: [PATCH] fix(i18n): refusals and checks users read are translated English-only texts users read, now in their language: - the serial console's four refusals, which socketiod sends in the language LocaleMiddleware would choose (cookie, then browser) and logs in English; the texts live in console/refusals.py, as makemessages reads only .py files; - a submission key reused for another request, a malformed MAC address, the moved-VM refusal of a script's request, the API's "Templates cannot be started" (now the page's sentence), "Pool is not active" and the ISO upload's checks; - "Problem occurred with host" was a fragment with the host's name and error after it: one sentence with both. --- computes/templates/computes/instances.html | 2 +- console/refusals.py | 9 +++ console/socketiod | 22 ++++-- console/tests/test_socketiod.py | 12 ++++ instances/api/viewsets.py | 5 +- instances/views.py | 2 +- locale/tr/LC_MESSAGES/django.mo | Bin 192936 -> 194240 bytes locale/tr/LC_MESSAGES/django.po | 79 ++++++++++++++++++--- locale/zh/LC_MESSAGES/django.mo | Bin 180396 -> 181632 bytes locale/zh/LC_MESSAGES/django.po | 76 +++++++++++++++++--- operations/jobs.py | 4 +- storages/api/viewsets.py | 5 +- storages/jobs.py | 10 +-- vrtManager/util.py | 2 +- 14 files changed, 187 insertions(+), 41 deletions(-) create mode 100644 console/refusals.py diff --git a/computes/templates/computes/instances.html b/computes/templates/computes/instances.html index e56c32af..15f6b3e5 100644 --- a/computes/templates/computes/instances.html +++ b/computes/templates/computes/instances.html @@ -27,7 +27,7 @@
{% if compute.status is not True %}
- {% trans 'Problem occurred with host' %} {{ compute.name }}: {{ compute.connection_error }} + {% blocktrans with name=compute.name error=compute.connection_error %}Problem occurred with host {{ name }}: {{ error }}{% endblocktrans %}
{% endif %} {% if not instances %} diff --git a/console/refusals.py b/console/refusals.py new file mode 100644 index 00000000..52c3e593 --- /dev/null +++ b/console/refusals.py @@ -0,0 +1,9 @@ +"""socketiod's refusals, which its page shows in the user's language. Here, +as makemessages reads only .py files and socketiod has no extension.""" + +from django.utils.translation import gettext_noop + +TURNED_OFF = gettext_noop("The serial console is turned off on this server") +NOT_ALLOWED = gettext_noop("The console link has expired, or you may no longer open this console: reload the page") +OPEN_ELSEWHERE = gettext_noop("The console of this VM is open in another window") +TOO_MANY = gettext_noop("Too many consoles are open on this server: try again later") diff --git a/console/socketiod b/console/socketiod index cb02db20..3f7df5ae 100755 --- a/console/socketiod +++ b/console/socketiod @@ -30,7 +30,11 @@ import socketio # noqa: E402 from gunicorn.app.base import BaseApplication # noqa: E402 from django import db # noqa: E402 from django.conf import settings # noqa: E402 +from django.http import HttpRequest # noqa: E402 +from django.http.cookie import parse_cookie # noqa: E402 +from django.utils import translation # noqa: E402 +from console import refusals # noqa: E402 from console.tokens import authorize, session_user_id # noqa: E402 CONSOLECALLBACK = os.path.join(ROOT_PATH, "conf", "daemon", "consolecallback") @@ -49,30 +53,34 @@ sessions = {} sessions_lock = threading.Lock() -def refused(reason): - """The refusal the page shows; it is logged too.""" +def refused(environ, reason): + """The refusal the page shows, in its language (LocaleMiddleware's choice: + the language cookie, else the browser's); it is logged too, in English.""" logger.info("serial console refused: %s", reason) - return socketio.exceptions.ConnectionRefusedError(reason) + request = HttpRequest() + request.COOKIES, request.META = parse_cookie(environ.get("HTTP_COOKIE", "")), environ + with translation.override(translation.get_language_from_request(request)): + return socketio.exceptions.ConnectionRefusedError(translation.gettext(reason)) @sio.event def connect(sid, environ, auth): # the page shows the reason if not settings.SERIAL_CONSOLE_ENABLED: - raise refused("The serial console is turned off on this server") + raise refused(environ, refusals.TURNED_OFF) try: instance, user = authorize((auth or {}).get("token"), "pty") except PermissionError: - raise refused("The console link has expired, or you may no longer open this console: reload the page") + raise refused(environ, refusals.NOT_ALLOWED) finally: db.close_old_connections() taken = None with sessions_lock: open_sid = next((s for s, session in sessions.items() if session["vm"] == instance.pk), None) if open_sid is not None and not user.is_superuser: - raise refused("The console of this VM is open in another window") + raise refused(environ, refusals.OPEN_ELSEWHERE) if open_sid is None and len(sessions) >= MAX_SESSIONS: - raise refused("Too many consoles are open on this server: try again later") + raise refused(environ, refusals.TOO_MANY) if open_sid is not None: # a superuser takes over a console left open taken = open_sid, sessions.pop(open_sid) # the page tells its user who took the console; first, as its diff --git a/console/tests/test_socketiod.py b/console/tests/test_socketiod.py index 183426f8..6f5e9b83 100644 --- a/console/tests/test_socketiod.py +++ b/console/tests/test_socketiod.py @@ -116,6 +116,18 @@ class SocketiodTestCase(Base): self.assertIn("Too many", self.refused("over", {"token": self.token(vm=other)})) self.assertEqual(list(self.d.sessions), ["first"]) + @override_settings(SERIAL_CONSOLE_ENABLED=False) + def test_a_refusal_is_in_the_page_s_language_and_logged_in_english(self): + # as LocaleMiddleware: the language cookie first, then the browser's + for environ, shown in (({"HTTP_COOKIE": "django_language=tr", "HTTP_ACCEPT_LANGUAGE": "zh-hans"}, "Seri konsol bu sunucuda kapalı"), + ({"HTTP_ACCEPT_LANGUAGE": "zh-CN,zh;q=0.9"}, "此服务器已关闭串行控制台"), + ({}, "The serial console is turned off on this server")): + with self.subTest(shown), self.assertRaises(self.d.socketio.exceptions.ConnectionRefusedError) as refusal, \ + self.assertLogs("socketiod", level="INFO") as log: + self.d.connect("sid", environ, {"token": self.token()}) + self.assertEqual(refusal.exception.error_args["message"], shown) + self.assertIn("refused: The serial console is turned off on this server", log.output[0]) + @override_settings(SERIAL_CONSOLE_ENABLED=True) def test_input_and_resize_go_to_the_session_and_are_checked(self): self.d.connect("sid-1", {}, {"token": self.token()}) diff --git a/instances/api/viewsets.py b/instances/api/viewsets.py index 1022d0c3..e56845e3 100644 --- a/instances/api/viewsets.py +++ b/instances/api/viewsets.py @@ -5,6 +5,7 @@ from django.contrib.messages import get_messages from django.http import Http404 from django.shortcuts import get_object_or_404 from django.urls import reverse +from django.utils.translation import gettext as _ from instances.jobs import MIGRATE_OPTIONS from instances.models import Flavor, Instance from instances.views import ( @@ -144,7 +145,7 @@ class InstanceViewSet(viewsets.ViewSet): if compute_pk is not None and str(queryset.compute_id) != str(compute_pk): raise Http404() if queryset.is_template: - return Response({"status": "Templates cannot be started"}, status=status.HTTP_409_CONFLICT) + return Response({"status": _("Templates cannot be started.")}, status=status.HTTP_409_CONFLICT) return instance_action_response(poweron, request, pk, "poweron command send") @extend_schema(request=None, responses=ActionStatusSerializer) @@ -162,7 +163,7 @@ class InstanceViewSet(viewsets.ViewSet): if compute_pk is not None and str(queryset.compute_id) != str(compute_pk): raise Http404() if queryset.is_template: - return Response({"status": "Templates cannot be started"}, status=status.HTTP_409_CONFLICT) + return Response({"status": _("Templates cannot be started.")}, status=status.HTTP_409_CONFLICT) return instance_action_response(powercycle, request, pk, "powercycle command send") @extend_schema(request=None, responses=ActionStatusSerializer) diff --git a/instances/views.py b/instances/views.py index cb21f25a..3e3ccc58 100755 --- a/instances/views.py +++ b/instances/views.py @@ -640,7 +640,7 @@ def _busy(request, pk, busy): def _moved(request, pk): if hasattr(request, "accepted_renderer") or from_script(request): - return JsonResponse({"detail": "The VM was moved meanwhile; try again."}, status=409) + return JsonResponse({"detail": _("The VM was moved meanwhile; try again.")}, status=409) messages.error(request, _("The VM was moved meanwhile; try again.")) return get_safe_redirect(request, default=reverse("instances:instance", args=[pk])) diff --git a/locale/tr/LC_MESSAGES/django.mo b/locale/tr/LC_MESSAGES/django.mo index 459b4e794b7c16da5692ab1fe32fa9ea331c9212..cf2d984f1883a7dffc6555330d72a7973d9da8c7 100644 GIT binary patch delta 43768 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

M&U!GmtRU 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 y{5Ah| delta 42813 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 YptL?6w)=YRcf%Vu2h80!#IZ;J0ln+p6951J delta 42783 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 KKo+z1{?0!hfMHhv diff --git a/locale/zh/LC_MESSAGES/django.po b/locale/zh/LC_MESSAGES/django.po index 07d063bc..cd19c93e 100644 --- a/locale/zh/LC_MESSAGES/django.po +++ b/locale/zh/LC_MESSAGES/django.po @@ -2050,8 +2050,10 @@ msgid "New Instance" msgstr "新建虚拟机" #: computes/templates/computes/instances.html:30 -msgid "Problem occurred with host" -msgstr "主机出现问题" +#, python-format +#| msgid "Problem occurred with host" +msgid "Problem occurred with host %(name)s: %(error)s" +msgstr "主机 %(name)s 出现问题:%(error)s" #: computes/templates/computes/instances.html:36 #: computes/templates/computes/list.html:16 @@ -2302,7 +2304,7 @@ msgid "" "/etc/default/webvirt-gstfsd" msgstr "请输入主机 /etc/default/webvirt-gstfsd 中 GSTFSD_KEY 的 64 个十六进制字符" -#: computes/views.py:202 +#: computes/views.py:205 #, python-format msgid "" "Its VMs keep running on the host and leave the panel; their owners are kept " @@ -2310,6 +2312,26 @@ msgid "" "again." msgstr "其虚拟机继续在主机上运行并离开面板;其所有者在“已移除的虚拟机”页面保留 %(days)s 天,如果再次添加该主机则会恢复。" +#: console/refusals.py:6 +#| msgid "The device is not on this host" +msgid "The serial console is turned off on this server" +msgstr "此服务器已关闭串行控制台" + +#: console/refusals.py:7 +msgid "" +"The console link has expired, or you may no longer open this console: reload " +"the page" +msgstr "控制台链接已过期,或您已无权打开此控制台:请重新加载页面" + +#: console/refusals.py:8 +#| msgid "The console starts scaled to its window" +msgid "The console of this VM is open in another window" +msgstr "此虚拟机的控制台已在另一个窗口中打开" + +#: console/refusals.py:9 +msgid "Too many consoles are open on this server: try again later" +msgstr "此服务器上打开的控制台过多:请稍后再试" + #: console/templates/console-menu.html:6 msgid "Send key(s)" msgstr "发送按键" @@ -2541,6 +2563,11 @@ msgid "" "VNC." msgstr "不支持控制台类型 '%(type)s'。请将虚拟机图形切换为 VNC。" +#: instances/api/viewsets.py:148 instances/api/viewsets.py:166 +#: instances/views.py:792 instances/views.py:807 +msgid "Templates cannot be started." +msgstr "模板无法启动。" + #: instances/forms.py:13 instances/templates/create_instance_w2.html:69 #: instances/templates/instances/settings_tab.html:857 msgid "Memory (MiB)" @@ -2879,7 +2906,6 @@ msgstr "正在定义虚拟机" #: instances/jobs.py:906 #, python-format -#| msgid "The panel failed unexpectedly; its log has the details." msgid "" "The panel failed unexpectedly; its log has the details. Remove these volumes " "by hand: %(volumes)s" @@ -5623,7 +5649,7 @@ msgid "" " Remove them first." msgstr "有主机设备的虚拟机无法迁移:目标主机可能没有这些设备。请先移除它们。" -#: instances/views.py:644 +#: instances/views.py:643 instances/views.py:644 msgid "The VM was moved meanwhile; try again." msgstr "该虚拟机在此期间已被移动;请重试。" @@ -5652,10 +5678,6 @@ msgstr "" msgid "Invalid disk options: %(options)s" msgstr "无效的磁盘选项:%(options)s" -#: instances/views.py:792 instances/views.py:807 -msgid "Templates cannot be started." -msgstr "模板无法启动。" - #: instances/views.py:999 #, python-format msgid "Set the gstfsd key of %(compute)s first (Computes, edit the host)" @@ -7226,6 +7248,11 @@ msgstr "字母、数字、点、短横线和下划线。副本包含该过滤器 msgid "%(phase)s (over its time limit)" msgstr "%(phase)s(已超出时间限制)" +#: operations/jobs.py:151 +#| msgid "The form has no valid submission key; reload the page" +msgid "This form was already submitted for another request; reload the page" +msgstr "此表单已为另一个请求提交过;请重新加载页面" + #: operations/jobs.py:157 msgid "The form has no valid submission key; reload the page" msgstr "表单没有有效的提交密钥;请重新加载页面" @@ -7490,10 +7517,14 @@ msgid "" "resolve this job" msgstr "恢复在一小时内无法读取任务状态;请检查虚拟机,然后处理此任务" -#: operations/worker.py:474 +#: operations/worker.py:479 msgid "The worker stopped before the job changed anything" msgstr "工作进程在任务做出任何更改之前停止" +#: storages/api/viewsets.py:203 storages/api/viewsets.py:224 +msgid "Pool is not active" +msgstr "存储池未激活" + #: storages/forms.py:30 storages/templates/storage.html:102 #: storages/templates/storages.html:43 msgid "Path" @@ -7591,6 +7622,26 @@ msgstr "未创建副本" msgid "Upload ISO image" msgstr "上传 ISO 镜像" +#: storages/jobs.py:118 +#| msgid "Invalid file size." +msgid "Invalid file name" +msgstr "文件名无效" + +#: storages/jobs.py:120 +#| msgid "Only .iso files can be uploaded." +msgid "Only .iso files can be uploaded" +msgstr "只能上传 .iso 文件" + +#: storages/jobs.py:122 +#| msgid "Invalid file size." +msgid "Invalid file size" +msgstr "文件大小无效" + +#: storages/jobs.py:124 +#| msgid "Invalid chunk index or total chunks." +msgid "Invalid chunk index or total chunks" +msgstr "分块索引或分块总数无效" + #: storages/templates/create_stg_block.html:7 msgid "New pool" msgstr "新建存储池" @@ -9274,6 +9325,11 @@ msgstr "XML 无效:%(err)s" msgid "The XML may not declare a DTD" msgstr "XML 不能声明 DTD" +#: vrtManager/util.py:143 +#, python-format +msgid "MAC address must be of the format AA:BB:CC:DD:EE:FF, was %(mac)s" +msgstr "MAC 地址的格式必须为 AA:BB:CC:DD:EE:FF,实际为 %(mac)s" + #: vrtManager/virtsecrets.py:26 msgid "A Ceph key is base64 text, as `ceph auth get-key` prints it" msgstr "Ceph 密钥是 base64 文本,即 `ceph auth get-key` 输出的内容" diff --git a/operations/jobs.py b/operations/jobs.py index 6bc056ce..bbe1dc9b 100644 --- a/operations/jobs.py +++ b/operations/jobs.py @@ -13,7 +13,7 @@ from django.db import transaction from django.db.models import F, Value from django.db.models.functions import Coalesce from django.utils import timezone -from django.utils.translation import gettext_noop +from django.utils.translation import gettext, gettext_noop from logs.audit import write from vrtManager.util import OperationError @@ -148,7 +148,7 @@ def _existing(user, key, kind_name, params): Operation.objects.filter(pk=op.pk).update(submission_key=f"expired:{op.pk.hex}") return None if op.kind != kind_name or op.params != params: - raise SubmissionConflict("This form was already submitted for another request; reload the page") + raise SubmissionConflict(gettext("This form was already submitted for another request; reload the page")) return op diff --git a/storages/api/viewsets.py b/storages/api/viewsets.py index 7f5d3dbd..882abbba 100644 --- a/storages/api/viewsets.py +++ b/storages/api/viewsets.py @@ -5,6 +5,7 @@ from appsettings.settings import app_settings from computes.models import Compute from computes.utils import libvirt_compute_lock from django.shortcuts import get_object_or_404 +from django.utils.translation import gettext as _ from drf_spectacular.utils import extend_schema, inline_serializer from libvirt import libvirtError from logs.audit import audit, failed @@ -199,7 +200,7 @@ class VolumeViewSet(viewsets.ViewSet): return Response({"status": "Volume: " + ret + " is created"}) else: failed(request, compute, subject, action, "pool is not active") - return Response({"status": "Pool is not active"}, status=status.HTTP_409_CONFLICT) + return Response({"status": _("Pool is not active")}, status=status.HTTP_409_CONFLICT) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @@ -220,4 +221,4 @@ class VolumeViewSet(viewsets.ViewSet): return Response({"status": "Volume: " + pk + " is deleted"}) else: failed(request, compute, subject, action, "pool is not active") - return Response({"status": "Pool is not active"}, status=status.HTTP_409_CONFLICT) + return Response({"status": _("Pool is not active")}, status=status.HTTP_409_CONFLICT) diff --git a/storages/jobs.py b/storages/jobs.py index 6430ac9e..3b930f46 100644 --- a/storages/jobs.py +++ b/storages/jobs.py @@ -5,7 +5,7 @@ import logging import os from django.core.exceptions import PermissionDenied -from django.utils.translation import gettext_noop +from django.utils.translation import gettext, gettext_noop from libvirt import libvirtError from vrtManager import util from vrtManager.storage import wvmStorage @@ -115,13 +115,13 @@ class UploadVolume(Kind): raise PermissionDenied name = params["name"] if not name or name in (".", "..") or "\x00" in name: - raise ValueError("Invalid file name") + raise ValueError(gettext("Invalid file name")) if len(name) <= 4 or not is_iso(name): - raise ValueError("Only .iso files can be uploaded") + raise ValueError(gettext("Only .iso files can be uploaded")) if params["size"] <= 0: - raise ValueError("Invalid file size") + raise ValueError(gettext("Invalid file size")) if params["chunks"] < 1: - raise ValueError("Invalid chunk index or total chunks") + raise ValueError(gettext("Invalid chunk index or total chunks")) def plan(self, user, params): compute, stg = _storage(params) diff --git a/vrtManager/util.py b/vrtManager/util.py index acb26262..3d1b5679 100644 --- a/vrtManager/util.py +++ b/vrtManager/util.py @@ -140,7 +140,7 @@ def validate_macaddr(val): form = re.match("^([0-9a-fA-F]{1,2}:){5}[0-9a-fA-F]{1,2}$", val) if form is None: - raise ValueError("MAC address must be of the format AA:BB:CC:DD:EE:FF, was {}".format(val)) + raise ValueError(gettext("MAC address must be of the format AA:BB:CC:DD:EE:FF, was %(mac)s") % {"mac": val}) def vol_dev_type(vol_bus):