Skip to content

fix(windows): Ensure default locale always appears in list of locales#15984

Merged
mcdurdin merged 2 commits into
masterfrom
fix/windows/15164-locale-missing-after-lang-switch
May 22, 2026
Merged

fix(windows): Ensure default locale always appears in list of locales#15984
mcdurdin merged 2 commits into
masterfrom
fix/windows/15164-locale-missing-after-lang-switch

Conversation

@mcdurdin
Copy link
Copy Markdown
Member

@mcdurdin mcdurdin commented May 20, 2026

  • Add TKeymanPaths.KeymanLocalePath for consistent access to locales folder, and update references.
  • Remove the SKDefaultLanguageCode string and hard code the default language in CustomisationMessages.pas.
  • Hide the test locale 'qqq' on release builds.

This is a candidate for back-port to stable-18.0.

Fixes: #15164

User Testing

TEST_LOCALES: In Keyman Configuration, open the list of available locales and verify that all expected locales are present. Note that the '[!!Ěńġľĭŝħ!!]' language will appear for test builds; this is not an error.

TEST_SWITCH: Switch locale to Khmer, exit Keyman Configuration, and reopen. Verify that 'English' appears in the list of available locales and can be selected.

* Add `TKeymanPaths.KeymanLocalePath` for consistent access to locales
  folder, and update references.
* Remove the `SKDefaultLanguageCode` string and hard code the default
  language in CustomisationMessages.pas.
* Hide the test locale 'qqq' on release builds.

Fixes: #15164
@github-project-automation github-project-automation Bot moved this to Todo in Keyman May 20, 2026
@keymanapp-test-bot keymanapp-test-bot Bot added has-user-test user-test-required User tests have not been completed labels May 20, 2026
@keymanapp-test-bot
Copy link
Copy Markdown

keymanapp-test-bot Bot commented May 20, 2026

<!-- String Type: FormatString -->
<!-- Introduced: 7.0.230.0 -->
<string name="SKDefaultLanguageCode" comment="The default language code for this product. This should be the language that the product is created in. For Keyman this must stay 'en', for all translations.">en</string>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we generally keep old strings in for the previous Keyman versions. And maybe mark to deprecate in 20.0?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, do changes here percolate back to old versions? They shouldn't!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean when strings get removed in the English source strings, crowdin will remove them across the rest of the languages.

Our end-of-sprint download from crowdin only goes to master (19.0) though.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given the download from crowdin goes only to master, I think we remove them in 19.0 -- no need to keep them hanging about and making extra work for translators.

Comment on lines +40 to +43
SKeymanVersion190 = '19.0';
SKeymanVersion180 = '18.0';
SKeymanVersion170 = '17.0';
SKeymanVersion160 = '16.0';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do these get used?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, just adding for completeness -- they may be used at any time and as I was adding the ENVIRONMENT_ vars thought I'd just add these at the same time.

@mcdurdin
Copy link
Copy Markdown
Member Author

@Meng-Heng you should be able to retest with the latest build on this PR now, thanks!

Copy link
Copy Markdown
Contributor

@darcywong00 darcywong00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@Meng-Heng
Copy link
Copy Markdown
Contributor

Meng-Heng commented May 22, 2026

Test Specs

  1. Windows 10 Bootcamp
  2. Keyman v19.0.235-alpha-test-15984

Test Results

  • TEST_LOCALES (PASSED):
  1. Launch Keyman Configuration
  2. Click "Display in: English" menu
  3. Locale available (Google Gemini assisted):
    # Language (App Menu) Crowdin Equivalent Comparison Status
    1 [!!Êñgłísh!!]
    2 Azərbaycanca (Azerbaijani) Azerbaijani Match
    3 Bahasa Indonesia (Indonesian) Indonesian Match
    4 Bura-Pabir Bura-Pabir Match
    5 čeština (Czech) Czech Match
    6 Deutsch (German) German Match
    7 English
    8 Español Spanish Match
    9 Español (Spanish - Latin America) Spanish, Latin America Match
    10 Français (French) French Match
    11 Fulfulde Nigeria Fulfulde (Nigeria) Match
    12 Hausa Hausa Match
    13 Italiana (Italian) Italian Match
    14 Mandara Mandara (Wandala) Match
    15 Marghi Marghi Match
    16 Nasara None Mismatch (Missing from visible Crowdin list)
    17 Nederlands (Dutch) Dutch Match
    18 Nya Nasara None Mismatch (Missing from visible Crowdin list)
    19 Polish Polish Match
    20 Português (Portuguese) Portuguese Match
    21 Português do Brasil (Brazilian Portuguese) Portuguese, Brazilian Match
    22 Pulaar (Fulah) Fulo Match
    23 Shuwa Latin Shuwa (Latin script) Match
    24 svenska (Swedish) Swedish Match
    25 Tamil Tamil Match
    26 Tiếng Việt Vietnamese Match
    27 Türkçe (Turkish) Turkish Match
    28 Venetian Venetian Match
    29 Waha Waha (Lamang) Match
    30 🏹 Greek Polytonic (Greek Text) Greek (Polytonic) Match
    31 Русский (Russian) Russian Match
    32 Українська (Ukrainian) Ukrainian Match
    33 ಕನ್ನಡ (Kannada) Kannada Match
    34 Mon (Mon script) Mon Match
    35 Myanmar (Burmese script) Burmese Match
    36 Khmer (Khmer script) Khmer Match
    37 Amharic (Ethiopic script) Amharic Match
    38 中文 (Chinese Simplified) Chinese Simplified Match
  • TEST_SWITCH (PASSED):
  1. While in Keyman Configuration, Locale dropdown menu
  2. Click "Khmer"
  3. Close Keyman Configuration
  4. Launch Keyman Configuration
  5. Verify:
    • English is in the dropdown menu
    • Switching back to English successfully
    • Khmer and English remain in the menu

@keymanapp-test-bot keymanapp-test-bot Bot removed the user-test-required User tests have not been completed label May 22, 2026
@mcdurdin mcdurdin merged commit 6a71c1d into master May 22, 2026
14 checks passed
@mcdurdin mcdurdin deleted the fix/windows/15164-locale-missing-after-lang-switch branch May 22, 2026 12:42
@github-project-automation github-project-automation Bot moved this from Todo to Done in Keyman May 22, 2026
@keyman-server
Copy link
Copy Markdown
Collaborator

Changes in this pull request will be available for download in Keyman version 19.0.237-alpha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

bug(windows): English is absent after a language switch & closing Keyman Configuration

4 participants