Light Beacon 1 anno fa
parent
commit
3299107610
1 ha cambiato i file con 43 aggiunte e 0 eliminazioni
  1. 43 0
      Project/modules/AutoTranslation.py

+ 43 - 0
Project/modules/AutoTranslation.py

@@ -0,0 +1,43 @@
+import requests
+import re
+from homepagebuilder.interfaces import require
+from homepagebuilder.interfaces import Logger
+logger= Logger('AutoTranslation')
+
+parsers_module = require('markdown_parsers')
+handles = parsers_module.handles
+Text = parsers_module.Text
+
+PATTERN = re.compile(r"<td>([a-zA-Z\d\s\-]+)</td>\s*<td>([^\(<]+)\s*</td>\s*(?:<td>(?:[^<]+)\s*</td>)?</tr>")
+EXTRA_TRANSLATIONS ={
+    "data value": "数据值",
+    "block state": "方块状态",
+    "argument": "参数",
+    "parameter": "参数",
+    "sprite": "精灵图",
+    "variant": "变种",
+    "job site": "工作站点",
+    "workplace": "工作站点"
+}
+
+content = requests.get('https://zh.minecraft.wiki/w/Minecraft_Wiki:译名标准化').content.decode("utf-8")
+TRANSLATIONS = {}
+
+for en,zh in re.findall(PATTERN,content):
+    en = en.lower()
+    zh = zh.replace("\n","")
+    if zh == '-':
+        TRANSLATIONS[en] = en
+    else:
+        TRANSLATIONS[en] = zh
+logger.info(f"译名标准化已载入 {len(TRANSLATIONS)} 条标准译名。")
+TRANSLATIONS.update(EXTRA_TRANSLATIONS)
+
+@handles('n')
+class AutoText(Text):
+    def convert(self):
+        name = self.content
+        if translation := TRANSLATIONS.get(name):
+            return translation
+        else:
+            return f'<Italic>{name}</Italic>'