mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 22:28:56 +00:00
(svn r17157) -Add: localised decimal separator
This commit is contained in:
parent
d58d053438
commit
a29bbb1e1f
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0436
|
||||
##grflangid 0x1b
|
||||
##gender male
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir rtl
|
||||
##digitsep ٬
|
||||
##digitsepcur ٬
|
||||
##decimalsep ٫
|
||||
##winlangid 0x0c01
|
||||
##grflangid 0x14
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0416
|
||||
##grflangid 0x37
|
||||
##gender m f
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0402
|
||||
##grflangid 0x18
|
||||
##gender m f n p
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0403
|
||||
##grflangid 0x22
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x041a
|
||||
##grflangid 0x38
|
||||
##gender male female middle
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep {NBSP}
|
||||
##digitsepcur {NBSP}
|
||||
##decimalsep ,
|
||||
##winlangid 0x0405
|
||||
##grflangid 0x15
|
||||
##gender m f n
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0406
|
||||
##grflangid 0x2d
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0413
|
||||
##grflangid 0x1f
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
##decimalsep .
|
||||
##winlangid 0x0809
|
||||
##grflangid 0x01
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
##decimalsep .
|
||||
##winlangid 0x0409
|
||||
##grflangid 0x00
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0000
|
||||
##grflangid 0x05
|
||||
##case n
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0425
|
||||
##grflangid 0x34
|
||||
##case g in sü
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x040b
|
||||
##grflangid 0x35
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x040c
|
||||
##grflangid 0x03
|
||||
##gender m m2 f
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0456
|
||||
##grflangid 0x31
|
||||
##gender m f n
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0407
|
||||
##grflangid 0x02
|
||||
##gender m w n p
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir rtl
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
##decimalsep .
|
||||
##winlangid 0x040d
|
||||
##grflangid 0x61
|
||||
##gender m f
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x040e
|
||||
##grflangid 0x24
|
||||
##case t ba
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x040f
|
||||
##grflangid 0x29
|
||||
##gender karlkyn kvenkyn hvorugkyn
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0421
|
||||
##grflangid 0x5a
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0410
|
||||
##grflangid 0x27
|
||||
##gender m f
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
##decimalsep .
|
||||
##winlangid 0x0411
|
||||
##grflangid 0x39
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0412
|
||||
##grflangid 0x3a
|
||||
##gender m f
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0426
|
||||
##grflangid 0x2a
|
||||
##gender m f
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0427
|
||||
##grflangid 0x2b
|
||||
##gender vyr mot
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x046e
|
||||
##grflangid 0x23
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0414
|
||||
##grflangid 0x2f
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0814
|
||||
##grflangid 0x0e
|
||||
##gender masculine feminine neuter
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0415
|
||||
##grflangid 0x30
|
||||
##gender m f n
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0816
|
||||
##grflangid 0x36
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0418
|
||||
##grflangid 0x28
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0419
|
||||
##grflangid 0x07
|
||||
##gender m f n p
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x7c1a
|
||||
##grflangid 0x0d
|
||||
##gender muški ženski srednji
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
##decimalsep .
|
||||
##winlangid 0x0804
|
||||
##grflangid 0x56
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x041b
|
||||
##grflangid 0x16
|
||||
##gender m z s
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0424
|
||||
##grflangid 0x2c
|
||||
##case r d t
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0c0a
|
||||
##grflangid 0x04
|
||||
##gender masculino femenino
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x081d
|
||||
##grflangid 0x2e
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
##decimalsep .
|
||||
##winlangid 0x0404
|
||||
##grflangid 0x0c
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x041f
|
||||
##grflangid 0x3e
|
||||
##case tamlanan
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0422
|
||||
##grflangid 0x33
|
||||
##gender m f s mn
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0462
|
||||
##grflangid 0x32
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0408
|
||||
##grflangid 0x1e
|
||||
##gender m f n
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0000
|
||||
##grflangid 0x06
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x042f
|
||||
##grflangid 0x26
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
##decimalsep .
|
||||
##winlangid 0x043a
|
||||
##grflangid 0x3c
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir rtl
|
||||
##digitsep ٬
|
||||
##digitsepcur ٬
|
||||
##decimalsep ٫
|
||||
##winlangid 0x0429
|
||||
##grflangid 0x62
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
##decimalsep .
|
||||
##winlangid 0x041e
|
||||
##grflangid 0x42
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir rtl
|
||||
##digitsep ٬
|
||||
##digitsepcur ٬
|
||||
##decimalsep ٫
|
||||
##winlangid 0x0420
|
||||
##grflangid 0x5c
|
||||
##gender m f
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
##decimalsep .
|
||||
##winlangid 0x042a
|
||||
##grflangid 0x54
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
##decimalsep ,
|
||||
##winlangid 0x0452
|
||||
##grflangid 0x0f
|
||||
|
||||
|
@ -103,6 +103,7 @@ struct LocaleSettings {
|
||||
byte units; ///< unit system we show everything
|
||||
char *digit_group_separator; ///< thousand separator for non-currencies
|
||||
char *digit_group_separator_currency; ///< thousand separator for currencies
|
||||
char *digit_decimal_separator; ///< decimal separator
|
||||
};
|
||||
|
||||
/** All settings related to the network. */
|
||||
|
@ -74,6 +74,7 @@ static uint32 _hash;
|
||||
static char _lang_name[32], _lang_ownname[32], _lang_isocode[16];
|
||||
static char _lang_digit_group_separator[8];
|
||||
static char _lang_digit_group_separator_currency[8];
|
||||
static char _lang_digit_decimal_separator[8];
|
||||
static byte _lang_pluralform;
|
||||
static byte _lang_textdir;
|
||||
static uint16 _lang_winlangid;
|
||||
@ -533,6 +534,9 @@ static void HandlePragma(char *str)
|
||||
} else if (!memcmp(str, "digitsepcur ", 12)) {
|
||||
str += 12;
|
||||
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)) {
|
||||
const char *buf = str + 10;
|
||||
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';
|
||||
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_decimal_separator, ".", lastof(_lang_digit_decimal_separator));
|
||||
_lang_textdir = TD_LTR;
|
||||
_lang_winlangid = 0x0000; // neutral language code
|
||||
_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.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_decimal_separator, _lang_digit_decimal_separator, lastof(hdr.digit_decimal_separator));
|
||||
|
||||
fwrite(&hdr, sizeof(hdr), 1, f);
|
||||
|
||||
|
@ -18,6 +18,8 @@ struct LanguagePackHeader {
|
||||
char digit_group_separator[8];
|
||||
/** Thousand separator used for currencies */
|
||||
char digit_group_separator_currency[8];
|
||||
/** Decimal separator */
|
||||
char digit_decimal_separator[8];
|
||||
byte plural_form; ///< plural form index
|
||||
byte text_dir; ///< default direction of the text
|
||||
/**
|
||||
|
@ -252,13 +252,16 @@ static char *FormatBytes(char *buff, int64 number, const char *last)
|
||||
id++;
|
||||
}
|
||||
|
||||
const char *decimal_separator = _settings_game.locale.digit_decimal_separator;
|
||||
if (decimal_separator == NULL) decimal_separator = _langpack->digit_decimal_separator;
|
||||
|
||||
if (number < 1024) {
|
||||
id = 0;
|
||||
buff += seprintf(buff, last, "%i", (int)number);
|
||||
} 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) {
|
||||
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 {
|
||||
assert(number < 1024 * 1024);
|
||||
buff += seprintf(buff, last, "%i", (int)number / 1024);
|
||||
|
@ -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_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_decimal_separator, SLE_STRQ,126, SL_MAX_VERSION, N, 0, NULL, STR_NULL, NULL),
|
||||
|
||||
/***************************************************************************/
|
||||
/* Unsaved setting variables. */
|
||||
|
@ -186,6 +186,7 @@ static const char *_pragmas[][4] = {
|
||||
{ "textdir", "tl", "ltr", "Text direction. Either ltr (left-to-right) or rtl (right-to-left)" },
|
||||
{ "digitsep", "td", ",", "Digit grouping separator for non-currency numbers" },
|
||||
{ "digitsepcur", "td", ",", "Digit grouping seprarator for currency numbers" },
|
||||
{ "decimalsep", "td", ".", "Decimal separator" },
|
||||
{ "winlangid", "x2", "0x0000", "Language ID for Windows" },
|
||||
{ "grflangid", "x1", "0x00", "Language ID for NewGRFs" },
|
||||
{ "gender", "tag", "", "List of genders" },
|
||||
|
Loading…
Reference in New Issue
Block a user