From f0c50ad5298ae7721431049534d99fbc45990314 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 20:32:36 +0100 Subject: [PATCH 01/19] Codechange: Add function to get the power of ten for a given number --- src/core/math_func.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/core/math_func.hpp b/src/core/math_func.hpp index 1417c0f793..f5cc83d82c 100644 --- a/src/core/math_func.hpp +++ b/src/core/math_func.hpp @@ -350,6 +350,19 @@ constexpr int RoundDivSU(int a, uint b) } } +/** + * Computes ten to the given power. + * @param power The power of ten to get. + * @return The power of ten. + */ +constexpr uint64_t PowerOfTen(int power) +{ + assert(power >= 0 && power <= 20 /* digits in uint64_t */); + uint64_t result = 1; + for (int i = 0; i < power; i++) result *= 10; + return result; +} + uint32_t IntSqrt(uint32_t num); #endif /* MATH_FUNC_HPP */ From a44bd81280ea1c062ea5b6c00f8ffc5dc7ac677d Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 20:37:55 +0100 Subject: [PATCH 02/19] Codechange: Move determining the decimal separator to a separate function --- src/strings.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 428f4a5293..386662c35c 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -377,6 +377,13 @@ void SetDParamStr(size_t n, std::string &&str) _global_string_params.SetParam(n, std::move(str)); } +static const char *GetDecimalSeparator() +{ + const char *decimal_separator = _settings_game.locale.digit_decimal_separator.c_str(); + if (StrEmpty(decimal_separator)) decimal_separator = _langpack.langpack->digit_decimal_separator; + return decimal_separator; +} + /** * Format a number into a string. * @param builder the string builder to write to @@ -403,9 +410,7 @@ static void FormatNumber(StringBuilder &builder, int64_t number, const char *sep uint64_t tot = 0; for (int i = 0; i < max_digits; i++) { if (i == max_digits - fractional_digits) { - const char *decimal_separator = _settings_game.locale.digit_decimal_separator.c_str(); - if (StrEmpty(decimal_separator)) decimal_separator = _langpack.langpack->digit_decimal_separator; - builder += decimal_separator; + builder += GetDecimalSeparator(); } uint64_t quot = 0; @@ -461,16 +466,13 @@ static void FormatBytes(StringBuilder &builder, int64_t number) id++; } - const char *decimal_separator = _settings_game.locale.digit_decimal_separator.c_str(); - if (StrEmpty(decimal_separator)) decimal_separator = _langpack.langpack->digit_decimal_separator; - if (number < 1024) { id = 0; fmt::format_to(builder, "{}", number); } else if (number < 1024 * 10) { - fmt::format_to(builder, "{}{}{:02}", number / 1024, decimal_separator, (number % 1024) * 100 / 1024); + fmt::format_to(builder, "{}{}{:02}", number / 1024, GetDecimalSeparator(), (number % 1024) * 100 / 1024); } else if (number < 1024 * 100) { - fmt::format_to(builder, "{}{}{:01}", number / 1024, decimal_separator, (number % 1024) * 10 / 1024); + fmt::format_to(builder, "{}{}{:01}", number / 1024, GetDecimalSeparator(), (number % 1024) * 10 / 1024); } else { assert(number < 1024 * 1024); fmt::format_to(builder, "{}", number / 1024); From fca8166087908e3996b1ec9e00d9b846802a4dc7 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 20:39:59 +0100 Subject: [PATCH 03/19] Codechange: Simplify FormatNumber by moving out zero fill and decimal support --- src/strings.cpp | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 386662c35c..df5235b8fa 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -390,16 +390,12 @@ static const char *GetDecimalSeparator() * @param number the number to write down * @param last the last element in the buffer * @param separator the thousands-separator to use - * @param zerofill minimum number of digits to print for the integer part. The number will be filled with zeros at the front if necessary. - * @param fractional_digits number of fractional digits to display after a decimal separator. The decimal separator is inserted - * in front of the \a fractional_digits last digit of \a number. */ -static void FormatNumber(StringBuilder &builder, int64_t number, const char *separator, int zerofill = 1, int fractional_digits = 0) +static void FormatNumber(StringBuilder &builder, int64_t number, const char *separator) { static const int max_digits = 20; uint64_t divisor = 10000000000000000000ULL; - zerofill += fractional_digits; - int thousands_offset = (max_digits - fractional_digits - 1) % 3; + int thousands_offset = (max_digits - 1) % 3; if (number < 0) { builder += '-'; @@ -409,39 +405,35 @@ static void FormatNumber(StringBuilder &builder, int64_t number, const char *sep uint64_t num = number; uint64_t tot = 0; for (int i = 0; i < max_digits; i++) { - if (i == max_digits - fractional_digits) { - builder += GetDecimalSeparator(); - } - uint64_t quot = 0; if (num >= divisor) { quot = num / divisor; num = num % divisor; } - if ((tot |= quot) || i >= max_digits - zerofill) { + if ((tot |= quot) || i == max_digits - 1) { builder += '0' + quot; // quot is a single digit - if ((i % 3) == thousands_offset && i < max_digits - 1 - fractional_digits) builder += separator; + if ((i % 3) == thousands_offset && i < max_digits - 1) builder += separator; } divisor /= 10; } } -static void FormatCommaNumber(StringBuilder &builder, int64_t number, int fractional_digits = 0) +static void FormatCommaNumber(StringBuilder &builder, int64_t number) { const char *separator = _settings_game.locale.digit_group_separator.c_str(); if (StrEmpty(separator)) separator = _langpack.langpack->digit_group_separator; - FormatNumber(builder, number, separator, 1, fractional_digits); + FormatNumber(builder, number, separator); } static void FormatNoCommaNumber(StringBuilder &builder, int64_t number) { - FormatNumber(builder, number, ""); + fmt::format_to(builder, "{}", number); } static void FormatZerofillNumber(StringBuilder &builder, int64_t number, int count) { - FormatNumber(builder, number, "", count); + fmt::format_to(builder, "{:0{}d}", number, count); } static void FormatHexNumber(StringBuilder &builder, uint64_t number) @@ -1203,7 +1195,12 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_DECIMAL: { // {DECIMAL} int64_t number = args.GetNextParameter(); int digits = args.GetNextParameter(); - FormatCommaNumber(builder, number, digits); + + int64_t divisor = PowerOfTen(digits); + int64_t fractional = number % divisor; + number /= divisor; + FormatCommaNumber(builder, number); + fmt::format_to(builder, "{}{:0{}d}", GetDecimalSeparator(), fractional, digits); break; } From 819c6c756edd68599571eae126f305d6e3d247fc Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 21:28:36 +0100 Subject: [PATCH 04/19] Codechange: Add support for number format and abbreviations pragmas/attributes to strgen --- src/lang/english.txt | 2 + src/language.h | 25 ++++++++ src/strgen/strgen.cpp | 16 ++++++ src/strgen/strgen_base.cpp | 114 ++++++++++++++++++++++++++++++++++++- src/strings.cpp | 2 + 5 files changed, 158 insertions(+), 1 deletion(-) diff --git a/src/lang/english.txt b/src/lang/english.txt index cb1bbad502..44945bca69 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -3,6 +3,8 @@ ##isocode en_GB ##plural 0 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##digitsep , ##digitsepcur , ##decimalsep . diff --git a/src/language.h b/src/language.h index 8068bdb328..8fc0619338 100644 --- a/src/language.h +++ b/src/language.h @@ -31,6 +31,10 @@ struct LanguagePackHeader { char isocode[16]; ///< the ISO code for the language (not country code) uint16_t offsets[TEXT_TAB_END]; ///< the offsets + /** The raw formatting string for numbers. */ + char number_format[64]; + /** The raw formatting string for number abbreviations. */ + char number_abbreviations[256]; /** Thousand separator used for anything not currencies */ char digit_group_separator[8]; /** Thousand separator used for currencies */ @@ -107,7 +111,28 @@ extern const LanguageMetadata *_current_language; extern std::unique_ptr _current_collator; #endif /* WITH_ICU_I18N */ +/** The number digits available in a uint64_t. */ +constexpr int DIGITS_IN_UINT64_T = 20; +/** + * Table with the text to place after each of the digits of a number. The text at index "20 - i" will be + * inserted after the digit with value "10**i". So, for "normal" thousand separators, the strings at indices + * 3, 6, 9, 12, 15 and 18 will be filled. For CJK the strings at indices 0, 4, 8, 12 and 16 will be filled. + * @see ParseNumberFormatSeparators + */ +using NumberFormatSeparators = std::array; +/** Container for the power to abbreviation mapping for formatting short numbers. */ +struct NumberAbbreviation { + NumberAbbreviation(int64_t threshold, NumberFormatSeparators &format) : threshold(threshold), format(format) {} + int64_t threshold; ///< The threshold from which this abbreviation holds. + NumberFormatSeparators format; ///< Format separators to use for this specific power. +}; +/** Lookup for abbreviated formats for different powers of ten. */ +using NumberAbbreviations = std::vector; + bool ReadLanguagePack(const LanguageMetadata *lang); const LanguageMetadata *GetLanguage(byte newgrflangid); +std::optional ParseNumberFormatSeparators(NumberFormatSeparators &separators, std::string_view format, size_t length = DIGITS_IN_UINT64_T); +std::optional ParseNumberAbbreviations(NumberAbbreviations &abbreviations, std::string_view input); + #endif /* LANGUAGE_H */ diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp index 6b65b60cfb..73baed50b8 100644 --- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -121,6 +121,22 @@ void FileStringReader::HandlePragma(char *str) } else { FatalError("Invalid textdir {}", str + 8); } + } else if (!memcmp(str, "numberformat ", 13)) { + str += 13; + + NumberFormatSeparators separators; + auto result = ParseNumberFormatSeparators(separators, str); + if (result.has_value()) FatalError("Invalid number format: {}", *result); + + strecpy(_lang.number_format, str, lastof(_lang.number_format)); + } else if (!memcmp(str, "numberabbreviations ", 20)) { + str += 20; + + NumberAbbreviations abbreviations; + auto result = ParseNumberAbbreviations(abbreviations, str); + if (result.has_value()) FatalError("Invalid number abbreviations: {}", *result); + + strecpy(_lang.number_abbreviations, str, lastof(_lang.number_abbreviations)); } else if (!memcmp(str, "digitsep ", 9)) { str += 9; strecpy(_lang.digit_group_separator, strcmp(str, "{NBSP}") == 0 ? NBSP : str, lastof(_lang.digit_group_separator)); diff --git a/src/strgen/strgen_base.cpp b/src/strgen/strgen_base.cpp index e021a9b1ff..42e11f1246 100644 --- a/src/strgen/strgen_base.cpp +++ b/src/strgen/strgen_base.cpp @@ -16,7 +16,7 @@ #include "../table/control_codes.h" #include "strgen.h" - +#include #include "../table/strgen_tables.h" @@ -756,6 +756,8 @@ void StringReader::ParseFile() /* For each new file we parse, reset the genders, and language codes. */ MemSetT(&_lang, 0); + strecpy(_lang.number_format, "00,000,000,000,000,000,000", lastof(_lang.number_format)); + strecpy(_lang.number_abbreviations, "3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi", lastof(_lang.number_abbreviations)); 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)); @@ -980,3 +982,113 @@ void LanguageWriter::WriteLang(const StringData &data) } } } + +static const std::string_view NBSP_TOKEN = "{NBSP}"; + +static std::string ReplaceNBSP(std::string string) +{ + for (;;) { + auto iter = string.find(NBSP_TOKEN); + if (iter == std::string::npos) break; + + string.replace(iter, NBSP_TOKEN.size(), NBSP); + } + return string; +} + +/** + * Parse the \c NumberFormatSeparators out of the given format string, with the expected number of digits. + * + * Different cultures have different ways to separate their numbers when they get really big. In the Western world + * these are often called thousands separators which come every three digits counted from the back. The actual + * separator differs per language/country. In Chinese, Japanese and Korean they add a character every four digits + * counted from the back, and this character differs for each spot as it denotes "ten thousand", "hundred million", + * etc. In the Indic numbering system (Indian subcontinent), the first separator is after three digits counted + * from the back, but the next separators are given every two digits. + * + * So, there's no simple single parameter that you can add to the digit grouping character that is already + * configured. The simplest solution is just defining what character to place between each of the digits, i.e what + * characters separate each of the digits. These are the \c NumberFormatSeparators. + * + * To define these, you simply write a string of \c length zeros and then add any characters in between at the right + * locations so the digit grouping is correct. When formatting numbers, it will start at the appropriate digit and + * continue from there with separators. + * + * Examples of formats are "00,000,000,000,000,000,000" and "0000{NBSP}0000{NBSP}0000{NBSP}0000{NBSP}0000". + * + * @param separators The separators to fill; it will be cleared first. + * @param format The format that is going to be read. + * @param length The number of digits that are expected in this format. + * @return An \c std::optional with the error message, or \c std::nullopt when the parsing went without problems. + */ +std::optional ParseNumberFormatSeparators(NumberFormatSeparators &separators, std::string_view format, size_t length) +{ + separators.fill({}); + size_t seen_zeros = 0; + + auto it_separator = separators.rbegin(); + auto iter = format.find_last_of('0'); + while (iter != std::string_view::npos && it_separator != separators.rend()) { + seen_zeros++; + + *it_separator = ReplaceNBSP(std::string(format.substr(iter + 1))); + ++it_separator; + + format = format.substr(0, iter); + iter = format.find_last_of('0'); + } + + if (seen_zeros != length) return fmt::format("Unexpected number of digits ({} vs {}) in format string: [{}]", seen_zeros, length, format); + + return std::nullopt; +} + +/** + * Parse the \c NumberAbbreviations out of the given input string. + * + * In some places in the UI numbers are getting really big yet their exact value is not that important. For example + * in the graphs of company values. For this you want more compact number, e.g. 123 m for 123.456.789. However, due + * to the grouping of digits differing in different cultures, see \c ParseNumberFormatSeparators, there are many + * different ways of grouping digits. + * + * This function builds up a lookup table of these abbreviations by power of ten. The input will be a list of + * definitions per power separator by a pipe character (|). Each definition is the power of ten and and the + * associated number format with DIGITS_IN_UINT64_T - power digits, separated by the equals sign (=). + * + * For example, for English it defines every third power of ten with subsequently smaller number formats: + * 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi + * + * @param abbreviations The table to write the abbreviations in; is will be cleared before filling. + * @param input The input format to parse. + * @return An \c std::optional with the error message, or \c std::nullopt when the parsing went without problems. + */ +std::optional ParseNumberAbbreviations(NumberAbbreviations &abbreviations, std::string_view input) +{ + abbreviations.clear(); + + std::map abbreviation_map; + do { + std::string_view part = input.substr(0, input.find_first_of('|')); + input.remove_prefix(std::min(part.size() + 1, input.size())); + + auto equals = part.find_first_of('='); + if (equals == std::string_view::npos) return fmt::format("Part [{}] does not have an '='", part); + + std::string_view power_sv = part.substr(0, equals); + int power = 0; + if (std::from_chars(power_sv.data(), power_sv.data() + power_sv.size(), power).ec != std::errc{}) return fmt::format("Power [{}] is not a number", power_sv); + if (power >= DIGITS_IN_UINT64_T || power <= 0) return fmt::format("Power {} is not allowed", power_sv); + + abbreviation_map[power] = part.substr(equals + 1); + } while (!input.empty()); + + for (auto iter = abbreviation_map.rbegin(); iter != abbreviation_map.rend(); ++iter) { + NumberFormatSeparators separators; + auto result = ParseNumberFormatSeparators(separators, iter->second, DIGITS_IN_UINT64_T - iter->first); + if (result.has_value()) return result; + + abbreviations.emplace_back(PowerOfTen(iter->first), separators); + } + + return std::nullopt; +} diff --git a/src/strings.cpp b/src/strings.cpp index df5235b8fa..7abc9066ac 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1884,6 +1884,8 @@ bool LanguagePackHeader::IsValid() const StrValid(this->name, lastof(this->name)) && StrValid(this->own_name, lastof(this->own_name)) && StrValid(this->isocode, lastof(this->isocode)) && + StrValid(this->number_format, lastof(this->number_format)) && + StrValid(this->number_abbreviations, lastof(this->number_abbreviations)) && StrValid(this->digit_group_separator, lastof(this->digit_group_separator)) && StrValid(this->digit_group_separator_currency, lastof(this->digit_group_separator_currency)) && StrValid(this->digit_decimal_separator, lastof(this->digit_decimal_separator)); From a253205b932cc50fc9f25be390a6aaa370f89a45 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 21:35:33 +0100 Subject: [PATCH 05/19] Feature: Fully customisable number format per translation --- src/strings.cpp | 47 +++++++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 7abc9066ac..f5198ee988 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -55,6 +55,8 @@ const LanguageMetadata *_current_language = nullptr; ///< The currently loaded l TextDirection _current_text_dir; ///< Text direction of the currently selected language. +static NumberFormatSeparators _number_format_separators; + #ifdef WITH_ICU_I18N std::unique_ptr _current_collator; ///< Collator for the language currently in use. #endif /* WITH_ICU_I18N */ @@ -384,48 +386,42 @@ static const char *GetDecimalSeparator() return decimal_separator; } +void InitializeNumberFormats() +{ + ParseNumberFormatSeparators(_number_format_separators, _current_language->number_format); +} + /** * Format a number into a string. - * @param builder the string builder to write to - * @param number the number to write down - * @param last the last element in the buffer - * @param separator the thousands-separator to use + * @param builder The string builder to write to. + * @param number The number to write down. + * @param separators The separator to use between each of the digits. */ -static void FormatNumber(StringBuilder &builder, int64_t number, const char *separator) +static void FormatNumber(StringBuilder &builder, int64_t number, const NumberFormatSeparators &separators) { - static const int max_digits = 20; - uint64_t divisor = 10000000000000000000ULL; - int thousands_offset = (max_digits - 1) % 3; - if (number < 0) { builder += '-'; number = -number; } + uint64_t divisor = 10000000000000000000ULL; uint64_t num = number; uint64_t tot = 0; - for (int i = 0; i < max_digits; i++) { + for (size_t i = 0; i < separators.size(); i++) { uint64_t quot = 0; if (num >= divisor) { quot = num / divisor; num = num % divisor; } - if ((tot |= quot) || i == max_digits - 1) { + if ((tot |= quot) != 0 || i == separators.size() - 1) { builder += '0' + quot; // quot is a single digit - if ((i % 3) == thousands_offset && i < max_digits - 1) builder += separator; + builder += separators[i].data(); } divisor /= 10; } } -static void FormatCommaNumber(StringBuilder &builder, int64_t number) -{ - const char *separator = _settings_game.locale.digit_group_separator.c_str(); - if (StrEmpty(separator)) separator = _langpack.langpack->digit_group_separator; - FormatNumber(builder, number, separator); -} - static void FormatNoCommaNumber(StringBuilder &builder, int64_t number) { fmt::format_to(builder, "{}", number); @@ -541,10 +537,7 @@ static void FormatGenericCurrency(StringBuilder &builder, const CurrencySpec *sp } } - const char *separator = _settings_game.locale.digit_group_separator_currency.c_str(); - if (StrEmpty(separator)) separator = _currency->separator.c_str(); - if (StrEmpty(separator)) separator = _langpack.langpack->digit_group_separator_currency; - FormatNumber(builder, number, separator); + FormatNumber(builder, number, _number_format_separators); if (number_str != STR_NULL) { auto tmp_params = ArrayStringParameters<0>(); FormatString(builder, GetStringPtr(number_str), tmp_params); @@ -1189,7 +1182,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_COMMA: // {COMMA} - FormatCommaNumber(builder, args.GetNextParameter()); + FormatNumber(builder, args.GetNextParameter(), _number_format_separators); break; case SCC_DECIMAL: { // {DECIMAL} @@ -1199,7 +1192,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara int64_t divisor = PowerOfTen(digits); int64_t fractional = number % divisor; number /= divisor; - FormatCommaNumber(builder, number); + FormatNumber(builder, number, _number_format_separators); fmt::format_to(builder, "{}{:0{}d}", GetDecimalSeparator(), fractional, digits); break; } @@ -1246,7 +1239,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } } - FormatCommaNumber(builder, amount); + FormatNumber(builder, amount, _number_format_separators); break; } @@ -1983,6 +1976,8 @@ bool ReadLanguagePack(const LanguageMetadata *lang) } #endif /* WITH_ICU_I18N */ + InitializeNumberFormats(); + Layouter::Initialize(); /* Some lists need to be sorted again after a language change. */ From 9f8fd80112c188675179c9568a9be84da3df1713 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 21:39:16 +0100 Subject: [PATCH 06/19] Feature: Fully customisable number abbreviations per translation --- src/strings.cpp | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index f5198ee988..58c02fde99 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -56,6 +56,7 @@ const LanguageMetadata *_current_language = nullptr; ///< The currently loaded l TextDirection _current_text_dir; ///< Text direction of the currently selected language. static NumberFormatSeparators _number_format_separators; +static NumberAbbreviations _number_abbreviations; #ifdef WITH_ICU_I18N std::unique_ptr _current_collator; ///< Collator for the language currently in use. @@ -389,6 +390,8 @@ static const char *GetDecimalSeparator() void InitializeNumberFormats() { ParseNumberFormatSeparators(_number_format_separators, _current_language->number_format); + ParseNumberAbbreviations(_number_abbreviations, _current_language->number_abbreviations); + _number_abbreviations.emplace_back(0, _number_format_separators); } /** @@ -516,32 +519,29 @@ static void FormatGenericCurrency(StringBuilder &builder, const CurrencySpec *sp * The only remaining value is 1 (suffix), so everything that is not 1 */ if (spec->symbol_pos != 1) builder += spec->prefix; - StringID number_str = STR_NULL; + NumberFormatSeparators *format = &_number_format_separators; /* For huge numbers, compact the number. */ if (compact) { - /* Take care of the thousand rounding. Having 1 000 000 k - * and 1 000 M is inconsistent, so always use 1 000 M. */ - if (number >= Money(1'000'000'000'000'000) - 500'000'000) { - number = (number + Money(500'000'000'000)) / Money(1'000'000'000'000); - number_str = STR_CURRENCY_SHORT_TERA; - } else if (number >= Money(1'000'000'000'000) - 500'000) { - number = (number + 500'000'000) / 1'000'000'000; - number_str = STR_CURRENCY_SHORT_GIGA; - } else if (number >= 1'000'000'000 - 500) { - number = (number + 500'000) / 1'000'000; - number_str = STR_CURRENCY_SHORT_MEGA; - } else if (number >= 1'000'000) { - number = (number + 500) / 1'000; - number_str = STR_CURRENCY_SHORT_KILO; + auto it = _number_abbreviations.begin(); + for (;;) { + int64_t threshold = it->threshold; + ++it; + if (it == _number_abbreviations.end()) break; + + int64_t divisor = it->threshold; + threshold -= divisor / 2; + + if ((int64_t)number > threshold) { + format = &it->format; + number += divisor / 2; + number /= divisor; + break; + } } } - FormatNumber(builder, number, _number_format_separators); - if (number_str != STR_NULL) { - auto tmp_params = ArrayStringParameters<0>(); - FormatString(builder, GetStringPtr(number_str), tmp_params); - } + FormatNumber(builder, number, *format); /* Add suffix part, following symbol_pos specification. * Here, it can can be either 1 (suffix) or 2 (both prefix and suffix). From e67fc33172ca013fd0e19f921a409442fa9c4936 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 16 Feb 2024 07:28:32 +0100 Subject: [PATCH 07/19] Codechange: Add support for NULL strings in SaveLoadCompat --- src/saveload/saveload.cpp | 15 +++++++++++---- src/saveload/saveload.h | 23 ++++++++++++++++------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 3bbbd7576f..4dd474a8db 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -623,9 +623,16 @@ static inline byte SlCalcConvFileLen(VarType conv) { static const byte conv_file_size[] = {0, 1, 1, 2, 2, 4, 4, 8, 8, 2}; - uint8_t type = GetVarFileType(conv); - assert(type < lengthof(conv_file_size)); - return conv_file_size[type]; + switch (GetVarFileType(conv)) { + case SLE_FILE_STRING: + return SlReadArrayLength(); + + default: + uint8_t type = GetVarFileType(conv); + if (type >= lengthof(conv_file_size)) fmt::println("{}", type); + assert(type < lengthof(conv_file_size)); + return conv_file_size[type]; + } } /** Return the size in bytes of a reference (pointer) */ @@ -1864,7 +1871,7 @@ std::vector SlCompatTableHeader(const SaveLoadTable &slt, const SaveLo /* In old savegames there can be data we no longer care for. We * skip this by simply reading the amount of bytes indicated and * send those to /dev/null. */ - saveloads.push_back({"", SL_NULL, SLE_FILE_U8 | SLE_VAR_NULL, slc.length, slc.version_from, slc.version_to, 0, nullptr, 0, nullptr}); + saveloads.push_back({"", SL_NULL, GetVarFileType(slc.null_type) | SLE_VAR_NULL, slc.null_length, slc.version_from, slc.version_to, 0, nullptr, 0, nullptr}); } else { auto sld_it = key_lookup.find(slc.name); /* If this branch triggers, it means that an entry in the diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index b26f2b83b2..ce8ad99b1d 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -715,10 +715,11 @@ struct SaveLoad { * to make that happen. */ struct SaveLoadCompat { - std::string name; ///< Name of the field. - uint16_t length; ///< Length of the NULL field. + std::string name; ///< Name of the field. + VarTypes null_type; ///< The type associated with the NULL field; defaults to SLE_FILE_U8 to just count bytes. + uint16_t null_length; ///< Length of the NULL field. SaveLoadVersion version_from; ///< Save/load the variable starting from this savegame version. - SaveLoadVersion version_to; ///< Save/load the variable before this savegame version. + SaveLoadVersion version_to; ///< Save/load the variable before this savegame version. }; /** @@ -1183,18 +1184,26 @@ inline constexpr bool SlCheckVarSize(SaveLoadType cmd, VarType type, size_t leng * Field name where the real SaveLoad can be located. * @param name The name of the field. */ -#define SLC_VAR(name) {name, 0, SL_MIN_VERSION, SL_MAX_VERSION} +#define SLC_VAR(name) {name, SLE_FILE_U8, 0, SL_MIN_VERSION, SL_MAX_VERSION} /** * Empty space in every savegame version. - * @param length Length of the empty space. + * @param length Length of the empty space in bytes. * @param from First savegame version that has the empty space. * @param to Last savegame version that has the empty space. */ -#define SLC_NULL(length, from, to) {{}, length, from, to} +#define SLC_NULL(length, from, to) {{}, SLE_FILE_U8, length, from, to} + +/** + * Empty space in every savegame version that was filled with a string. + * @param length Number of strings in the empty space. + * @param from First savegame version that has the empty space. + * @param to Last savegame version that has the empty space. + */ +#define SLC_NULL_STR(length, from, to) {{}, SLE_FILE_STRING, length, from, to} /** End marker of compat variables save or load. */ -#define SLC_END() {{}, 0, SL_MIN_VERSION, SL_MIN_VERSION} +#define SLC_END() {{}, 0, 0, SL_MIN_VERSION, SL_MIN_VERSION} /** * Checks whether the savegame is below \a major.\a minor. From 609d0071d5e6b93aa61688714e9b92cf102e4683 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 21:42:34 +0100 Subject: [PATCH 08/19] Change: Remove saving of digit group and decimal separator configurations from the savegame --- src/saveload/compat/settings_sl_compat.h | 6 ++--- src/settings_type.h | 5 ++-- src/strings.cpp | 2 +- src/table/settings/gui_settings.ini | 7 ++++++ src/table/settings/locale_settings.ini | 28 --------------------- src/table/settings/old_gameopt_settings.ini | 1 - 6 files changed, 13 insertions(+), 36 deletions(-) diff --git a/src/saveload/compat/settings_sl_compat.h b/src/saveload/compat/settings_sl_compat.h index 84a0464c71..22717c0798 100644 --- a/src/saveload/compat/settings_sl_compat.h +++ b/src/saveload/compat/settings_sl_compat.h @@ -258,9 +258,9 @@ const SaveLoadCompat _settings_sl_compat[] = { SLC_VAR("locale.units_volume"), SLC_VAR("locale.units_force"), SLC_VAR("locale.units_height"), - SLC_VAR("locale.digit_group_separator"), - SLC_VAR("locale.digit_group_separator_currency"), - SLC_VAR("locale.digit_decimal_separator"), + SLC_NULL_STR(1, SLV_118, SLV_TABLE_CHUNKS), + SLC_NULL_STR(1, SLV_118, SLV_TABLE_CHUNKS), + SLC_NULL_STR(1, SLV_126, SLV_TABLE_CHUNKS), }; #endif /* SAVELOAD_COMPAT_SETTINGS_H */ diff --git a/src/settings_type.h b/src/settings_type.h index 3d16ceae47..dfe3496865 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -222,6 +222,8 @@ struct GUISettings { bool scale_bevels; ///< bevels are scaled with GUI scale. + std::string digit_decimal_separator; ///< decimal separator + /** * Returns true when the user has sufficient privileges to edit newgrfs on a running game * @return whether the user has sufficient privileges to edit newgrfs in an existing game @@ -265,9 +267,6 @@ struct LocaleSettings { byte units_volume; ///< unit system for volume byte units_force; ///< unit system for force byte units_height; ///< unit system for height - std::string digit_group_separator; ///< thousand separator for non-currencies - std::string digit_group_separator_currency; ///< thousand separator for currencies - std::string digit_decimal_separator; ///< decimal separator }; /** Settings related to news */ diff --git a/src/strings.cpp b/src/strings.cpp index 58c02fde99..eda7484ad7 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -382,7 +382,7 @@ void SetDParamStr(size_t n, std::string &&str) static const char *GetDecimalSeparator() { - const char *decimal_separator = _settings_game.locale.digit_decimal_separator.c_str(); + const char *decimal_separator = _settings_client.gui.digit_decimal_separator.c_str(); if (StrEmpty(decimal_separator)) decimal_separator = _langpack.langpack->digit_decimal_separator; return decimal_separator; } diff --git a/src/table/settings/gui_settings.ini b/src/table/settings/gui_settings.ini index 2abb58464f..a7bafdec06 100644 --- a/src/table/settings/gui_settings.ini +++ b/src/table/settings/gui_settings.ini @@ -28,6 +28,7 @@ static const SettingVariant _gui_settings_table[] = { SDTC_BOOL = SDTC_BOOL( $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $cat, $extra, $startup), SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $cat, $extra, $startup), SDTC_VAR = SDTC_VAR( $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $cat, $extra, $startup), +SDTC_SSTR = SDTC_SSTR( $var, $type, $flags, $def, 0, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), [validation] SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); @@ -903,3 +904,9 @@ post_cb = [](auto) { SetupWidgetDimensions(); ReInitAllWindows(true); } cat = SC_BASIC startup = true +[SDTC_SSTR] +var = gui.digit_decimal_separator +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +type = SLE_STRQ +def = nullptr +post_cb = [](auto) { MarkWholeScreenDirty(); } diff --git a/src/table/settings/locale_settings.ini b/src/table/settings/locale_settings.ini index b0e88f3451..3ebccc2165 100644 --- a/src/table/settings/locale_settings.ini +++ b/src/table/settings/locale_settings.ini @@ -23,7 +23,6 @@ static const SettingVariant _locale_settings_table[] = { [templates] SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $var, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $cat, $extra, $startup), SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $load, $cat, $extra, $startup), -SDT_SSTR = SDT_SSTR(GameSettings, $var, $type, $flags, $def, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), [validation] SDTG_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); @@ -169,30 +168,3 @@ cat = SC_BASIC str = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL - -[SDT_SSTR] -var = locale.digit_group_separator -type = SLE_STRQ -from = SLV_118 -flags = SF_NO_NETWORK_SYNC -def = nullptr -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - -[SDT_SSTR] -var = locale.digit_group_separator_currency -type = SLE_STRQ -from = SLV_118 -flags = SF_NO_NETWORK_SYNC -def = nullptr -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - -[SDT_SSTR] -var = locale.digit_decimal_separator -type = SLE_STRQ -from = SLV_126 -flags = SF_NO_NETWORK_SYNC -def = nullptr -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC diff --git a/src/table/settings/old_gameopt_settings.ini b/src/table/settings/old_gameopt_settings.ini index 661534d136..b07bb58136 100644 --- a/src/table/settings/old_gameopt_settings.ini +++ b/src/table/settings/old_gameopt_settings.ini @@ -32,7 +32,6 @@ static const SettingVariant _old_gameopt_settings_table[] = { [templates] SDTG_LIST = SDTG_LIST($name, $type, $flags, $var, $def, $length, $from, $to, $cat, $extra, $startup), SDTG_VAR = SDTG_VAR($name, $type, $flags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $cat, $extra, $startup), -SDT_NULL = SDT_NULL( $length, $from, $to), SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $cat, $extra, $startup), SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $var, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $cat, $extra, $startup), SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $from, $to, $load, $cat, $extra, $startup), From b741b2ba6f790891961cb66a9320e75ca168cee4 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 21:45:20 +0100 Subject: [PATCH 09/19] Feature: Fully user configurable number format and abbreviations --- src/settings_table.cpp | 1 + src/settings_type.h | 2 ++ src/strings.cpp | 17 +++++++++++++++-- src/table/settings/gui_settings.ini | 19 +++++++++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/settings_table.cpp b/src/settings_table.cpp index 5dd9ed5c56..1911f19814 100644 --- a/src/settings_table.cpp +++ b/src/settings_table.cpp @@ -50,6 +50,7 @@ #include "void_map.h" #include "station_func.h" #include "station_base.h" +#include "language.h" #include "table/strings.h" #include "table/settings.h" diff --git a/src/settings_type.h b/src/settings_type.h index dfe3496865..0d70c5b939 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -222,6 +222,8 @@ struct GUISettings { bool scale_bevels; ///< bevels are scaled with GUI scale. + std::string number_format; ///< formatting string for numbers (like "thousands" grouping) + std::string number_abbreviations; ///< mapping to number formats for different powers of ten/thresholds std::string digit_decimal_separator; ///< decimal separator /** diff --git a/src/strings.cpp b/src/strings.cpp index eda7484ad7..8e884b6363 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -389,8 +389,21 @@ static const char *GetDecimalSeparator() void InitializeNumberFormats() { - ParseNumberFormatSeparators(_number_format_separators, _current_language->number_format); - ParseNumberAbbreviations(_number_abbreviations, _current_language->number_abbreviations); + bool loaded_number_format = false; + if (!_settings_client.gui.number_format.empty()) { + auto res = ParseNumberFormatSeparators(_number_format_separators, _settings_client.gui.number_format); + if (res.has_value()) UserError("The setting 'number_format' under 'gui' is invalid: {}", *res); + loaded_number_format = !res.has_value(); + } + if (!loaded_number_format) ParseNumberFormatSeparators(_number_format_separators, _current_language->number_format); + + bool loaded_number_abbreviations = false; + if (!_settings_client.gui.number_abbreviations.empty()) { + auto res = ParseNumberAbbreviations(_number_abbreviations, _settings_client.gui.number_abbreviations); + if (res.has_value()) UserError("The setting 'number_abbreviations' under 'gui' is invalid: {}", *res); + loaded_number_abbreviations = !res.has_value(); + } + if (!loaded_number_abbreviations) ParseNumberAbbreviations(_number_abbreviations, _current_language->number_abbreviations); _number_abbreviations.emplace_back(0, _number_format_separators); } diff --git a/src/table/settings/gui_settings.ini b/src/table/settings/gui_settings.ini index a7bafdec06..46e8e4c831 100644 --- a/src/table/settings/gui_settings.ini +++ b/src/table/settings/gui_settings.ini @@ -16,6 +16,7 @@ static void InvalidateCompanyLiveryWindow(int32_t new_value); static void InvalidateNewGRFChangeWindows(int32_t new_value); static void ZoomMinMaxChanged(int32_t new_value); static void SpriteZoomMinChanged(int32_t new_value); +void InitializeNumberFormats(); static constexpr std::initializer_list _osk_activation{"disabled", "double", "single", "immediately"}; static constexpr std::initializer_list _savegame_date{"long", "short", "iso"}; @@ -904,6 +905,24 @@ post_cb = [](auto) { SetupWidgetDimensions(); ReInitAllWindows(true); } cat = SC_BASIC startup = true +[SDTC_SSTR] +var = gui.number_format +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +type = SLE_STRQ +def = nullptr +pre_cb = [](auto format) { NumberFormatSeparators separators; return !ParseNumberFormatSeparators(separators, format).has_value(); } +post_cb = [](auto) { InitializeNumberFormats(); MarkWholeScreenDirty(); } +startup = true + +[SDTC_SSTR] +var = gui.number_abbreviations +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +type = SLE_STRQ +def = nullptr +pre_cb = [](auto format) { NumberAbbreviations abbreviations; return !ParseNumberAbbreviations(abbreviations, format).has_value(); } +post_cb = [](auto) { InitializeNumberFormats(); MarkWholeScreenDirty(); } +startup = true + [SDTC_SSTR] var = gui.digit_decimal_separator flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC From 7e2eefb91ff5999667752eea6e13bd8a0d293f48 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 21:51:38 +0100 Subject: [PATCH 10/19] Cleanup: Remove digit group separators from strgen and languages --- src/lang/afrikaans.txt | 2 -- src/lang/arabic_egypt.txt | 2 -- src/lang/basque.txt | 2 -- src/lang/belarusian.txt | 2 -- src/lang/brazilian_portuguese.txt | 2 -- src/lang/bulgarian.txt | 2 -- src/lang/catalan.txt | 2 -- src/lang/chuvash.txt | 2 -- src/lang/croatian.txt | 2 -- src/lang/czech.txt | 2 -- src/lang/danish.txt | 2 -- src/lang/dutch.txt | 2 -- src/lang/english.txt | 7 ------- src/lang/english_AU.txt | 2 -- src/lang/english_US.txt | 2 -- src/lang/esperanto.txt | 2 -- src/lang/estonian.txt | 2 -- src/lang/faroese.txt | 2 -- src/lang/finnish.txt | 2 -- src/lang/french.txt | 2 -- src/lang/frisian.txt | 2 -- src/lang/gaelic.txt | 2 -- src/lang/galician.txt | 2 -- src/lang/german.txt | 2 -- src/lang/greek.txt | 2 -- src/lang/hebrew.txt | 2 -- src/lang/hindi.txt | 2 -- src/lang/hungarian.txt | 2 -- src/lang/icelandic.txt | 2 -- src/lang/ido.txt | 2 -- src/lang/indonesian.txt | 2 -- src/lang/irish.txt | 2 -- src/lang/italian.txt | 2 -- src/lang/japanese.txt | 2 -- src/lang/korean.txt | 2 -- src/lang/latin.txt | 2 -- src/lang/latvian.txt | 2 -- src/lang/lithuanian.txt | 2 -- src/lang/luxembourgish.txt | 2 -- src/lang/macedonian.txt | 2 -- src/lang/malay.txt | 2 -- src/lang/maltese.txt | 2 -- src/lang/marathi.txt | 2 -- src/lang/norwegian_bokmal.txt | 2 -- src/lang/norwegian_nynorsk.txt | 2 -- src/lang/persian.txt | 2 -- src/lang/polish.txt | 2 -- src/lang/portuguese.txt | 2 -- src/lang/romanian.txt | 2 -- src/lang/russian.txt | 2 -- src/lang/serbian.txt | 2 -- src/lang/simplified_chinese.txt | 2 -- src/lang/slovak.txt | 2 -- src/lang/slovenian.txt | 2 -- src/lang/spanish.txt | 2 -- src/lang/spanish_MX.txt | 2 -- src/lang/swedish.txt | 2 -- src/lang/tamil.txt | 2 -- src/lang/thai.txt | 2 -- src/lang/traditional_chinese.txt | 2 -- src/lang/turkish.txt | 2 -- src/lang/ukrainian.txt | 2 -- src/lang/urdu.txt | 2 -- src/lang/vietnamese.txt | 2 -- src/lang/welsh.txt | 2 -- src/language.h | 4 ---- src/strgen/strgen.cpp | 6 ------ src/strgen/strgen_base.cpp | 2 -- src/strings.cpp | 2 -- 69 files changed, 149 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 5a2f74e1a6..6a7afc41dc 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -3,8 +3,6 @@ ##isocode af_ZA ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0436 ##grflangid 0x1b diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 8ec3bfe56f..bb204cbbf7 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -3,8 +3,6 @@ ##isocode ar_EG ##plural 1 ##textdir rtl -##digitsep ٬ -##digitsepcur ٬ ##decimalsep ٫ ##winlangid 0x0c01 ##grflangid 0x14 diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 925b19d29f..086638458f 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -3,8 +3,6 @@ ##isocode eu_ES ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x042d ##grflangid 0x21 diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index f5c2d15aae..de00579105 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -3,8 +3,6 @@ ##isocode be_BY ##plural 6 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0423 ##grflangid 0x10 diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index a2a6fb9103..aabd8f8e93 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -3,8 +3,6 @@ ##isocode pt_BR ##plural 2 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0416 ##grflangid 0x37 diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index e783ddeae0..7e44b6afaa 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -3,8 +3,6 @@ ##isocode bg_BG ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0402 ##grflangid 0x18 diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index d198a5ad68..d3d1caba75 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -3,8 +3,6 @@ ##isocode ca_ES ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0403 ##grflangid 0x22 diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index 112ae79fb9..3a2787f199 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -3,8 +3,6 @@ ##isocode cv_RU ##plural 0 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0419 ##grflangid 0x0b diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 8597c7c3b8..ebd8fb5d12 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -3,8 +3,6 @@ ##isocode hr_HR ##plural 6 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x041a ##grflangid 0x38 diff --git a/src/lang/czech.txt b/src/lang/czech.txt index f0d709351e..515b381994 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -3,8 +3,6 @@ ##isocode cs_CZ ##plural 10 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0405 ##grflangid 0x15 diff --git a/src/lang/danish.txt b/src/lang/danish.txt index ae7604ced7..c9fa131876 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -3,8 +3,6 @@ ##isocode da_DK ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0406 ##grflangid 0x2d diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 8e18f0314e..2753cca65d 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -3,8 +3,6 @@ ##isocode nl_NL ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0413 ##grflangid 0x1f diff --git a/src/lang/english.txt b/src/lang/english.txt index 44945bca69..3956b25bc9 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -5,8 +5,6 @@ ##textdir ltr ##numberformat 00,000,000,000,000,000,000 ##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0809 ##grflangid 0x01 @@ -5812,11 +5810,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 338bd6ddc3..988377a278 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -3,8 +3,6 @@ ##isocode en_AU ##plural 0 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0c09 ##grflangid 0x3d diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 81e24c9946..e1b8dc945c 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -3,8 +3,6 @@ ##isocode en_US ##plural 0 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0409 ##grflangid 0x00 diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index af8b3cf83a..267245c209 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -3,8 +3,6 @@ ##isocode eo_EO ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0000 ##grflangid 0x05 diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 735b66ebd3..bc5577d8f2 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -3,8 +3,6 @@ ##isocode et_EE ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0425 ##grflangid 0x34 diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index fa5c7a1a3f..a42ac2f9ad 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -3,8 +3,6 @@ ##isocode fo_FO ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0438 ##grflangid 0x12 diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 458f9cb030..3ca3956711 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -3,8 +3,6 @@ ##isocode fi_FI ##plural 0 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x040b ##grflangid 0x35 diff --git a/src/lang/french.txt b/src/lang/french.txt index 57218911bf..edcddd0fd3 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -3,8 +3,6 @@ ##isocode fr_FR ##plural 2 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x040c ##grflangid 0x03 diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index ce525edc6c..8b48996734 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -3,8 +3,6 @@ ##isocode fy_NL ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0462 ##grflangid 0x32 diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index 1c6e26202d..c703113961 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -3,8 +3,6 @@ ##isocode gd_GB ##plural 13 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x083c ##grflangid 0x13 diff --git a/src/lang/galician.txt b/src/lang/galician.txt index ab7968a25e..96a716d23b 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -3,8 +3,6 @@ ##isocode gl_ES ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0456 ##grflangid 0x31 diff --git a/src/lang/german.txt b/src/lang/german.txt index 0d108a2d3e..6499270f91 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -3,8 +3,6 @@ ##isocode de_DE ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0407 ##grflangid 0x02 diff --git a/src/lang/greek.txt b/src/lang/greek.txt index ef3452828e..400fe0fb9c 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -3,8 +3,6 @@ ##isocode el_GR ##plural 2 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0408 ##grflangid 0x1e diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 7a4886ae45..dd3ada10d6 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -3,8 +3,6 @@ ##isocode he_IL ##plural 0 ##textdir rtl -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x040d ##grflangid 0x61 diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 938b8f164a..22d28e3362 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -3,8 +3,6 @@ ##isocode hi_IN ##plural 0 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0439 ##grflangid 0x17 diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index e30cef191e..e017b00e06 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -3,8 +3,6 @@ ##isocode hu_HU ##plural 2 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x040e ##grflangid 0x24 diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index afdea186e0..fb4761dcb1 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -3,8 +3,6 @@ ##isocode is_IS ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x040f ##grflangid 0x29 diff --git a/src/lang/ido.txt b/src/lang/ido.txt index b229f9bbd5..065ea41c86 100644 --- a/src/lang/ido.txt +++ b/src/lang/ido.txt @@ -3,8 +3,6 @@ ##isocode io_IO ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0000 ##grflangid 0x06 diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index b5100dc8bc..fce72c422c 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -3,8 +3,6 @@ ##isocode id_ID ##plural 1 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0421 ##grflangid 0x5a diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 8510de3bf8..aaf333df5e 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -3,8 +3,6 @@ ##isocode ga_IE ##plural 4 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x083c ##grflangid 0x08 diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 3ab1028641..2d62810b4b 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -3,8 +3,6 @@ ##isocode it_IT ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0410 ##grflangid 0x27 diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 93225d923f..94a7a02eac 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -3,8 +3,6 @@ ##isocode ja_JP ##plural 1 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0411 ##grflangid 0x39 diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 4a52df754c..169b22e07e 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -3,8 +3,6 @@ ##isocode ko_KR ##plural 11 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0412 ##grflangid 0x3a diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 301cf4f529..21052fb91e 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -3,8 +3,6 @@ ##isocode la_VA ##plural 0 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep . ##winlangid 0x0476 ##grflangid 0x66 diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index e9632e063b..493b9c4174 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -3,8 +3,6 @@ ##isocode lv_LV ##plural 3 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0426 ##grflangid 0x2a diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index cb750dbc5a..d8e5989953 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -3,8 +3,6 @@ ##isocode lt_LT ##plural 5 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0427 ##grflangid 0x2b diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index f7db2674da..08a829b4ea 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -3,8 +3,6 @@ ##isocode lb_LU ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x046e ##grflangid 0x23 diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index 34310c245c..824b689de6 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -3,8 +3,6 @@ ##isocode mk_MK ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x042f ##grflangid 0x26 diff --git a/src/lang/malay.txt b/src/lang/malay.txt index 93baaf1d26..29e5bbe6ad 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -3,8 +3,6 @@ ##isocode ms_MY ##plural 0 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x043a ##grflangid 0x3c diff --git a/src/lang/maltese.txt b/src/lang/maltese.txt index 044b9c049a..fc92a98ad6 100644 --- a/src/lang/maltese.txt +++ b/src/lang/maltese.txt @@ -3,8 +3,6 @@ ##isocode mt_MT ##plural 12 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x043a ##grflangid 0x09 diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 88f4c54703..150a96f0fa 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -3,8 +3,6 @@ ##isocode mr_IN ##plural 0 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x044e ##grflangid 0x11 diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 19d7ae1c83..c798cc78d6 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -3,8 +3,6 @@ ##isocode nb_NO ##plural 0 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0414 ##grflangid 0x2f diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index bcd28a98f4..9790bf50c8 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -3,8 +3,6 @@ ##isocode nn_NO ##plural 0 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0814 ##grflangid 0x0e diff --git a/src/lang/persian.txt b/src/lang/persian.txt index 70a0594700..e8baf15d11 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -3,8 +3,6 @@ ##isocode fa_IR ##plural 0 ##textdir rtl -##digitsep ٬ -##digitsepcur ٬ ##decimalsep ٫ ##winlangid 0x0429 ##grflangid 0x62 diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 8a614e009f..83468f0b19 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -3,8 +3,6 @@ ##isocode pl_PL ##plural 7 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0415 ##grflangid 0x30 diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 932ee61d42..63010386ff 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -3,8 +3,6 @@ ##isocode pt_PT ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0816 ##grflangid 0x36 diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 0f9a4befa3..a69699ec8f 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -3,8 +3,6 @@ ##isocode ro_RO ##plural 14 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0418 ##grflangid 0x28 diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 5b6d0b03c7..4715e43a6a 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -3,8 +3,6 @@ ##isocode ru_RU ##plural 6 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0419 ##grflangid 0x07 diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 443f8ecbd9..5fb4ebf256 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -3,8 +3,6 @@ ##isocode sr_RS ##plural 6 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x7c1a ##grflangid 0x0d diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index e06de8aeb7..7dda1edfd5 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -3,8 +3,6 @@ ##isocode zh_CN ##plural 1 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0804 ##grflangid 0x56 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 75cc314397..811ebe5f9e 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -3,8 +3,6 @@ ##isocode sk_SK ##plural 10 ##textdir ltr -##digitsep {NBSP} -##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x041b ##grflangid 0x16 diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index badd88b0a6..da595106e2 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -3,8 +3,6 @@ ##isocode sl_SI ##plural 8 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0424 ##grflangid 0x2c diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 3c48fd2f9d..7a86cf5512 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -3,8 +3,6 @@ ##isocode es_ES ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0c0a ##grflangid 0x04 diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index ce1ddf52b5..5847868846 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -3,8 +3,6 @@ ##isocode es_MX ##plural 0 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x080a ##grflangid 0x55 diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 56073743b9..aa405d211b 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -3,8 +3,6 @@ ##isocode sv_SE ##plural 0 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x081d ##grflangid 0x2e diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 0824ac4a72..5577804bbe 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -3,8 +3,6 @@ ##isocode ta_IN ##plural 0 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0449 ##grflangid 0x0a diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 0ef982c3ee..c38fd0c5b3 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -3,8 +3,6 @@ ##isocode th_TH ##plural 1 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x041e ##grflangid 0x42 diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 090d73bc12..187ae40531 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -3,8 +3,6 @@ ##isocode zh_TW ##plural 1 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0404 ##grflangid 0x0c diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index c946e6aae9..a1eba1598a 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -3,8 +3,6 @@ ##isocode tr_TR ##plural 1 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x041f ##grflangid 0x3e diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 00ac0d9393..b4b2db064b 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -3,8 +3,6 @@ ##isocode uk_UA ##plural 6 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x0422 ##grflangid 0x33 diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 552f331362..c673281c40 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -3,8 +3,6 @@ ##isocode ur_PK ##plural 0 ##textdir rtl -##digitsep ٬ -##digitsepcur ٬ ##decimalsep ٫ ##winlangid 0x0420 ##grflangid 0x5c diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 7803761f71..6be02769f6 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -3,8 +3,6 @@ ##isocode vi_VN ##plural 1 ##textdir ltr -##digitsep . -##digitsepcur . ##decimalsep , ##winlangid 0x042a ##grflangid 0x54 diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index dec48e8e4f..e4addc8bdf 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -3,8 +3,6 @@ ##isocode cy_GB ##plural 0 ##textdir ltr -##digitsep , -##digitsepcur , ##decimalsep . ##winlangid 0x0452 ##grflangid 0x0f diff --git a/src/language.h b/src/language.h index 8fc0619338..3664113194 100644 --- a/src/language.h +++ b/src/language.h @@ -35,10 +35,6 @@ struct LanguagePackHeader { char number_format[64]; /** The raw formatting string for number abbreviations. */ char number_abbreviations[256]; - /** Thousand separator used for anything not currencies */ - char digit_group_separator[8]; - /** Thousand separator used for currencies */ - char digit_group_separator_currency[8]; /** Decimal separator */ char digit_decimal_separator[8]; uint16_t missing; ///< number of missing strings. diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp index 73baed50b8..60d2afa5be 100644 --- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -137,12 +137,6 @@ void FileStringReader::HandlePragma(char *str) if (result.has_value()) FatalError("Invalid number abbreviations: {}", *result); strecpy(_lang.number_abbreviations, str, lastof(_lang.number_abbreviations)); - } else if (!memcmp(str, "digitsep ", 9)) { - str += 9; - strecpy(_lang.digit_group_separator, strcmp(str, "{NBSP}") == 0 ? NBSP : str, lastof(_lang.digit_group_separator)); - } else if (!memcmp(str, "digitsepcur ", 12)) { - str += 12; - strecpy(_lang.digit_group_separator_currency, strcmp(str, "{NBSP}") == 0 ? NBSP : str, lastof(_lang.digit_group_separator_currency)); } else if (!memcmp(str, "decimalsep ", 11)) { str += 11; strecpy(_lang.digit_decimal_separator, strcmp(str, "{NBSP}") == 0 ? NBSP : str, lastof(_lang.digit_decimal_separator)); diff --git a/src/strgen/strgen_base.cpp b/src/strgen/strgen_base.cpp index 42e11f1246..4b08d05099 100644 --- a/src/strgen/strgen_base.cpp +++ b/src/strgen/strgen_base.cpp @@ -758,8 +758,6 @@ void StringReader::ParseFile() MemSetT(&_lang, 0); strecpy(_lang.number_format, "00,000,000,000,000,000,000", lastof(_lang.number_format)); strecpy(_lang.number_abbreviations, "3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi", lastof(_lang.number_abbreviations)); - 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)); _cur_line = 1; diff --git a/src/strings.cpp b/src/strings.cpp index 8e884b6363..a4fffe60b2 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1892,8 +1892,6 @@ bool LanguagePackHeader::IsValid() const StrValid(this->isocode, lastof(this->isocode)) && StrValid(this->number_format, lastof(this->number_format)) && StrValid(this->number_abbreviations, lastof(this->number_abbreviations)) && - StrValid(this->digit_group_separator, lastof(this->digit_group_separator)) && - StrValid(this->digit_group_separator_currency, lastof(this->digit_group_separator_currency)) && StrValid(this->digit_decimal_separator, lastof(this->digit_decimal_separator)); } From 59f56941e50bd4ebad31f9e771a4441f647692e5 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 21:54:31 +0100 Subject: [PATCH 11/19] Update: Number format configuration based on old digitsep and STR_CURRENCY_SHORT_* values --- src/lang/afrikaans.txt | 2 ++ src/lang/arabic_egypt.txt | 2 ++ src/lang/basque.txt | 2 ++ src/lang/belarusian.txt | 2 ++ src/lang/brazilian_portuguese.txt | 2 ++ src/lang/bulgarian.txt | 2 ++ src/lang/catalan.txt | 2 ++ src/lang/chuvash.txt | 2 ++ src/lang/croatian.txt | 2 ++ src/lang/czech.txt | 2 ++ src/lang/danish.txt | 2 ++ src/lang/dutch.txt | 2 ++ src/lang/english_AU.txt | 2 ++ src/lang/english_US.txt | 2 ++ src/lang/esperanto.txt | 2 ++ src/lang/estonian.txt | 2 ++ src/lang/faroese.txt | 2 ++ src/lang/finnish.txt | 2 ++ src/lang/french.txt | 2 ++ src/lang/frisian.txt | 2 ++ src/lang/gaelic.txt | 2 ++ src/lang/galician.txt | 2 ++ src/lang/german.txt | 2 ++ src/lang/greek.txt | 2 ++ src/lang/hebrew.txt | 2 ++ src/lang/hindi.txt | 2 ++ src/lang/hungarian.txt | 2 ++ src/lang/icelandic.txt | 2 ++ src/lang/ido.txt | 2 ++ src/lang/indonesian.txt | 2 ++ src/lang/irish.txt | 2 ++ src/lang/italian.txt | 2 ++ src/lang/japanese.txt | 2 ++ src/lang/korean.txt | 2 ++ src/lang/latin.txt | 2 ++ src/lang/latvian.txt | 2 ++ src/lang/lithuanian.txt | 2 ++ src/lang/luxembourgish.txt | 2 ++ src/lang/macedonian.txt | 2 ++ src/lang/malay.txt | 2 ++ src/lang/maltese.txt | 2 ++ src/lang/marathi.txt | 2 ++ src/lang/norwegian_bokmal.txt | 2 ++ src/lang/norwegian_nynorsk.txt | 2 ++ src/lang/persian.txt | 2 ++ src/lang/polish.txt | 2 ++ src/lang/portuguese.txt | 2 ++ src/lang/romanian.txt | 2 ++ src/lang/russian.txt | 2 ++ src/lang/serbian.txt | 2 ++ src/lang/simplified_chinese.txt | 2 ++ src/lang/slovak.txt | 2 ++ src/lang/slovenian.txt | 2 ++ src/lang/spanish.txt | 2 ++ src/lang/spanish_MX.txt | 2 ++ src/lang/swedish.txt | 2 ++ src/lang/tamil.txt | 2 ++ src/lang/thai.txt | 2 ++ src/lang/traditional_chinese.txt | 2 ++ src/lang/turkish.txt | 2 ++ src/lang/ukrainian.txt | 2 ++ src/lang/urdu.txt | 2 ++ src/lang/vietnamese.txt | 2 ++ src/lang/welsh.txt | 2 ++ 64 files changed, 128 insertions(+) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 6a7afc41dc..681ecccb60 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -3,6 +3,8 @@ ##isocode af_ZA ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0436 ##grflangid 0x1b diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index bb204cbbf7..ea53ec9899 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -3,6 +3,8 @@ ##isocode ar_EG ##plural 1 ##textdir rtl +##numberformat 00٬000٬000٬000٬000٬000٬000 +##numberabbreviations 3=00٬000٬000٬000٬000٬000{NBSP}k|6=00٬000٬000٬000٬000{NBSP}m|9=00٬000٬000٬000{NBSP}bn|12=00٬000٬000{NBSP}tn|15=00٬000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep ٫ ##winlangid 0x0c01 ##grflangid 0x14 diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 086638458f..341fda56d2 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -3,6 +3,8 @@ ##isocode eu_ES ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x042d ##grflangid 0x21 diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index de00579105..92f0dea5ad 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -3,6 +3,8 @@ ##isocode be_BY ##plural 6 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 3=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}k|6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}m|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}bn|12=00{NBSP}000{NBSP}000{NBSP}tn|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0423 ##grflangid 0x10 diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index aabd8f8e93..f1c21ab5b4 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -3,6 +3,8 @@ ##isocode pt_BR ##plural 2 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0416 ##grflangid 0x37 diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 7e44b6afaa..ca619aa617 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -3,6 +3,8 @@ ##isocode bg_BG ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0402 ##grflangid 0x18 diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index d3d1caba75..6fbc01980e 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -3,6 +3,8 @@ ##isocode ca_ES ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}M|9=00.000.000.000{NBSP}G|12=00.000.000{NBSP}T|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0403 ##grflangid 0x22 diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index 3a2787f199..c9c343faf0 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -3,6 +3,8 @@ ##isocode cv_RU ##plural 0 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 3=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}k|6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}m|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}bn|12=00{NBSP}000{NBSP}000{NBSP}tn|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0419 ##grflangid 0x0b diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index ebd8fb5d12..9f6081ca8a 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -3,6 +3,8 @@ ##isocode hr_HR ##plural 6 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x041a ##grflangid 0x38 diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 515b381994..f0d56c383b 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -3,6 +3,8 @@ ##isocode cs_CZ ##plural 10 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 3=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}tis.|6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}mil.|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}mld.|12=00{NBSP}000{NBSP}000{NBSP}bil.|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0405 ##grflangid 0x15 diff --git a/src/lang/danish.txt b/src/lang/danish.txt index c9fa131876..83f6f9dd80 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -3,6 +3,8 @@ ##isocode da_DK ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0406 ##grflangid 0x2d diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 2753cca65d..2a2f0400c0 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -3,6 +3,8 @@ ##isocode nl_NL ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}mj|9=00.000.000.000{NBSP}md|12=00.000.000{NBSP}bn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0413 ##grflangid 0x1f diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 988377a278..0fe21eb26f 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -3,6 +3,8 @@ ##isocode en_AU ##plural 0 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0c09 ##grflangid 0x3d diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index e1b8dc945c..86c3abb62f 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -3,6 +3,8 @@ ##isocode en_US ##plural 0 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}K|6=00,000,000,000,000{NBSP}M|9=00,000,000,000{NBSP}B|12=00,000,000{NBSP}T|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0409 ##grflangid 0x00 diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index 267245c209..63ee040657 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -3,6 +3,8 @@ ##isocode eo_EO ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0000 ##grflangid 0x05 diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index bc5577d8f2..fa3a849e90 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -3,6 +3,8 @@ ##isocode et_EE ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0425 ##grflangid 0x34 diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index a42ac2f9ad..569577ddf3 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -3,6 +3,8 @@ ##isocode fo_FO ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0438 ##grflangid 0x12 diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 3ca3956711..9d7bf7ecfd 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -3,6 +3,8 @@ ##isocode fi_FI ##plural 0 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}milj.|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}mrd.|12=00{NBSP}000{NBSP}000{NBSP} t|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x040b ##grflangid 0x35 diff --git a/src/lang/french.txt b/src/lang/french.txt index edcddd0fd3..9aabc02e7e 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -3,6 +3,8 @@ ##isocode fr_FR ##plural 2 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 3=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}k|6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}Mio|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}Mrd|12=00{NBSP}000{NBSP}000{NBSP}kMrd|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x040c ##grflangid 0x03 diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index 8b48996734..cd7fd30d3a 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -3,6 +3,8 @@ ##isocode fy_NL ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0462 ##grflangid 0x32 diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index c703113961..e460b6de93 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -3,6 +3,8 @@ ##isocode gd_GB ##plural 13 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x083c ##grflangid 0x13 diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 96a716d23b..ed0aa57b65 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -3,6 +3,8 @@ ##isocode gl_ES ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}M|9=00.000.000.000{NBSP}MM|12=00.000.000{NBSP}bn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0456 ##grflangid 0x31 diff --git a/src/lang/german.txt b/src/lang/german.txt index 6499270f91..a0b4806507 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -3,6 +3,8 @@ ##isocode de_DE ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}t|6=00.000.000.000.000{NBSP}Mio|9=00.000.000.000{NBSP}Mrd|12=00.000.000{NBSP}Bio|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0407 ##grflangid 0x02 diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 400fe0fb9c..defd2cc677 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -3,6 +3,8 @@ ##isocode el_GR ##plural 2 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0408 ##grflangid 0x1e diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index dd3ada10d6..967cfd70b8 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -3,6 +3,8 @@ ##isocode he_IL ##plural 0 ##textdir rtl +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x040d ##grflangid 0x61 diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 22d28e3362..8d5b3ae4a5 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -3,6 +3,8 @@ ##isocode hi_IN ##plural 0 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0439 ##grflangid 0x17 diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index e017b00e06..5e54db6e06 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -3,6 +3,8 @@ ##isocode hu_HU ##plural 2 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}e|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}mrd|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x040e ##grflangid 0x24 diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index fb4761dcb1..92fe59381b 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -3,6 +3,8 @@ ##isocode is_IS ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x040f ##grflangid 0x29 diff --git a/src/lang/ido.txt b/src/lang/ido.txt index 065ea41c86..1dbc15dbe8 100644 --- a/src/lang/ido.txt +++ b/src/lang/ido.txt @@ -3,6 +3,8 @@ ##isocode io_IO ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0000 ##grflangid 0x06 diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index fce72c422c..382bf745f5 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -3,6 +3,8 @@ ##isocode id_ID ##plural 1 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0421 ##grflangid 0x5a diff --git a/src/lang/irish.txt b/src/lang/irish.txt index aaf333df5e..cef30b130a 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -3,6 +3,8 @@ ##isocode ga_IE ##plural 4 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x083c ##grflangid 0x08 diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 2d62810b4b..fdc1594b89 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -3,6 +3,8 @@ ##isocode it_IT ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0410 ##grflangid 0x27 diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 94a7a02eac..f234a804d4 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -3,6 +3,8 @@ ##isocode ja_JP ##plural 1 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0411 ##grflangid 0x39 diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 169b22e07e..2ed2be466d 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -3,6 +3,8 @@ ##isocode ko_KR ##plural 11 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000k|6=00,000,000,000,000m|9=00,000,000,000bn|12=00,000,000tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0412 ##grflangid 0x3a diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 21052fb91e..6a2096a6b6 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -3,6 +3,8 @@ ##isocode la_VA ##plural 0 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 3=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}k|6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}m|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}bn|12=00{NBSP}000{NBSP}000{NBSP}tn|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0476 ##grflangid 0x66 diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 493b9c4174..4865805bb9 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -3,6 +3,8 @@ ##isocode lv_LV ##plural 3 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}tk.|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}mljrd.|12=00.000.000{NBSP}tonna|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0426 ##grflangid 0x2a diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index d8e5989953..0402163e24 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -3,6 +3,8 @@ ##isocode lt_LT ##plural 5 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0427 ##grflangid 0x2b diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 08a829b4ea..433c9413a5 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -3,6 +3,8 @@ ##isocode lb_LU ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}d|6=00.000.000.000.000{NBSP}Mio|9=00.000.000.000{NBSP}Mrd|12=00.000.000{NBSP}Bio|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x046e ##grflangid 0x23 diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index 824b689de6..7784db9afd 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -3,6 +3,8 @@ ##isocode mk_MK ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x042f ##grflangid 0x26 diff --git a/src/lang/malay.txt b/src/lang/malay.txt index 29e5bbe6ad..3fc33f2a26 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -3,6 +3,8 @@ ##isocode ms_MY ##plural 0 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x043a ##grflangid 0x3c diff --git a/src/lang/maltese.txt b/src/lang/maltese.txt index fc92a98ad6..d7265182f3 100644 --- a/src/lang/maltese.txt +++ b/src/lang/maltese.txt @@ -3,6 +3,8 @@ ##isocode mt_MT ##plural 12 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x043a ##grflangid 0x09 diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 150a96f0fa..2f39ce22c8 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -3,6 +3,8 @@ ##isocode mr_IN ##plural 0 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x044e ##grflangid 0x11 diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index c798cc78d6..e38c060fbb 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -3,6 +3,8 @@ ##isocode nb_NO ##plural 0 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 3=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}k|6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}m|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}bn|12=00{NBSP}000{NBSP}000{NBSP}tn|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0414 ##grflangid 0x2f diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 9790bf50c8..e2db8bb342 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -3,6 +3,8 @@ ##isocode nn_NO ##plural 0 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 3=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}k|6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}m|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}bn|12=00{NBSP}000{NBSP}000{NBSP}tn|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0814 ##grflangid 0x0e diff --git a/src/lang/persian.txt b/src/lang/persian.txt index e8baf15d11..e950b1f302 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -3,6 +3,8 @@ ##isocode fa_IR ##plural 0 ##textdir rtl +##numberformat 00٬000٬000٬000٬000٬000٬000 +##numberabbreviations 3=00٬000٬000٬000٬000٬000{NBSP}k|6=00٬000٬000٬000٬000{NBSP}m|9=00٬000٬000٬000{NBSP}bn|12=00٬000٬000{NBSP}tn|15=00٬000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep ٫ ##winlangid 0x0429 ##grflangid 0x62 diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 83468f0b19..da3eb523ed 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -3,6 +3,8 @@ ##isocode pl_PL ##plural 7 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}M|9=00.000.000.000{NBSP}G|12=00.000.000{NBSP}T|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0415 ##grflangid 0x30 diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 63010386ff..153bd55a7e 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -3,6 +3,8 @@ ##isocode pt_PT ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0816 ##grflangid 0x36 diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index a69699ec8f..07d5a9e3f1 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -3,6 +3,8 @@ ##isocode ro_RO ##plural 14 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}mii|6=00.000.000.000.000{NBSP}mil.|9=00.000.000.000{NBSP}mld.|12=00.000.000{NBSP}bil.|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0418 ##grflangid 0x28 diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 4715e43a6a..9f1f69053f 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -3,6 +3,8 @@ ##isocode ru_RU ##plural 6 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 3=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}тыс.|6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}млн|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}млрд.|12=00{NBSP}000{NBSP}000{NBSP}трлн.|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0419 ##grflangid 0x07 diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 5fb4ebf256..dff4ddf374 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -3,6 +3,8 @@ ##isocode sr_RS ##plural 6 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x7c1a ##grflangid 0x0d diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 7dda1edfd5..1e02acb715 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -3,6 +3,8 @@ ##isocode zh_CN ##plural 1 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000b|12=00,000,000t|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0804 ##grflangid 0x56 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 811ebe5f9e..054c47296a 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -3,6 +3,8 @@ ##isocode sk_SK ##plural 10 ##textdir ltr +##numberformat 00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000 +##numberabbreviations 3=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}k|6=00{NBSP}000{NBSP}000{NBSP}000{NBSP}000{NBSP}m|9=00{NBSP}000{NBSP}000{NBSP}000{NBSP}bn|12=00{NBSP}000{NBSP}000{NBSP}tn|15=00{NBSP}000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x041b ##grflangid 0x16 diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index da595106e2..24bafd751f 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -3,6 +3,8 @@ ##isocode sl_SI ##plural 8 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0424 ##grflangid 0x2c diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 7a86cf5512..0e8d0cec05 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -3,6 +3,8 @@ ##isocode es_ES ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}M|9=00.000.000.000{NBSP}kM|12=00.000.000{NBSP}MM|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0c0a ##grflangid 0x04 diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 5847868846..3d26864eb4 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -3,6 +3,8 @@ ##isocode es_MX ##plural 0 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x080a ##grflangid 0x55 diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index aa405d211b..8fbaa02871 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -3,6 +3,8 @@ ##isocode sv_SE ##plural 0 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}t|6=00.000.000.000.000{NBSP}mn|9=00.000.000.000{NBSP}md|12=00.000.000{NBSP}bn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x081d ##grflangid 0x2e diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 5577804bbe..d85f12f93f 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -3,6 +3,8 @@ ##isocode ta_IN ##plural 0 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0449 ##grflangid 0x0a diff --git a/src/lang/thai.txt b/src/lang/thai.txt index c38fd0c5b3..360969bb68 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -3,6 +3,8 @@ ##isocode th_TH ##plural 1 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x041e ##grflangid 0x42 diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 187ae40531..eee1c361af 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -3,6 +3,8 @@ ##isocode zh_TW ##plural 1 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0404 ##grflangid 0x0c diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index a1eba1598a..9d2ca41d00 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -3,6 +3,8 @@ ##isocode tr_TR ##plural 1 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}mlyn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x041f ##grflangid 0x3e diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index b4b2db064b..ad4e4933c1 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -3,6 +3,8 @@ ##isocode uk_UA ##plural 6 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}тис.|6=00.000.000.000.000{NBSP}млн|9=00.000.000.000{NBSP}млрд|12=00.000.000{NBSP}трлн|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x0422 ##grflangid 0x33 diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index c673281c40..9b97b37516 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -3,6 +3,8 @@ ##isocode ur_PK ##plural 0 ##textdir rtl +##numberformat 00٬000٬000٬000٬000٬000٬000 +##numberabbreviations 3=00٬000٬000٬000٬000٬000{NBSP}k|6=00٬000٬000٬000٬000{NBSP}m|9=00٬000٬000٬000{NBSP}bn|12=00٬000٬000{NBSP}tn|15=00٬000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep ٫ ##winlangid 0x0420 ##grflangid 0x5c diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 6be02769f6..bfc988b645 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -3,6 +3,8 @@ ##isocode vi_VN ##plural 1 ##textdir ltr +##numberformat 00.000.000.000.000.000.000 +##numberabbreviations 3=00.000.000.000.000.000{NBSP}k|6=00.000.000.000.000{NBSP}m|9=00.000.000.000{NBSP}bn|12=00.000.000{NBSP}tn|15=00.000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep , ##winlangid 0x042a ##grflangid 0x54 diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index e4addc8bdf..37a5cf8be4 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -3,6 +3,8 @@ ##isocode cy_GB ##plural 0 ##textdir ltr +##numberformat 00,000,000,000,000,000,000 +##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi ##decimalsep . ##winlangid 0x0452 ##grflangid 0x0f From 1aa9a5c0abaf9c5d6c49a3a76e2b1d7134c0bd10 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Feb 2024 23:16:18 +0100 Subject: [PATCH 12/19] Update: Use proper number formats and abbreviations for Chinese, Japanese, Korean and German --- src/lang/german.txt | 2 +- src/lang/japanese.txt | 4 ++-- src/lang/korean.txt | 4 ++-- src/lang/simplified_chinese.txt | 4 ++-- src/lang/traditional_chinese.txt | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lang/german.txt b/src/lang/german.txt index a0b4806507..50119e7ef3 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -4,7 +4,7 @@ ##plural 0 ##textdir ltr ##numberformat 00.000.000.000.000.000.000 -##numberabbreviations 3=00.000.000.000.000.000{NBSP}t|6=00.000.000.000.000{NBSP}Mio|9=00.000.000.000{NBSP}Mrd|12=00.000.000{NBSP}Bio|15=00.000{NBSP}Qa|18=00{NBSP}Qi +##numberabbreviations 3=00.000.000.000.000.000{NBSP}Tsd.|6=00.000.000.000.000{NBSP}Mio.|9=00.000.000.000{NBSP}Mrd.|12=00.000.000{NBSP}Bio.|15=00.000{NBSP}Brd.|18=00{NBSP}Trill. ##decimalsep , ##winlangid 0x0407 ##grflangid 0x02 diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index f234a804d4..d60c387efa 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -3,8 +3,8 @@ ##isocode ja_JP ##plural 1 ##textdir ltr -##numberformat 00,000,000,000,000,000,000 -##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi +##numberformat 0000京0000兆0000億0000万0000 +##numberabbreviations 4=0000京0000兆0000億0000万|8=0000京0000兆0000億|12=0000京0000兆|16=0000京 ##decimalsep . ##winlangid 0x0411 ##grflangid 0x39 diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 2ed2be466d..b459fe6407 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -3,8 +3,8 @@ ##isocode ko_KR ##plural 11 ##textdir ltr -##numberformat 00,000,000,000,000,000,000 -##numberabbreviations 3=00,000,000,000,000,000k|6=00,000,000,000,000m|9=00,000,000,000bn|12=00,000,000tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi +##numberformat 0000경0000조0000억0000만0000 +##numberabbreviations 4=0000경0000조0000억0000만|8=0000경0000조0000억|12=0000경0000조|16=0000경 ##decimalsep . ##winlangid 0x0412 ##grflangid 0x3a diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 1e02acb715..229c70bafd 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -3,8 +3,8 @@ ##isocode zh_CN ##plural 1 ##textdir ltr -##numberformat 00,000,000,000,000,000,000 -##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000b|12=00,000,000t|15=00,000{NBSP}Qa|18=00{NBSP}Qi +##numberformat 0000京0000兆0000亿0000万0000 +##numberabbreviations 4=0000京0000兆0000亿0000万|8=0000京0000兆0000亿|12=0000京0000兆|16=0000京 ##decimalsep . ##winlangid 0x0804 ##grflangid 0x56 diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index eee1c361af..bbf04c75ee 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -3,8 +3,8 @@ ##isocode zh_TW ##plural 1 ##textdir ltr -##numberformat 00,000,000,000,000,000,000 -##numberabbreviations 3=00,000,000,000,000,000{NBSP}k|6=00,000,000,000,000{NBSP}m|9=00,000,000,000{NBSP}bn|12=00,000,000{NBSP}tn|15=00,000{NBSP}Qa|18=00{NBSP}Qi +##numberformat 0000京0000兆0000億0000万0000 +##numberabbreviations 4=0000京0000兆0000億0000万|8=0000京0000兆0000億|12=0000京0000兆|16=0000京 ##decimalsep . ##winlangid 0x0404 ##grflangid 0x0c From 2ecc3c90f7faba4362d48d236d28703d0d907731 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sat, 17 Feb 2024 18:29:21 +0000 Subject: [PATCH 13/19] Change: Improve performance of finding free pool slots. (#12055) Add a bitmap of used pool slots which allows finding a free pool slot without having to check if each index is already used or not. Loosely based on a JGRPP patch. --- src/core/pool_func.hpp | 40 ++++++++++++++++++++++++++-------------- src/core/pool_type.hpp | 4 ++++ 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/core/pool_func.hpp b/src/core/pool_func.hpp index 51962c35ba..d593766859 100644 --- a/src/core/pool_func.hpp +++ b/src/core/pool_func.hpp @@ -11,6 +11,7 @@ #define POOL_FUNC_HPP #include "alloc_func.hpp" +#include "bitmath_func.hpp" #include "mem_func.hpp" #include "pool_type.hpp" #include "../error_func.h" @@ -60,6 +61,16 @@ DEFINE_POOL_METHOD(inline void)::ResizeFor(size_t index) this->data = ReallocT(this->data, new_size); MemSetT(this->data + this->size, 0, new_size - this->size); + this->used_bitmap.resize(Align(new_size, BITMAP_SIZE) / BITMAP_SIZE); + if (this->size % BITMAP_SIZE != 0) { + /* Already-allocated bits above old size are now unused. */ + this->used_bitmap[this->size / BITMAP_SIZE] &= ~((~static_cast(0)) << (this->size % BITMAP_SIZE)); + } + if (new_size % BITMAP_SIZE != 0) { + /* Bits above new size are considered used. */ + this->used_bitmap[new_size / BITMAP_SIZE] |= (~static_cast(0)) << (new_size % BITMAP_SIZE); + } + this->size = new_size; } @@ -69,25 +80,20 @@ DEFINE_POOL_METHOD(inline void)::ResizeFor(size_t index) */ DEFINE_POOL_METHOD(inline size_t)::FindFirstFree() { - size_t index = this->first_free; - - for (; index < this->first_unused; index++) { - if (this->data[index] == nullptr) return index; + for (auto it = std::next(std::begin(this->used_bitmap), this->first_free / BITMAP_SIZE); it != std::end(this->used_bitmap); ++it) { + BitmapStorage available = ~(*it); + if (available == 0) continue; + return std::distance(std::begin(this->used_bitmap), it) * BITMAP_SIZE + FindFirstBit(available); } - if (index < this->size) { - return index; - } - - assert(index == this->size); assert(this->first_unused == this->size); - if (index < Tmax_size) { - this->ResizeFor(index); - return index; + if (this->first_unused < Tmax_size) { + this->ResizeFor(this->first_unused); + return this->first_unused; } - assert(this->items == Tmax_size); + assert(this->first_unused == Tmax_size); return NO_FREE_ITEM; } @@ -122,6 +128,7 @@ DEFINE_POOL_METHOD(inline void *)::AllocateItem(size_t size, size_t index) item = (Titem *)MallocT(size); } this->data[index] = item; + SetBit(this->used_bitmap[index / BITMAP_SIZE], index % BITMAP_SIZE); item->index = (Tindex)(uint)index; return item; } @@ -190,7 +197,10 @@ DEFINE_POOL_METHOD(void)::FreeItem(size_t index) this->data[index] = nullptr; this->first_free = std::min(this->first_free, index); this->items--; - if (!this->cleaning) Titem::PostDestructor(index); + if (!this->cleaning) { + ClrBit(this->used_bitmap[index / BITMAP_SIZE], index % BITMAP_SIZE); + Titem::PostDestructor(index); + } } /** Destroys all items in the pool and resets all member variables. */ @@ -202,6 +212,8 @@ DEFINE_POOL_METHOD(void)::CleanPool() } assert(this->items == 0); free(this->data); + this->used_bitmap.clear(); + this->used_bitmap.shrink_to_fit(); this->first_unused = this->first_free = this->size = 0; this->data = nullptr; this->cleaning = false; diff --git a/src/core/pool_type.hpp b/src/core/pool_type.hpp index 00547cf7c1..bb4cc4f96f 100644 --- a/src/core/pool_type.hpp +++ b/src/core/pool_type.hpp @@ -83,6 +83,9 @@ struct Pool : PoolBase { static constexpr size_t MAX_SIZE = Tmax_size; ///< Make template parameter accessible from outside + using BitmapStorage = size_t; + static constexpr size_t BITMAP_SIZE = std::numeric_limits::digits; + const char * const name; ///< Name of this pool size_t size; ///< Current allocated size @@ -95,6 +98,7 @@ struct Pool : PoolBase { bool cleaning; ///< True if cleaning pool (deleting all items) Titem **data; ///< Pointer to array of pointers to Titem + std::vector used_bitmap; ///< Bitmap of used indices. Pool(const char *name); void CleanPool() override; From 03e355323051d3da824cad697ad41976de878bb5 Mon Sep 17 00:00:00 2001 From: translators Date: Sat, 17 Feb 2024 18:35:04 +0000 Subject: [PATCH 14/19] Update: Translations from eints estonian: 15 changes by RM87 portuguese (brazilian): 42 changes by pasantoro polish: 30 changes by pAter-exe --- src/lang/afrikaans.txt | 1 - src/lang/arabic_egypt.txt | 5 -- src/lang/basque.txt | 1 - src/lang/belarusian.txt | 1 - src/lang/brazilian_portuguese.txt | 89 +++++++++++++++---------------- src/lang/bulgarian.txt | 1 - src/lang/catalan.txt | 5 -- src/lang/chuvash.txt | 1 - src/lang/croatian.txt | 1 - src/lang/czech.txt | 5 -- src/lang/danish.txt | 5 -- src/lang/dutch.txt | 5 -- src/lang/english_AU.txt | 5 -- src/lang/english_US.txt | 5 -- src/lang/esperanto.txt | 1 - src/lang/estonian.txt | 21 +++++--- src/lang/faroese.txt | 1 - src/lang/finnish.txt | 5 -- src/lang/french.txt | 5 -- src/lang/frisian.txt | 1 - src/lang/gaelic.txt | 1 - src/lang/galician.txt | 5 -- src/lang/german.txt | 5 -- src/lang/greek.txt | 1 - src/lang/hebrew.txt | 1 - src/lang/hindi.txt | 1 - src/lang/hungarian.txt | 5 -- src/lang/icelandic.txt | 1 - src/lang/ido.txt | 1 - src/lang/indonesian.txt | 1 - src/lang/irish.txt | 1 - src/lang/italian.txt | 5 -- src/lang/japanese.txt | 1 - src/lang/korean.txt | 5 -- src/lang/latin.txt | 1 - src/lang/latvian.txt | 5 -- src/lang/lithuanian.txt | 1 - src/lang/luxembourgish.txt | 5 -- src/lang/macedonian.txt | 1 - src/lang/malay.txt | 1 - src/lang/maltese.txt | 1 - src/lang/marathi.txt | 1 - src/lang/norwegian_bokmal.txt | 1 - src/lang/norwegian_nynorsk.txt | 1 - src/lang/persian.txt | 1 - src/lang/polish.txt | 65 +++++++++++----------- src/lang/portuguese.txt | 5 -- src/lang/romanian.txt | 5 -- src/lang/russian.txt | 5 -- src/lang/serbian.txt | 1 - src/lang/simplified_chinese.txt | 5 -- src/lang/slovak.txt | 1 - src/lang/slovenian.txt | 1 - src/lang/spanish.txt | 5 -- src/lang/spanish_MX.txt | 1 - src/lang/swedish.txt | 5 -- src/lang/tamil.txt | 5 -- src/lang/thai.txt | 1 - src/lang/traditional_chinese.txt | 1 - src/lang/turkish.txt | 5 -- src/lang/ukrainian.txt | 5 -- src/lang/urdu.txt | 1 - src/lang/vietnamese.txt | 5 -- src/lang/welsh.txt | 5 -- 64 files changed, 87 insertions(+), 257 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 681ecccb60..5267d5e13f 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -5141,7 +5141,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index ea53ec9899..885776d96f 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -4936,11 +4936,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 341fda56d2..7470c9b645 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -4881,7 +4881,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 92f0dea5ad..8ee170ea17 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -5612,7 +5612,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index f1c21ab5b4..160700af80 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -521,7 +521,7 @@ STR_TOOLBAR_SOUND_MUSIC :Som/música # Message menu STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Última mensagem/notícia -STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Histórico de Mensagens +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Histórico de mensagens STR_NEWS_MENU_DELETE_ALL_MESSAGES :Apagar todas as mensagens # About menu @@ -853,11 +853,11 @@ STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Empresa de transporte em apuros! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} será vendida ou declarada falida a menos que aumente o desempenho em breve! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Fusão de empresas de transportes! -STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} foi vendida a {STRING} por {CURRENCY_LONG}! +STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} foi vendida para {STRING} por {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Falida! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} foi fechada pelos credores e todos os seus bens foram vendidos! -STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nova empresa de transportes lançada! -STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} inicia construção próximo a {TOWN}! +STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nova empresa de transportes foi lançada! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} inicia construção próxima de {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} foi comprada por {STRING} por um valor não revelado! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Gerente) @@ -876,9 +876,9 @@ STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLAC STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Fim da recessão!{}{}Melhoras no comércio inspiram confiança nas indústrias à medida que a economia se fortalece! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} aumenta a produção! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nova camada de carvão encontrada em {INDUSTRY}!{}A produção deverá duplicar! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Novas reservas de petróleo encontradas em {INDUSTRY}!{}A produção deverá duplicar! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Métodos melhorados de agricultura em {INDUSTRY} deverão duplicar a produção! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nova camada de carvão encontrada na {INDUSTRY}!{}A produção deverá duplicar! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Novas reservas de petróleo encontradas {G nos na} {INDUSTRY}!{}A produção deverá duplicar! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Métodos melhorados de agricultura na {INDUSTRY} deverão duplicar a produção! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}A produção de {STRING} em {INDUSTRY} aumentou em {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}A produção de {INDUSTRY} caiu em 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Infestação de insetos causa destruição em {INDUSTRY}!{}A produção caiu em 50% @@ -919,8 +919,8 @@ STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Abrir a STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} não aceita mais: {CARGO_LIST} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} agora aceita: {CARGO_LIST} -STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta do subsídio expirou:{}{}{STRING} de {STRING} para {STRING} já não será subsidiado -STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsídio retirado:{}{}Serviço de {STRING} de {STRING} para {STRING} não é mais subsidiado +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta do subsídio expirou:{}{}{STRING} de {STRING} para {STRING} agora não será subsidiado +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsídio retirado:{}{}Transportar {STRING} de {STRING} para {STRING} não é mais subsidiado STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsídio de serviço oferecido:{}{}Primeiro {STRING} de {STRING} para {STRING} irá receber {UNITS_YEARS_OR_MINUTES} de subsídio da autoridade local! ###length 4 STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsídio de serviço concedido a {STRING}!{}{}{STRING} de {STRING} para {STRING} será pago a 150% pelos próximos {UNITS_YEARS_OR_MINUTES}! @@ -1917,8 +1917,8 @@ STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Suave STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Congelada -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Porcentagem do lucro paga em cada etapa em sistemas de baldeação: {STRING} -STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Porcentagem da receita dada às etapas intermediárias em sistemas de baldeação, dando mais controle sobre a receita +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Porcentagem do lucro da etapa a pagar em sistemas de transbordo: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Porcentagem da receita dada a trajetos intermediários em sistemas de transbordo, dando mais controle sobre a receita STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Ao arrastar, colocar sinais a cada: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Define a distância na qual os sinais serão construídos em uma via até o próximo obstáculo (sinal, junção), ao clicar e arrastar sinais @@ -2949,7 +2949,7 @@ STR_AIRPORT_HELISTATION :Heliponto STR_AIRPORT_CLASS_SMALL :Aeroportos pequenos STR_AIRPORT_CLASS_LARGE :Aeroportos grandes -STR_AIRPORT_CLASS_HUB :Aeroportos modulares +STR_AIRPORT_CLASS_HUB :Aeroportos de conexão STR_AIRPORT_CLASS_HELIPORTS :Heliportos STR_STATION_BUILD_NOISE :{BLACK}Ruído gerado: {GOLD}{COMMA} @@ -5001,7 +5001,7 @@ STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Não é STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... muito perto da borda do mapa STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... muito perto de outra localidade STR_ERROR_TOO_MANY_TOWNS :{WHITE}... existem muitas localidades -STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... não há mais espaço no mapa +STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... não existe mais espaço no mapa STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trabalhos na estrada sendo realizados STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Não é possível remover esta localidade...{}Uma estação ou depósito refere-se à localidade ou não é possível remover um quadrado pertencente à mesma STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... não há local adequado para uma estátua no centro desta localidade @@ -5029,7 +5029,7 @@ STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... só STR_ERROR_PROSPECTING_WAS_UNLUCKY :{WHITE}O financiamento falhou em prospectar devido ao azar; tente novamente STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}Não havia locais adequados para prospectar por esta indústria STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Não havia locais adequados para indústrias de '{STRING}' -STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Mude os parâmetros de geração do mapa para obter um mapa melhor +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Alterar os parâmetros de geração do mapa para obter um mapa melhor # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Não é possível construir estação ferroviária neste local... @@ -5128,7 +5128,7 @@ STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}O novo v # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinação de linhas impossível STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Precisa remover os sinais primeiro -STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Tipo de ferrovia inadequado +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ferrovia não adequada STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Precisa remover a ferrovia primeiro STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Estrada de sentido único ou bloqueada STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Cruzamentos de nível não são permitidos neste tipo de linha @@ -5154,8 +5154,8 @@ STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... não STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... não há linha de bonde STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Não é possível converter o tipo de estrada deste local... STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Não é possível converter o tipo de linha de bonde deste local... -STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Sem estrada adequada -STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Nenhuma linha de bonde adequada +STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Estrada não adequada +STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Linha de bonde não adequada # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Não é possível construir canais neste local... @@ -5163,7 +5163,7 @@ STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Não é STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Não é possível colocar rios neste local... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... deve ser construído na água STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... não é possível construir na água -STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... não é possível construir no mar aberto +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... não é possível construir em mar aberto STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... não é possível construir em um canal STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... não é possível construir em um rio STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Precisa demolir o canal primeiro @@ -5278,8 +5278,8 @@ STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... o ve STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}... nem todos os veículos são idênticos STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Nenhum veículo estará disponível -STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Mudar a sua configuração de NewGRF -STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Não há veículos disponíveis ainda +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Mudar a configuração de NewGRF +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Não existem veículos disponíveis ainda STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Começar um novo jogo depois de {DATE_SHORT} ou utilizar um NewGRF que forneça os veículos iniciais # Specific vehicle errors @@ -5313,18 +5313,18 @@ STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... muit STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... aeronave não tem alcance suficiente # Extra messages which go on the third line of errors, explaining why orders failed -STR_ERROR_NO_RAIL_STATION :{WHITE}Não há estação ferroviária -STR_ERROR_NO_BUS_STATION :{WHITE}Não há estação de ônibus -STR_ERROR_NO_TRUCK_STATION :{WHITE}Não há estação de caminhões -STR_ERROR_NO_DOCK :{WHITE}Não há doca -STR_ERROR_NO_AIRPORT :{WHITE}Não há aeroporto/heliporto -STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Não há paradas com um tipo de estrada compatível -STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Não há paradas com um tipo de bonde compatível -STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Não há paradas adequadas para veículos rodoviários articulados.{}Os veículos rodoviários articulados precisam parar em estações de passagem ("drive-through") e não em estações padrão +STR_ERROR_NO_RAIL_STATION :{WHITE}Não existe uma estação ferroviária +STR_ERROR_NO_BUS_STATION :{WHITE}Não existe uma estação de ônibus +STR_ERROR_NO_TRUCK_STATION :{WHITE}Não existe uma estação de caminhões +STR_ERROR_NO_DOCK :{WHITE}Não existe uma doca +STR_ERROR_NO_AIRPORT :{WHITE}Não existe um aeroporto/heliporto +STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Não existem paradas com tipo de estrada compatível +STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Não existem paradas com tipo de bonde compatível +STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Não existem paradas adequadas para veículos rodoviários articulados.{}Os veículos rodoviários articulados precisam parar em estações de passagem ("drive-through") e não em estações padrão STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Este avião não pode pousar neste heliporto STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Este helicóptero não pode pousar neste aeroporto -STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Não há ponto de controle ferroviário -STR_ERROR_NO_BUOY :{WHITE}Não há boia +STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Não existe um ponto de controle ferroviário +STR_ERROR_NO_BUOY :{WHITE}Não existe uma boia # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Não é possível programar veículo... @@ -5337,7 +5337,7 @@ STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... o ho STR_ERROR_TOO_MANY_SIGNS :{WHITE}... existem muitas placas STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Não é possível colocar placa neste local... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Não é possível alterar o nome da placa... -STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Não é possível remover placa +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Não é possível remover a placa... # Translatable comment for OpenTTD's desktop shortcut ###external 1 @@ -5429,7 +5429,7 @@ STR_INDUSTRY_NAME_TOY_FACTORY :Fábrica de Bri STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Fontes de Plástico STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Fábrica de Refrigerantes STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Gerador de Bolhas -STR_INDUSTRY_NAME_TOFFEE_QUARRY :Extração de Caramelo +STR_INDUSTRY_NAME_TOFFEE_QUARRY :Pedreira de Caramelo STR_INDUSTRY_NAME_SUGAR_MINE :Mina de Açúcar ############ WARNING, using range 0x6000 for strings that are stored in the savegame @@ -5439,7 +5439,7 @@ STR_INDUSTRY_NAME_SUGAR_MINE :Mina de Açúca STR_SV_EMPTY : STR_SV_UNNAMED :Sem nome STR_SV_TRAIN_NAME :Trem #{COMMA} -STR_SV_ROAD_VEHICLE_NAME :Veículo Rodoviário #{COMMA} +STR_SV_ROAD_VEHICLE_NAME :Veículo #{COMMA} STR_SV_SHIP_NAME :Embarcação #{COMMA} STR_SV_AIRCRAFT_NAME :Aeronave #{COMMA} @@ -5449,12 +5449,12 @@ STR_SV_STNAME_NORTH :Norte de {STRIN STR_SV_STNAME_SOUTH :Sul de {STRING} STR_SV_STNAME_EAST :Leste de {STRING} STR_SV_STNAME_WEST :Oeste de {STRING} -STR_SV_STNAME_CENTRAL :Central de {STRING} -STR_SV_STNAME_TRANSFER :Baldeação de {STRING} +STR_SV_STNAME_CENTRAL :Centro de {STRING} +STR_SV_STNAME_TRANSFER :Transbordo de {STRING} STR_SV_STNAME_HALT :Parada de {STRING} STR_SV_STNAME_VALLEY :Vale de {STRING} STR_SV_STNAME_HEIGHTS :Montes de {STRING} -STR_SV_STNAME_WOODS :Floresta de {STRING} +STR_SV_STNAME_WOODS :Bosques de {STRING} STR_SV_STNAME_LAKESIDE :Lago de {STRING} STR_SV_STNAME_EXCHANGE :Intercâmbio de {STRING} STR_SV_STNAME_AIRPORT :Aeroporto de {STRING} @@ -5467,8 +5467,8 @@ STR_SV_STNAME_WAYPOINT :{STRING} STR_SV_STNAME_ANNEXE :Anexo de {STRING} STR_SV_STNAME_SIDINGS :Desvios de {STRING} STR_SV_STNAME_BRANCH :Ramal de {STRING} -STR_SV_STNAME_UPPER :{STRING} Superior -STR_SV_STNAME_LOWER :{STRING} Inferior +STR_SV_STNAME_UPPER :{STRING} de Cima +STR_SV_STNAME_LOWER :{STRING} de Baixo STR_SV_STNAME_HELIPORT :Heliporto de {STRING} STR_SV_STNAME_FOREST :Floresta de {STRING} STR_SV_STNAME_FALLBACK :Estação de {STRING} #{NUM} @@ -5530,7 +5530,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Vagão de Xarop STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Vagão de Doces STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Vagão de Brinquedos STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Vagão de Pilhas -STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Tanque de Refrigerante +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Vagão de Refrigerantes STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Vagão de Plástico STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elétrico) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elétrico) @@ -5749,7 +5749,7 @@ STR_FORMAT_DATE_LONG :{STRING} {STRIN STR_FORMAT_DATE_ISO :{2:NUM}-{1:ZEROFILL_NUM}-{0:ZEROFILL_NUM} STR_FORMAT_COMPANY_NUM :(Empresa {COMMA}) -STR_FORMAT_GROUP_NAME :Agrupar {COMMA} +STR_FORMAT_GROUP_NAME :Grupo {COMMA} STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} de {0:TOWN} @@ -5764,8 +5764,8 @@ STR_FORMAT_WAYPOINT_NAME_SERIAL :Ponto de contro ###length 6 STR_FORMAT_DEPOT_NAME_TRAIN :Depósito Ferroviário de {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Depósito Ferroviário de {TOWN} #{COMMA} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Depósito de Veículos Rodoviários de {TOWN} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Depósito de Veículos Rodoviários de {TOWN} #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Depósito Rodoviário de {TOWN} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Depósito Rodoviário de {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :Depósito de Embarcações de {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Depósito de Embarcações de {TOWN} #{COMMA} ###next-name-looks-similar @@ -5811,11 +5811,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index ca619aa617..97b622c9a0 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -5181,7 +5181,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 6fbc01980e..4d5b07f67a 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -5811,11 +5811,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}M -STR_CURRENCY_SHORT_GIGA :{NBSP}G -STR_CURRENCY_SHORT_TERA :{NBSP}T - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index c9c343faf0..09bbeb5ec1 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -1811,7 +1811,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 9f6081ca8a..9082c48ff1 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -5367,7 +5367,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/czech.txt b/src/lang/czech.txt index f0d56c383b..8a0d5ff9ea 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -6030,11 +6030,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}tis. -STR_CURRENCY_SHORT_MEGA :{NBSP}mil. -STR_CURRENCY_SHORT_GIGA :{NBSP}mld. -STR_CURRENCY_SHORT_TERA :{NBSP}bil. - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 83f6f9dd80..5ea827daee 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -5798,11 +5798,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 2a2f0400c0..13830758c9 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -5810,11 +5810,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}mj -STR_CURRENCY_SHORT_GIGA :{NBSP}md -STR_CURRENCY_SHORT_TERA :{NBSP}bn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 0fe21eb26f..922898c213 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -5810,11 +5810,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 86c3abb62f..f06388201c 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -5810,11 +5810,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}K -STR_CURRENCY_SHORT_MEGA :{NBSP}M -STR_CURRENCY_SHORT_GIGA :{NBSP}B -STR_CURRENCY_SHORT_TERA :{NBSP}T - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index 63ee040657..d88b50a695 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -5510,7 +5510,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index fa3a849e90..7097474813 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -990,6 +990,11 @@ STR_GAME_OPTIONS_TAB_SOCIAL_TT :{BLACK}Vali sot STR_GAME_OPTIONS_VOLUME :Helitase +STR_GAME_OPTIONS_VOLUME_0 :0% +STR_GAME_OPTIONS_VOLUME_25 :25% +STR_GAME_OPTIONS_VOLUME_50 :50% +STR_GAME_OPTIONS_VOLUME_75 :75% +STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valuuta valimine @@ -1121,6 +1126,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Rohkem t +STR_BASESET_STATUS :{STRING} {RED}({NUM} puuduv/vigane fail{P "" s}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Ei õnnestunud tuvastada toetatud resulutsioone STR_ERROR_FULLSCREEN_FAILED :{WHITE}Täisekraanrežiim ebaõnnestus @@ -2217,7 +2223,7 @@ STR_HELP_WINDOW_BUGTRACKER :{BLACK}Teata ve STR_HELP_WINDOW_COMMUNITY :{BLACK}Kogukond # Cheat window -STR_CHEATS :{WHITE}Petmine +STR_CHEATS :{WHITE}Liivakasti valikud STR_CHEAT_MONEY :{LTBLUE}Suurenda raha hulka {CURRENCY_LONG} võrra STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Mängimine ettevõttena: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Võlubuldooser (eemaldab tööstused, paiksed objektid): {ORANGE}{STRING} @@ -2725,6 +2731,8 @@ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Lülita STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Lülita sisse jaama mõjupiirkonna näitamine STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Võtab vastu: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Tarnib: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_INFRASTRUCTURE_COST_YEAR :{BLACK}Hoolduskulu: {GOLD}{CURRENCY_SHORT}/aasta +STR_STATION_BUILD_INFRASTRUCTURE_COST_PERIOD :{BLACK}Hoolduskulu: {GOLD}{CURRENCY_SHORT}/periood # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Liida jaamale @@ -3665,6 +3673,8 @@ STR_SUBSIDIES_NONE :{ORANGE}Mitte STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Juba toetatavad veoteenused: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} kohast {STRING} kohta {STRING}{YELLOW} ({COMPANY}{YELLOW}, {STRING}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Vajuta pakkumisele, et keskendada vaade tööstusele/asustusele. Ctrl+klõps avab uue vaate ettevõtte/asustuse asukohas +STR_SUBSIDIES_SUBSIDISED_EXPIRY_DATE :kuni {DATE_SHORT} +STR_SUBSIDIES_SUBSIDISED_EXPIRY_TIME :{UNITS_MONTHS_OR_MINUTES} jäänud # Story book window STR_STORY_BOOK_CAPTION :{WHITE}«{COMPANY}» juturaamat @@ -3974,7 +3984,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Eemalda kõik s STR_GROUP_RENAME_CAPTION :{BLACK}Ümbernimeta jagu STR_GROUP_PROFIT_THIS_YEAR :Selle aasta kasum: +STR_GROUP_PROFIT_THIS_PERIOD :Kasum sellel perioodil: STR_GROUP_PROFIT_LAST_YEAR :Eelmise aasta kasum: +STR_GROUP_PROFIT_LAST_PERIOD :Kasum eelmisel perioodil: STR_GROUP_OCCUPANCY :Koormatus: STR_GROUP_OCCUPANCY_VALUE :{NUM}% @@ -4653,6 +4665,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Eeldatav STR_TIMETABLE_SCHEDULED :{BLACK}Plaanis STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Vaheta eeldatava ja graafiku vahel +STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY} STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} sek STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} sek @@ -5695,11 +5709,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index 569577ddf3..440326ac82 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -4530,7 +4530,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 9d7bf7ecfd..968c9e55ef 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -5810,11 +5810,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}000 -STR_CURRENCY_SHORT_MEGA :{NBSP}milj. -STR_CURRENCY_SHORT_GIGA :{NBSP}mrd. -STR_CURRENCY_SHORT_TERA :{NBSP} t - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/french.txt b/src/lang/french.txt index 9aabc02e7e..e511770690 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -5811,11 +5811,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}Mio -STR_CURRENCY_SHORT_GIGA :{NBSP}Mrd -STR_CURRENCY_SHORT_TERA :{NBSP}kMrd - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index cd7fd30d3a..1ba1ba3026 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -4719,7 +4719,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index e460b6de93..19c4e0cd05 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -5434,7 +5434,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/galician.txt b/src/lang/galician.txt index ed0aa57b65..d1c1a27923 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -5811,11 +5811,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}M -STR_CURRENCY_SHORT_GIGA :{NBSP}MM -STR_CURRENCY_SHORT_TERA :{NBSP}bn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/german.txt b/src/lang/german.txt index 50119e7ef3..49793f4f77 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -5811,11 +5811,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}t -STR_CURRENCY_SHORT_MEGA :{NBSP}Mio -STR_CURRENCY_SHORT_GIGA :{NBSP}Mrd -STR_CURRENCY_SHORT_TERA :{NBSP}Bio - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/greek.txt b/src/lang/greek.txt index defd2cc677..e3edaadd0f 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -5570,7 +5570,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 967cfd70b8..d2018578ac 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -5207,7 +5207,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 8d5b3ae4a5..b74daeea8d 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -1628,7 +1628,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 5e54db6e06..af2a37dfdc 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -5832,11 +5832,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}e -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}mrd -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 92fe59381b..543b794986 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -4769,7 +4769,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/ido.txt b/src/lang/ido.txt index 1dbc15dbe8..2b81cd9924 100644 --- a/src/lang/ido.txt +++ b/src/lang/ido.txt @@ -1703,7 +1703,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 382bf745f5..c0cb610f25 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -5665,7 +5665,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/irish.txt b/src/lang/irish.txt index cef30b130a..8440faf9a8 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -5383,7 +5383,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/italian.txt b/src/lang/italian.txt index fdc1594b89..82bddf8727 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -5851,11 +5851,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index d60c387efa..191becae76 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -5521,7 +5521,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/korean.txt b/src/lang/korean.txt index b459fe6407..925e218d34 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -5811,11 +5811,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :k -STR_CURRENCY_SHORT_MEGA :m -STR_CURRENCY_SHORT_GIGA :bn -STR_CURRENCY_SHORT_TERA :tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 6a2096a6b6..d6f517df5d 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -5384,7 +5384,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 4865805bb9..80f7f906ca 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -5821,11 +5821,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}tk. -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}mljrd. -STR_CURRENCY_SHORT_TERA :{NBSP}tonna - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 0402163e24..4c77b0f020 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -5939,7 +5939,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 433c9413a5..5f1351a2d0 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -5810,11 +5810,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}d -STR_CURRENCY_SHORT_MEGA :{NBSP}Mio -STR_CURRENCY_SHORT_GIGA :{NBSP}Mrd -STR_CURRENCY_SHORT_TERA :{NBSP}Bio - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index 7784db9afd..dfdeb86f07 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -2221,7 +2221,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/malay.txt b/src/lang/malay.txt index 3fc33f2a26..617b65b835 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -4676,7 +4676,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/maltese.txt b/src/lang/maltese.txt index d7265182f3..8f1adc6abd 100644 --- a/src/lang/maltese.txt +++ b/src/lang/maltese.txt @@ -1747,7 +1747,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 2f39ce22c8..b92546fa41 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -2095,7 +2095,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index e38c060fbb..4d2be675aa 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -5414,7 +5414,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index e2db8bb342..bdfc871aa2 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -4911,7 +4911,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/persian.txt b/src/lang/persian.txt index e950b1f302..5790d9c396 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -4232,7 +4232,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/polish.txt b/src/lang/polish.txt index da3eb523ed..631c99a612 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -874,25 +874,25 @@ STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Łańcuchy prod STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Ufunduj nowe przedsiębiorstwo # URailway construction menu -STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Konstrukcja linii kolejowej -STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Konstrukcja linii zelektryfikowanej -STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Konstrukcja linii jednoszynowej -STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Konstrukcja linii Maglev +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Budowa linii kolejowej +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Budowa linii zelektryfikowanej +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Budowa linii jednoszynowej +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Budowa linii Maglev # Road construction menu STR_ROAD_MENU_ROAD_CONSTRUCTION :Budowa drogi STR_ROAD_MENU_TRAM_CONSTRUCTION :Budowa linii tramwajowej # Waterways construction menu -STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Konstrukcja kanału wodnego +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Budowa dróg wodnych # Aairport construction menu -STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Konstrukcje lotnicze +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Budowa lotnisk # Landscaping menu STR_LANDSCAPING_MENU_LANDSCAPING :Kształtowanie krajobrazu -STR_LANDSCAPING_MENU_PLANT_TREES :Posadź drzewa -STR_LANDSCAPING_MENU_PLACE_SIGN :Umieść napis +STR_LANDSCAPING_MENU_PLANT_TREES :Sadzenie drzew +STR_LANDSCAPING_MENU_PLACE_SIGN :Umieszczanie napisów # Music menu STR_TOOLBAR_SOUND_MUSIC :Dźwięk/muzyka @@ -1240,7 +1240,7 @@ STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLAC STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} zostało przejęte przez {STRING} za nieujawnioną kwotę! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Prezes) -STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponsoruje konstrukcję nowego miasta {TOWN}! +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponsoruje budowę nowego miasta {TOWN}! STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Zostało wybudowane nowe miasto o nazwie {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Rozpoczęto budowę nowe{G go j go} {STRING.d} blisko {TOWN}! @@ -1666,7 +1666,7 @@ STR_CONFIG_SETTING_RUNNING_COSTS :Koszty amortyza STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Ustaw poziom kosztów utrzymania i amortyzacji pojazdów i infrastruktury STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Szybkość budowy: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Ogranicz ilość czynności konstrukcyjnych wykonywanych przez SI +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Ogranicz ilość czynności budowlanych wykonywanych przez SI STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Awarie pojazdów: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Kontroluj jak często nieodpowiednio serwisowane pojazdy mogą się psuć @@ -1683,8 +1683,8 @@ STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE :{UNITS_YEARS_OR ###setting-zero-is-special STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Brak dotacji -STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Koszty konstrukcji: {STRING} -STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Ustaw poziom kosztów konstrukcji i kupna +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Koszty budowy: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Ustaw poziom kosztów budowy i kupna STR_CONFIG_SETTING_RECESSIONS :Kryzys: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Jeśli włączone, kryzys może występować okresowo. Podczas kryzysu produkcja jest znacznie niższa (powraca do poprzedniego poziomu, kiedy kryzys się kończy) @@ -1756,7 +1756,7 @@ STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksymalna dłu STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksymalna długość budowanych tuneli STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Budowa przedsiębiorstw wydobywczych: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metoda finansowania podstawowych przedsiębiorstw. „Niedostępna” oznacza brak możliwości finansowania czegokolwiek, „poszukiwania” oznacza, że finansowanie jest możliwe, ale konstrukcja pojawi się w losowym miejscu na mapie (oraz losowo budowa może zakończyć się porażką), „jak inne przedsiębiorstwa” oznacza, że przemysł wydobywczy może być budowany tak jak fabryki przetwórcze, w dowolnym miejscu +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metoda finansowania przedsiębiorstw wydobywczych. „Niedostępna” oznacza brak możliwości finansowania czegokolwiek, „poszukiwania” oznacza, że finansowanie jest możliwe, ale budowa pojawi się w losowym miejscu na mapie (oraz losowo budowa może zakończyć się porażką), „jak inne przedsiębiorstwa” oznacza, że przedsiębiorstwa wydobywcze mogą być budowane przez firmy tak jak przedsiębiorstwa przetwórcze, w dowolnym miejscu ###length 3 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Niedostępna STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Jak inne przedsiębiorstwa @@ -1998,8 +1998,8 @@ STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maksymalny obsz STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatycznie serwisuj helikoptery na lądowiskach: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Serwisuj helikoptery po każdym lądowaniu, nawet jeśli na lądowisku nie ma hangaru -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Przyłącz narzędzia krajobrazu do okien środków transportu: {STRING} -STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Otwierając pasek konstrukcji typu transportu, otwieraj też pasek formowania terenu +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Przyłącz narzędzia kształtowania krajobrazu do narzędzi budowy środków transportu: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Otwierając pasek budowy typu transportu, otwieraj też pasek kształtowania terenu STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Kolor lądu używany w minimapie: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Kolor terenu na minimapie @@ -2093,7 +2093,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Zezwól w czasi STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Wybierz, jakich akcji można dokonywać, gdy gra jest wstrzymana (włączona jest pauza) ###length 4 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Brak działań -STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Wszystkie niezwiązane z konstrukcją +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Wszystkie niezwiązane z budowaniem STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Wszystkie oprócz modyfikowania terenu STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Wszystkie działania @@ -2489,7 +2489,7 @@ STR_CONFIG_SETTING_SOUND :Dźwięk STR_CONFIG_SETTING_INTERFACE :Interfejs STR_CONFIG_SETTING_INTERFACE_GENERAL :Ogólne STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Widok -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstrukcje +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Budowa STR_CONFIG_SETTING_ADVISORS :Wiadomości i porady STR_CONFIG_SETTING_COMPANY :Firma STR_CONFIG_SETTING_ACCOUNTING :Finanse @@ -3158,10 +3158,10 @@ STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Zbuduj STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Nieaktywne, ponieważ nie są dostępne pojazdy korzystające z takiej infrastruktury # Rail construction toolbar -STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Konstrukcja linii kolejowej -STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Konstrukcja linii zelektryfikowanej -STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Konstrukcja linii jednoszynowej -STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Konstrukcja linii Maglev +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Budowa linii kolejowej +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Budowa linii zelektryfikowanej +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Budowa linii jednoszynowej +STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Budowa linii Maglev STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Zbuduj tory kolejowe. Użyj Ctrl, aby usunąć tory. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Zbuduj tory kolejowe za pomocą trybu Autotory. Użyj Ctrl, aby usunąć tory. Użyj Shift, aby tylko wyświetlić szacunkowy koszt @@ -3263,8 +3263,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Zbuduj m STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Zbuduj most tramwajowy. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Zbuduj tunel drogowy. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Zbuduj tunel tramwajowy. Użyj Shift, aby tylko wyświetlić szacunkowy koszt -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Przełącz buduj/usuń dla konstrukcji dróg -STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Przełącz buduj/usuń dla konstrukcji tramwajowej +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Przełącz budowanie/usuwanie dróg +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Przełącz budowanie/usuwanie linii tramwajowej STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Zmień typ drogi. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Zmień typ torów tramwajowych. Użyj Shift, aby tylko wyświetlić szacunkowy koszt @@ -3288,7 +3288,7 @@ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Ukierunk STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie tramwajowej stacji załadunkowej # Waterways toolbar (last two for SE only) -STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Konstrukcja kanału wodnego +STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Budowa dróg wodnych STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Kanał wodny STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Zbuduj kanał wodny. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Zbuduj śluzę wodną. Użyj Shift, aby tylko wyświetlić szacunkowy koszt @@ -3352,8 +3352,8 @@ STR_OBJECT_CLASS_TRNS :Nadajniki # Tree planting window (last eight for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Drzewa -STR_PLANT_TREE_TOOLTIP :{BLACK}Wybierz typ drzew do sadzenia. Jeśli na wybranym miejscu są już drzewa, to dodasz więcej drzew różnego typu, bez względu na wybraną opcję. -STR_TREES_RANDOM_TYPE :{BLACK}Drzewa różnych rodzajów +STR_PLANT_TREE_TOOLTIP :{BLACK}Wybierz typ drzew do zasadzenia. Jeśli w wybranym miejscu są już drzewa, to zostanie dodanych więcej drzew różnego typu, bez względu na wybraną opcję +STR_TREES_RANDOM_TYPE :{BLACK}Drzewa różnego rodzaju STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Posadź drzewa różnego rodzaju. Przeciągnij z użyciem Ctrl, aby zaznaczyć obszar po przekątnej. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Losowe drzewa STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Pokryj losowo krajobraz drzewami @@ -4218,7 +4218,7 @@ STR_FINANCES_CAPITAL_EXPENSES_TITLE :{WHITE}Wydatki ###length 13 -STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstrukcje +STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Budowa STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nowe pojazdy STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Pociągi STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Pojazdy drogowe @@ -4271,11 +4271,11 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} lotnisk{P o a ""} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Brak -STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Budowa Siedziby +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Zbuduj Siedzibę STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Zbuduj siedzibę firmy -STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Zobacz SG +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Zobacz Siedzibę STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Zobacz siedzibę firmy -STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Przenieś SG +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Przenieś Siedzibę STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Zbuduj siedzibę główną w innym miejscu za cenę 1% wartości firmy. Użyj Shift, aby tylko wyświetlić szacunkowy koszt STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Szczegóły STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Zobacz szczegółowe wartości infrastruktury @@ -6251,11 +6251,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}M -STR_CURRENCY_SHORT_GIGA :{NBSP}G -STR_CURRENCY_SHORT_TERA :{NBSP}T - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 153bd55a7e..875dfae52e 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -5811,11 +5811,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 07d5a9e3f1..876123b52b 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -5810,11 +5810,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}mii -STR_CURRENCY_SHORT_MEGA :{NBSP}mil. -STR_CURRENCY_SHORT_GIGA :{NBSP}mld. -STR_CURRENCY_SHORT_TERA :{NBSP}bil. - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 9f1f69053f..1091c251cd 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -6034,11 +6034,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}тыс. -STR_CURRENCY_SHORT_MEGA :{NBSP}млн -STR_CURRENCY_SHORT_GIGA :{NBSP}млрд. -STR_CURRENCY_SHORT_TERA :{NBSP}трлн. - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index dff4ddf374..f4ad79777e 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -5718,7 +5718,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 229c70bafd..ba65d691e8 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -5806,11 +5806,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :b -STR_CURRENCY_SHORT_TERA :t - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 054c47296a..93073e0b06 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -5609,7 +5609,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 24bafd751f..d97aeeeb18 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -5207,7 +5207,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 0e8d0cec05..18aca24599 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -5811,11 +5811,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}M -STR_CURRENCY_SHORT_GIGA :{NBSP}kM -STR_CURRENCY_SHORT_TERA :{NBSP}MM - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 3d26864eb4..758b29f7a6 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -5515,7 +5515,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 8fbaa02871..7132ef365d 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -5810,11 +5810,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}t -STR_CURRENCY_SHORT_MEGA :{NBSP}mn -STR_CURRENCY_SHORT_GIGA :{NBSP}md -STR_CURRENCY_SHORT_TERA :{NBSP}bn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index d85f12f93f..c1c1cbc4f8 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -5338,11 +5338,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 360969bb68..dd92358d9c 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -5117,7 +5117,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index bbf04c75ee..5d5bc5ad8a 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -5567,7 +5567,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 9d2ca41d00..9e1ff299b0 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -5821,11 +5821,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}mlyn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index ad4e4933c1..683d23706b 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -5799,11 +5799,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}тис. -STR_CURRENCY_SHORT_MEGA :{NBSP}млн -STR_CURRENCY_SHORT_GIGA :{NBSP}млрд -STR_CURRENCY_SHORT_TERA :{NBSP}трлн - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 9b97b37516..fc6e53dafc 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -3142,7 +3142,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index bfc988b645..f3d8e5da72 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -5810,11 +5810,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 37a5cf8be4..b869e2095e 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -5408,11 +5408,6 @@ STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} -STR_CURRENCY_SHORT_KILO :{NBSP}k -STR_CURRENCY_SHORT_MEGA :{NBSP}m -STR_CURRENCY_SHORT_GIGA :{NBSP}bn -STR_CURRENCY_SHORT_TERA :{NBSP}tn - STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} From 360fe8b0b639be9d39bc03a9d5d34123204c14fa Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sat, 17 Feb 2024 22:06:39 +0100 Subject: [PATCH 15/19] Fix a253205: division by zero when attempting to format some short currencies --- src/strings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings.cpp b/src/strings.cpp index a4fffe60b2..8864fdb67e 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -404,7 +404,7 @@ void InitializeNumberFormats() loaded_number_abbreviations = !res.has_value(); } if (!loaded_number_abbreviations) ParseNumberAbbreviations(_number_abbreviations, _current_language->number_abbreviations); - _number_abbreviations.emplace_back(0, _number_format_separators); + _number_abbreviations.emplace_back(1, _number_format_separators); } /** From 8a1cea2ab65d43f61b168508543cc400403ecb6c Mon Sep 17 00:00:00 2001 From: Koen Bussemaker Date: Sat, 17 Feb 2024 20:15:43 +0100 Subject: [PATCH 16/19] Codechange: Skip non-water water region patches in neigbor search --- src/pathfinder/water_regions.cpp | 6 +++++- src/pathfinder/water_regions.h | 1 + src/pathfinder/yapf/yapf_ship_regions.cpp | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/pathfinder/water_regions.cpp b/src/pathfinder/water_regions.cpp index 115213491a..f5bc761d1b 100644 --- a/src/pathfinder/water_regions.cpp +++ b/src/pathfinder/water_regions.cpp @@ -22,7 +22,6 @@ using TWaterRegionTraversabilityBits = uint16_t; constexpr TWaterRegionPatchLabel FIRST_REGION_LABEL = 1; -constexpr TWaterRegionPatchLabel INVALID_WATER_REGION_PATCH = 0; static_assert(sizeof(TWaterRegionTraversabilityBits) * 8 == WATER_REGION_EDGE_LENGTH); static_assert(sizeof(TWaterRegionPatchLabel) == sizeof(byte)); // Important for the hash calculation. @@ -321,6 +320,8 @@ void InvalidateWaterRegion(TileIndex tile) */ static inline void VisitAdjacentWaterRegionPatchNeighbors(const WaterRegionPatchDesc &water_region_patch, DiagDirection side, TVisitWaterRegionPatchCallBack &func) { + if (water_region_patch.label == INVALID_WATER_REGION_PATCH) return; + const WaterRegion ¤t_region = GetUpdatedWaterRegion(water_region_patch.x, water_region_patch.y); const TileIndexDiffC offset = TileIndexDiffCByDiagDir(side); @@ -354,6 +355,7 @@ static inline void VisitAdjacentWaterRegionPatchNeighbors(const WaterRegionPatch const TileIndex neighbor_edge_tile = GetEdgeTileCoordinate(nx, ny, opposite_side, x_or_y); const TWaterRegionPatchLabel neighbor_label = neighboring_region.GetLabel(neighbor_edge_tile); + assert(neighbor_label != INVALID_WATER_REGION_PATCH); if (std::find(unique_labels.begin(), unique_labels.end(), neighbor_label) == unique_labels.end()) unique_labels.push_back(neighbor_label); } for (TWaterRegionPatchLabel unique_label : unique_labels) func(WaterRegionPatchDesc{ nx, ny, unique_label }); @@ -367,6 +369,8 @@ static inline void VisitAdjacentWaterRegionPatchNeighbors(const WaterRegionPatch */ void VisitWaterRegionPatchNeighbors(const WaterRegionPatchDesc &water_region_patch, TVisitWaterRegionPatchCallBack &callback) { + if (water_region_patch.label == INVALID_WATER_REGION_PATCH) return; + const WaterRegion ¤t_region = GetUpdatedWaterRegion(water_region_patch.x, water_region_patch.y); /* Visit adjacent water region patches in each cardinal direction */ diff --git a/src/pathfinder/water_regions.h b/src/pathfinder/water_regions.h index 88a9df8ef3..451514376b 100644 --- a/src/pathfinder/water_regions.h +++ b/src/pathfinder/water_regions.h @@ -18,6 +18,7 @@ using TWaterRegionIndex = uint; constexpr int WATER_REGION_EDGE_LENGTH = 16; constexpr int WATER_REGION_NUMBER_OF_TILES = WATER_REGION_EDGE_LENGTH * WATER_REGION_EDGE_LENGTH; +constexpr TWaterRegionPatchLabel INVALID_WATER_REGION_PATCH = 0; /** * Describes a single interconnected patch of water within a particular water region. diff --git a/src/pathfinder/yapf/yapf_ship_regions.cpp b/src/pathfinder/yapf/yapf_ship_regions.cpp index 1f0e4bf76c..fa54c2ec0e 100644 --- a/src/pathfinder/yapf/yapf_ship_regions.cpp +++ b/src/pathfinder/yapf/yapf_ship_regions.cpp @@ -102,6 +102,7 @@ private: public: void AddOrigin(const WaterRegionPatchDesc &water_region_patch) { + if (water_region_patch.label == INVALID_WATER_REGION_PATCH) return; if (!HasOrigin(water_region_patch)) m_origin_keys.push_back(CYapfRegionPatchNodeKey{ water_region_patch }); } From f20d241e8107ab551cc3cba463ffcb234df2dc3c Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 18 Feb 2024 12:20:11 +0000 Subject: [PATCH 17/19] Fix a258833: Don't invalidate station list on vehicle load/unload. (#12112) a258833 fixed a bug but as a result causes the station list to be rebuilt every time (once per game tick) a vehicle loads/unloads. Instead just mark the window for redraw. --- src/economy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/economy.cpp b/src/economy.cpp index 7b262e7d4d..d699d8f5d0 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -1942,7 +1942,7 @@ static void LoadUnloadVehicle(Vehicle *front) if (dirty_station) { st->MarkTilesDirty(true); SetWindowDirty(WC_STATION_VIEW, st->index); - InvalidateWindowData(WC_STATION_LIST, st->owner); + SetWindowDirty(WC_STATION_LIST, st->owner); } } From 49c321575153010dd9aac04326e66d50f765ba09 Mon Sep 17 00:00:00 2001 From: Damian Laczak Date: Mon, 26 Jun 2023 02:11:04 +0200 Subject: [PATCH 18/19] Fix #10983: [AdminPort] Correct order of messages --- src/company_cmd.cpp | 12 +++++++++--- src/network/network_admin.cpp | 9 +++------ src/network/network_admin.h | 2 +- src/network/network_server.cpp | 3 --- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 80e62ade16..e73ebedec4 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -888,6 +888,11 @@ CommandCost CmdCompanyCtrl(DoCommandFlag flags, CompanyCtrlAction cca, CompanyID break; } + /* Send new companies, before potentially setting the password. Otherwise, + * the password update could be sent when the company is not yet known. */ + NetworkAdminCompanyNew(c); + NetworkServerNewCompany(c, ci); + /* This is the client (or non-dedicated server) who wants a new company */ if (client_id == _network_own_client_id) { assert(_local_company == COMPANY_SPECTATOR); @@ -906,8 +911,6 @@ CommandCost CmdCompanyCtrl(DoCommandFlag flags, CompanyCtrlAction cca, CompanyID MarkWholeScreenDirty(); } - - NetworkServerNewCompany(c, ci); break; } @@ -923,7 +926,10 @@ CommandCost CmdCompanyCtrl(DoCommandFlag flags, CompanyCtrlAction cca, CompanyID assert(company_id == INVALID_COMPANY || !Company::IsValidID(company_id)); Company *c = DoStartupNewCompany(true, company_id); - if (c != nullptr) NetworkServerNewCompany(c, nullptr); + if (c != nullptr) { + NetworkAdminCompanyNew(c); + NetworkServerNewCompany(c, nullptr); + } break; } diff --git a/src/network/network_admin.cpp b/src/network/network_admin.cpp index a9633c4437..028acc4d72 100644 --- a/src/network/network_admin.cpp +++ b/src/network/network_admin.cpp @@ -853,11 +853,10 @@ void NetworkAdminClientError(ClientID client_id, NetworkErrorCode error_code) } /** - * Notify the admin network of company details. + * Notify the admin network of a new company. * @param company the company of which details will be sent into the admin network. - * @param new_company whether this is a new company or not. */ -void NetworkAdminCompanyInfo(const Company *company, bool new_company) +void NetworkAdminCompanyNew(const Company *company) { if (company == nullptr) { Debug(net, 1, "[admin] Empty company given for update"); @@ -867,10 +866,8 @@ void NetworkAdminCompanyInfo(const Company *company, bool new_company) for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) { if (as->update_frequency[ADMIN_UPDATE_COMPANY_INFO] != ADMIN_FREQUENCY_AUTOMATIC) continue; + as->SendCompanyNew(company->index); as->SendCompanyInfo(company); - if (new_company) { - as->SendCompanyNew(company->index); - } } } diff --git a/src/network/network_admin.h b/src/network/network_admin.h index 63c80545ce..766bee1d7e 100644 --- a/src/network/network_admin.h +++ b/src/network/network_admin.h @@ -103,7 +103,7 @@ void NetworkAdminClientInfo(const NetworkClientSocket *cs, bool new_client = fal void NetworkAdminClientUpdate(const NetworkClientInfo *ci); void NetworkAdminClientQuit(ClientID client_id); void NetworkAdminClientError(ClientID client_id, NetworkErrorCode error_code); -void NetworkAdminCompanyInfo(const Company *company, bool new_company); +void NetworkAdminCompanyNew(const Company *company); void NetworkAdminCompanyUpdate(const Company *company); void NetworkAdminCompanyRemove(CompanyID company_id, AdminCompanyRemoveReason bcrr); diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 96bcffde60..f0eba6d005 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -2198,9 +2198,6 @@ void NetworkServerNewCompany(const Company *c, NetworkClientInfo *ci) Command::SendNet(STR_NULL, c->index, ci->client_name); } - /* Announce new company on network. */ - NetworkAdminCompanyInfo(c, true); - if (ci != nullptr) { /* ci is nullptr when replaying, or for AIs. In neither case there is a client. We need to send Admin port update here so that they first know about the new company From 555a37930b930a52e4df5d9b5e394516eec5cd84 Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 18 Feb 2024 16:30:54 +0100 Subject: [PATCH 19/19] Fix: Shadows of individual character glyphs could be drawn over other characters (#12115) --- src/gfx.cpp | 73 ++++++++++++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 40 deletions(-) diff --git a/src/gfx.cpp b/src/gfx.cpp index 1cf74769e6..719733e6fa 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -575,59 +575,52 @@ static int DrawLayoutLine(const ParagraphLayouter::Line &line, int y, int left, const uint shadow_offset = ScaleGUITrad(1); - TextColour colour = TC_BLACK; - bool draw_shadow = false; - for (int run_index = 0; run_index < line.CountRuns(); run_index++) { - const ParagraphLayouter::VisualRun &run = line.GetVisualRun(run_index); - const auto &glyphs = run.GetGlyphs(); - const auto &positions = run.GetPositions(); - const Font *f = run.GetFont(); + /* Draw shadow, then foreground */ + for (bool do_shadow : { true, false }) { + TextColour colour = TC_BLACK; + for (int run_index = 0; run_index < line.CountRuns(); run_index++) { + const ParagraphLayouter::VisualRun &run = line.GetVisualRun(run_index); + const auto &glyphs = run.GetGlyphs(); + const auto &positions = run.GetPositions(); + const Font *f = run.GetFont(); - FontCache *fc = f->fc; - colour = f->colour; - SetColourRemap(colour); + FontCache *fc = f->fc; + colour = f->colour; + if (do_shadow && (!fc->GetDrawGlyphShadow() || (colour & TC_NO_SHADE) != 0 || colour == TC_BLACK)) continue; + SetColourRemap(do_shadow ? TC_BLACK : colour); - DrawPixelInfo *dpi = _cur_dpi; - int dpi_left = dpi->left; - int dpi_right = dpi->left + dpi->width - 1; + DrawPixelInfo *dpi = _cur_dpi; + int dpi_left = dpi->left; + int dpi_right = dpi->left + dpi->width - 1; - draw_shadow = fc->GetDrawGlyphShadow() && (colour & TC_NO_SHADE) == 0 && colour != TC_BLACK; + for (int i = 0; i < run.GetGlyphCount(); i++) { + GlyphID glyph = glyphs[i]; - for (int i = 0; i < run.GetGlyphCount(); i++) { - GlyphID glyph = glyphs[i]; + /* Not a valid glyph (empty) */ + if (glyph == 0xFFFF) continue; - /* Not a valid glyph (empty) */ - if (glyph == 0xFFFF) continue; + int begin_x = positions[i].x + left - offset_x; + int end_x = positions[i + 1].x + left - offset_x - 1; + int top = positions[i].y + y; - int begin_x = positions[i].x + left - offset_x; - int end_x = positions[i + 1].x + left - offset_x - 1; - int top = positions[i].y + y; + /* Truncated away. */ + if (truncation && (begin_x < min_x || end_x > max_x)) continue; - /* Truncated away. */ - if (truncation && (begin_x < min_x || end_x > max_x)) continue; + const Sprite *sprite = fc->GetGlyph(glyph); + /* Check clipping (the "+ 1" is for the shadow). */ + if (begin_x + sprite->x_offs > dpi_right || begin_x + sprite->x_offs + sprite->width /* - 1 + 1 */ < dpi_left) continue; - const Sprite *sprite = fc->GetGlyph(glyph); - /* Check clipping (the "+ 1" is for the shadow). */ - if (begin_x + sprite->x_offs > dpi_right || begin_x + sprite->x_offs + sprite->width /* - 1 + 1 */ < dpi_left) continue; + if (do_shadow && (glyph & SPRITE_GLYPH) != 0) continue; - if (draw_shadow && (glyph & SPRITE_GLYPH) == 0) { - SetColourRemap(TC_BLACK); - GfxMainBlitter(sprite, begin_x + shadow_offset, top + shadow_offset, BM_COLOUR_REMAP); - SetColourRemap(colour); + GfxMainBlitter(sprite, begin_x + (do_shadow ? shadow_offset : 0), top + (do_shadow ? shadow_offset : 0), BM_COLOUR_REMAP); } - GfxMainBlitter(sprite, begin_x, top, BM_COLOUR_REMAP); } - } - if (truncation) { - int x = (_current_text_dir == TD_RTL) ? left : (right - 3 * dot_width); - for (int i = 0; i < 3; i++, x += dot_width) { - if (draw_shadow) { - SetColourRemap(TC_BLACK); - GfxMainBlitter(dot_sprite, x + shadow_offset, y + shadow_offset, BM_COLOUR_REMAP); - SetColourRemap(colour); + if (truncation) { + int x = (_current_text_dir == TD_RTL) ? left : (right - 3 * dot_width); + for (int i = 0; i < 3; i++, x += dot_width) { + GfxMainBlitter(dot_sprite, x + (do_shadow ? shadow_offset : 0), y + (do_shadow ? shadow_offset : 0), BM_COLOUR_REMAP); } - GfxMainBlitter(dot_sprite, x, y, BM_COLOUR_REMAP); } }