(svn r17157) -Add: localised decimal separator

pull/155/head
smatz 15 years ago
parent 9a3cd40d1e
commit 1f2e0d3cfe

@ -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…
Cancel
Save