Difference between revisions of "NML:Language files"

From GRFSpecs
Jump to navigationJump to search
(Link to string code page)
(string tags partially explained)
Line 1: Line 1:
 
{{NMLNavNoSubpages}}
 
{{NMLNavNoSubpages}}
  +
== Introduction ==
 
 
Language files are usually found in the <code style="color:darkgreen">lang</code> sub-folder of the project, but the place NML looks for the language files can be changed via command line parameter to any directory desired:
 
Language files are usually found in the <code style="color:darkgreen">lang</code> sub-folder of the project, but the place NML looks for the language files can be changed via command line parameter to any directory desired:
   
Line 15: Line 15:
 
where the first line must give the language code for the language this file describes (see below). The following lines each describe a string. The translated string follows immediately the colon. An NML project has exactly one fallback language, by default this is english.lng. You can change this with the command line parameter --default-lang. Example for a valid language file:
 
where the first line must give the language code for the language this file describes (see below). The following lines each describe a string. The translated string follows immediately the colon. An NML project has exactly one fallback language, by default this is english.lng. You can change this with the command line parameter --default-lang. Example for a valid language file:
   
<pre style="color:blue">
+
<pre class=example>
 
##grflangid 0x01
 
##grflangid 0x01
 
STR_GRF_NAME :{TITLE} 0.1.0 - {VERSION}
 
STR_GRF_NAME :{TITLE} 0.1.0 - {VERSION}
Line 22: Line 22:
 
</pre>
 
</pre>
   
  +
== String codes ==
Strings may contain a number of special [[NML:StringCodes| string codes]] which control how the string is being printed or which values to insert into the string. Custom replacements can be stored in the plain text file <code>custom_tags.txt</code> (for example a newgrf version which is written by your build script). In the case above the <code>custom_tags.txt</code> could, for example read
 
   
  +
Strings may contain a number of special string codes which control how the string is being printed or which values to insert into the string. Custom replacements can be stored in the plain text file <code>custom_tags.txt</code> (for example a newgrf version which is written by your build script). In the case above the <code>custom_tags.txt</code> could, for example read
<pre style="color:blue">
 
  +
  +
<pre class=example>
 
VERSION :alpha-r88
 
VERSION :alpha-r88
 
TITLE :Example NewGRF
 
TITLE :Example NewGRF
 
</pre>
 
</pre>
  +
  +
Additionally to custom-defined tags, NML comes with a number of default tags:
  +
{|
  +
!Tag
  +
!Meaning
  +
!Example
  +
|-
  +
|NBSP || non-breaking space
  +
|-
  +
|COPYRIGHT || &copyright;
  +
|-
  +
|TINYFONT || switch to small font
  +
|-
  +
|BIGFONT || switch to big font
  +
|-
  +
|DWORD_S || display variable (4 bytes): signed double word
  +
|-
  +
|PARAM || display parameter (4 bytes): unsigned double word
  +
|-
  +
|WORD_S || display variable (2 bytes): signed word
  +
|-
  +
|BYTE_S || display variable (1 byte): signed byte
  +
|-
  +
|WORD_U || display variable (2 bytes): unsigned word
  +
|-
  +
|CURRENCY || display variable (2 bytes): money in proper currency units
  +
|-
  +
|STRING || include other string
  +
|-
  +
|DATE1920_LONG || display variable (2 bytes): days since 1920 as long date || (12 August 1935)
  +
|-
  +
|DATE1920_SHORT|| display variable (2 bytes): days since 1920 as short date || (12 Aug 1935)
  +
|-
  +
|VELOCITY || display variable (2 bytes): velocity in proper units || 35 km/h
  +
|-
  +
|POP_WORD ||
  +
|-
  +
|ROTATE ||
  +
|-
  +
|VOLUME || display variable (2 bytes): volume in proper units || 29.000l
  +
|-
  +
|CURRENCY_QWORD|| display variable (8 bytes): money in proper currency units
  +
|-
  +
|PUSH_WORD ||
  +
|-
  +
|UNPRINT ||
  +
|-
  +
|BYTE_HEX || display variable (1 byte): hexadecimal presentation
  +
|-
  +
|WORD_HEX || display variable (2 bytes): hexadecimal presentation
  +
|-
  +
|DWORD_HEX || display variable (4 bytes): hexadecimal presentation
  +
|-
  +
|QWORD_HEX || display variable (8 bytes): hexadecimal presentation
  +
|-
  +
|WORD_S_TONNES || display variable (2 bytes): weight in tons || 42t
  +
|-
  +
|DATE_LONG || display variable (2 bytes): days since 0 as long date || (12 August 1610)
  +
|-
  +
|DATE_SHORT || display variable (2 bytes): days since 0 as short date || (12 Aug 3049)
  +
|-
  +
|POWER || display variable (2 bytes): power in proper units
  +
|-
  +
|BLUE || switch to blue text
  +
|-
  +
|SILVER || switch to silver text
  +
|-
  +
|GOLD || switch to golden text
  +
|-
  +
|RED || switch to red text
  +
|-
  +
|PURPLE || switch to purple text
  +
|-
  +
|LTBROWN || switch to light brown text
  +
|-
  +
|ORANGE || switch to orange text
  +
|-
  +
|GREEN || switch to green text
  +
|-
  +
|YELLOW || switch to yellow text
  +
|-
  +
|DKGREEN || switch to dark green text
  +
|-
  +
|CREAM || switch to cream-coloured text
  +
|-
  +
|BROWN || switch to brown text
  +
|-
  +
|WHITE || switch to white text
  +
|-
  +
|LTBLUE || switch to light blue text
  +
|-
  +
|GRAY || switch to gray text
  +
|-
  +
|DKBLUE || switch to dark blue text
  +
|-
  +
|BLACK || switch to black text
  +
|-
  +
|TRAIN || switch to train symbol
  +
|-
  +
|LORRY || switch to lorry symbol
  +
|-
  +
|BUS || switch to bus symbol
  +
|-
  +
|PLANE || switch to plane symbol
  +
|-
  +
|SHIP || switch to ship symbol
  +
|}
  +
  +
== LanguageIDs ==
   
 
Valid language IDs are listed in the table below.
 
Valid language IDs are listed in the table below.

Revision as of 21:22, 29 August 2011

Introduction

Language files are usually found in the lang sub-folder of the project, but the place NML looks for the language files can be changed via command line parameter to any directory desired:

nmlc -l path/to/lang-dir path/to/nml-source-file.nml
nmlc --lang-dir=path/to/lang-dir path/to/nml-source-file.nml

Language files MUST have the extension .lng
The language files themselves follow a certain structure:

##grflangid <number>
<string-name>                                                   :<text>
<string-name>                                                   :<text>
...

where the first line must give the language code for the language this file describes (see below). The following lines each describe a string. The translated string follows immediately the colon. An NML project has exactly one fallback language, by default this is english.lng. You can change this with the command line parameter --default-lang. Example for a valid language file:

 ##grflangid 0x01
 STR_GRF_NAME                                                    :{TITLE} 0.1.0 - {VERSION}
 STR_GRF_DESCRIPTION                                             :{TITLE} contains pimped ground tiles.
 STR_NAME_MYVEHICLE                                              :General Robotics Anti-Grav UFO Mark X

String codes

Strings may contain a number of special string codes which control how the string is being printed or which values to insert into the string. Custom replacements can be stored in the plain text file custom_tags.txt (for example a newgrf version which is written by your build script). In the case above the custom_tags.txt could, for example read

 VERSION  :alpha-r88
 TITLE    :Example NewGRF

Additionally to custom-defined tags, NML comes with a number of default tags:

Tag Meaning Example
NBSP non-breaking space
COPYRIGHT &copyright;
TINYFONT switch to small font
BIGFONT switch to big font
DWORD_S display variable (4 bytes): signed double word
PARAM display parameter (4 bytes): unsigned double word
WORD_S display variable (2 bytes): signed word
BYTE_S display variable (1 byte): signed byte
WORD_U display variable (2 bytes): unsigned word
CURRENCY display variable (2 bytes): money in proper currency units
STRING include other string
DATE1920_LONG display variable (2 bytes): days since 1920 as long date (12 August 1935)
DATE1920_SHORT display variable (2 bytes): days since 1920 as short date (12 Aug 1935)
VELOCITY display variable (2 bytes): velocity in proper units 35 km/h
POP_WORD
ROTATE
VOLUME display variable (2 bytes): volume in proper units 29.000l
CURRENCY_QWORD display variable (8 bytes): money in proper currency units
PUSH_WORD
UNPRINT
BYTE_HEX display variable (1 byte): hexadecimal presentation
WORD_HEX display variable (2 bytes): hexadecimal presentation
DWORD_HEX display variable (4 bytes): hexadecimal presentation
QWORD_HEX display variable (8 bytes): hexadecimal presentation
WORD_S_TONNES display variable (2 bytes): weight in tons 42t
DATE_LONG display variable (2 bytes): days since 0 as long date (12 August 1610)
DATE_SHORT display variable (2 bytes): days since 0 as short date (12 Aug 3049)
POWER display variable (2 bytes): power in proper units
BLUE switch to blue text
SILVER switch to silver text
GOLD switch to golden text
RED switch to red text
PURPLE switch to purple text
LTBROWN switch to light brown text
ORANGE switch to orange text
GREEN switch to green text
YELLOW switch to yellow text
DKGREEN switch to dark green text
CREAM switch to cream-coloured text
BROWN switch to brown text
WHITE switch to white text
LTBLUE switch to light blue text
GRAY switch to gray text
DKBLUE switch to dark blue text
BLACK switch to black text
TRAIN switch to train symbol
LORRY switch to lorry symbol
BUS switch to bus symbol
PLANE switch to plane symbol
SHIP switch to ship symbol

LanguageIDs

Valid language IDs are listed in the table below.

ID language
00 American
01 English
02 German
03 French
04 Spanish
05 Esperanto
06 Ido
07 Russian
08 Irish
09 Maltese
0A Tamil
0B Chuvash
0C Chinese (Traditional)
0D Serbian
0E Norwegian (Nynorsk)
0F Welsh
10 Belarusian
11 Marathi
12 Faroese
14 Arabic (Egypt)
15 Czech
16 Slovak
18 Bulgarian
1B Afrikaans
1E Greek
1F Dutch
21 Basque
22 Catalan
23 Luxembourgish
24 Hungarian
26 Macedonian
27 Italian
28 Romanian
29 Icelandic
2A Latvian
2B Lithuanian
2C Slovenian
2D Danish
2E Swedish
2F Norwegian (Bokmal)
30 Polish
31 Galician
32 Frisian
33 Ukrainian
34 Estonian
35 Finnish
36 Portuguese
37 Brazilian Portuguese
38 Croatian
39 Japanese
3A Korean
3C Malay
3E Turkish
42 Thai
54 Vietnamese
56 Chinese (Simplified)
5A Indonesian
5C Urdu
61 Hebrew
62 Persian

In case a language is not in this list, check the master language list (for GRFv7) in the NewGRF Specs. This master list is always leading. NFO language ID 7F has no meaning in NML (set --default-lang instead) and setting bit 16 will break your language file.