The built-in language editor allows the creation of new language packs or the correction of language texts in an existing pack.
How Language Files Are Used
Language packs are stored in the Languages folder where MultiCommander.exe is located. Each language pack is a zip archive; one per language. Each zip files contains all the language files for all the extension/plug-ins for that language.
Multi Commander always reads the English language pack first and store all of the language texts in memory. Then the language that was configured is read and it will overwrite all of its translated texts. If any text item is not translated then the English text is used.
Each language pack only contains language files for the built-in Core and any Extensions/Plug-ins that are delivered with Multi Commander. So an Extension/Plug-in created by a user in their own language will not be found here. If Multi Commander does not find a matching language file in the language pack, it will search for the language files in the folder where the extensionor plug-in is located
Having the language files in a zip archive is not optimal when creating translations or modifying them. They are harder to test and verify. Also the built-in language editor needs to have them unpacked.
When started Multi Commander will first look for the unpacked language packs in the "
When starting the Language Editor it will ask if it should unpack the language pack to the UserData folder.
The next time that Multi Commander is started it will read the unpacked language files from the UserData folder, allowing modifications and additions to be verified
When the unpacked language files in the "UserData\Languages" folder are no longer needed or wanted they can be deleted. Multi Commander will then automatically revert to loading them from the zipped language packs again.
Language Editor Panel
The language editor panel allow text items to be modified. It is also possible to add support for new language and to export a language pack.
The save button will save all the changes for the currenly selected language.
Language Properties Button
this opens a dialog showing properties for the selected language, for example the language name and language code it should use.
This lists which extension/plug-in types existis in Multi Commander. Select one and the next dropdown will update with all the extension/plug-ins for that type.
Each extension/plug-in has its own language file.
List all extensions/plug-ins for the selected type. Select an extension/plug-in here and all text items for it will be shown using the language that is set in the Language Dropdown
List all available languages and (at the bottom) there is an option to add a new language.
Change language here and the list will reload with the text item for the selected extension/plug-in for that language
The Export/Send button will allow a language pack to be exported (or to be sent to Multi Commander staff for inclusion into next release).
The Restore button allows previous versions of language files to be restored. Each time you press Save it will backup the previous version and you can retore to a previously-exported language pack.
Text Item List
There are three columns in the text items list: ID , Text and Description/Tooltip/Caption/...
The ID is the Text ID used to identify the text item. It consists of a letter + a number. The letter is a way to categorize different text IDs. Often M is used for text items for Menu Items, D for Dialog, E for Rrror Messages, C for Commands. The Text item in the picture above is under C, ie. 231 that is selected is actually C-231.
The Text column is the main text that shown for that Text ID.
The Last Column is the secondary text item . Every Text ID can have two text items, one main and one secondary. The secondary is often used for the Tooltip ("hover" text), but can also be used for the descriptive text for script commands, or as a caption for an error message.
Text items in Red and Italic are text items that are NOT translated; the core English text is shown instead. The red items are NOT saved to the localized language files. The localized language files should not contain any English texts. The English text for untranslated text is automatically picked up (since the English language file are always read first).
Items shown in BOLD are text items that are modified but not yet saved.
By clicking the right mouse button it is possible to opt to show only untranslated items: no translated items are shown and only red, untranslated items remain.
Create New Language Pack
Start the language editor and from the language dropdown select the last option "-- Add New Language --".
The Language Properties window will open.
There are two language name fields. The first is the language name in English and the second is language name as spelt in the language that is being added.
Under "Culture name code" enter the two or five letter code for that language. If several variations of the language exist, you should add using the five letter code, so there will be no conflicts.
In "Matching Languages" enter all the language codes that match this language's codes. This field will be used to auto-select the correct language. So a user running Windows set to any of the matching languages, that language will be auto-selected the first time Multi Commander is run for that user.
As an example from the image above: if a user has Windows language set to "sv-FI" it will pick the language pack that is about to be created.
"Matching Languages" can be changed later by pressing the Language Properties button next to the Save button
Press Save to create support for that language. The file UserData\Lanaguge\SupportedLanguages.xml is then updated and Multi Commander will use this file next time it starts.
It is not possible to start translating using the language editor.
Some text items can contain control characters and these must be retained.
The most common such character is \n, meaning "new line" and is most often used for text shown in text blocks or message boxes. Make sure there is no space after the control character.
"Line1 \n Line2" = Wrong - "Line2" text would then have an extra space before the text "Line2" text.
"Line1\nLine2" = Correct - There is no extra space character before the "Line2" text
There are also %s and %d , meaning that strings or numbers will be inserted at these positions and so these control characters must also be kept
For example, in an Explorer Panel there is a Text ID "L-31" that looks like: %s/%s in %d/%d Files and %d/%d Folders selected
All the %s and %d control characters will be replaced with strings and numbers when the text item is used.
Another common control character is the & (ampersand) character. This control character is a text item used in menubar or popup menu items and is used to underline automatic Shortcut (hotkey or accelerator) characters.
Menu items and popup menus can be activated using the keyboard. For example, if you press the Alt key, the "File" menu on the menu bar is highlighted.
Note that the File menu now has an underscore under the F and the Edit menu has the E underscored.
The menu bar options now read: File, Edit, View, and so on.
The underscore below V in the View menu means that you can now press V to drop that menu. The menu that opens can also have underscores for many of its menu items such that they, too, can be accessed them quickly using the keyboard.
The decision on which letter is used as a shortcut (accelerator) is decided by the menu item text. Any & characters in a menu item text will underscore the followin character and it will be used as a shortcut (accelerator) automatically. For Example, "&View" will be shown as "View", and "Vie&w" would be shown as "View.
This is not unique to Multi Commander, but is a long-standing Windows behaviour. For every menu that is shown there should be no duplicated shortcuts. For items within a menu there should not be more than two (where possible) items that have the same underscored letter. The shortcut will activate the first one.
To avoid this situation the & character may need to be moved to precede another character in the translated text.
Edit Language Files With External Editor
Some people find it easier to translating with their favourite text editor. To do that you first need to follow the same steps as above when creating a new language.
Since language files do not contain untranslated text you need copy the English files to the new languages which you are creating. This requires a bit of manual work.
- Unpack the english language pack file manually MC_LangPack_en.zip
- Rename all of the files to match your new language. If your new language culture code is "se" (as in the example image above) you should rename then *_en.xml part of all the language files to *_se.xml
- Then zip them all together again to a file called MC_LangPack_se.zip and place that archive in the standard language pack folder
- Go to UserData\Languages\ folder and delete everything EXCEPT "SupportedLanguages.xml". Do not delete that file since this file will be updated with your new language
- Start the Internal Language Editor again and it will unpack all language packs again to UserData\Languages\
- Start editing the new language files located in UserData\Languages\ in your favourite editor
- When done, start the Internal Language Editor and select Export/Send to export or send the language pack
Editing new language files in the UserData\Lanauges location is going to make the export function work without any problems. So then you can create a language pack for sending to be included into the next version of Multi Commander.
When editing the language files with an external editor the files are in a format called xml and they are encoded using UTF8. Be careful not to remove xml tags. If xml tags are destroyed the entire xml file will be unreadable. Also special characters like & and " might need special encoding.
If a language files is not readable by Multi Commander try to open the xml file in a webbrowser. If some xml tags have been lost the browser can often report that it found an xml error on line xx and you can locate and correct the error.
Submit Language Pack
After modifying an existing language or created a new one, a new language pack for that language may be required; so that it can be moved to another machine easily or sent to the developer of Multi Commander to be included in the next release. To create an updated language pack, first make sure that the Language dropdown is set to the language you want to create a language pack for. Then press the "Export/Send" button.
A window will open that has a dropdown with three options. This is to select which type of language pack you want to create.
- Internal format (Submit to developer using e-mail)
This will create a Language pack in the internal format. This is used if you are sending the Language pack to the developers of Multi Commander via email.
- Internal format (Submit to developer using HTTP) (this is the recommended option)
This will create a Language pack in the internal format and this will then be sent to the MultiCommander web service and there is no need for email.
However, using this method you need a Submit key that you can get by contacting Multi Commander staff.
A key is needed so that not just anybody can submit incorrect changes that could destroy a language pack.
This process is entirely automatic and language packs received this way will automatically be included in the next version. If you have a Submit key you can submit language changes as often at you like.
- Export to Public Language Pack Format
This will export the language pack in the public format. this is the same format as the language files found in the install folder. This format is used if the language pack created should be shared with somebody else or if you want to test it on another machine.
Incomplete Translation Work
Multi Commander contains many text items and translating them can be a very long, intensive process.
So if you start a translation but give up because it is too much work, then submit what you have. Somebody else might continue with where you left off.
A partial translations is better than none at all!