spiegel-keyman/windows/docs/help/advanced/locale_edit.md
Marc Durdin 34d6eb89fa fix(windows): Ensure default locale always appears in list of locales
* 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
2026-05-20 15:51:25 +02:00

2 KiB

title
Translating the Keyman for Windows User Interface

Online User Interface Translation Editor

Localization of the user interface is possible by using the online interface at translate.keyman.com.

Notes on editing translations

Nearly all strings have identifiers (e.g. SKButtonOK for the OK button). We have three different types of strings in the file - plain, HTML and format strings:

  • Format strings often include %#:s or %#:d markers that are placeholders for parameters, and should be included in a translated string. The order of the markers in the translated string is not important.

    Example: <String Type="FormatString" Id="SKPackageAlreadyInstalled">A package with the name %0:s is already installed. Do you want to uninstall it and install the new one?</String>

  • Plain strings must be just that - plain text. These are all referenced by the XSL templates that make up the bulk of the Keyman for Windows user interface. You should not place any HTML tags in these entries as they will be stripped before display.

    Example: <String Type="PlainText" Id="S_ShortProductName">Keyman for Windows</String>

  • HTML strings can include tags - there are only a few of these. The most obvious of these is in the Welcome screen text.

    Example: <String Type="HTML" Id="S_Splash_Button_Start" AccessKey="S"><u>S</u>tart</String>

The & entity is used to mark hotkeys in menu items, labels and buttons. It can be used only with strings identified as formatted messages (these mostly start with SK) and with the Menu strings.

Hints on editing a translation

First, edit the translation's language information - SKUILanguageName, SKUILanguageNameWithEnglish, and SKLanguageCode. The SKLanguageCode should be the same as the language code you chose earlier.

Note: Any entries missing from the translation will be retrieved from the default file.