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):