mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r16129) -Feature-ish: configurable digit group separator per language with user override.
This commit is contained in:
parent
208234a7a0
commit
ff05dc8446
|
@ -15,35 +15,35 @@
|
|||
* | | Euro year | | | name
|
||||
* | | | | | | | */
|
||||
static const CurrencySpec origin_currency_specs[NUM_CURRENCY] = {
|
||||
{ 1, ',', CF_NOEURO, "\xC2\xA3", "", 0, STR_CURR_GBP }, ///< british pounds
|
||||
{ 2, ',', CF_NOEURO, "$", "", 0, STR_CURR_USD }, ///< us dollars
|
||||
{ 2, ',', CF_ISEURO, "\xE2\x82\xAC", "", 0, STR_CURR_EUR }, ///< Euro
|
||||
{ 220, ',', CF_NOEURO, "\xC2\xA5", "", 0, STR_CURR_YEN }, ///< yen
|
||||
{ 20, ',', 2002, "", " S.", 1, STR_CURR_ATS }, ///< austrian schilling
|
||||
{ 59, ',', 2002, "BEF ", "", 0, STR_CURR_BEF }, ///< belgian franc
|
||||
{ 2, ',', CF_NOEURO, "CHF ", "", 0, STR_CURR_CHF }, ///< swiss franc
|
||||
{ 41, ',', CF_NOEURO, "", " K\xC4\x8D", 1, STR_CURR_CZK }, ///< czech koruna
|
||||
{ 3, '.', 2002, "DM ", "", 0, STR_CURR_DEM }, ///< deutsche mark
|
||||
{ 11, '.', CF_NOEURO, "", " kr", 1, STR_CURR_DKK }, ///< danish krone
|
||||
{ 245, '.', 2002, "Pts ", "", 0, STR_CURR_ESP }, ///< spanish pesetas
|
||||
{ 9, ',', 2002, "", " mk", 1, STR_CURR_FIM }, ///< finnish markka
|
||||
{ 10, '.', 2002, "FF ", "", 0, STR_CURR_FRF }, ///< french francs
|
||||
{ 500, ',', 2002, "", "Dr.", 1, STR_CURR_GRD }, ///< greek drachma
|
||||
{ 378, ',', CF_NOEURO, "", " Ft", 1, STR_CURR_HUF }, ///< hungarian forint
|
||||
{ 130, '.', CF_NOEURO, "", " Kr", 1, STR_CURR_ISK }, ///< icelandic krona
|
||||
{ 2850, ',', 2002, "", " L.", 1, STR_CURR_ITL }, ///< italian lira
|
||||
{ 3, ',', 2002, "NLG ", "", 0, STR_CURR_NLG }, ///< dutch gulden
|
||||
{ 12, '.', CF_NOEURO, "", " Kr", 1, STR_CURR_NOK }, ///< norwegian krone
|
||||
{ 6, ' ', CF_NOEURO, "", " zl", 1, STR_CURR_PLN }, ///< polish zloty
|
||||
{ 5, '.', CF_NOEURO, "", " Lei", 1, STR_CURR_RON }, ///< romanian Lei
|
||||
{ 50, ' ', CF_NOEURO, "", " p", 1, STR_CURR_RUR }, ///< russian rouble
|
||||
{ 352, '.', 2007, "", " SIT", 1, STR_CURR_SIT }, ///< slovenian tolar
|
||||
{ 13, '.', CF_NOEURO, "", " Kr", 1, STR_CURR_SEK }, ///< swedish krona
|
||||
{ 3, '.', CF_NOEURO, "", " TL", 1, STR_CURR_TRY }, ///< turkish lira
|
||||
{ 52, ',', 2009, "", " Sk", 1, STR_CURR_SKK }, ///< slovak koruna
|
||||
{ 4, ',', CF_NOEURO, "R$ ", "", 0, STR_CURR_BRL }, ///< brazil real
|
||||
{ 20, '.', CF_NOEURO, "", " EEK", 1, STR_CURR_EEK }, ///< estonian krooni
|
||||
{ 1, ' ', CF_NOEURO, "", "", 2, STR_CURR_CUSTOM }, ///< custom currency
|
||||
{ 1, '\0', CF_NOEURO, "\xC2\xA3", "", 0, STR_CURR_GBP }, ///< british pounds
|
||||
{ 2, '\0', CF_NOEURO, "$", "", 0, STR_CURR_USD }, ///< us dollars
|
||||
{ 2, '\0', CF_ISEURO, "\xE2\x82\xAC", "", 0, STR_CURR_EUR }, ///< Euro
|
||||
{ 220, '\0', CF_NOEURO, "\xC2\xA5", "", 0, STR_CURR_YEN }, ///< yen
|
||||
{ 20, '\0', 2002, "", " S.", 1, STR_CURR_ATS }, ///< austrian schilling
|
||||
{ 59, '\0', 2002, "BEF ", "", 0, STR_CURR_BEF }, ///< belgian franc
|
||||
{ 2, '\0', CF_NOEURO, "CHF ", "", 0, STR_CURR_CHF }, ///< swiss franc
|
||||
{ 41, '\0', CF_NOEURO, "", " K\xC4\x8D", 1, STR_CURR_CZK }, ///< czech koruna
|
||||
{ 3, '\0', 2002, "DM ", "", 0, STR_CURR_DEM }, ///< deutsche mark
|
||||
{ 11, '\0', CF_NOEURO, "", " kr", 1, STR_CURR_DKK }, ///< danish krone
|
||||
{ 245, '\0', 2002, "Pts ", "", 0, STR_CURR_ESP }, ///< spanish pesetas
|
||||
{ 9, '\0', 2002, "", " mk", 1, STR_CURR_FIM }, ///< finnish markka
|
||||
{ 10, '\0', 2002, "FF ", "", 0, STR_CURR_FRF }, ///< french francs
|
||||
{ 500, '\0', 2002, "", "Dr.", 1, STR_CURR_GRD }, ///< greek drachma
|
||||
{ 378, '\0', CF_NOEURO, "", " Ft", 1, STR_CURR_HUF }, ///< hungarian forint
|
||||
{ 130, '\0', CF_NOEURO, "", " Kr", 1, STR_CURR_ISK }, ///< icelandic krona
|
||||
{ 2850, '\0', 2002, "", " L.", 1, STR_CURR_ITL }, ///< italian lira
|
||||
{ 3, '\0', 2002, "NLG ", "", 0, STR_CURR_NLG }, ///< dutch gulden
|
||||
{ 12, '\0', CF_NOEURO, "", " Kr", 1, STR_CURR_NOK }, ///< norwegian krone
|
||||
{ 6, '\0', CF_NOEURO, "", " zl", 1, STR_CURR_PLN }, ///< polish zloty
|
||||
{ 5, '\0', CF_NOEURO, "", " Lei", 1, STR_CURR_RON }, ///< romanian Lei
|
||||
{ 50, '\0', CF_NOEURO, "", " p", 1, STR_CURR_RUR }, ///< russian rouble
|
||||
{ 352, '\0', 2007, "", " SIT", 1, STR_CURR_SIT }, ///< slovenian tolar
|
||||
{ 13, '\0', CF_NOEURO, "", " Kr", 1, STR_CURR_SEK }, ///< swedish krona
|
||||
{ 3, '\0', CF_NOEURO, "", " TL", 1, STR_CURR_TRY }, ///< turkish lira
|
||||
{ 52, '\0', 2009, "", " Sk", 1, STR_CURR_SKK }, ///< slovak koruna
|
||||
{ 4, '\0', CF_NOEURO, "R$ ", "", 0, STR_CURR_BRL }, ///< brazil real
|
||||
{ 20, '\0', CF_NOEURO, "", " EEK", 1, STR_CURR_EEK }, ///< estonian krooni
|
||||
{ 1, '\0', CF_NOEURO, "", "", 2, STR_CURR_CUSTOM }, ///< custom currency
|
||||
};
|
||||
|
||||
/* Array of currencies used by the system */
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir ltr
|
||||
##gender male
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x14
|
||||
##plural 1
|
||||
##textdir rtl
|
||||
##digitsep ٬
|
||||
##digitsepcur ٬
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 2
|
||||
##textdir ltr
|
||||
##gender m f
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case m f n p
|
||||
##gender m f n p
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x22
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case nom gen dat aku vok lok ins
|
||||
##gender male female middle
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case nom gen dat acc voc loc ins big small
|
||||
##gender m f n
|
||||
##digitsep {NBSP}
|
||||
##digitsepcur {NBSP}
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x2d
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x1f
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x01
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x00
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir ltr
|
||||
##case n
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir ltr
|
||||
##case g in
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x35
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 2
|
||||
##textdir ltr
|
||||
##gender m m2 f
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir ltr
|
||||
##gender m f n
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir ltr
|
||||
##gender m w n p
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 2
|
||||
##textdir rtl
|
||||
##gender m f
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 2
|
||||
##textdir ltr
|
||||
##case t ba
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir ltr
|
||||
##gender karlkyn kvenkyn hvorugkyn
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x5a
|
||||
##plural 1
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case ms mp fs fp
|
||||
##gender m f
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x39
|
||||
##plural 1
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 1
|
||||
##textdir ltr
|
||||
##gender m f
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case kas
|
||||
##gender m f
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case kas ko kam ka kuo kur kreip
|
||||
##gender vyr mot
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x23
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x2f
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir ltr
|
||||
##gender masculine feminine neuter
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x01
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case d c b n m w
|
||||
##gender m f n
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x36
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x28
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case m f n p
|
||||
##gender m f n p
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x56
|
||||
##plural 1
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case g
|
||||
##gender m z s
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 8
|
||||
##textdir ltr
|
||||
##case r d t
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir ltr
|
||||
##gender masculino femenino
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x2e
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x0c
|
||||
##plural 1
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x3e
|
||||
##plural 1
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case r d z
|
||||
##gender m f s mn
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x32
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir ltr
|
||||
##gender m f n
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x06
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x26
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x3c
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x62
|
||||
##plural 0
|
||||
##textdir rtl
|
||||
##digitsep ٬
|
||||
##digitsepcur ٬
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
##textdir ltr
|
||||
##case nom big gen dat aku vok lok ins
|
||||
##gender muški ženski srednji
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x42
|
||||
##plural 1
|
||||
##textdir ltr
|
||||
##digitsep ,
|
||||
##digitsepcur ,
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
##plural 0
|
||||
##textdir rtl
|
||||
##gender m f
|
||||
##digitsep ٬
|
||||
##digitsepcur ٬
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
##grflangid 0x0f
|
||||
##plural 0
|
||||
##textdir ltr
|
||||
##digitsep .
|
||||
##digitsepcur .
|
||||
|
||||
#
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
#include "saveload_internal.h"
|
||||
|
||||
extern const uint16 SAVEGAME_VERSION = 117;
|
||||
extern const uint16 SAVEGAME_VERSION = 118;
|
||||
|
||||
SavegameType _savegame_type; ///< type of savegame we are loading
|
||||
|
||||
|
|
|
@ -104,6 +104,8 @@ struct GUISettings {
|
|||
struct LocaleSettings {
|
||||
byte currency; ///< currency we currently use
|
||||
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
|
||||
};
|
||||
|
||||
/** All settings related to the network. */
|
||||
|
|
|
@ -71,6 +71,8 @@ static int _next_string_id;
|
|||
|
||||
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 byte _lang_pluralform;
|
||||
static byte _lang_textdir;
|
||||
static uint16 _lang_winlangid;
|
||||
|
@ -526,6 +528,12 @@ static void HandlePragma(char *str)
|
|||
} else {
|
||||
error("Invalid textdir %s", str + 8);
|
||||
}
|
||||
} else if (!memcmp(str, "digitsep ", 9)) {
|
||||
str += 9;
|
||||
strecpy(_lang_digit_group_separator, strcmp(str, "{NBSP}") == 0 ? "\xC2\xA0" : str, lastof(_lang_digit_group_separator));
|
||||
} 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, "winlangid ", 10)) {
|
||||
const char *buf = str + 10;
|
||||
long langid = strtol(buf, NULL, 16);
|
||||
|
@ -802,6 +810,8 @@ static void ParseFile(const char *file, bool english)
|
|||
/* For each new file we parse, reset the genders, and language codes */
|
||||
_numgenders = 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_currency, ",", lastof(_lang_digit_group_separator_currency));
|
||||
_lang_textdir = TD_LTR;
|
||||
_lang_winlangid = 0x0000; // neutral language code
|
||||
_lang_newgrflangid = 0; // standard english
|
||||
|
@ -1059,6 +1069,8 @@ static void WriteLangfile(const char *filename)
|
|||
strecpy(hdr.name, _lang_name, lastof(hdr.name));
|
||||
strecpy(hdr.own_name, _lang_ownname, lastof(hdr.own_name));
|
||||
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));
|
||||
|
||||
fwrite(&hdr, sizeof(hdr), 1, f);
|
||||
|
||||
|
|
|
@ -5,15 +5,21 @@
|
|||
#ifndef STRGEN_H
|
||||
#define STRGEN_H
|
||||
|
||||
/** Header of a language file. */
|
||||
struct LanguagePackHeader {
|
||||
uint32 ident; // 32-bits identifier
|
||||
uint32 version; // 32-bits of auto generated version info which is basically a hash of strings.h
|
||||
char name[32]; // the international name of this language
|
||||
char own_name[32]; // the localized name of this language
|
||||
char isocode[16]; // the ISO code for the language (not country code)
|
||||
uint16 offsets[32]; // the offsets
|
||||
byte plural_form; // plural form index
|
||||
byte text_dir; // default direction of the text
|
||||
uint32 ident; ///< 32-bits identifier
|
||||
uint32 version; ///< 32-bits of auto generated version info which is basically a hash of strings.h
|
||||
char name[32]; ///< the international name of this language
|
||||
char own_name[32]; ///< the localized name of this language
|
||||
char isocode[16]; ///< the ISO code for the language (not country code)
|
||||
uint16 offsets[32]; ///< the offsets
|
||||
|
||||
/** Thousand separator used for anything not currencies */
|
||||
char digit_group_separator[8];
|
||||
/** Thousand separator used for currencies */
|
||||
char digit_group_separator_currency[8];
|
||||
byte plural_form; ///< plural form index
|
||||
byte text_dir; ///< default direction of the text
|
||||
/**
|
||||
* Windows language ID:
|
||||
* Windows cannot and will not convert isocodes to something it can use to
|
||||
|
@ -22,9 +28,9 @@ struct LanguagePackHeader {
|
|||
* what language it is in "Windows". The ID is the 'locale identifier' on:
|
||||
* http://msdn.microsoft.com/en-us/library/ms776294.aspx
|
||||
*/
|
||||
uint16 winlangid; // windows language id
|
||||
uint8 newgrflangid; // newgrf language id
|
||||
byte pad[3]; // pad header to be a multiple of 4
|
||||
uint16 winlangid; ///< windows language id
|
||||
uint8 newgrflangid; ///< newgrf language id
|
||||
byte pad[3]; ///< pad header to be a multiple of 4
|
||||
};
|
||||
|
||||
assert_compile(sizeof(LanguagePackHeader) % 4 == 0);
|
||||
|
|
|
@ -217,7 +217,9 @@ static char *FormatNumber(char *buff, int64 number, const char *last, const char
|
|||
|
||||
static char *FormatCommaNumber(char *buff, int64 number, const char *last)
|
||||
{
|
||||
return FormatNumber(buff, number, last, ",");
|
||||
const char *separator = _settings_game.locale.digit_group_separator;
|
||||
if (separator == NULL) separator = _langpack->digit_group_separator;
|
||||
return FormatNumber(buff, number, last, separator);
|
||||
}
|
||||
|
||||
static char *FormatNoCommaNumber(char *buff, int64 number, const char *last)
|
||||
|
@ -333,8 +335,13 @@ static char *FormatGenericCurrency(char *buff, const CurrencySpec *spec, Money n
|
|||
}
|
||||
}
|
||||
|
||||
char sep[2] = { spec->separator, '\0' };
|
||||
buff = FormatNumber(buff, number, last, sep);
|
||||
const char *separator = _settings_game.locale.digit_group_separator_currency;
|
||||
if (separator == NULL && _currency->separator != '\0') {
|
||||
static char sep[] = { _currency->separator, '\0' };
|
||||
separator = sep;
|
||||
}
|
||||
if (separator == NULL) separator = _langpack->digit_group_separator_currency;
|
||||
buff = FormatNumber(buff, number, last, separator);
|
||||
buff = strecpy(buff, multiplier, last);
|
||||
|
||||
/* Add suffix part, folowing symbol_pos specification.
|
||||
|
|
|
@ -510,6 +510,8 @@ const SettingDesc _settings[] = {
|
|||
|
||||
SDT_CONDOMANY(GameSettings, locale.currency, SLE_UINT8, 97, SL_MAX_VERSION, N, 0, 0, CUSTOM_CURRENCY_ID, _locale_currencies, 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, NULL, STR_NULL, NULL, NULL),
|
||||
SDT_CONDSTR(GameSettings, locale.digit_group_separator_currency, SLE_STRQ,118, SL_MAX_VERSION, N, NULL, STR_NULL, NULL, NULL),
|
||||
|
||||
/***************************************************************************/
|
||||
/* Unsaved setting variables. */
|
||||
|
|
Loading…
Reference in New Issue