I was asked via email this morning about the changing locale.xml file format between build 223 and build 224 of Keyman Desktop.  I had meant to write an update on this blog for my previous post about the file format – so here it is.

We reworked the locale.xml file format in build 224 to make it more consistent and eliminate some issues with extensibility.  I believe the new format is more logical – here’s an overview:

<?xml version="1.0" encoding="utf-8"?>
  <String Type="PlainText" Id="S_ShortProductName">Keyman Desktop</String>
<Dialog Id="DownloadKeyboard" Width="600" Height="400">

Each string has a type of PlainText, HTML, or FormatString, according to how it is used.  PlainText cannot contain markup of any kind; HTML can.  FormatStrings are used mostly in dialog boxes and other messages, and cannot contain markup, but often contain parameters such as %0:s or %1:d.  These parameters can be put in any order in the output string – and can even be repeated.

We also have some new information – each HTML-based dialog in Keyman Desktop Configuration has an entry in the file that specifies its pixel width and height, and optionally some internal dimensions as well.  In the example above, the footerheight for the DownloadKeyboard dialog is given as 40 pixels.

That’s all there is to the format…  Of course the new file format is wonderful and is going to solve the world’s problems, but for anyone who already did a translation, that’s not going to make them happy!  (Vincent?)

So, I wrote an XSLT template to translate the build 223 format to build 224 format.  The template and some wrappers to execute it are available at: www.tavultesoft.com/support/files/.  There are two wrappers for the template (or you can use your own favourite XSLT processor):
* An IE only web page – convertlocale.html  (uses ActiveX to access Msxml2.DomDocument)
* A Windows Scripting file – convertlocale.js

To run convertlocale.js, start a command prompt and type:

cscript [/nologo]
convertlocale.js <infile.xml> [<outfile.xml>]

If no outfile is given, then the output is written to stdout.

If you have any issues with the conversion, please let me know.

Categories: Uncategorized

0 thoughts on “Translating the Keyman Desktop UI – again!”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Related Posts


Keyman 17.0 is now available in beta

We are excited to announce that Keyman 17.0 is officially in beta. You can download Keyman 17.0 beta on Keyman downloads website. You are welcome to send us any feedback for Keyman 17.0 on Keyman Read more…


The Keyman Intern Project

Several members of the Keyman team work out of the National Polytechnic Institute of Cambodia (NPIC), វិទ្យាស្ថានជាតិពហុបច្ចេកទេសកម្ពុជា, in Phnom Penh, the capital of Cambodia. One of the things the Keyman team tries to do is Read more…


Keyman 16.0 now available!

We are pleased to announce that we have now released Keyman 16.0! You can download Keyman 16.0 on the Keyman downloads website. In version 16.0, we have a few new features, but our focus has Read more…