Changeset - r27636:dd08900a2d5c
[Not reviewed]
master
0 5 0
Peter Nelson - 12 months ago 2023-06-22 23:11:11
peter1138@openttd.org
Fix #11054: Prevent translation of currency codes.

Most languages stick with the 3-letter latin currency codes in the name
string, however some translations are... clever... and use the currency
symbol instead. Whilst this may look nice, it can cause issues with fonts
as some scripts have a specific limited set of fonts which do not include
these symbols.

Instead, hard code the currency code list and add it when drawing the
currency name.
5 files changed with 114 insertions and 115 deletions:
0 comments (0 inline, 0 general)
src/currency.cpp
Show inline comments
 
@@ -21,54 +21,54 @@
 

	
 
#include "safeguards.h"
 

	
 
	/*   exchange rate    prefix                         symbol_pos
 
	 *   |  separator        |           postfix             |
 
	 *   |   |   Euro year   |              |                | name
 
	 *   |   |    |          |              |                |  | */
 
	/*   exchange rate    prefix                             code
 
	 *   |  separator        |           postfix              |  symbol_pos
 
	 *   |   |   Euro year   |              |                 |     | name
 
	 *   |   |    |          |              |                 |     |  | */
 
/** The original currency specifications. */
 
static const CurrencySpec origin_currency_specs[CURRENCY_END] = {
 
	{    1, "", CF_NOEURO, u8"\u00a3",     "",               0, STR_GAME_OPTIONS_CURRENCY_GBP    }, ///< british pound
 
	{    2, "", CF_NOEURO, "$",            "",               0, STR_GAME_OPTIONS_CURRENCY_USD    }, ///< american dollar
 
	{    2, "", CF_ISEURO, u8"\u20ac",     "",               0, STR_GAME_OPTIONS_CURRENCY_EUR    }, ///< euro
 
	{  220, "", CF_NOEURO, u8"\u00a5",     "",               0, STR_GAME_OPTIONS_CURRENCY_JPY    }, ///< japanese yen
 
	{   27, "", 2002,      "",             NBSP "S.",        1, STR_GAME_OPTIONS_CURRENCY_ATS    }, ///< austrian schilling
 
	{   81, "", 2002,      "BEF" NBSP,     "",               0, STR_GAME_OPTIONS_CURRENCY_BEF    }, ///< belgian franc
 
	{    2, "", CF_NOEURO, "CHF" NBSP,     "",               0, STR_GAME_OPTIONS_CURRENCY_CHF    }, ///< swiss franc
 
	{   41, "", CF_NOEURO, "",             NBSP u8"K\u010d", 1, STR_GAME_OPTIONS_CURRENCY_CZK    }, ///< czech koruna
 
	{    4, "", 2002,      "DM" NBSP,      "",               0, STR_GAME_OPTIONS_CURRENCY_DEM    }, ///< deutsche mark
 
	{   11, "", CF_NOEURO, "",             NBSP "kr",        1, STR_GAME_OPTIONS_CURRENCY_DKK    }, ///< danish krone
 
	{  333, "", 2002,      "Pts" NBSP,     "",               0, STR_GAME_OPTIONS_CURRENCY_ESP    }, ///< spanish peseta
 
	{   12, "", 2002,      "",             NBSP "mk",        1, STR_GAME_OPTIONS_CURRENCY_FIM    }, ///< finnish markka
 
	{   13, "", 2002,      "FF" NBSP,      "",               0, STR_GAME_OPTIONS_CURRENCY_FRF    }, ///< french franc
 
	{  681, "", 2002,      "",             "Dr.",            1, STR_GAME_OPTIONS_CURRENCY_GRD    }, ///< greek drachma
 
	{  378, "", CF_NOEURO, "",             NBSP "Ft",        1, STR_GAME_OPTIONS_CURRENCY_HUF    }, ///< hungarian forint
 
	{  130, "", CF_NOEURO, "",             NBSP "Kr",        1, STR_GAME_OPTIONS_CURRENCY_ISK    }, ///< icelandic krona
 
	{ 3873, "", 2002,      "",             NBSP "L.",        1, STR_GAME_OPTIONS_CURRENCY_ITL    }, ///< italian lira
 
	{    4, "", 2002,      "NLG" NBSP,     "",               0, STR_GAME_OPTIONS_CURRENCY_NLG    }, ///< dutch gulden
 
	{   12, "", CF_NOEURO, "",             NBSP "Kr",        1, STR_GAME_OPTIONS_CURRENCY_NOK    }, ///< norwegian krone
 
	{    6, "", CF_NOEURO, "",             NBSP u8"z\u0142", 1, STR_GAME_OPTIONS_CURRENCY_PLN    }, ///< polish zloty
 
	{    5, "", CF_NOEURO, "",             NBSP "Lei",       1, STR_GAME_OPTIONS_CURRENCY_RON    }, ///< romanian leu
 
	{   50, "", CF_NOEURO, "",             NBSP "p",         1, STR_GAME_OPTIONS_CURRENCY_RUR    }, ///< russian rouble
 
	{  479, "", 2007,      "",             NBSP "SIT",       1, STR_GAME_OPTIONS_CURRENCY_SIT    }, ///< slovenian tolar
 
	{   13, "", CF_NOEURO, "",             NBSP "Kr",        1, STR_GAME_OPTIONS_CURRENCY_SEK    }, ///< swedish krona
 
	{    3, "", CF_NOEURO, "",             NBSP "TL",        1, STR_GAME_OPTIONS_CURRENCY_TRY    }, ///< turkish lira
 
	{   60, "", 2009,      "",             NBSP "Sk",        1, STR_GAME_OPTIONS_CURRENCY_SKK    }, ///< slovak koruna
 
	{    4, "", CF_NOEURO, "R$" NBSP,      "",               0, STR_GAME_OPTIONS_CURRENCY_BRL    }, ///< brazil real
 
	{   31, "", 2011,      "",             NBSP "EEK",       1, STR_GAME_OPTIONS_CURRENCY_EEK    }, ///< estonian krooni
 
	{    4, "", 2015,      "",             NBSP "Lt",        1, STR_GAME_OPTIONS_CURRENCY_LTL    }, ///< lithuanian litas
 
	{ 1850, "", CF_NOEURO, u8"\u20a9",     "",               0, STR_GAME_OPTIONS_CURRENCY_KRW    }, ///< south korean won
 
	{   13, "", CF_NOEURO, "R" NBSP,       "",               0, STR_GAME_OPTIONS_CURRENCY_ZAR    }, ///< south african rand
 
	{    1, "", CF_NOEURO, "",             "",               2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency (add further languages below)
 
	{    3, "", CF_NOEURO, "",             NBSP "GEL",       1, STR_GAME_OPTIONS_CURRENCY_GEL    }, ///< Georgian Lari
 
	{ 4901, "", CF_NOEURO, "",             NBSP "Rls",       1, STR_GAME_OPTIONS_CURRENCY_IRR    }, ///< Iranian Rial
 
	{   80, "", CF_NOEURO, "",             NBSP "rub",       1, STR_GAME_OPTIONS_CURRENCY_RUB    }, ///< New Russian Ruble
 
	{   24, "", CF_NOEURO, "$",            "",               0, STR_GAME_OPTIONS_CURRENCY_MXN    }, ///< Mexican peso
 
	{   40, "", CF_NOEURO, "NTD" NBSP,     "",               0, STR_GAME_OPTIONS_CURRENCY_NTD    }, ///< new taiwan dollar
 
	{    8, "", CF_NOEURO, u8"\u00a5",     "",               0, STR_GAME_OPTIONS_CURRENCY_CNY    }, ///< chinese renminbi
 
	{   10, "", CF_NOEURO, "HKD" NBSP,     "",               0, STR_GAME_OPTIONS_CURRENCY_HKD    }, ///< hong kong dollar
 
	{   90, "", CF_NOEURO, u8"\u20b9",     "",               0, STR_GAME_OPTIONS_CURRENCY_INR    }, ///< Indian Rupee
 
	{   19, "", CF_NOEURO, "Rp",           "",               0, STR_GAME_OPTIONS_CURRENCY_IDR    }, ///< Indonesian Rupiah
 
	{    5, "", CF_NOEURO, "RM",           "",               0, STR_GAME_OPTIONS_CURRENCY_MYR    }, ///< Malaysian Ringgit
 
	{    1, "", CF_NOEURO, u8"\u00a3",     "",               "GBP", 0, STR_GAME_OPTIONS_CURRENCY_GBP    }, ///< british pound
 
	{    2, "", CF_NOEURO, "$",            "",               "USD", 0, STR_GAME_OPTIONS_CURRENCY_USD    }, ///< american dollar
 
	{    2, "", CF_ISEURO, u8"\u20ac",     "",               "EUR", 0, STR_GAME_OPTIONS_CURRENCY_EUR    }, ///< euro
 
	{  220, "", CF_NOEURO, u8"\u00a5",     "",               "JPY", 0, STR_GAME_OPTIONS_CURRENCY_JPY    }, ///< japanese yen
 
	{   27, "", 2002,      "",             NBSP "S.",        "ATS", 1, STR_GAME_OPTIONS_CURRENCY_ATS    }, ///< austrian schilling
 
	{   81, "", 2002,      "BEF" NBSP,     "",               "BEF", 0, STR_GAME_OPTIONS_CURRENCY_BEF    }, ///< belgian franc
 
	{    2, "", CF_NOEURO, "CHF" NBSP,     "",               "CHF", 0, STR_GAME_OPTIONS_CURRENCY_CHF    }, ///< swiss franc
 
	{   41, "", CF_NOEURO, "",             NBSP u8"K\u010d", "CZK", 1, STR_GAME_OPTIONS_CURRENCY_CZK    }, ///< czech koruna
 
	{    4, "", 2002,      "DM" NBSP,      "",               "DEM", 0, STR_GAME_OPTIONS_CURRENCY_DEM    }, ///< deutsche mark
 
	{   11, "", CF_NOEURO, "",             NBSP "kr",        "DKK", 1, STR_GAME_OPTIONS_CURRENCY_DKK    }, ///< danish krone
 
	{  333, "", 2002,      "Pts" NBSP,     "",               "ESP", 0, STR_GAME_OPTIONS_CURRENCY_ESP    }, ///< spanish peseta
 
	{   12, "", 2002,      "",             NBSP "mk",        "FIM", 1, STR_GAME_OPTIONS_CURRENCY_FIM    }, ///< finnish markka
 
	{   13, "", 2002,      "FF" NBSP,      "",               "FRF", 0, STR_GAME_OPTIONS_CURRENCY_FRF    }, ///< french franc
 
	{  681, "", 2002,      "",             "Dr.",            "GRD", 1, STR_GAME_OPTIONS_CURRENCY_GRD    }, ///< greek drachma
 
	{  378, "", CF_NOEURO, "",             NBSP "Ft",        "HUF", 1, STR_GAME_OPTIONS_CURRENCY_HUF    }, ///< hungarian forint
 
	{  130, "", CF_NOEURO, "",             NBSP "Kr",        "ISK", 1, STR_GAME_OPTIONS_CURRENCY_ISK    }, ///< icelandic krona
 
	{ 3873, "", 2002,      "",             NBSP "L.",        "ITL", 1, STR_GAME_OPTIONS_CURRENCY_ITL    }, ///< italian lira
 
	{    4, "", 2002,      "NLG" NBSP,     "",               "NLG", 0, STR_GAME_OPTIONS_CURRENCY_NLG    }, ///< dutch gulden
 
	{   12, "", CF_NOEURO, "",             NBSP "Kr",        "NOK", 1, STR_GAME_OPTIONS_CURRENCY_NOK    }, ///< norwegian krone
 
	{    6, "", CF_NOEURO, "",             NBSP u8"z\u0142", "PLN", 1, STR_GAME_OPTIONS_CURRENCY_PLN    }, ///< polish zloty
 
	{    5, "", CF_NOEURO, "",             NBSP "Lei",       "RON", 1, STR_GAME_OPTIONS_CURRENCY_RON    }, ///< romanian leu
 
	{   50, "", CF_NOEURO, "",             NBSP "p",         "RUR", 1, STR_GAME_OPTIONS_CURRENCY_RUR    }, ///< russian rouble
 
	{  479, "", 2007,      "",             NBSP "SIT",       "SIT", 1, STR_GAME_OPTIONS_CURRENCY_SIT    }, ///< slovenian tolar
 
	{   13, "", CF_NOEURO, "",             NBSP "Kr",        "SEK", 1, STR_GAME_OPTIONS_CURRENCY_SEK    }, ///< swedish krona
 
	{    3, "", CF_NOEURO, "",             NBSP "TL",        "TRY", 1, STR_GAME_OPTIONS_CURRENCY_TRY    }, ///< turkish lira
 
	{   60, "", 2009,      "",             NBSP "Sk",        "SKK", 1, STR_GAME_OPTIONS_CURRENCY_SKK    }, ///< slovak koruna
 
	{    4, "", CF_NOEURO, "R$" NBSP,      "",               "BRL", 0, STR_GAME_OPTIONS_CURRENCY_BRL    }, ///< brazil real
 
	{   31, "", 2011,      "",             NBSP "EEK",       "EEK", 1, STR_GAME_OPTIONS_CURRENCY_EEK    }, ///< estonian krooni
 
	{    4, "", 2015,      "",             NBSP "Lt",        "LTL", 1, STR_GAME_OPTIONS_CURRENCY_LTL    }, ///< lithuanian litas
 
	{ 1850, "", CF_NOEURO, u8"\u20a9",     "",               "KRW", 0, STR_GAME_OPTIONS_CURRENCY_KRW    }, ///< south korean won
 
	{   13, "", CF_NOEURO, "R" NBSP,       "",               "ZAR", 0, STR_GAME_OPTIONS_CURRENCY_ZAR    }, ///< south african rand
 
	{    1, "", CF_NOEURO, "",             "",               "",    2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency (add further languages below)
 
	{    3, "", CF_NOEURO, "",             NBSP "GEL",       "GEL", 1, STR_GAME_OPTIONS_CURRENCY_GEL    }, ///< Georgian Lari
 
	{ 4901, "", CF_NOEURO, "",             NBSP "Rls",       "IRR", 1, STR_GAME_OPTIONS_CURRENCY_IRR    }, ///< Iranian Rial
 
	{   80, "", CF_NOEURO, "",             NBSP "rub",       "RUB", 1, STR_GAME_OPTIONS_CURRENCY_RUB    }, ///< New Russian Ruble
 
	{   24, "", CF_NOEURO, "$",            "",               "MXN", 0, STR_GAME_OPTIONS_CURRENCY_MXN    }, ///< Mexican peso
 
	{   40, "", CF_NOEURO, "NTD" NBSP,     "",               "NTD", 0, STR_GAME_OPTIONS_CURRENCY_NTD    }, ///< new taiwan dollar
 
	{    8, "", CF_NOEURO, u8"\u00a5",     "",               "CNY", 0, STR_GAME_OPTIONS_CURRENCY_CNY    }, ///< chinese renminbi
 
	{   10, "", CF_NOEURO, "HKD" NBSP,     "",               "HKD", 0, STR_GAME_OPTIONS_CURRENCY_HKD    }, ///< hong kong dollar
 
	{   90, "", CF_NOEURO, u8"\u20b9",     "",               "INR", 0, STR_GAME_OPTIONS_CURRENCY_INR    }, ///< Indian Rupee
 
	{   19, "", CF_NOEURO, "Rp",           "",               "IDR", 0, STR_GAME_OPTIONS_CURRENCY_IDR    }, ///< Indonesian Rupiah
 
	{    5, "", CF_NOEURO, "RM",           "",               "MYR", 0, STR_GAME_OPTIONS_CURRENCY_MYR    }, ///< Malaysian Ringgit
 
};
 

	
 
/** Array of currencies used by the system */
 
@@ -162,23 +162,3 @@ void ResetCurrencies(bool preserve_custo
 
		_currency_specs[i] = origin_currency_specs[i];
 
	}
 
}
 

	
 
/**
 
 * Build a list of currency names StringIDs to use in a dropdown list
 
 * @return Pointer to a (static) array of StringIDs
 
 */
 
StringID *BuildCurrencyDropdown()
 
{
 
	/* Allow room for all currencies, plus a terminator entry */
 
	static StringID names[CURRENCY_END + 1];
 
	uint i;
 

	
 
	/* Add each name */
 
	for (i = 0; i < CURRENCY_END; i++) {
 
		names[i] = _currency_specs[i].name;
 
	}
 
	/* Terminate the list */
 
	names[i] = INVALID_STRING_ID;
 

	
 
	return names;
 
}
src/currency.h
Show inline comments
 
@@ -75,6 +75,7 @@ struct CurrencySpec {
 
	TimerGameCalendar::Year to_euro; ///< Year of switching to the Euro. May also be #CF_NOEURO or #CF_ISEURO.
 
	std::string prefix;    ///< Prefix to apply when formatting money in this currency.
 
	std::string suffix;    ///< Suffix to apply when formatting money in this currency.
 
	std::string code; ///< 3 letter untranslated code to identify the currency.
 
	/**
 
	 * The currency symbol is represented by two possible values, prefix and suffix
 
	 * Usage of one or the other is determined by #symbol_pos.
 
@@ -89,8 +90,8 @@ struct CurrencySpec {
 

	
 
	CurrencySpec() = default;
 

	
 
	CurrencySpec(uint16 rate, const char *separator, TimerGameCalendar::Year to_euro, const char *prefix, const char *suffix, byte symbol_pos, StringID name) :
 
		rate(rate), separator(separator), to_euro(to_euro), prefix(prefix), suffix(suffix), symbol_pos(symbol_pos), name(name)
 
	CurrencySpec(uint16 rate, const char *separator, TimerGameCalendar::Year to_euro, const char *prefix, const char *suffix, const char *code, byte symbol_pos, StringID name) :
 
		rate(rate), separator(separator), to_euro(to_euro), prefix(prefix), suffix(suffix), code(code), symbol_pos(symbol_pos), name(name)
 
	{
 
	}
 
};
 
@@ -103,7 +104,6 @@ extern CurrencySpec _currency_specs[CURR
 

	
 
uint64 GetMaskOfAllowedCurrencies();
 
void ResetCurrencies(bool preserve_custom = true);
 
StringID *BuildCurrencyDropdown();
 
byte GetNewgrfCurrencyIdConverted(byte grfcurr_id);
 

	
 
#endif /* CURRENCY_H */
src/lang/english.txt
Show inline comments
 
@@ -951,49 +951,51 @@ STR_GAME_OPTIONS_VOLUME_100             
 
STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME                           :{BLACK}Currency units
 
STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP                :{BLACK}Currency units selection
 

	
 
STR_GAME_OPTIONS_CURRENCY_CODE                                  :{STRING} ({RAW_STRING})
 

	
 
###length 42
 
STR_GAME_OPTIONS_CURRENCY_GBP                                   :British Pound (GBP)
 
STR_GAME_OPTIONS_CURRENCY_USD                                   :American Dollar (USD)
 
STR_GAME_OPTIONS_CURRENCY_EUR                                   :Euro (EUR)
 
STR_GAME_OPTIONS_CURRENCY_JPY                                   :Japanese Yen (JPY)
 
STR_GAME_OPTIONS_CURRENCY_ATS                                   :Austrian Shilling (ATS)
 
STR_GAME_OPTIONS_CURRENCY_BEF                                   :Belgian Franc (BEF)
 
STR_GAME_OPTIONS_CURRENCY_CHF                                   :Swiss Franc (CHF)
 
STR_GAME_OPTIONS_CURRENCY_CZK                                   :Czech Koruna (CZK)
 
STR_GAME_OPTIONS_CURRENCY_DEM                                   :Deutschmark (DEM)
 
STR_GAME_OPTIONS_CURRENCY_DKK                                   :Danish Krone (DKK)
 
STR_GAME_OPTIONS_CURRENCY_ESP                                   :Spanish Peseta (ESP)
 
STR_GAME_OPTIONS_CURRENCY_FIM                                   :Finnish Markka (FIM)
 
STR_GAME_OPTIONS_CURRENCY_FRF                                   :French Franc (FRF)
 
STR_GAME_OPTIONS_CURRENCY_GRD                                   :Greek Drachma (GRD)
 
STR_GAME_OPTIONS_CURRENCY_HUF                                   :Hungarian Forint (HUF)
 
STR_GAME_OPTIONS_CURRENCY_ISK                                   :Icelandic Krona (ISK)
 
STR_GAME_OPTIONS_CURRENCY_ITL                                   :Italian Lira (ITL)
 
STR_GAME_OPTIONS_CURRENCY_NLG                                   :Dutch Guilder (NLG)
 
STR_GAME_OPTIONS_CURRENCY_NOK                                   :Norwegian Krone (NOK)
 
STR_GAME_OPTIONS_CURRENCY_PLN                                   :Polish Złoty (PLN)
 
STR_GAME_OPTIONS_CURRENCY_RON                                   :Romanian Leu (RON)
 
STR_GAME_OPTIONS_CURRENCY_RUR                                   :Russian Rubles (RUR)
 
STR_GAME_OPTIONS_CURRENCY_SIT                                   :Slovenian Tolar (SIT)
 
STR_GAME_OPTIONS_CURRENCY_SEK                                   :Swedish Krona (SEK)
 
STR_GAME_OPTIONS_CURRENCY_TRY                                   :Turkish Lira (TRY)
 
STR_GAME_OPTIONS_CURRENCY_SKK                                   :Slovak Koruna (SKK)
 
STR_GAME_OPTIONS_CURRENCY_BRL                                   :Brazilian Real (BRL)
 
STR_GAME_OPTIONS_CURRENCY_EEK                                   :Estonian Krooni (EEK)
 
STR_GAME_OPTIONS_CURRENCY_LTL                                   :Lithuanian Litas (LTL)
 
STR_GAME_OPTIONS_CURRENCY_KRW                                   :South Korean Won (KRW)
 
STR_GAME_OPTIONS_CURRENCY_ZAR                                   :South African Rand (ZAR)
 
STR_GAME_OPTIONS_CURRENCY_GBP                                   :British Pound
 
STR_GAME_OPTIONS_CURRENCY_USD                                   :American Dollar
 
STR_GAME_OPTIONS_CURRENCY_EUR                                   :Euro
 
STR_GAME_OPTIONS_CURRENCY_JPY                                   :Japanese Yen
 
STR_GAME_OPTIONS_CURRENCY_ATS                                   :Austrian Shilling
 
STR_GAME_OPTIONS_CURRENCY_BEF                                   :Belgian Franc
 
STR_GAME_OPTIONS_CURRENCY_CHF                                   :Swiss Franc
 
STR_GAME_OPTIONS_CURRENCY_CZK                                   :Czech Koruna
 
STR_GAME_OPTIONS_CURRENCY_DEM                                   :Deutschmark
 
STR_GAME_OPTIONS_CURRENCY_DKK                                   :Danish Krone
 
STR_GAME_OPTIONS_CURRENCY_ESP                                   :Spanish Peseta
 
STR_GAME_OPTIONS_CURRENCY_FIM                                   :Finnish Markka
 
STR_GAME_OPTIONS_CURRENCY_FRF                                   :French Franc
 
STR_GAME_OPTIONS_CURRENCY_GRD                                   :Greek Drachma
 
STR_GAME_OPTIONS_CURRENCY_HUF                                   :Hungarian Forint
 
STR_GAME_OPTIONS_CURRENCY_ISK                                   :Icelandic Krona
 
STR_GAME_OPTIONS_CURRENCY_ITL                                   :Italian Lira
 
STR_GAME_OPTIONS_CURRENCY_NLG                                   :Dutch Guilder
 
STR_GAME_OPTIONS_CURRENCY_NOK                                   :Norwegian Krone
 
STR_GAME_OPTIONS_CURRENCY_PLN                                   :Polish Złoty
 
STR_GAME_OPTIONS_CURRENCY_RON                                   :Romanian Leu
 
STR_GAME_OPTIONS_CURRENCY_RUR                                   :Russian Rubles
 
STR_GAME_OPTIONS_CURRENCY_SIT                                   :Slovenian Tolar
 
STR_GAME_OPTIONS_CURRENCY_SEK                                   :Swedish Krona
 
STR_GAME_OPTIONS_CURRENCY_TRY                                   :Turkish Lira
 
STR_GAME_OPTIONS_CURRENCY_SKK                                   :Slovak Koruna
 
STR_GAME_OPTIONS_CURRENCY_BRL                                   :Brazilian Real
 
STR_GAME_OPTIONS_CURRENCY_EEK                                   :Estonian Krooni
 
STR_GAME_OPTIONS_CURRENCY_LTL                                   :Lithuanian Litas
 
STR_GAME_OPTIONS_CURRENCY_KRW                                   :South Korean Won
 
STR_GAME_OPTIONS_CURRENCY_ZAR                                   :South African Rand
 
STR_GAME_OPTIONS_CURRENCY_CUSTOM                                :Custom...
 
STR_GAME_OPTIONS_CURRENCY_GEL                                   :Georgian Lari (GEL)
 
STR_GAME_OPTIONS_CURRENCY_IRR                                   :Iranian Rial (IRR)
 
STR_GAME_OPTIONS_CURRENCY_RUB                                   :New Russian Ruble (RUB)
 
STR_GAME_OPTIONS_CURRENCY_MXN                                   :Mexican Peso (MXN)
 
STR_GAME_OPTIONS_CURRENCY_NTD                                   :New Taiwan Dollar (NTD)
 
STR_GAME_OPTIONS_CURRENCY_CNY                                   :Chinese Renminbi (CNY)
 
STR_GAME_OPTIONS_CURRENCY_HKD                                   :Hong Kong Dollar (HKD)
 
STR_GAME_OPTIONS_CURRENCY_INR                                   :Indian Rupee (INR)
 
STR_GAME_OPTIONS_CURRENCY_IDR                                   :Indonesian Rupiah (IDR)
 
STR_GAME_OPTIONS_CURRENCY_MYR                                   :Malaysian Ringgit (MYR)
 
STR_GAME_OPTIONS_CURRENCY_GEL                                   :Georgian Lari
 
STR_GAME_OPTIONS_CURRENCY_IRR                                   :Iranian Rial
 
STR_GAME_OPTIONS_CURRENCY_RUB                                   :New Russian Ruble
 
STR_GAME_OPTIONS_CURRENCY_MXN                                   :Mexican Peso
 
STR_GAME_OPTIONS_CURRENCY_NTD                                   :New Taiwan Dollar
 
STR_GAME_OPTIONS_CURRENCY_CNY                                   :Chinese Renminbi
 
STR_GAME_OPTIONS_CURRENCY_HKD                                   :Hong Kong Dollar
 
STR_GAME_OPTIONS_CURRENCY_INR                                   :Indian Rupee
 
STR_GAME_OPTIONS_CURRENCY_IDR                                   :Indonesian Rupiah
 
STR_GAME_OPTIONS_CURRENCY_MYR                                   :Malaysian Ringgit
 

	
 
STR_GAME_OPTIONS_AUTOSAVE_FRAME                                 :{BLACK}Autosave
 
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP                      :{BLACK}Select interval between automatic game saves
src/newgrf.cpp
Show inline comments
 
@@ -2710,6 +2710,7 @@ static ChangeInfoResult GlobalVarChangeI
 

	
 
				if ((newone != STR_UNDEFINED) && (curidx < CURRENCY_END)) {
 
					_currency_specs[curidx].name = newone;
 
					_currency_specs[curidx].code.clear();
 
				}
 
				break;
 
			}
src/settings_gui.cpp
Show inline comments
 
@@ -216,13 +216,19 @@ struct GameOptionsWindow : Window {
 
		switch (widget) {
 
			case WID_GO_CURRENCY_DROPDOWN: { // Setup currencies dropdown
 
				*selected_index = this->opt->locale.currency;
 
				StringID *items = BuildCurrencyDropdown();
 
				uint64 disabled = _game_mode == GM_MENU ? 0LL : ~GetMaskOfAllowedCurrencies();
 

	
 
				/* Add non-custom currencies; sorted naturally */
 
				for (uint i = 0; i < CURRENCY_END; items++, i++) {
 
				for (const CurrencySpec &currency : _currency_specs) {
 
					int i = &currency - _currency_specs;
 
					if (i == CURRENCY_CUSTOM) continue;
 
					list.emplace_back(new DropDownListStringItem(*items, i, HasBit(disabled, i)));
 
					if (currency.code.empty()) {
 
						list.emplace_back(new DropDownListStringItem(currency.name, i, HasBit(disabled, i)));
 
					} else {
 
						SetDParam(0, currency.name);
 
						SetDParamStr(1, currency.code);
 
						list.emplace_back(new DropDownListStringItem(STR_GAME_OPTIONS_CURRENCY_CODE, i, HasBit(disabled, i)));
 
					}
 
				}
 
				std::sort(list.begin(), list.end(), DropDownListStringItem::NatSortFunc);
 

	
 
@@ -303,7 +309,17 @@ struct GameOptionsWindow : Window {
 
	void SetStringParameters(int widget) const override
 
	{
 
		switch (widget) {
 
			case WID_GO_CURRENCY_DROPDOWN:     SetDParam(0, _currency_specs[this->opt->locale.currency].name); break;
 
			case WID_GO_CURRENCY_DROPDOWN: {
 
				const CurrencySpec &currency = _currency_specs[this->opt->locale.currency];
 
				if (currency.code.empty()) {
 
					SetDParam(0, currency.name);
 
				} else {
 
					SetDParam(0, STR_GAME_OPTIONS_CURRENCY_CODE);
 
					SetDParam(1, currency.name);
 
					SetDParamStr(2, currency.code);
 
				}
 
				break;
 
			}
 
			case WID_GO_AUTOSAVE_DROPDOWN:     SetDParam(0, _autosave_dropdown[_settings_client.gui.autosave]); break;
 
			case WID_GO_LANG_DROPDOWN:         SetDParamStr(0, _current_language->own_name); break;
 
			case WID_GO_BASE_GRF_DROPDOWN:     SetDParamStr(0, BaseGraphics::GetUsedSet()->name); break;
 
@@ -763,7 +779,7 @@ static const NWidgetPart _nested_game_op
 
				EndContainer(),
 

	
 
				NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL),
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_STRING, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0),
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_STRING2, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0),
 
				EndContainer(),
 

	
 
				NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GO_SURVEY_SEL),
0 comments (0 inline, 0 general)