spiegel-keyman/windows/src/engine/kmcomapi
Marc Durdin ad9ab53c72 feat(windows): improve startup time by caching locale names
This was flagged years ago as a potential performance hotspot: each
locale is loaded at process start for any kmcomapi-involved process,
which takes quite a long time. This refactor moves the locale
enumeration out of kmcomapi and into the build process, so we have a
static list of locales put into locale/index.xml.

This includes a minor breaking change to Keyman Engine API on Windows:
`MessageFromID(id, locale)` now only allows the three ids
SKUILanguageName, SKUILanguageNameWithEnglish, and SKLanguageCode, for
performance reasons. At this point, only SKUILanguageNameWithEnglish is
actually used anywhere in Keyman, and it is unlikely that any other
consumers are requesting alternate IDs.

Fixes: #14787
Build-bot: skip release:windows
2025-09-19 14:11:37 +02:00
..
com fix(windows): review comments 2025-03-06 12:01:06 +10:00
processes chore(developer): remove font style/color from kvk 2023-06-21 10:53:45 +07:00
util fix(windows): add comments re default values 2025-03-05 10:39:49 +10:00
build.sh feat(windows): improve startup time by caching locale names 2025-09-19 14:11:37 +02:00
dialogs.rc Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
dialogs.RES Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
kbd_noicon.rc chore(windows): update resource references 2022-06-01 06:56:43 +10:00
kbd_noicon.RES Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
keymanapi_TLB.pas fix(windows): handle edge cases using default language 2021-09-17 06:37:23 +10:00
keymancontext.pas fix(windows): handle edge cases using default language 2021-09-17 06:37:23 +10:00
kmcomapi.dpr chore(core): delete crc32.cpp and crc32.pas from some places 2022-09-21 18:13:19 -05:00
kmcomapi.dproj chore(core): delete crc32.cpp and crc32.pas from some places 2022-09-21 18:13:19 -05:00
kmcomapi.res Rework build for x64 msbuild support and add 64-bit support to keymancontrol 2017-12-30 07:37:30 +11:00
kmcomapi.ridl fix(windows): handle edge cases using default language 2021-09-17 06:37:23 +10:00
kmcomapi_Icon.ico Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
manifest.in fix(windows): Rename to Keyman 2020-12-02 09:56:14 +11:00
manifest.rc Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
version.rc chore(windows): move keymanversion.h to common 2022-06-12 13:56:13 +10:00