spiegel-keyman/windows/src/desktop/kmshell
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
..
help fix(windows): invalid character in text content opening help 2021-01-25 18:34:56 +11:00
install fix(windows): revert accidental file addition 2025-01-07 12:48:08 +10:00
locale chore(common): Update Crowdin strings for Spanish 2025-08-06 11:36:52 +07:00
main update(windows): review comment 2025-09-09 21:00:49 +10:00
Profiling Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
rel Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
render fix(windows): Apply suggestions from code review 2025-03-18 13:14:04 +10:00
settings chore(windows): breadcrumbs 2021-03-16 06:57:57 +11:00
startup fix(windows): keyman startup does not do a background check 2025-02-25 21:27:28 +10:00
util feat(windows): improve startup time by caching locale names 2025-09-19 14:11:37 +02:00
web fix(windows): serve images for readme files in Keyboard Install 2024-01-03 14:10:20 +07:00
xml fix(windows): fix handling of more than 3 updates 2025-03-25 17:09:03 +10:00
.gitignore feat(windows): improve startup time by caching locale names 2025-09-19 14:11:37 +02:00
build.sh feat(windows): improve startup time by caching locale names 2025-09-19 14:11:37 +02:00
desktop_pro.pxx Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
icons.rc chore(windows): update resource references 2022-06-01 06:56:43 +10:00
ilKMN.bmp Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
ilKMP.bmp Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
ilTick.bmp Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
ilUntick.bmp Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
kmshell.dpr fix(windows): combine install and installnow frms 2025-03-24 10:43:36 +10:00
kmshell.dproj fix(windows): combine install and installnow frms 2025-03-24 10:43:36 +10:00
kmshell_Icon.ico Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
localedef.dtd.in fix(windows): Rename to Keyman 2020-12-02 09:56:14 +11: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
menuframe_pro.pdn Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
UfrmKMShell.dfm 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