1
0
Fork 0

(svn r17157) -Add: localised decimal separator

release/1.0
smatz 2009-08-12 01:28:11 +00:00
parent d58d053438
commit a29bbb1e1f
58 changed files with 68 additions and 2 deletions

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0436 ##winlangid 0x0436
##grflangid 0x1b ##grflangid 0x1b
##gender male ##gender male

View File

@ -5,6 +5,7 @@
##textdir rtl ##textdir rtl
##digitsep ٬ ##digitsep ٬
##digitsepcur ٬ ##digitsepcur ٬
##decimalsep ٫
##winlangid 0x0c01 ##winlangid 0x0c01
##grflangid 0x14 ##grflangid 0x14

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0416 ##winlangid 0x0416
##grflangid 0x37 ##grflangid 0x37
##gender m f ##gender m f

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0402 ##winlangid 0x0402
##grflangid 0x18 ##grflangid 0x18
##gender m f n p ##gender m f n p

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0403 ##winlangid 0x0403
##grflangid 0x22 ##grflangid 0x22

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x041a ##winlangid 0x041a
##grflangid 0x38 ##grflangid 0x38
##gender male female middle ##gender male female middle

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep {NBSP} ##digitsep {NBSP}
##digitsepcur {NBSP} ##digitsepcur {NBSP}
##decimalsep ,
##winlangid 0x0405 ##winlangid 0x0405
##grflangid 0x15 ##grflangid 0x15
##gender m f n ##gender m f n

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0406 ##winlangid 0x0406
##grflangid 0x2d ##grflangid 0x2d

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0413 ##winlangid 0x0413
##grflangid 0x1f ##grflangid 0x1f

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep , ##digitsep ,
##digitsepcur , ##digitsepcur ,
##decimalsep .
##winlangid 0x0809 ##winlangid 0x0809
##grflangid 0x01 ##grflangid 0x01

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep , ##digitsep ,
##digitsepcur , ##digitsepcur ,
##decimalsep .
##winlangid 0x0409 ##winlangid 0x0409
##grflangid 0x00 ##grflangid 0x00

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0000 ##winlangid 0x0000
##grflangid 0x05 ##grflangid 0x05
##case n ##case n

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0425 ##winlangid 0x0425
##grflangid 0x34 ##grflangid 0x34
##case g in sü ##case g in sü

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x040b ##winlangid 0x040b
##grflangid 0x35 ##grflangid 0x35

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x040c ##winlangid 0x040c
##grflangid 0x03 ##grflangid 0x03
##gender m m2 f ##gender m m2 f

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0456 ##winlangid 0x0456
##grflangid 0x31 ##grflangid 0x31
##gender m f n ##gender m f n

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0407 ##winlangid 0x0407
##grflangid 0x02 ##grflangid 0x02
##gender m w n p ##gender m w n p

View File

@ -5,6 +5,7 @@
##textdir rtl ##textdir rtl
##digitsep , ##digitsep ,
##digitsepcur , ##digitsepcur ,
##decimalsep .
##winlangid 0x040d ##winlangid 0x040d
##grflangid 0x61 ##grflangid 0x61
##gender m f ##gender m f

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x040e ##winlangid 0x040e
##grflangid 0x24 ##grflangid 0x24
##case t ba ##case t ba

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x040f ##winlangid 0x040f
##grflangid 0x29 ##grflangid 0x29
##gender karlkyn kvenkyn hvorugkyn ##gender karlkyn kvenkyn hvorugkyn

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0421 ##winlangid 0x0421
##grflangid 0x5a ##grflangid 0x5a

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0410 ##winlangid 0x0410
##grflangid 0x27 ##grflangid 0x27
##gender m f ##gender m f

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep , ##digitsep ,
##digitsepcur , ##digitsepcur ,
##decimalsep .
##winlangid 0x0411 ##winlangid 0x0411
##grflangid 0x39 ##grflangid 0x39

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0412 ##winlangid 0x0412
##grflangid 0x3a ##grflangid 0x3a
##gender m f ##gender m f

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0426 ##winlangid 0x0426
##grflangid 0x2a ##grflangid 0x2a
##gender m f ##gender m f

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0427 ##winlangid 0x0427
##grflangid 0x2b ##grflangid 0x2b
##gender vyr mot ##gender vyr mot

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x046e ##winlangid 0x046e
##grflangid 0x23 ##grflangid 0x23

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0414 ##winlangid 0x0414
##grflangid 0x2f ##grflangid 0x2f

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0814 ##winlangid 0x0814
##grflangid 0x0e ##grflangid 0x0e
##gender masculine feminine neuter ##gender masculine feminine neuter

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0415 ##winlangid 0x0415
##grflangid 0x30 ##grflangid 0x30
##gender m f n ##gender m f n

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0816 ##winlangid 0x0816
##grflangid 0x36 ##grflangid 0x36

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0418 ##winlangid 0x0418
##grflangid 0x28 ##grflangid 0x28

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0419 ##winlangid 0x0419
##grflangid 0x07 ##grflangid 0x07
##gender m f n p ##gender m f n p

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x7c1a ##winlangid 0x7c1a
##grflangid 0x0d ##grflangid 0x0d
##gender muški ženski srednji ##gender muški ženski srednji

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep , ##digitsep ,
##digitsepcur , ##digitsepcur ,
##decimalsep .
##winlangid 0x0804 ##winlangid 0x0804
##grflangid 0x56 ##grflangid 0x56

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x041b ##winlangid 0x041b
##grflangid 0x16 ##grflangid 0x16
##gender m z s ##gender m z s

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0424 ##winlangid 0x0424
##grflangid 0x2c ##grflangid 0x2c
##case r d t ##case r d t

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0c0a ##winlangid 0x0c0a
##grflangid 0x04 ##grflangid 0x04
##gender masculino femenino ##gender masculino femenino

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x081d ##winlangid 0x081d
##grflangid 0x2e ##grflangid 0x2e

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep , ##digitsep ,
##digitsepcur , ##digitsepcur ,
##decimalsep .
##winlangid 0x0404 ##winlangid 0x0404
##grflangid 0x0c ##grflangid 0x0c

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x041f ##winlangid 0x041f
##grflangid 0x3e ##grflangid 0x3e
##case tamlanan ##case tamlanan

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0422 ##winlangid 0x0422
##grflangid 0x33 ##grflangid 0x33
##gender m f s mn ##gender m f s mn

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0462 ##winlangid 0x0462
##grflangid 0x32 ##grflangid 0x32

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0408 ##winlangid 0x0408
##grflangid 0x1e ##grflangid 0x1e
##gender m f n ##gender m f n

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0000 ##winlangid 0x0000
##grflangid 0x06 ##grflangid 0x06

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x042f ##winlangid 0x042f
##grflangid 0x26 ##grflangid 0x26

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep , ##digitsep ,
##digitsepcur , ##digitsepcur ,
##decimalsep .
##winlangid 0x043a ##winlangid 0x043a
##grflangid 0x3c ##grflangid 0x3c

View File

@ -5,6 +5,7 @@
##textdir rtl ##textdir rtl
##digitsep ٬ ##digitsep ٬
##digitsepcur ٬ ##digitsepcur ٬
##decimalsep ٫
##winlangid 0x0429 ##winlangid 0x0429
##grflangid 0x62 ##grflangid 0x62

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep , ##digitsep ,
##digitsepcur , ##digitsepcur ,
##decimalsep .
##winlangid 0x041e ##winlangid 0x041e
##grflangid 0x42 ##grflangid 0x42

View File

@ -5,6 +5,7 @@
##textdir rtl ##textdir rtl
##digitsep ٬ ##digitsep ٬
##digitsepcur ٬ ##digitsepcur ٬
##decimalsep ٫
##winlangid 0x0420 ##winlangid 0x0420
##grflangid 0x5c ##grflangid 0x5c
##gender m f ##gender m f

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep , ##digitsep ,
##digitsepcur , ##digitsepcur ,
##decimalsep .
##winlangid 0x042a ##winlangid 0x042a
##grflangid 0x54 ##grflangid 0x54

View File

@ -5,6 +5,7 @@
##textdir ltr ##textdir ltr
##digitsep . ##digitsep .
##digitsepcur . ##digitsepcur .
##decimalsep ,
##winlangid 0x0452 ##winlangid 0x0452
##grflangid 0x0f ##grflangid 0x0f

View File

@ -103,6 +103,7 @@ struct LocaleSettings {
byte units; ///< unit system we show everything byte units; ///< unit system we show everything
char *digit_group_separator; ///< thousand separator for non-currencies char *digit_group_separator; ///< thousand separator for non-currencies
char *digit_group_separator_currency; ///< thousand separator for currencies char *digit_group_separator_currency; ///< thousand separator for currencies
char *digit_decimal_separator; ///< decimal separator
}; };
/** All settings related to the network. */ /** All settings related to the network. */

View File

@ -74,6 +74,7 @@ static uint32 _hash;
static char _lang_name[32], _lang_ownname[32], _lang_isocode[16]; static char _lang_name[32], _lang_ownname[32], _lang_isocode[16];
static char _lang_digit_group_separator[8]; static char _lang_digit_group_separator[8];
static char _lang_digit_group_separator_currency[8]; static char _lang_digit_group_separator_currency[8];
static char _lang_digit_decimal_separator[8];
static byte _lang_pluralform; static byte _lang_pluralform;
static byte _lang_textdir; static byte _lang_textdir;
static uint16 _lang_winlangid; static uint16 _lang_winlangid;
@ -533,6 +534,9 @@ static void HandlePragma(char *str)
} else if (!memcmp(str, "digitsepcur ", 12)) { } else if (!memcmp(str, "digitsepcur ", 12)) {
str += 12; str += 12;
strecpy(_lang_digit_group_separator_currency, strcmp(str, "{NBSP}") == 0 ? "\xC2\xA0" : str, lastof(_lang_digit_group_separator_currency)); strecpy(_lang_digit_group_separator_currency, strcmp(str, "{NBSP}") == 0 ? "\xC2\xA0" : str, lastof(_lang_digit_group_separator_currency));
} else if (!memcmp(str, "decimalsep ", 11)) {
str += 11;
strecpy(_lang_digit_decimal_separator, strcmp(str, "{NBSP}") == 0 ? "\xC2\xA0" : str, lastof(_lang_digit_decimal_separator));
} else if (!memcmp(str, "winlangid ", 10)) { } else if (!memcmp(str, "winlangid ", 10)) {
const char *buf = str + 10; const char *buf = str + 10;
long langid = strtol(buf, NULL, 16); long langid = strtol(buf, NULL, 16);
@ -817,6 +821,7 @@ static void ParseFile(const char *file, bool english)
_lang_name[0] = _lang_ownname[0] = _lang_isocode[0] = '\0'; _lang_name[0] = _lang_ownname[0] = _lang_isocode[0] = '\0';
strecpy(_lang_digit_group_separator, ",", lastof(_lang_digit_group_separator)); strecpy(_lang_digit_group_separator, ",", lastof(_lang_digit_group_separator));
strecpy(_lang_digit_group_separator_currency, ",", lastof(_lang_digit_group_separator_currency)); strecpy(_lang_digit_group_separator_currency, ",", lastof(_lang_digit_group_separator_currency));
strecpy(_lang_digit_decimal_separator, ".", lastof(_lang_digit_decimal_separator));
_lang_textdir = TD_LTR; _lang_textdir = TD_LTR;
_lang_winlangid = 0x0000; // neutral language code _lang_winlangid = 0x0000; // neutral language code
_lang_newgrflangid = 0; // standard english _lang_newgrflangid = 0; // standard english
@ -1069,6 +1074,7 @@ static void WriteLangfile(const char *filename)
strecpy(hdr.isocode, _lang_isocode, lastof(hdr.isocode)); strecpy(hdr.isocode, _lang_isocode, lastof(hdr.isocode));
strecpy(hdr.digit_group_separator, _lang_digit_group_separator, lastof(hdr.digit_group_separator)); strecpy(hdr.digit_group_separator, _lang_digit_group_separator, lastof(hdr.digit_group_separator));
strecpy(hdr.digit_group_separator_currency, _lang_digit_group_separator_currency, lastof(hdr.digit_group_separator_currency)); strecpy(hdr.digit_group_separator_currency, _lang_digit_group_separator_currency, lastof(hdr.digit_group_separator_currency));
strecpy(hdr.digit_decimal_separator, _lang_digit_decimal_separator, lastof(hdr.digit_decimal_separator));
fwrite(&hdr, sizeof(hdr), 1, f); fwrite(&hdr, sizeof(hdr), 1, f);

View File

@ -18,6 +18,8 @@ struct LanguagePackHeader {
char digit_group_separator[8]; char digit_group_separator[8];
/** Thousand separator used for currencies */ /** Thousand separator used for currencies */
char digit_group_separator_currency[8]; char digit_group_separator_currency[8];
/** Decimal separator */
char digit_decimal_separator[8];
byte plural_form; ///< plural form index byte plural_form; ///< plural form index
byte text_dir; ///< default direction of the text byte text_dir; ///< default direction of the text
/** /**

View File

@ -252,13 +252,16 @@ static char *FormatBytes(char *buff, int64 number, const char *last)
id++; id++;
} }
const char *decimal_separator = _settings_game.locale.digit_decimal_separator;
if (decimal_separator == NULL) decimal_separator = _langpack->digit_decimal_separator;
if (number < 1024) { if (number < 1024) {
id = 0; id = 0;
buff += seprintf(buff, last, "%i", (int)number); buff += seprintf(buff, last, "%i", (int)number);
} else if (number < 1024 * 10) { } else if (number < 1024 * 10) {
buff += seprintf(buff, last, "%i.%02i", (int)number / 1024, (int)(number % 1024) * 100 / 1024); buff += seprintf(buff, last, "%i%s%02i", (int)number / 1024, decimal_separator, (int)(number % 1024) * 100 / 1024);
} else if (number < 1024 * 100) { } else if (number < 1024 * 100) {
buff += seprintf(buff, last, "%i.%01i", (int)number / 1024, (int)(number % 1024) * 10 / 1024); buff += seprintf(buff, last, "%i%s%01i", (int)number / 1024, decimal_separator, (int)(number % 1024) * 10 / 1024);
} else { } else {
assert(number < 1024 * 1024); assert(number < 1024 * 1024);
buff += seprintf(buff, last, "%i", (int)number / 1024); buff += seprintf(buff, last, "%i", (int)number / 1024);

View File

@ -512,6 +512,7 @@ const SettingDesc _settings[] = {
SDT_CONDOMANY(GameSettings, locale.units, SLE_UINT8, 97, SL_MAX_VERSION, N, 0, 1, 2, _locale_units, STR_NULL, NULL, NULL), SDT_CONDOMANY(GameSettings, locale.units, SLE_UINT8, 97, SL_MAX_VERSION, N, 0, 1, 2, _locale_units, STR_NULL, NULL, NULL),
SDT_CONDSTR(GameSettings, locale.digit_group_separator, SLE_STRQ,118, SL_MAX_VERSION, N, 0, NULL, STR_NULL, NULL), SDT_CONDSTR(GameSettings, locale.digit_group_separator, SLE_STRQ,118, SL_MAX_VERSION, N, 0, NULL, STR_NULL, NULL),
SDT_CONDSTR(GameSettings, locale.digit_group_separator_currency, SLE_STRQ,118, SL_MAX_VERSION, N, 0, NULL, STR_NULL, NULL), SDT_CONDSTR(GameSettings, locale.digit_group_separator_currency, SLE_STRQ,118, SL_MAX_VERSION, N, 0, NULL, STR_NULL, NULL),
SDT_CONDSTR(GameSettings, locale.digit_decimal_separator, SLE_STRQ,126, SL_MAX_VERSION, N, 0, NULL, STR_NULL, NULL),
/***************************************************************************/ /***************************************************************************/
/* Unsaved setting variables. */ /* Unsaved setting variables. */

View File

@ -186,6 +186,7 @@ static const char *_pragmas[][4] = {
{ "textdir", "tl", "ltr", "Text direction. Either ltr (left-to-right) or rtl (right-to-left)" }, { "textdir", "tl", "ltr", "Text direction. Either ltr (left-to-right) or rtl (right-to-left)" },
{ "digitsep", "td", ",", "Digit grouping separator for non-currency numbers" }, { "digitsep", "td", ",", "Digit grouping separator for non-currency numbers" },
{ "digitsepcur", "td", ",", "Digit grouping seprarator for currency numbers" }, { "digitsepcur", "td", ",", "Digit grouping seprarator for currency numbers" },
{ "decimalsep", "td", ".", "Decimal separator" },
{ "winlangid", "x2", "0x0000", "Language ID for Windows" }, { "winlangid", "x2", "0x0000", "Language ID for Windows" },
{ "grflangid", "x1", "0x00", "Language ID for NewGRFs" }, { "grflangid", "x1", "0x00", "Language ID for NewGRFs" },
{ "gender", "tag", "", "List of genders" }, { "gender", "tag", "", "List of genders" },