Soluling home   Document home

Output File Names

Output File Names

Each file type has its own rules for where Soluling creates the localized output files. In most cases, the output files are created in language subdirectories of the directory that contains the original file. For example, if your original file is C:\Samples\Sport.xml, the German output file is C:\Samples\de\Sport.xml and the Japanese one is C:\Samples\ja\Sport.xml. You can change both the output directory and the output file names.

You set them for each source on the Output sheet of the source dialog. With SoluMake, the -outpat option of the add command sets the output file pattern of a new source. The patterns apply when Soluling Desktop or SoluMake builds the localized files, including projects that you upload from Soluling Desktop to Soluling Cloud. When you upload a file directly to Soluling Cloud, you download each localized file and choose its name yourself.

The Output sheet of an XML source

The above screenshot shows the Output sheet of an XML source. An XML source can create localized files, one XML file for each language, or a multilingual XML file that contains the elements in several languages. In the screenshot, localized files are turned on, and multilingual files are turned off (the default). The combo box below each check box contains the output file pattern, which specifies the names of the output files.

The localized file pattern is <id>\<file>. A pattern contains plain characters and items. Each item is enclosed in < >. For example, <id> is a language ID, and <file> is the file name without the path. A \ means that the previous part is a subdirectory of the output directory. So <id>\<file> tells Soluling to create each output file in a language-specific directory and to use the same file name as the original file. The multilingual file pattern (currently disabled) contains the plain characters all\, so the multilingual file would be written to the all subdirectory of the output directory. The final output file name combines the output directory and the output file pattern. In the screenshot, the Finnish output file is D:\NT\Deploy\Samples\XML\Sport\fi\Sport.xml.

There are two kinds of items in patterns: file and directory items, and language items.

File and directory items

These items specify the directory and the file name. You can use them only in output file patterns, not in output directories.

Item Description
<parent> Moves the output one directory up from the output directory.
<parent>\<id>\<file> with C:\Files\Source\Sport.exe creates C:\Files\de\Sport.exe.
<dir> The relative directory of the processed file to the source directory, including the last backslash.
If the source is C:\Files\*.html and the file to be processed is C:\Files\SubFiles\Sport.html, the item is replaced with SubFiles\.
If the file is in the source directory, the item is empty.
<file> The original file name with the extension.
C:\Files\Sport.exe → Sport.exe
<body> The original file name without the extension.
C:\Files\Sport.exe → Sport
<ext> The original file extension without the period.
C:\Files\Sport.exe → exe

Note! If a pattern contains neither <dir> nor <parent>, and no output directory is set, Soluling adds <dir> to the beginning of the pattern.

Language items

These items specify the language part of the output files. You can use them both in output directories and in output file patterns.

Item Description
<id> The standard language ID.
For example, en is English, en-US is English (United States), zh is Simplified Chinese, and zh-Hant is Traditional Chinese. The default script of Chinese is Simplified Chinese, so the ID of Simplified Chinese is just zh, but Traditional Chinese has a script part, zh-Hant. If you want both to have a script part, add the multi- prefix: <multi-id>. See the prefixes below.
<leg> The legacy locale code, a combination of language and country. The syntax is
ll[-CC[-variant]]
where
ll ISO 639 (Wikipedia) language code
CC ISO 3166 (Wikipedia) country code
variant Variant code
For example, en is English, en-US is English (United States), zh-CN is Simplified Chinese, and zh-TW is Traditional Chinese. A legacy code has no script part, so Chinese uses the country of each script: China (CN) for Simplified and Taiwan (TW) for Traditional.
<und> As above, but an underscore separates the parts instead of a hyphen.
For example, en is English, en_US is English (United States), zh_CN is Simplified Chinese, and zh_TW is Traditional Chinese.
<and> The Android language ID. The syntax is
ll[-rCC]
where
ll ISO 639 (Wikipedia) language code
CC ISO 3166 (Wikipedia) country code
For example, en is English, en-rUS is English (United States), zh-rCN is Simplified Chinese, and zh-rTW is Traditional Chinese.
<net> The .NET culture code, a combination of language, script, and country. The syntax is
ll[-Ssss][-CC[C]] (.NET 4.0 or later)
ll[-CC[C][-SSSS]] (.NET 2.0 and 3.x)
where
ll Language code. Two lower case characters. ISO 639 (Wikipedia) is used.
Ssss Script code in .NET 4.0 or later. Four characters, where the first character is upper case and the rest are lower case. For example, Latn, Cyrl, Hans, and Hant.
SSSS Script code in .NET 2.0 and 3.x. Three or four upper case characters. For example, CHS and CHT.
CC Country code. Two or three upper case characters. ISO 3166 (Wikipedia) is used.
For example, en is English, en-US is English (United States), and zh-Hans is Simplified Chinese. With .NET 2.0 or 3.x, Simplified Chinese is zh-CHS.
<win> The Windows language abbreviation. It contains two or three upper case characters. A neutral language (no country) uses the first two characters.
For example, EN is English, ENU is English (United States), CH is Simplified Chinese, and CHT is Traditional Chinese.
<mfc> The MFC language code. It is the three-character Windows language abbreviation.
For example, ENU is English (United States), ENG is English (United Kingdom), and CHS is Simplified Chinese.
<nls> The Windows language ID as a decimal number that contains the primary and sub language IDs.
For example, 1033 is English (United States).
<hex> As above, but as a four-digit hexadecimal value.
For example, 0409 is English (United States).
<eng> The English name of the language.
For example, English (United States).

Prefixes

You can add the following prefixes to the id, leg, and und items.

Prefix Description Items
multi- The languages that can use more than one script always have a script part.
For example, Simplified Chinese is zh-Hans instead of zh.
<id>
script- All languages have a script part.
For example, English is en-Latn instead of en.
<id>
lower- The ID uses only lower case characters. <id>, <leg>, <und>
upper- The ID uses only upper case characters. <id>, <leg>, <und>

A prefix cannot be used alone but always comes before an item code. For example, <lower-id> is like <id>, but all the parts are lower case (e.g., en-us instead of en-US).

Samples

You can combine any number of plain characters and items. The following table shows the output files of the original file C:\Sport.exe with different patterns and languages.

Pattern Original file German file German (Germany) file Japanese file Simplified Chinese file Traditional Chinese file Notes
<id>\<file> C:\Sport.exe C:\de\Sport.exe C:\de-DE\Sport.exe C:\ja\Sport.exe C:\zh\Sport.exe C:\zh-Hant\Sport.exe The default pattern in most cases.
<multi-id>\<file> C:\Sport.exe C:\de\Sport.exe C:\de-DE\Sport.exe C:\ja\Sport.exe C:\zh-Hans\Sport.exe C:\zh-Hant\Sport.exe  
<script-id>\<file> C:\Sport.exe C:\de-Latn\Sport.exe C:\de-Latn-DE\Sport.exe C:\ja-Jpan\Sport.exe C:\zh-Hans\Sport.exe C:\zh-Hant\Sport.exe  
<upper-id>\<file> C:\Sport.exe C:\DE\Sport.exe C:\DE-DE\Sport.exe C:\JA\Sport.exe C:\ZH\Sport.exe C:\ZH-HANT\Sport.exe The ID is all upper case.
<lower-id>\<file> C:\Sport.exe C:\de\Sport.exe C:\de-de\Sport.exe C:\ja\Sport.exe C:\zh\Sport.exe C:\zh-hant\Sport.exe The ID is all lower case.
<leg>\<file> C:\Sport.exe C:\de\Sport.exe C:\de-DE\Sport.exe C:\ja\Sport.exe C:\zh-CN\Sport.exe C:\zh-TW\Sport.exe  
<body>_<id>.<ext> C:\Sport.exe C:\Sport_de.exe C:\Sport_de-DE.exe C:\Sport_ja.exe C:\Sport_zh.exe C:\Sport_zh-Hant.exe  
<body>_<id>.<ext> C:\Sport_en.exe C:\Sport_de.exe C:\Sport_de-DE.exe C:\Sport_ja.exe C:\Sport_zh.exe C:\Sport_zh-Hant.exe The file name ends with the original language ID, so Soluling replaces it with the target language ID. This happens when the output file is in the same directory as the original file and the pattern uses the same separator (_ or .) before the ID.
<body>.<id> C:\Sport.exe C:\Sport.de C:\Sport.de-DE C:\Sport.ja C:\Sport.zh C:\Sport.zh-Hant Delphi resource DLL.
<id>\<body>.<win> C:\Sport.exe C:\de\Sport.DE C:\de-DE\Sport.DEU C:\ja\Sport.JP C:\zh\Sport.CH C:\zh-Hant\Sport.CHT Legacy Delphi resource DLL.
all\<file> C:\Sport.exe C:\all\Sport.exe C:\all\Sport.exe C:\all\Sport.exe C:\all\Sport.exe C:\all\Sport.exe The pattern has no language item, so the output file is the same for all languages.
Use a pattern like this only with multilingual output files.
<net>\<body>.resources.dll C:\Sport.exe C:\de\​Sport.resources.dll C:\de-DE\​Sport.resources.dll C:\ja\​Sport.resources.dll C:\zh-Hans\​Sport.resources.dll C:\zh-Hant\​Sport.resources.dll .NET satellite assembly file.