From 9e38f854b4b34e571eb3fba9de781c96a324fd46 Mon Sep 17 00:00:00 2001
From: Krarilotus <51748815+Krarilotus@users.noreply.github.com>
Date: Tue, 29 Sep 2026 01:16:04 +0200
Subject: [PATCH 1/2] Add translated Custom Hotkeys discovery tags
---
definition.yml | 4 +++-
files.xml | 1 +
locale/ch.yml | 3 +++
locale/de.yml | 3 +++
locale/en.yml | 3 +++
locale/es.yml | 3 +++
locale/fa.yml | 3 +++
locale/fr.yml | 3 +++
locale/hu.yml | 3 +++
locale/ru.yml | 3 +++
locale/tr.yml | 3 +++
tests/test_release_metadata.py | 13 +++++++++++--
12 files changed, 42 insertions(+), 3 deletions(-)
create mode 100644 locale/ch.yml
create mode 100644 locale/de.yml
create mode 100644 locale/en.yml
create mode 100644 locale/es.yml
create mode 100644 locale/fa.yml
create mode 100644 locale/fr.yml
create mode 100644 locale/hu.yml
create mode 100644 locale/ru.yml
create mode 100644 locale/tr.yml
diff --git a/definition.yml b/definition.yml
index 50b6f31..e687869 100644
--- a/definition.yml
+++ b/definition.yml
@@ -1,8 +1,10 @@
name: custom-hotkeys
display-name: Custom Hotkeys
-version: 0.2.1
+version: 0.2.2
author: Krarilotus
type: module
+
+tags: [hotkeys, interface, tools]
game: [SHC==1.41, SHCE==1.41]
dependencies:
framework: ">=3.0.7"
diff --git a/files.xml b/files.xml
index 07883e1..aaee7b0 100644
--- a/files.xml
+++ b/files.xml
@@ -5,5 +5,6 @@
+
diff --git a/locale/ch.yml b/locale/ch.yml
new file mode 100644
index 0000000..16da85c
--- /dev/null
+++ b/locale/ch.yml
@@ -0,0 +1,3 @@
+tags.hotkeys: ???
+tags.interface: 界面
+tags.tools: 工具
diff --git a/locale/de.yml b/locale/de.yml
new file mode 100644
index 0000000..a27e35e
--- /dev/null
+++ b/locale/de.yml
@@ -0,0 +1,3 @@
+tags.hotkeys: Tastenk?rzel
+tags.interface: Oberfläche
+tags.tools: Werkzeuge
diff --git a/locale/en.yml b/locale/en.yml
new file mode 100644
index 0000000..92fdd4c
--- /dev/null
+++ b/locale/en.yml
@@ -0,0 +1,3 @@
+tags.hotkeys: Hotkeys
+tags.interface: Interface
+tags.tools: Tools
diff --git a/locale/es.yml b/locale/es.yml
new file mode 100644
index 0000000..169d81f
--- /dev/null
+++ b/locale/es.yml
@@ -0,0 +1,3 @@
+tags.hotkeys: Atajos de teclado
+tags.interface: Interfaz
+tags.tools: Herramientas
diff --git a/locale/fa.yml b/locale/fa.yml
new file mode 100644
index 0000000..17ccca8
--- /dev/null
+++ b/locale/fa.yml
@@ -0,0 +1,3 @@
+tags.hotkeys: ??????? ??????
+tags.interface: رابط کاربری
+tags.tools: ابزارها
diff --git a/locale/fr.yml b/locale/fr.yml
new file mode 100644
index 0000000..36f3eb3
--- /dev/null
+++ b/locale/fr.yml
@@ -0,0 +1,3 @@
+tags.hotkeys: Raccourcis clavier
+tags.interface: Interface
+tags.tools: Outils
diff --git a/locale/hu.yml b/locale/hu.yml
new file mode 100644
index 0000000..02709c6
--- /dev/null
+++ b/locale/hu.yml
@@ -0,0 +1,3 @@
+tags.hotkeys: Gyorsbillenty?k
+tags.interface: Kezelőfelület
+tags.tools: Eszközök
diff --git a/locale/ru.yml b/locale/ru.yml
new file mode 100644
index 0000000..1cfe212
--- /dev/null
+++ b/locale/ru.yml
@@ -0,0 +1,3 @@
+tags.hotkeys: ??????? ???????
+tags.interface: Интерфейс
+tags.tools: Инструменты
diff --git a/locale/tr.yml b/locale/tr.yml
new file mode 100644
index 0000000..4e3bbf1
--- /dev/null
+++ b/locale/tr.yml
@@ -0,0 +1,3 @@
+tags.hotkeys: K?sayol tu?lar?
+tags.interface: Arayüz
+tags.tools: Araçlar
diff --git a/tests/test_release_metadata.py b/tests/test_release_metadata.py
index 730fe61..7f62ee8 100644
--- a/tests/test_release_metadata.py
+++ b/tests/test_release_metadata.py
@@ -10,7 +10,8 @@
def test_optional_legacy_has_required_conflict_value_without_dependency_or_switch():
definition = yaml.safe_load((ROOT / 'definition.yml').read_text(encoding='utf-8'))
assert definition['display-name'] == 'Custom Hotkeys'
- assert definition['version'] == '0.2.1'
+ assert definition['version'] == '0.2.2'
+ assert definition['tags'] == ['hotkeys', 'interface', 'tools']
assert 'ucp2-legacy' not in definition['dependencies']
config = yaml.safe_load((ROOT / 'config.yml').read_text(encoding='utf-8'))['config-sparse']
assert config['plugins'] == {}
@@ -19,7 +20,7 @@ def test_optional_legacy_has_required_conflict_value_without_dependency_or_switc
'o_keys': {'enabled': {'contents': {'required-value': False}}}}}}
assert not (ROOT / 'options.yml').exists()
files = {entry.attrib['src'] for entry in ET.parse(ROOT / 'files.xml').findall('./files/file')}
- assert files == {'definition.yml', 'config.yml', 'init.lua', 'code', 'README.md'}
+ assert files == {'definition.yml', 'config.yml', 'init.lua', 'code', 'README.md', 'locale'}
def test_all_store_languages_present_the_ingame_editor_without_release_notes():
@@ -37,6 +38,14 @@ def test_all_store_languages_present_the_ingame_editor_without_release_notes():
'Automarket', 'SHC 1.41', 'Extreme 1.41'))
+def test_discovery_tags_have_translated_labels_in_every_store_language():
+ assert {p.stem for p in (ROOT / 'locale').glob('*.yml')} == LANGUAGES
+ for lang in LANGUAGES:
+ labels = yaml.safe_load((ROOT / 'locale' / f'{lang}.yml').read_text(encoding='utf-8'))
+ assert set(labels) == {'tags.hotkeys', 'tags.interface', 'tags.tools'}
+ assert all(isinstance(value, str) and value.strip() for value in labels.values())
+
+
def test_all_runtime_lua_parses(lua):
# Includes native-only adapters that cannot execute in the host architecture.
load = lua.eval('function(path) return assert(loadfile(path)) ~= nil end')
From f2eced94523b9068057ca2585b878a3742f7c315 Mon Sep 17 00:00:00 2001
From: Krarilotus <51748815+Krarilotus@users.noreply.github.com>
Date: Tue, 29 Sep 2026 01:23:07 +0200
Subject: [PATCH 2/2] Fix translated hotkey tags and package checks
---
locale/ch.yml | 2 +-
locale/de.yml | 2 +-
locale/fa.yml | 2 +-
locale/hu.yml | 2 +-
locale/ru.yml | 2 +-
locale/tr.yml | 2 +-
tests/test_package.py | 3 ++-
tests/test_release_metadata.py | 4 +++-
8 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/locale/ch.yml b/locale/ch.yml
index 16da85c..5e4bdf4 100644
--- a/locale/ch.yml
+++ b/locale/ch.yml
@@ -1,3 +1,3 @@
-tags.hotkeys: ???
+tags.hotkeys: 快捷键
tags.interface: 界面
tags.tools: 工具
diff --git a/locale/de.yml b/locale/de.yml
index a27e35e..8deef80 100644
--- a/locale/de.yml
+++ b/locale/de.yml
@@ -1,3 +1,3 @@
-tags.hotkeys: Tastenk?rzel
+tags.hotkeys: Tastenkürzel
tags.interface: Oberfläche
tags.tools: Werkzeuge
diff --git a/locale/fa.yml b/locale/fa.yml
index 17ccca8..cea494a 100644
--- a/locale/fa.yml
+++ b/locale/fa.yml
@@ -1,3 +1,3 @@
-tags.hotkeys: ??????? ??????
+tags.hotkeys: کلیدهای میانبر
tags.interface: رابط کاربری
tags.tools: ابزارها
diff --git a/locale/hu.yml b/locale/hu.yml
index 02709c6..dcc7eb5 100644
--- a/locale/hu.yml
+++ b/locale/hu.yml
@@ -1,3 +1,3 @@
-tags.hotkeys: Gyorsbillenty?k
+tags.hotkeys: Gyorsbillentyűk
tags.interface: Kezelőfelület
tags.tools: Eszközök
diff --git a/locale/ru.yml b/locale/ru.yml
index 1cfe212..e438272 100644
--- a/locale/ru.yml
+++ b/locale/ru.yml
@@ -1,3 +1,3 @@
-tags.hotkeys: ??????? ???????
+tags.hotkeys: Горячие клавиши
tags.interface: Интерфейс
tags.tools: Инструменты
diff --git a/locale/tr.yml b/locale/tr.yml
index 4e3bbf1..4a96bb1 100644
--- a/locale/tr.yml
+++ b/locale/tr.yml
@@ -1,3 +1,3 @@
-tags.hotkeys: K?sayol tu?lar?
+tags.hotkeys: Kısayol tuşları
tags.interface: Arayüz
tags.tools: Araçlar
diff --git a/tests/test_package.py b/tests/test_package.py
index c274397..ee8a78f 100644
--- a/tests/test_package.py
+++ b/tests/test_package.py
@@ -14,7 +14,8 @@ def test_committed_module_package_is_reproducible_and_excludes_test_data(tmp_pat
names = set(archive.namelist())
assert {'init.lua', 'definition.yml', 'config.yml', 'build.json', 'code/native/runtime.lua'} <= names
assert all(name in ('init.lua', 'definition.yml', 'config.yml', 'README.md', 'build.json')
- or name.startswith('code/') for name in names)
+ or name.startswith(('code/', 'locale/')) for name in names)
+ assert {f'locale/{lang}.yml' for lang in ('en', 'de', 'fr', 'es', 'hu', 'tr', 'ru', 'ch', 'fa')} <= names
assert not any(name.endswith(('.exe', '.dll')) or 'probe' in name for name in names)
embedded = json.loads(archive.read('build.json'))
assert embedded['commit'] == receipt['commit']
diff --git a/tests/test_release_metadata.py b/tests/test_release_metadata.py
index 7f62ee8..b9bfb31 100644
--- a/tests/test_release_metadata.py
+++ b/tests/test_release_metadata.py
@@ -12,6 +12,7 @@ def test_optional_legacy_has_required_conflict_value_without_dependency_or_switc
assert definition['display-name'] == 'Custom Hotkeys'
assert definition['version'] == '0.2.2'
assert definition['tags'] == ['hotkeys', 'interface', 'tools']
+ assert 'family' not in definition
assert 'ucp2-legacy' not in definition['dependencies']
config = yaml.safe_load((ROOT / 'config.yml').read_text(encoding='utf-8'))['config-sparse']
assert config['plugins'] == {}
@@ -43,7 +44,8 @@ def test_discovery_tags_have_translated_labels_in_every_store_language():
for lang in LANGUAGES:
labels = yaml.safe_load((ROOT / 'locale' / f'{lang}.yml').read_text(encoding='utf-8'))
assert set(labels) == {'tags.hotkeys', 'tags.interface', 'tags.tools'}
- assert all(isinstance(value, str) and value.strip() for value in labels.values())
+ assert all(isinstance(value, str) and value.strip() and '?' not in value
+ for value in labels.values())
def test_all_runtime_lua_parses(lua):