From 64d6ad50f9360cdf7418fb46cc5560739fe4f648 Mon Sep 17 00:00:00 2001 From: PeterN Date: Mon, 5 Jun 2023 19:29:52 +0100 Subject: [PATCH 001/123] Codechange: Split GetItem with GetOrCreateItem. (#10952) `IniGroup::GetItem()` returns nullptr if the item does not exist, but does not if the create parameter is set to true. Resolve CodeQL warnings with `GetOrCreateItem()` which returns a reference to the item instead. --- src/base_media_func.h | 12 ++++++------ src/gfxinit.cpp | 2 +- src/hotkeys.cpp | 6 +++--- src/ini_load.cpp | 24 +++++++++++++++++------- src/ini_type.h | 3 ++- src/music.cpp | 6 +++--- src/settings.cpp | 31 +++++++++++++++---------------- src/settingsgen/settingsgen.cpp | 8 ++++---- 8 files changed, 51 insertions(+), 41 deletions(-) diff --git a/src/base_media_func.h b/src/base_media_func.h index b5ffe7dc8a..2ad0028375 100644 --- a/src/base_media_func.h +++ b/src/base_media_func.h @@ -23,7 +23,7 @@ extern void CheckExternalFiles(); * @param name the name of the item to fetch. */ #define fetch_metadata(name) \ - item = metadata->GetItem(name, false); \ + item = metadata->GetItem(name); \ if (item == nullptr || !item->value.has_value() || item->value->empty()) { \ Debug(grf, 0, "Base " SET_TYPE "set detail loading: {} field missing.", name); \ Debug(grf, 0, " Is {} readable for the user running OpenTTD?", full_filename); \ @@ -65,7 +65,7 @@ bool BaseSet::FillSetDetails(IniFile *ini, const fetch_metadata("version"); this->version = atoi(item->value->c_str()); - item = metadata->GetItem("fallback", false); + item = metadata->GetItem("fallback"); this->fallback = (item != nullptr && item->value && *item->value != "0" && *item->value != "false"); /* For each of the file types we want to find the file, MD5 checksums and warning messages. */ @@ -75,7 +75,7 @@ bool BaseSet::FillSetDetails(IniFile *ini, const for (uint i = 0; i < Tnum_files; i++) { MD5File *file = &this->files[i]; /* Find the filename first. */ - item = files->GetItem(BaseSet::file_names[i], false); + item = files->GetItem(BaseSet::file_names[i]); if (item == nullptr || (!item->value.has_value() && !allow_empty_filename)) { Debug(grf, 0, "No " SET_TYPE " file for: {} (in {})", BaseSet::file_names[i], full_filename); return false; @@ -93,7 +93,7 @@ bool BaseSet::FillSetDetails(IniFile *ini, const file->filename = path + filename; /* Then find the MD5 checksum */ - item = md5s->GetItem(filename, false); + item = md5s->GetItem(filename); if (item == nullptr || !item->value.has_value()) { Debug(grf, 0, "No MD5 checksum specified for: {} (in {})", filename, full_filename); return false; @@ -119,8 +119,8 @@ bool BaseSet::FillSetDetails(IniFile *ini, const } /* Then find the warning message when the file's missing */ - item = origin->GetItem(filename, false); - if (item == nullptr) item = origin->GetItem("default", false); + item = origin->GetItem(filename); + if (item == nullptr) item = origin->GetItem("default"); if (item == nullptr || !item->value.has_value()) { Debug(grf, 1, "No origin warning message specified for: {}", filename); file->missing_warning.clear(); diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp index b14579ccb3..3ebead6daa 100644 --- a/src/gfxinit.cpp +++ b/src/gfxinit.cpp @@ -357,7 +357,7 @@ bool GraphicsSet::FillSetDetails(IniFile *ini, const std::string &path, const st this->palette = ((*item->value)[0] == 'D' || (*item->value)[0] == 'd') ? PAL_DOS : PAL_WINDOWS; /* Get optional blitter information. */ - item = metadata->GetItem("blitter", false); + item = metadata->GetItem("blitter"); this->blitter = (item != nullptr && (*item->value)[0] == '3') ? BLT_32BPP : BLT_8BPP; } return ret; diff --git a/src/hotkeys.cpp b/src/hotkeys.cpp index 3cb9d35299..0739238db8 100644 --- a/src/hotkeys.cpp +++ b/src/hotkeys.cpp @@ -278,7 +278,7 @@ void HotkeyList::Load(IniFile *ini) { IniGroup *group = ini->GetGroup(this->ini_group); for (Hotkey &hotkey : this->items) { - IniItem *item = group->GetItem(hotkey.name, false); + IniItem *item = group->GetItem(hotkey.name); if (item != nullptr) { hotkey.keycodes.clear(); if (item->value.has_value()) ParseHotkeys(hotkey, item->value->c_str()); @@ -294,8 +294,8 @@ void HotkeyList::Save(IniFile *ini) const { IniGroup *group = ini->GetGroup(this->ini_group); for (const Hotkey &hotkey : this->items) { - IniItem *item = group->GetItem(hotkey.name, true); - item->SetValue(SaveKeycodes(hotkey)); + IniItem &item = group->GetOrCreateItem(hotkey.name); + item.SetValue(SaveKeycodes(hotkey)); } } diff --git a/src/ini_load.cpp b/src/ini_load.cpp index 06d6efb33c..3f209444ec 100644 --- a/src/ini_load.cpp +++ b/src/ini_load.cpp @@ -82,22 +82,32 @@ IniGroup::~IniGroup() } /** - * Get the item with the given name, and if it doesn't exist - * and create is true it creates a new item. + * Get the item with the given name. * @param name name of the item to find. - * @param create whether to create an item when not found or not. * @return the requested item or nullptr if not found. */ -IniItem *IniGroup::GetItem(const std::string &name, bool create) +IniItem *IniGroup::GetItem(const std::string &name) { for (IniItem *item = this->item; item != nullptr; item = item->next) { if (item->name == name) return item; } - if (!create) return nullptr; + return nullptr; +} - /* otherwise make a new one */ - return new IniItem(this, name); +/** + * Get the item with the given name, and if it doesn't exist create a new item. + * @param name name of the item to find. + * @return the requested item. + */ +IniItem &IniGroup::GetOrCreateItem(const std::string &name) +{ + for (IniItem *item = this->item; item != nullptr; item = item->next) { + if (item->name == name) return *item; + } + + /* Item doesn't exist, make a new one. */ + return *(new IniItem(this, name)); } /** diff --git a/src/ini_type.h b/src/ini_type.h index 0d50b58347..580125ff6a 100644 --- a/src/ini_type.h +++ b/src/ini_type.h @@ -44,7 +44,8 @@ struct IniGroup { IniGroup(struct IniLoadFile *parent, const std::string &name); ~IniGroup(); - IniItem *GetItem(const std::string &name, bool create); + IniItem *GetItem(const std::string &name); + IniItem &GetOrCreateItem(const std::string &name); void RemoveItem(const std::string &name); void Clear(); }; diff --git a/src/music.cpp b/src/music.cpp index 9c4392be4a..6c69d5e625 100644 --- a/src/music.cpp +++ b/src/music.cpp @@ -133,7 +133,7 @@ bool MusicSet::FillSetDetails(IniFile *ini, const std::string &path, const std:: this->songinfo[i].filename = filename; // non-owned pointer - IniItem *item = catindex->GetItem(_music_file_names[i], false); + IniItem *item = catindex->GetItem(_music_file_names[i]); if (item != nullptr && item->value.has_value() && !item->value->empty()) { /* Song has a CAT file index, assume it's MPS MIDI format */ this->songinfo[i].filetype = MTT_MPSMIDI; @@ -158,7 +158,7 @@ bool MusicSet::FillSetDetails(IniFile *ini, const std::string &path, const std:: * the beginning, so we don't start reading e.g. root. */ while (*trimmed_filename == PATHSEPCHAR) trimmed_filename++; - item = names->GetItem(trimmed_filename, false); + item = names->GetItem(trimmed_filename); if (item != nullptr && item->value.has_value() && !item->value->empty()) break; } @@ -179,7 +179,7 @@ bool MusicSet::FillSetDetails(IniFile *ini, const std::string &path, const std:: this->songinfo[i].tracknr = tracknr++; } - item = trimmed_filename != nullptr ? timingtrim->GetItem(trimmed_filename, false) : nullptr; + item = trimmed_filename != nullptr ? timingtrim->GetItem(trimmed_filename) : nullptr; if (item != nullptr && item->value.has_value() && !item->value->empty()) { auto endpos = item->value->find(':'); if (endpos != std::string::npos) { diff --git a/src/settings.cpp b/src/settings.cpp index 7ad980d172..6087957940 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -590,17 +590,17 @@ static void IniLoadSettings(IniFile &ini, const SettingTable &settings_table, co group = group_def; } - IniItem *item = group->GetItem(s, false); + IniItem *item = group->GetItem(s); if (item == nullptr && group != group_def) { /* For settings.xx.yy load the settings from [settings] yy = ? in case the previous * did not exist (e.g. loading old config files with a [settings] section */ - item = group_def->GetItem(s, false); + item = group_def->GetItem(s); } if (item == nullptr) { /* For settings.xx.zz.yy load the settings from [zz] yy = ? in case the previous * did not exist (e.g. loading old config files with a [yapf] section */ sc = s.find('.'); - if (sc != std::string::npos) item = ini.GetGroup(s.substr(0, sc))->GetItem(s.substr(sc + 1), false); + if (sc != std::string::npos) item = ini.GetGroup(s.substr(0, sc))->GetItem(s.substr(sc + 1)); } sd->ParseValue(item, object); @@ -649,7 +649,6 @@ void ListSettingDesc::ParseValue(const IniItem *item, void *object) const static void IniSaveSettings(IniFile &ini, const SettingTable &settings_table, const char *grpname, void *object, bool) { IniGroup *group_def = nullptr, *group; - IniItem *item; for (auto &desc : settings_table) { const SettingDesc *sd = GetSettingDesc(desc); @@ -669,11 +668,11 @@ static void IniSaveSettings(IniFile &ini, const SettingTable &settings_table, co group = group_def; } - item = group->GetItem(s, true); + IniItem &item = group->GetOrCreateItem(s); - if (!item->value.has_value() || !sd->IsSameValue(item, object)) { + if (!item.value.has_value() || !sd->IsSameValue(&item, object)) { /* The value is different, that means we have to write it to the ini */ - item->value.emplace(sd->FormatValue(object)); + item.value.emplace(sd->FormatValue(object)); } } } @@ -773,7 +772,7 @@ static void IniSaveSettingList(IniFile &ini, const char *grpname, StringList &li group->Clear(); for (const auto &iter : list) { - group->GetItem(iter, true)->SetValue(""); + group->GetOrCreateItem(iter).SetValue(""); } } @@ -1060,7 +1059,7 @@ static IniFileVersion LoadVersionFromConfig(IniFile &ini) { IniGroup *group = ini.GetGroup("version"); - auto version_number = group->GetItem("ini_version", false); + auto version_number = group->GetItem("ini_version"); /* Older ini-file versions don't have this key yet. */ if (version_number == nullptr || !version_number->value.has_value()) return IFV_0; @@ -1121,9 +1120,9 @@ static void GameSaveConfig(IniFile &ini, const char *grpname) static void SaveVersionInConfig(IniFile &ini) { IniGroup *group = ini.GetGroup("version"); - group->GetItem("version_string", true)->SetValue(_openttd_revision); - group->GetItem("version_number", true)->SetValue(fmt::format("{:08X}", _openttd_newgrf_version)); - group->GetItem("ini_version", true)->SetValue(std::to_string(INIFILE_VERSION)); + group->GetOrCreateItem("version_string").SetValue(_openttd_revision); + group->GetOrCreateItem("version_number").SetValue(fmt::format("{:08X}", _openttd_newgrf_version)); + group->GetOrCreateItem("ini_version").SetValue(std::to_string(INIFILE_VERSION)); } /* Save a GRF configuration to the given group name */ @@ -1136,7 +1135,7 @@ static void GRFSaveConfig(IniFile &ini, const char *grpname, const GRFConfig *li for (c = list; c != nullptr; c = c->next) { std::string key = fmt::format("{:08X}|{}|{}", BSWAP32(c->ident.grfid), FormatArrayAsHex(c->ident.md5sum), c->filename); - group->GetItem(key, true)->SetValue(GRFBuildParamList(c)); + group->GetOrCreateItem(key).SetValue(GRFBuildParamList(c)); } } @@ -1224,7 +1223,7 @@ void LoadFromConfig(bool startup) if (_settings_client.network.server_game_type == SERVER_GAME_TYPE_LOCAL) { IniGroup *network = generic_ini.GetGroup("network", false); if (network != nullptr) { - IniItem *server_advertise = network->GetItem("server_advertise", false); + IniItem *server_advertise = network->GetItem("server_advertise"); if (server_advertise != nullptr && server_advertise->value == "true") { _settings_client.network.server_game_type = SERVER_GAME_TYPE_PUBLIC; } @@ -1240,7 +1239,7 @@ void LoadFromConfig(bool startup) if (generic_version < IFV_NETWORK_PRIVATE_SETTINGS) { IniGroup *network = generic_ini.GetGroup("network", false); if (network != nullptr) { - IniItem *no_http_content_downloads = network->GetItem("no_http_content_downloads", false); + IniItem *no_http_content_downloads = network->GetItem("no_http_content_downloads"); if (no_http_content_downloads != nullptr) { if (no_http_content_downloads->value == "true") { _settings_client.network.no_http_content_downloads = true; @@ -1249,7 +1248,7 @@ void LoadFromConfig(bool startup) } } - IniItem *use_relay_service = network->GetItem("use_relay_service", false); + IniItem *use_relay_service = network->GetItem("use_relay_service"); if (use_relay_service != nullptr) { if (use_relay_service->value == "never") { _settings_client.network.use_relay_service = UseRelayService::URS_NEVER; diff --git a/src/settingsgen/settingsgen.cpp b/src/settingsgen/settingsgen.cpp index 396b2a66fc..a160205d22 100644 --- a/src/settingsgen/settingsgen.cpp +++ b/src/settingsgen/settingsgen.cpp @@ -229,8 +229,8 @@ static void DumpGroup(IniLoadFile *ifile, const char * const group_name) */ static const char *FindItemValue(const char *name, IniGroup *grp, IniGroup *defaults) { - IniItem *item = grp->GetItem(name, false); - if (item == nullptr && defaults != nullptr) item = defaults->GetItem(name, false); + IniItem *item = grp->GetItem(name); + if (item == nullptr && defaults != nullptr) item = defaults->GetItem(name); if (item == nullptr || !item->value.has_value()) return nullptr; return item->value->c_str(); } @@ -321,14 +321,14 @@ static void DumpSections(IniLoadFile *ifile) for (sgn = special_group_names; *sgn != nullptr; sgn++) if (grp->name == *sgn) break; if (*sgn != nullptr) continue; - IniItem *template_item = templates_grp->GetItem(grp->name, false); // Find template value. + IniItem *template_item = templates_grp->GetItem(grp->name); // Find template value. if (template_item == nullptr || !template_item->value.has_value()) { FatalError("Cannot find template {}", grp->name); } DumpLine(template_item, grp, default_grp, _stored_output); if (validation_grp != nullptr) { - IniItem *validation_item = validation_grp->GetItem(grp->name, false); // Find template value. + IniItem *validation_item = validation_grp->GetItem(grp->name); // Find template value. if (validation_item != nullptr && validation_item->value.has_value()) { DumpLine(validation_item, grp, default_grp, _post_amble_output); } From 433ec6b5bd4f5148b8e41bc2ddb7c83490c3cdbd Mon Sep 17 00:00:00 2001 From: translators Date: Mon, 5 Jun 2023 18:42:37 +0000 Subject: [PATCH 002/123] Update: Translations from eints korean: 2 changes by telk5093 russian: 2 changes by Ln-Wolf finnish: 2 changes by hpiirai turkish: 2 changes by EndChapter french: 2 changes by glx22 portuguese: 2 changes by azulcosta --- src/lang/finnish.txt | 3 ++- src/lang/french.txt | 3 ++- src/lang/korean.txt | 3 ++- src/lang/portuguese.txt | 3 ++- src/lang/russian.txt | 3 ++- src/lang/turkish.txt | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 691ca6436b..2a5b694fdd 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -1558,7 +1558,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Harmaasta punai STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Harmaasävy STR_CONFIG_SETTING_SCROLLMODE :Näkymän vieritystapa: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Toiminta karttaa vieritettäessä +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Toiminta karttaa vieritettäessä. Hiiren sijainnin lukitus ei toimi kaikissa järjestelmissä, kuten selainpohjaisissa versioissa, kosketusnäytöillä, Linuxissa Waylandilla ym. ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Siirrä näkymää hiiren oikealla painikkeella, hiiren sijainti lukiten STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Siirrä karttaa hiiren oikealla painikkeella, hiiren sijainti lukiten @@ -2080,6 +2080,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}{BYTES} # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Virhe näyttöasetuksissa… STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}… yhteensopivaa grafiikkasuoritinta ei löytynyt. Laitteistokiihdytystä ei käytetä. +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}… Näytönohjaimen ajuri kaatoi pelin. Laitteistokiihdytys on poistettu käytöstä # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} diff --git a/src/lang/french.txt b/src/lang/french.txt index ce2633feb7..e5063b6c4e 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -1559,7 +1559,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Gris à rouge STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Niveaux de gris STR_CONFIG_SETTING_SCROLLMODE :Défilement de la vue{NBSP}: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportement lors du défilement de la carte +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportement lors du défilement de la carte. L'option "position de la souris verrouillée" ne fonctionne pas sur certains systèmes, comme les versions pour navigateurs, les écrans tactiles, Linux avec Wayland, et autres ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Défilement de la vue par clic droit, position de la souris verrouillée STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Défilement de la carte par clic droit, position de la souris verrouillée @@ -2081,6 +2081,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}L'alloca # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE} Erreur avec les paramètres vidéo... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE} ... aucun GPU compatible trouvé. l'accélération matérielle est désactivée +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... le pilote du GPU a fait planter le jeu. L'accélération matérielle est désactivée # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} diff --git a/src/lang/korean.txt b/src/lang/korean.txt index fd253d837d..c04bb52aae 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -1559,7 +1559,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :회색 & 적색 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :흑백 STR_CONFIG_SETTING_SCROLLMODE :외부 화면 스크롤 행동: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :지도를 스크롤 할 때의 행동을 선택합니다. +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :지도를 스크롤 할 때의 행동을 선택합니다. "마우스 위치는 고정" 설정은 웹 기반 버전, 터치 스크린 환경, Wayland가 설치된 Linux 등의 환경에서는 모두 동작하지 않습니다 ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :마우스 오른쪽 클릭으로 외부 화면 이동 (마우스 위치는 고정) STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :마우스 오른쪽 클릭으로 지도 이동 (마우스 위치는 고정) @@ -2081,6 +2081,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}{BYTES} # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}비디오 설정 오류 발생... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... 호환되는 GPU를 찾지 못했습니다. 하드웨어 가속이 비활성화됩니다 +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... GPU 드라이버가 게임을 종료시켰습니다. 하드웨어 가속이 비활성화됩니다 # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 822d9c8439..9ebf99bac0 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -1559,7 +1559,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Cinza para verm STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Escala de cinza STR_CONFIG_SETTING_SCROLLMODE :Comportamento de deslocação da janela de exibição: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamento na deslocação do mapa +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamento na deslocação do mapa. As opções de "posição do rato bloqueada" não funcionam em todos os sistemas, tais como versões baseadas na web, ecrãs sensíveis ao toque, Linux com Wayland, e outros. ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Mover janela de exibição com Botão Direito Rato, posição do rato bloqueada STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Mover mapa com Botão Direito Rato, posição do rato bloqueada @@ -2081,6 +2081,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Falha a # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Erro com as definições gráficas... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... Não foi encontrado um GPU compatível. Aceleração por hardware desativada +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... O driver gráfico (GPU) interrompeu o jogo. Aceleração por hardware desativada # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 2585fa1741..8588f528a1 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1709,7 +1709,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :серый и STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :оттенки серого STR_CONFIG_SETTING_SCROLLMODE :Перемещение обзора: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Способ перемещения по игровому полю +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Способ перемещения по игровому полю. Варианты с зафиксированным курсором не работают на некоторых системах, например, в браузерах, на сенсорных экранах, на Linux с Wayland и т. д. ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :перемещать обзор с помощью ПКМ, зафиксировав курсор STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :перемещать карту с помощью ПКМ, зафиксировав курсор @@ -2231,6 +2231,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Не у # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Ошибка в настройках графики... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... не найдено подходящего графического процессора. Аппаратное ускорение отключено. +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... драйвер видеокарты вызвал критическую ошибку. Аппаратное ускорение отключено. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index d3573c4d98..bd962a615b 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -1559,7 +1559,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Griden kırmız STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Gri tonlamalı STR_CONFIG_SETTING_SCROLLMODE :Bakış noktası kaydırma davranışı: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Haritada gezinirkenki davranış +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Haritada gezinirkenki davranış. "fare konumu kilitli" seçeneği web tabanlı sürümler, dokunmatik ekranlar, Linux ile birlikte Wayland ve bunun gibi diğer sistemlerde çalışmaz. ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Sağ Fare Tuşu ile görüş alanını hareket ettir, fare konumu kilitli STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Sağ Fare Tuşu ile haritayı hareket ettir, fare konumu kilitli @@ -2081,6 +2081,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}{BYTES} # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Video ayarlarında hata... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... uyumlu GPU bulunamadı. Donanım hızlandırma devre dışı bırakıldı +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... GPU sürücüsü oyunu çökertti. Donanım hızlandırma devre dışı bırakıldı # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} From fbd71a9d721546bd966aefd8258880239ee0bc22 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 25 May 2023 17:50:44 +0200 Subject: [PATCH 003/123] Codechange: replace C-style string processing with C++-style for the listing callbacks --- src/fios.cpp | 95 ++++++++++++++++---------------------- src/fios.h | 2 +- src/openttd.cpp | 10 ++-- src/saveload/oldloader.cpp | 69 +++++++++------------------ src/script/squirrel.cpp | 2 +- 5 files changed, 66 insertions(+), 112 deletions(-) diff --git a/src/fios.cpp b/src/fios.cpp index 118c6ed5ed..0388e6ecae 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -41,7 +41,7 @@ extern bool FiosIsHiddenFile(const struct dirent *ent); extern void FiosGetDrives(FileList &file_list); /* get the name of an oldstyle savegame */ -extern void GetOldSaveGameName(const std::string &file, char *title, const char *last); +extern std::string GetOldSaveGameName(const std::string &file); /** * Compare two FiosItem's. Used with sort when sorting the file list. @@ -215,9 +215,7 @@ static std::string FiosMakeFilename(const std::string *path, const char *name, c /** * Make a save game or scenario filename from a name. - * @param buf Destination buffer for saving the filename. * @param name Name of the file. - * @param last Last element of buffer \a buf. * @return The completed filename. */ std::string FiosMakeSavegameName(const char *name) @@ -251,14 +249,14 @@ bool FiosDelete(const char *name) return unlink(filename.c_str()) == 0; } -typedef FiosType fios_getlist_callback_proc(SaveLoadOperation fop, const std::string &filename, const char *ext, char *title, const char *last); +typedef std::tuple FiosGetTypeAndNameProc(SaveLoadOperation fop, const std::string &filename, const std::string_view ext); /** * Scanner to scan for a particular type of FIOS file. */ class FiosFileScanner : public FileScanner { SaveLoadOperation fop; ///< The kind of file we are looking for. - fios_getlist_callback_proc *callback_proc; ///< Callback to check whether the file may be added + FiosGetTypeAndNameProc *callback_proc; ///< Callback to check whether the file may be added FileList &file_list; ///< Destination of the found files. public: /** @@ -267,7 +265,7 @@ public: * @param callback_proc The function that is called where you need to do the filtering. * @param file_list Destination of the found files. */ - FiosFileScanner(SaveLoadOperation fop, fios_getlist_callback_proc *callback_proc, FileList &file_list) : + FiosFileScanner(SaveLoadOperation fop, FiosGetTypeAndNameProc *callback_proc, FileList &file_list) : fop(fop), callback_proc(callback_proc), file_list(file_list) {} @@ -286,10 +284,7 @@ bool FiosFileScanner::AddFile(const std::string &filename, size_t basepath_lengt if (sep == std::string::npos) return false; std::string ext = filename.substr(sep); - char fios_title[64]; - fios_title[0] = '\0'; // reset the title - - FiosType type = this->callback_proc(this->fop, filename, ext.c_str(), fios_title, lastof(fios_title)); + auto [type, title] = this->callback_proc(this->fop, filename, ext); if (type == FIOS_TYPE_INVALID) return false; for (const auto &fios : file_list) { @@ -329,12 +324,12 @@ bool FiosFileScanner::AddFile(const std::string &filename, size_t basepath_lengt fios->name = filename; /* If the file doesn't have a title, use its filename */ - const char *t = fios_title; - if (StrEmpty(fios_title)) { + if (title.empty()) { auto ps = filename.rfind(PATHSEPCHAR); - t = filename.c_str() + (ps == std::string::npos ? 0 : ps + 1); - } - fios->title = StrMakeValid(t); + fios->title = StrMakeValid(filename.substr((ps == std::string::npos ? 0 : ps + 1))); + } else { + fios->title = StrMakeValid(title); + }; return true; } @@ -347,7 +342,7 @@ bool FiosFileScanner::AddFile(const std::string &filename, size_t basepath_lengt * @param subdir The directory from where to start (global) searching. * @param file_list Destination of the found files. */ -static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *callback_proc, Subdirectory subdir, FileList &file_list) +static void FiosGetFileList(SaveLoadOperation fop, FiosGetTypeAndNameProc *callback_proc, Subdirectory subdir, FileList &file_list) { struct stat sb; struct dirent *dirent; @@ -421,23 +416,20 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c * Get the title of a file, which (if exists) is stored in a file named * the same as the data file but with '.title' added to it. * @param file filename to get the title for - * @param title the title buffer to fill - * @param last the last element in the title buffer * @param subdir the sub directory to search in + * @return The file title. */ -static void GetFileTitle(const std::string &file, char *title, const char *last, Subdirectory subdir) +static std::string GetFileTitle(const std::string &file, Subdirectory subdir) { - std::string buf = file; - buf += ".title"; + FILE *f = FioFOpenFile(file + ".title", "r", subdir); + if (f == nullptr) return {}; - FILE *f = FioFOpenFile(buf, "r", subdir); - if (f == nullptr) return; - - size_t read = fread(title, 1, last - title, f); - assert(title + read <= last); - title[read] = '\0'; - StrMakeValidInPlace(title, last); + char title[80]; + size_t read = fread(title, 1, lengthof(title), f); FioFCloseFile(f); + + assert(read <= lengthof(title)); + return StrMakeValid({title, read}); } /** @@ -445,13 +437,11 @@ static void GetFileTitle(const std::string &file, char *title, const char *last, * @param fop Purpose of collecting the list. * @param file Name of the file to check. * @param ext A pointer to the extension identifier inside file - * @param title Buffer if a callback wants to lookup the title of the file; nullptr to skip the lookup - * @param last Last available byte in buffer (to prevent buffer overflows); not used when title == nullptr - * @return a FIOS_TYPE_* type of the found file, FIOS_TYPE_INVALID if not a savegame + * @return a FIOS_TYPE_* type of the found file, FIOS_TYPE_INVALID if not a savegame, and the title of the file (if any). * @see FiosGetFileList * @see FiosGetSavegameList */ -FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const std::string &file, const char *ext, char *title, const char *last) +std::tuple FiosGetSavegameListCallback(SaveLoadOperation fop, const std::string &file, const std::string_view ext) { /* Show savegame files * .SAV OpenTTD saved game @@ -460,22 +450,20 @@ FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const std::string &f * .SV2 Transport Tycoon Deluxe (Patch) saved 2-player game */ /* Don't crash if we supply no extension */ - if (ext == nullptr) return FIOS_TYPE_INVALID; + if (ext.empty()) return { FIOS_TYPE_INVALID, {} }; if (StrEqualsIgnoreCase(ext, ".sav")) { - GetFileTitle(file, title, last, SAVE_DIR); - return FIOS_TYPE_FILE; + return { FIOS_TYPE_FILE, GetFileTitle(file, SAVE_DIR) }; } if (fop == SLO_LOAD) { if (StrEqualsIgnoreCase(ext, ".ss1") || StrEqualsIgnoreCase(ext, ".sv1") || StrEqualsIgnoreCase(ext, ".sv2")) { - if (title != nullptr) GetOldSaveGameName(file, title, last); - return FIOS_TYPE_OLDFILE; + return { FIOS_TYPE_OLDFILE, GetOldSaveGameName(file) }; } } - return FIOS_TYPE_INVALID; + return { FIOS_TYPE_INVALID, {} }; } /** @@ -500,31 +488,28 @@ void FiosGetSavegameList(SaveLoadOperation fop, FileList &file_list) * @param fop Purpose of collecting the list. * @param file Name of the file to check. * @param ext A pointer to the extension identifier inside file - * @param title Buffer if a callback wants to lookup the title of the file - * @param last Last available byte in buffer (to prevent buffer overflows) - * @return a FIOS_TYPE_* type of the found file, FIOS_TYPE_INVALID if not a scenario + * @return a FIOS_TYPE_* type of the found file, FIOS_TYPE_INVALID if not a scenario and the title of the file (if any). * @see FiosGetFileList * @see FiosGetScenarioList */ -static FiosType FiosGetScenarioListCallback(SaveLoadOperation fop, const std::string &file, const char *ext, char *title, const char *last) +static std::tuple FiosGetScenarioListCallback(SaveLoadOperation fop, const std::string &file, const std::string_view ext) { /* Show scenario files * .SCN OpenTTD style scenario file * .SV0 Transport Tycoon Deluxe (Patch) scenario * .SS0 Transport Tycoon Deluxe preset scenario */ if (StrEqualsIgnoreCase(ext, ".scn")) { - GetFileTitle(file, title, last, SCENARIO_DIR); - return FIOS_TYPE_SCENARIO; + return { FIOS_TYPE_SCENARIO, GetFileTitle(file, SCENARIO_DIR) }; + } if (fop == SLO_LOAD) { if (StrEqualsIgnoreCase(ext, ".sv0") || StrEqualsIgnoreCase(ext, ".ss0")) { - GetOldSaveGameName(file, title, last); - return FIOS_TYPE_OLD_SCENARIO; + return { FIOS_TYPE_OLD_SCENARIO, GetOldSaveGameName(file) }; } } - return FIOS_TYPE_INVALID; + return { FIOS_TYPE_INVALID, {} }; } /** @@ -547,7 +532,7 @@ void FiosGetScenarioList(SaveLoadOperation fop, FileList &file_list) FiosGetFileList(fop, &FiosGetScenarioListCallback, subdir, file_list); } -static FiosType FiosGetHeightmapListCallback(SaveLoadOperation fop, const std::string &file, const char *ext, char *title, const char *last) +static std::tuple FiosGetHeightmapListCallback(SaveLoadOperation fop, const std::string &file, const std::string_view ext) { /* Show heightmap files * .PNG PNG Based heightmap files @@ -562,7 +547,7 @@ static FiosType FiosGetHeightmapListCallback(SaveLoadOperation fop, const std::s if (StrEqualsIgnoreCase(ext, ".bmp")) type = FIOS_TYPE_BMP; - if (type == FIOS_TYPE_INVALID) return FIOS_TYPE_INVALID; + if (type == FIOS_TYPE_INVALID) return { FIOS_TYPE_INVALID, {} }; TarFileList::iterator it = _tar_filelist[SCENARIO_DIR].find(file); if (it != _tar_filelist[SCENARIO_DIR].end()) { @@ -581,12 +566,10 @@ static FiosType FiosGetHeightmapListCallback(SaveLoadOperation fop, const std::s } } - if (!match) return FIOS_TYPE_INVALID; + if (!match) return { FIOS_TYPE_INVALID, {} }; } - GetFileTitle(file, title, last, HEIGHTMAP_DIR); - - return type; + return { type, GetFileTitle(file, HEIGHTMAP_DIR) }; } /** @@ -747,9 +730,9 @@ FiosNumberedSaveName::FiosNumberedSaveName(const std::string &prefix) : prefix(p static std::string _prefix; ///< Static as the lambda needs access to it. /* Callback for FiosFileScanner. */ - static fios_getlist_callback_proc *proc = [](SaveLoadOperation fop, const std::string &file, const char *ext, char *title, const char *last) { - if (StrEqualsIgnoreCase(ext, ".sav") && StrStartsWith(file, _prefix)) return FIOS_TYPE_FILE; - return FIOS_TYPE_INVALID; + static FiosGetTypeAndNameProc *proc = [](SaveLoadOperation fop, const std::string &file, const std::string_view ext) { + if (StrEqualsIgnoreCase(ext, ".sav") && StrStartsWith(file, _prefix)) return std::tuple(FIOS_TYPE_FILE, std::string{}); + return std::tuple(FIOS_TYPE_INVALID, std::string{}); }; /* Prefix to check in the callback. */ diff --git a/src/fios.h b/src/fios.h index 1470ee2fa7..71ca224e44 100644 --- a/src/fios.h +++ b/src/fios.h @@ -116,7 +116,7 @@ bool FiosDelete(const char *name); std::string FiosMakeHeightmapName(const char *name); std::string FiosMakeSavegameName(const char *name); -FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const std::string &file, const char *ext, char *title, const char *last); +std::tuple FiosGetSavegameListCallback(SaveLoadOperation fop, const std::string &file, const std::string_view ext); void ScanScenarios(); const char *FindScenario(const ContentInfo *ci, bool md5sum); diff --git a/src/openttd.cpp b/src/openttd.cpp index f8c29ee392..28749e7e37 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -231,7 +231,7 @@ static void ShowHelp() #endif } -static void WriteSavegameInfo(const char *name) +static void WriteSavegameInfo(const std::string &name) { extern SaveLoadVersion _sl_version; uint32 last_ottd_rev = 0; @@ -262,7 +262,7 @@ static void WriteSavegameInfo(const char *name) /* ShowInfo put output to stderr, but version information should go * to stdout; this is the only exception */ #if !defined(_WIN32) - fmt::print("%s\n", message); + fmt::print("{}\n", message); #else ShowInfoI(message); #endif @@ -588,7 +588,7 @@ int openttd_main(int argc, char *argv[]) /* if the file doesn't exist or it is not a valid savegame, let the saveload code show an error */ auto t = _file_to_saveload.name.find_last_of('.'); if (t != std::string::npos) { - FiosType ft = FiosGetSavegameListCallback(SLO_LOAD, _file_to_saveload.name, _file_to_saveload.name.substr(t).c_str(), nullptr, nullptr); + auto [ft, _] = FiosGetSavegameListCallback(SLO_LOAD, _file_to_saveload.name, _file_to_saveload.name.substr(t)); if (ft != FIOS_TYPE_INVALID) _file_to_saveload.SetMode(ft); } @@ -608,9 +608,7 @@ int openttd_main(int argc, char *argv[]) return ret; } - char title[80]; - title[0] = '\0'; - FiosGetSavegameListCallback(SLO_LOAD, mgo.opt, strrchr(mgo.opt, '.'), title, lastof(title)); + auto [_, title] = FiosGetSavegameListCallback(SLO_LOAD, mgo.opt, strrchr(mgo.opt, '.')); _load_check_data.Clear(); SaveOrLoadResult res = SaveOrLoad(mgo.opt, SLO_CHECK, DFT_GAME_FILE, SAVE_DIR, false); diff --git a/src/saveload/oldloader.cpp b/src/saveload/oldloader.cpp index 6f11d17c28..a8d8879846 100644 --- a/src/saveload/oldloader.cpp +++ b/src/saveload/oldloader.cpp @@ -24,6 +24,8 @@ static const int TTO_HEADER_SIZE = 41; static const int TTD_HEADER_SIZE = 49; +/** The size of the checksum in the name/header of the TTD/TTO savegames. */ +static const int HEADER_CHECKSUM_SIZE = 2; uint32 _bump_assert_value; @@ -204,66 +206,39 @@ static void InitLoading(LoadgameState *ls) * @param title title and checksum * @param len the length of the title to read/checksum * @return true iff the title is valid - * @note the title (incl. checksum) has to be at least 41/49 (HEADER_SIZE) bytes long! */ static bool VerifyOldNameChecksum(char *title, uint len) { uint16 sum = 0; - for (uint i = 0; i < len - 2; i++) { + for (uint i = 0; i < len - HEADER_CHECKSUM_SIZE; i++) { sum += title[i]; sum = ROL(sum, 1); } sum ^= 0xAAAA; // computed checksum - uint16 sum2 = title[len - 2]; // checksum in file - SB(sum2, 8, 8, title[len - 1]); + uint16 sum2 = title[len - HEADER_CHECKSUM_SIZE]; // checksum in file + SB(sum2, 8, 8, title[len - HEADER_CHECKSUM_SIZE + 1]); return sum == sum2; } -static inline bool CheckOldSavegameType(FILE *f, char *temp, const char *last, uint len) +static std::tuple DetermineOldSavegameTypeAndName(FILE *f) { - assert(last - temp + 1 >= (int)len); - - if (fread(temp, 1, len, f) != len) { - temp[0] = '\0'; // if reading failed, make the name empty - return false; + char buffer[std::max(TTO_HEADER_SIZE, TTD_HEADER_SIZE)]; + if (fread(buffer, 1, lengthof(buffer), f) != lengthof(buffer)) { + return { SGT_INVALID, "(broken) Unable to read file" }; } - bool ret = VerifyOldNameChecksum(temp, len); - temp[len - 2] = '\0'; // name is null-terminated in savegame, but it's better to be sure - StrMakeValidInPlace(temp, last); - - return ret; -} - -static SavegameType DetermineOldSavegameType(FILE *f, char *title, const char *last) -{ - static_assert(TTD_HEADER_SIZE >= TTO_HEADER_SIZE); - char temp[TTD_HEADER_SIZE] = "Unknown"; - - SavegameType type = SGT_TTO; - - /* Can't fseek to 0 as in tar files that is not correct */ - long pos = ftell(f); - if (pos >= 0 && !CheckOldSavegameType(f, temp, lastof(temp), TTO_HEADER_SIZE)) { - type = SGT_TTD; - if (fseek(f, pos, SEEK_SET) < 0 || !CheckOldSavegameType(f, temp, lastof(temp), TTD_HEADER_SIZE)) { - type = SGT_INVALID; - } + if (VerifyOldNameChecksum(buffer, TTO_HEADER_SIZE)) { + return { SGT_TTO, "(TTO)" + StrMakeValid({buffer, TTO_HEADER_SIZE - HEADER_CHECKSUM_SIZE}) }; } - if (title != nullptr) { - switch (type) { - case SGT_TTO: title = strecpy(title, "(TTO) ", last); break; - case SGT_TTD: title = strecpy(title, "(TTD) ", last); break; - default: title = strecpy(title, "(broken) ", last); break; - } - strecpy(title, temp, last); + if (VerifyOldNameChecksum(buffer, TTD_HEADER_SIZE)) { + return { SGT_TTD, "(TTD)" + StrMakeValid({buffer, TTD_HEADER_SIZE - HEADER_CHECKSUM_SIZE}) }; } - return type; + return { SGT_INVALID, "(broken) Unknown" }; } typedef bool LoadOldMainProc(LoadgameState *ls); @@ -284,7 +259,8 @@ bool LoadOldSaveGame(const std::string &file) return false; } - SavegameType type = DetermineOldSavegameType(ls.file, nullptr, nullptr); + SavegameType type; + std::tie(type, std::ignore) = DetermineOldSavegameTypeAndName(ls.file); LoadOldMainProc *proc = nullptr; @@ -314,16 +290,13 @@ bool LoadOldSaveGame(const std::string &file) return true; } -void GetOldSaveGameName(const std::string &file, char *title, const char *last) +std::string GetOldSaveGameName(const std::string &file) { FILE *f = FioFOpenFile(file, "rb", NO_DIRECTORY); + if (f == nullptr) return {}; - if (f == nullptr) { - *title = '\0'; - return; - } - - DetermineOldSavegameType(f, title, last); - + std::string name; + std::tie(std::ignore, name) = DetermineOldSavegameTypeAndName(f); fclose(f); + return name; } diff --git a/src/script/squirrel.cpp b/src/script/squirrel.cpp index 62542ad856..2ce61cdd48 100644 --- a/src/script/squirrel.cpp +++ b/src/script/squirrel.cpp @@ -269,7 +269,7 @@ void Squirrel::PrintFunc(HSQUIRRELVM vm, const std::string &s) /* Check if we have a custom print function */ SQPrintFunc *func = ((Squirrel *)sq_getforeignptr(vm))->print_func; if (func == nullptr) { - fmt::print("%s", s); + fmt::print("{}", s); } else { (*func)(false, s); } From 55dfca193604cd0606643b88a32f807325f9a82f Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 30 May 2023 19:35:27 +0200 Subject: [PATCH 004/123] Codechange: replace seprintf with C++ style formatting --- src/console_cmds.cpp | 4 +--- src/framerate_gui.cpp | 6 +++--- src/network/core/address.cpp | 5 ++--- src/network/core/os_abstraction.cpp | 5 +++-- src/network/core/tcp_connect.cpp | 5 ++--- src/saveload/saveload.cpp | 4 +--- 6 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 5cf8b1c958..111017c0cc 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -2269,9 +2269,7 @@ DEF_CONSOLE_CMD(ConNewGRFProfile) started++; if (!grfids.empty()) grfids += ", "; - char grfidstr[12]{ 0 }; - seprintf(grfidstr, lastof(grfidstr), "[%08X]", BSWAP32(pr.grffile->grfid)); - grfids += grfidstr; + fmt::format_to(std::back_inserter(grfids), "[{%:08X}]", BSWAP32(pr.grffile->grfid)); } } if (started > 0) { diff --git a/src/framerate_gui.cpp b/src/framerate_gui.cpp index db9dea477f..824896014c 100644 --- a/src/framerate_gui.cpp +++ b/src/framerate_gui.cpp @@ -1058,7 +1058,7 @@ void ConPrintFramerate() "AI/GS scripts total", "Game script", }; - char ai_name_buf[128]; + std::string ai_name_buf; static const PerformanceElement rate_elements[] = { PFE_GAMELOOP, PFE_DRAWING, PFE_VIDEO }; @@ -1077,11 +1077,11 @@ void ConPrintFramerate() for (PerformanceElement e = PFE_FIRST; e < PFE_MAX; e++) { auto &pf = _pf_data[e]; if (pf.num_valid == 0) continue; - const char *name; + std::string_view name; if (e < PFE_AI0) { name = MEASUREMENT_NAMES[e]; } else { - seprintf(ai_name_buf, lastof(ai_name_buf), "AI %d %s", e - PFE_AI0 + 1, GetAIName(e - PFE_AI0)), + ai_name_buf = fmt::format("AI {} {}", e - PFE_AI0 + 1, GetAIName(e - PFE_AI0)); name = ai_name_buf; } IConsolePrint(TC_LIGHT_BLUE, "{} times: {:.2f}ms {:.2f}ms {:.2f}ms", diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index 366c140e65..313a725c55 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -215,8 +215,7 @@ SOCKET NetworkAddress::Resolve(int family, int socktype, int flags, SocketList * hints.ai_socktype = socktype; /* The port needs to be a string. Six is enough to contain all characters + '\0'. */ - char port_name[6]; - seprintf(port_name, lastof(port_name), "%u", this->GetPort()); + std::string port_name = std::to_string(this->GetPort()); bool reset_hostname = false; /* Setting both hostname to nullptr and port to 0 is not allowed. @@ -231,7 +230,7 @@ SOCKET NetworkAddress::Resolve(int family, int socktype, int flags, SocketList * static bool _resolve_timeout_error_message_shown = false; auto start = std::chrono::steady_clock::now(); - int e = getaddrinfo(this->hostname.empty() ? nullptr : this->hostname.c_str(), port_name, &hints, &ai); + int e = getaddrinfo(this->hostname.empty() ? nullptr : this->hostname.c_str(), port_name.c_str(), &hints, &ai); auto end = std::chrono::steady_clock::now(); std::chrono::seconds duration = std::chrono::duration_cast(end - start); if (!_resolve_timeout_error_message_shown && duration >= std::chrono::seconds(5)) { diff --git a/src/network/core/os_abstraction.cpp b/src/network/core/os_abstraction.cpp index 225c95d931..9fcb9bf7fd 100644 --- a/src/network/core/os_abstraction.cpp +++ b/src/network/core/os_abstraction.cpp @@ -83,9 +83,10 @@ const std::string &NetworkError::AsString() const char buffer[512]; if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, this->error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, sizeof(buffer), NULL) == 0) { - seprintf(buffer, lastof(buffer), "Unknown error %d", this->error); + this->message.assign(fmt::format("Unknown error {}", this->error)); + } else { + this->message.assign(buffer); } - this->message.assign(buffer); #else /* Make strerror thread safe by locking access to it. There is a thread safe strerror_r, however * the non-POSIX variant is available due to defining _GNU_SOURCE meaning it is not portable. diff --git a/src/network/core/tcp_connect.cpp b/src/network/core/tcp_connect.cpp index 9e96240774..b9d033f1e7 100644 --- a/src/network/core/tcp_connect.cpp +++ b/src/network/core/tcp_connect.cpp @@ -233,14 +233,13 @@ void TCPConnecter::Resolve() hints.ai_flags = AI_ADDRCONFIG; hints.ai_socktype = SOCK_STREAM; - char port_name[6]; - seprintf(port_name, lastof(port_name), "%u", address.GetPort()); + std::string port_name = std::to_string(address.GetPort()); static bool getaddrinfo_timeout_error_shown = false; auto start = std::chrono::steady_clock::now(); addrinfo *ai; - int error = getaddrinfo(address.GetHostname().c_str(), port_name, &hints, &ai); + int error = getaddrinfo(address.GetHostname().c_str(), port_name.c_str(), &hints, &ai); auto end = std::chrono::steady_clock::now(); auto duration = std::chrono::duration_cast(end - start); diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 39ea3f7b92..27ca87c461 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -2974,9 +2974,7 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) /* loader for this savegame type is not implemented? */ if (fmt->init_load == nullptr) { - char err_str[64]; - seprintf(err_str, lastof(err_str), "Loader for '%s' is not available.", fmt->name); - SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str); + SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, fmt::format("Loader for '{}' is not available.", fmt->name)); } _sl.lf = fmt->init_load(_sl.lf); From ce8933d63e58ffdad71ba5dbe7268b224cc4339d Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 5 Jun 2023 16:48:57 +0200 Subject: [PATCH 005/123] Add: std::back_insert_iterator Utf8Encode function --- src/string.cpp | 5 +++++ src/string_func.h | 1 + 2 files changed, 6 insertions(+) diff --git a/src/string.cpp b/src/string.cpp index c16ec8c540..8a092c6969 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -672,6 +672,11 @@ size_t Utf8Encode(std::ostreambuf_iterator &buf, WChar c) return Utf8Encode &>(buf, c); } +size_t Utf8Encode(std::back_insert_iterator &buf, WChar c) +{ + return Utf8Encode &>(buf, c); +} + /** * Properly terminate an UTF8 string to some maximum length * @param s string to check if it needs additional trimming diff --git a/src/string_func.h b/src/string_func.h index d66a992f09..4a85f338c3 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -94,6 +94,7 @@ bool IsValidChar(WChar key, CharSetFilter afilter); size_t Utf8Decode(WChar *c, const char *s); size_t Utf8Encode(char *buf, WChar c); size_t Utf8Encode(std::ostreambuf_iterator &buf, WChar c); +size_t Utf8Encode(std::back_insert_iterator &buf, WChar c); size_t Utf8TrimString(char *s, size_t maxlen); From affceea0aed9b9995ab6be7a7e760f2888bf4496 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 5 Jun 2023 16:49:18 +0200 Subject: [PATCH 006/123] Codechange: switch StringBuilder to use std::string as backend --- src/strings.cpp | 24 ++++++++------------- src/strings_internal.h | 49 +++++++++++------------------------------- src/townname.cpp | 22 ++++--------------- 3 files changed, 25 insertions(+), 70 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 99210bee55..9e4cdfdb1d 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -303,11 +303,10 @@ std::string GetString(StringID string) */ std::string GetStringWithArgs(StringID string, StringParameters *args) { - char buffer[DRAW_STRING_BUFFER]; - char *state = buffer; - StringBuilder builder(&state, lastof(buffer)); + std::string result; + StringBuilder builder(result); GetStringWithArgs(builder, string, args); - return std::string(buffer, builder.GetEnd()); + return result; } /** @@ -838,9 +837,8 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara * the parameters. So, we need to gather the type information via the * dry run first, before we can continue formatting the string. */ - char buffer[DRAW_STRING_BUFFER]; - char *state = buffer; - StringBuilder dry_run_builder(&state, lastof(buffer)); + std::string buffer; + StringBuilder dry_run_builder(buffer); if (UsingNewGRFTextStack()) { /* Values from the NewGRF text stack are only copied to the normal * argv array at the time they are encountered. That means that if @@ -1004,21 +1002,17 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara char *p = input + Utf8Encode(input, args->GetTypeAtOffset(offset)); *p = '\0'; - /* The gender is stored at the start of the formatted string. - * So to determine the gender after formatting we only need - * enough space for the gender index token, one character - * for the actual gender and one character for '\0'. */ - char buf[MAX_CHAR_LENGTH + 1 + 1]; - char *state = buf; + /* The gender is stored at the start of the formatted string. */ bool old_sgd = _scan_for_gender_data; _scan_for_gender_data = true; - StringBuilder tmp_builder(&state, lastof(buf)); + std::string buffer; + StringBuilder tmp_builder(buffer); StringParameters tmp_params(args->GetPointerToOffset(offset), args->num_param - offset, nullptr); FormatString(tmp_builder, input, &tmp_params); _scan_for_gender_data = old_sgd; /* And determine the string. */ - const char *s = buf; + const char *s = buffer.c_str(); WChar c = Utf8Consume(&s); /* Does this string have a gender, if so, set it */ if (c == SCC_GENDER_INDEX) gender = (byte)s[0]; diff --git a/src/strings_internal.h b/src/strings_internal.h index a29c6e5486..da2cffe173 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -20,9 +20,7 @@ * extra functions to ease the migration from char buffers to std::string. */ class StringBuilder { - char **current; ///< The current location to add strings. - char *start; ///< The begin of the string. - const char *last; ///< The last element of the buffer. + std::string *string; public: /* Required type for this to be an output_iterator; mimics std::back_insert_iterator. */ @@ -37,7 +35,7 @@ public: * @param start The start location to write to. * @param last The last location to write to. */ - StringBuilder(char **start, const char *last) : current(start), start(*start), last(last) {} + StringBuilder(std::string &string) : string(&string) {} /* Required operators for this to be an output_iterator; mimics std::back_insert_iterator, which has no-ops. */ StringBuilder &operator++() { return *this; } @@ -63,7 +61,7 @@ public: */ StringBuilder &operator+=(const char value) { - if (*this->current != this->last) *(*this->current)++ = value; + this->string->push_back(value); return *this; } @@ -72,54 +70,31 @@ public: * @param str The string to add. * @return Reference to this inserter. */ - StringBuilder &operator+=(const char *str) + StringBuilder &operator+=(std::string_view str) { - *this->current = strecpy(*this->current, str, this->last); + *this->string += str; return *this; } - /** - * Operator to append the given string to the output buffer. - * @param str The string to add. - * @return Reference to this inserter. - */ - StringBuilder &operator+=(const std::string &str) - { - return this->operator+=(str.c_str()); - } - /** * Encode the given Utf8 character into the output buffer. * @param c The character to encode. - * @return true iff there was enough space and the character got added. */ bool Utf8Encode(WChar c) { - if (this->Remaining() < Utf8CharLen(c)) return false; - - (*this->current) += ::Utf8Encode(*this->current, c); + auto iterator = std::back_inserter(*this->string); + ::Utf8Encode(iterator, c); return true; } /** * Remove the given amount of characters from the back of the string. * @param amount The amount of characters to remove. + * @return true iff there was enough space and the character got added. */ void RemoveElementsFromBack(size_t amount) { - *this->current = std::max(this->start, *this->current - amount); - } - - /** - * Get the pointer to the this->last written element in the buffer. - * This call does '\0' terminate the string, whereas other calls do not - * (necessarily) do this. - * @return The this->current end of the string. - */ - char *GetEnd() - { - **this->current = '\0'; - return *this->current; + this->string->erase(this->string->size() - std::min(amount, this->string->size())); } /** @@ -128,7 +103,7 @@ public: */ ptrdiff_t Remaining() { - return (ptrdiff_t)(this->last - *this->current); + return 42; // Just something big-ish, as there's always space (until allocation fails) } /** @@ -137,7 +112,7 @@ public: */ size_t CurrentIndex() { - return *this->current - this->start; + return this->string->size(); } /** @@ -146,7 +121,7 @@ public: */ char &operator[](size_t index) { - return this->start[index]; + return (*this->string)[index]; } }; diff --git a/src/townname.cpp b/src/townname.cpp index 557ed9c497..20dc112560 100644 --- a/src/townname.cpp +++ b/src/townname.cpp @@ -65,11 +65,10 @@ static void GetTownName(StringBuilder &builder, const TownNameParams *par, uint3 */ std::string GetTownName(const TownNameParams *par, uint32 townnameparts) { - char buffer[DRAW_STRING_BUFFER]; - char *state = buffer; - StringBuilder builder(&state, lastof(buffer)); + std::string result; + StringBuilder builder(result); GetTownName(builder, par, townnameparts); - return std::string(buffer, builder.GetEnd()); + return result; } /** @@ -1024,19 +1023,6 @@ void GenerateTownNameString(StringBuilder &builder, size_t lang, uint32 seed) { assert(lang < lengthof(_town_name_generators)); - /* Some generators need at least 9 bytes in buffer. English generators need 5 for - * string replacing, others use constructions like strlen(buf)-3 and so on. - * Finnish generator needs to fit all strings from _name_finnish_1. - * Czech generator needs to fit almost whole town name... - * These would break. Using another temporary buffer results in ~40% slower code, - * so use it only when really needed. */ const TownNameGeneratorParams *par = &_town_name_generators[lang]; - if (builder.Remaining() >= par->min) return par->proc(builder, seed); - - std::string buffer(par->min + 1, '\0'); - char *state = buffer.data(); - StringBuilder buffer_builder(&state, buffer.data() + par->min); - par->proc(buffer_builder, seed); - - builder += buffer; + return par->proc(builder, seed); } From edb21620ea613ee7c305f50b4e1b0b45c89c897d Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 5 Jun 2023 16:52:42 +0200 Subject: [PATCH 007/123] Cleanup: remove unneeded checks on remaining buffer size --- src/strings.cpp | 6 ++---- src/strings_internal.h | 15 +-------------- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 9e4cdfdb1d..ea1c77c29d 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -475,8 +475,8 @@ static void FormatGenericCurrency(StringBuilder &builder, const CurrencySpec *sp /* convert from negative */ if (number < 0) { - if (!builder.Utf8Encode(SCC_PUSH_COLOUR)) return; - if (!builder.Utf8Encode(SCC_RED)) return; + builder.Utf8Encode(SCC_PUSH_COLOUR); + builder.Utf8Encode(SCC_RED); builder += '-'; number = -number; } @@ -1225,8 +1225,6 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara for (const auto &cs : _sorted_cargo_specs) { if (!HasBit(cmask, cs->Index())) continue; - if (builder.Remaining() < 2) break; // ", " - if (first) { first = false; } else { diff --git a/src/strings_internal.h b/src/strings_internal.h index da2cffe173..b87bda9c30 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -15,9 +15,6 @@ /** * Equivalent to the std::back_insert_iterator in function, with some * convenience helpers for string concatenation. - * - * The formatter is currently backed by an external char buffer, and has some - * extra functions to ease the migration from char buffers to std::string. */ class StringBuilder { std::string *string; @@ -80,11 +77,10 @@ public: * Encode the given Utf8 character into the output buffer. * @param c The character to encode. */ - bool Utf8Encode(WChar c) + void Utf8Encode(WChar c) { auto iterator = std::back_inserter(*this->string); ::Utf8Encode(iterator, c); - return true; } /** @@ -97,15 +93,6 @@ public: this->string->erase(this->string->size() - std::min(amount, this->string->size())); } - /** - * Get the remaining number of characters that can be placed. - * @return The number of characters. - */ - ptrdiff_t Remaining() - { - return 42; // Just something big-ish, as there's always space (until allocation fails) - } - /** * Get the current index in the string. * @return The index. From e32f0aa20b1fc49d4292b2e9f7cfb3c13dcf3687 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 5 Jun 2023 16:57:24 +0200 Subject: [PATCH 008/123] Cleanup: minimum string length for town name generator is not needed anymore --- src/townname.cpp | 58 ++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 34 deletions(-) diff --git a/src/townname.cpp b/src/townname.cpp index 20dc112560..8676eb93e9 100644 --- a/src/townname.cpp +++ b/src/townname.cpp @@ -974,42 +974,34 @@ static void MakeCatalanTownName(StringBuilder &builder, uint32_t seed) /** * Type for all town name generator functions. - * @param buf The buffer to write the name to. - * @param last The last element of the buffer. + * @param builder The builder to write the name to. * @param seed The seed of the town name. - * @return The end of the filled buffer. */ typedef void TownNameGenerator(StringBuilder &builder, uint32 seed); -/** Contains pointer to generator and minimum buffer size (not incl. terminating '\0') */ -struct TownNameGeneratorParams { - byte min; ///< minimum number of characters that need to be printed for generator to work correctly - TownNameGenerator *proc; ///< generator itself -}; - /** Town name generators */ -static const TownNameGeneratorParams _town_name_generators[] = { - { 4, MakeEnglishOriginalTownName}, // replaces first 4 characters of name - { 0, MakeFrenchTownName}, - { 0, MakeGermanTownName}, - { 4, MakeEnglishAdditionalTownName}, // replaces first 4 characters of name - { 0, MakeSpanishTownName}, - { 0, MakeSillyTownName}, - { 0, MakeSwedishTownName}, - { 0, MakeDutchTownName}, - { 8, MakeFinnishTownName}, // _name_finnish_1 - { 0, MakePolishTownName}, - { 0, MakeSlovakTownName}, - { 0, MakeNorwegianTownName}, - { 0, MakeHungarianTownName}, - { 0, MakeAustrianTownName}, - { 0, MakeRomanianTownName}, - { 28, MakeCzechTownName}, // _name_czech_adj + _name_czech_patmod + 1 + _name_czech_subst_stem + _name_czech_subst_postfix - { 0, MakeSwissTownName}, - { 0, MakeDanishTownName}, - { 0, MakeTurkishTownName}, - { 0, MakeItalianTownName}, - { 0, MakeCatalanTownName}, +static TownNameGenerator *_town_name_generators[] = { + MakeEnglishOriginalTownName, // replaces first 4 characters of name + MakeFrenchTownName, + MakeGermanTownName, + MakeEnglishAdditionalTownName, // replaces first 4 characters of name + MakeSpanishTownName, + MakeSillyTownName, + MakeSwedishTownName, + MakeDutchTownName, + MakeFinnishTownName, // _name_finnish_1 + MakePolishTownName, + MakeSlovakTownName, + MakeNorwegianTownName, + MakeHungarianTownName, + MakeAustrianTownName, + MakeRomanianTownName, + MakeCzechTownName, // _name_czech_adj + _name_czech_patmod + 1 + _name_czech_subst_stem + _name_czech_subst_postfix + MakeSwissTownName, + MakeDanishTownName, + MakeTurkishTownName, + MakeItalianTownName, + MakeCatalanTownName, }; @@ -1022,7 +1014,5 @@ static const TownNameGeneratorParams _town_name_generators[] = { void GenerateTownNameString(StringBuilder &builder, size_t lang, uint32 seed) { assert(lang < lengthof(_town_name_generators)); - - const TownNameGeneratorParams *par = &_town_name_generators[lang]; - return par->proc(builder, seed); + return _town_name_generators[lang](builder, seed); } From ca1e34c121fae839520b64dc812fc6d64092bb0c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 6 Jun 2023 17:01:37 +0200 Subject: [PATCH 009/123] Codechange: use std::string to build ScriptText's encoded text --- src/script/api/script_text.cpp | 27 +++++++++++++-------------- src/script/api/script_text.hpp | 6 ++---- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/script/api/script_text.cpp b/src/script/api/script_text.cpp index 3d2a95650c..61df5e005d 100644 --- a/src/script/api/script_text.cpp +++ b/src/script/api/script_text.cpp @@ -159,24 +159,25 @@ SQInteger ScriptText::_set(HSQUIRRELVM vm) const std::string ScriptText::GetEncodedText() { - static char buf[1024]; static StringIDList seen_ids; int param_count = 0; seen_ids.clear(); - this->_GetEncodedText(buf, lastof(buf), param_count, seen_ids); + std::string result; + auto output = std::back_inserter(result); + this->_GetEncodedText(output, param_count, seen_ids); if (param_count > SCRIPT_TEXT_MAX_PARAMETERS) throw Script_FatalError(fmt::format("{}: Too many parameters", GetGameStringName(this->string))); - return buf; + return result; } -char *ScriptText::_GetEncodedText(char *p, char *lastofp, int ¶m_count, StringIDList &seen_ids) +void ScriptText::_GetEncodedText(std::back_insert_iterator &output, int ¶m_count, StringIDList &seen_ids) { const std::string &name = GetGameStringName(this->string); if (std::find(seen_ids.begin(), seen_ids.end(), this->string) != seen_ids.end()) throw Script_FatalError(fmt::format("{}: Circular reference detected", name)); seen_ids.push_back(this->string); - p += Utf8Encode(p, SCC_ENCODED); - p += seprintf(p, lastofp, "%X", this->string); + Utf8Encode(output, SCC_ENCODED); + fmt::format_to(output, "{:X}", this->string); const StringParams ¶ms = GetGameStringParams(this->string); int cur_idx = 0; @@ -196,7 +197,7 @@ char *ScriptText::_GetEncodedText(char *p, char *lastofp, int ¶m_count, Stri /* No more extra parameters, assume SQInteger are expected. */ if (cur_idx >= this->paramc) throw Script_FatalError(fmt::format("{}: Not enough parameters", name)); if (!std::holds_alternative(this->param[cur_idx])) throw Script_FatalError(fmt::format("{}: Parameter {} expects an integer", name, param_count + i)); - p = strecpy(p, fmt::format(":{:X}", std::get(this->param[cur_idx++])).c_str(), lastofp); + fmt::format_to(output, ":{:X}", std::get(this->param[cur_idx++])); } } if (prev_idx == prev_count) { @@ -207,18 +208,18 @@ char *ScriptText::_GetEncodedText(char *p, char *lastofp, int ¶m_count, Stri switch (cur_param.type) { case StringParam::RAW_STRING: if (!std::holds_alternative(this->param[cur_idx])) throw Script_FatalError(fmt::format("{}: Parameter {} expects a raw string", name, param_count)); - p += seprintf(p, lastofp, ":\"%s\"", std::get(this->param[cur_idx++]).c_str()); + fmt::format_to(output, ":\"%s\"", std::get(this->param[cur_idx++])); break; case StringParam::STRING: { if (!std::holds_alternative(this->param[cur_idx])) throw Script_FatalError(fmt::format("{}: Parameter {} expects a substring", name, param_count)); int count = 0; - p = strecpy(p, ":", lastofp); - p = std::get(this->param[cur_idx++])->_GetEncodedText(p, lastofp, count, seen_ids); + fmt::format_to(output, ":"); + std::get(this->param[cur_idx++])->_GetEncodedText(output, count, seen_ids); if (++count != cur_param.consumes) { ScriptLog::Error(fmt::format("{}: Parameter {} substring consumes {}, but expected {} to be consumed", name, param_count, count - 1, cur_param.consumes - 1).c_str()); /* Fill missing params if needed. */ - for (int i = count; i < cur_param.consumes; i++) p += seprintf(p, lastofp, ":0"); + for (int i = count; i < cur_param.consumes; i++) fmt::format_to(output, ":0"); /* Disable validation for the extra params if any. */ if (count > cur_param.consumes) { prev_string = param_count; @@ -233,7 +234,7 @@ char *ScriptText::_GetEncodedText(char *p, char *lastofp, int ¶m_count, Stri if (cur_idx + cur_param.consumes > this->paramc) throw Script_FatalError(fmt::format("{}: Not enough parameters", name)); for (int i = 0; i < cur_param.consumes; i++) { if (!std::holds_alternative(this->param[cur_idx])) throw Script_FatalError(fmt::format("{}: Parameter {} expects an integer", name, param_count + i)); - p = strecpy(p, fmt::format(":{:X}", std::get(this->param[cur_idx++])).c_str(), lastofp); + fmt::format_to(output, ":{:X}", std::get(this->param[cur_idx++])); } } } @@ -242,8 +243,6 @@ char *ScriptText::_GetEncodedText(char *p, char *lastofp, int ¶m_count, Stri } seen_ids.pop_back(); - - return p; } const std::string Text::GetDecodedText() diff --git a/src/script/api/script_text.hpp b/src/script/api/script_text.hpp index 8c8171de85..92928b8b8f 100644 --- a/src/script/api/script_text.hpp +++ b/src/script/api/script_text.hpp @@ -138,13 +138,11 @@ private: /** * Internal function for recursive calling this function over multiple * instances, while writing in the same buffer. - * @param p The current position in the buffer. - * @param lastofp The last position valid in the buffer. + * @param output The output to write the encoded text to. * @param param_count The number of parameters that are in the string. * @param seen_ids The list of seen StringID. - * @return The new current position in the buffer. */ - char *_GetEncodedText(char *p, char *lastofp, int ¶m_count, StringIDList &seen_ids); + void _GetEncodedText(std::back_insert_iterator &output, int ¶m_count, StringIDList &seen_ids); /** * Set a parameter, where the value is the first item on the stack. From 1fa432ca92c61a7ccfe8e94ac1cd8ed604b437c4 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 5 Jun 2023 17:09:20 +0200 Subject: [PATCH 010/123] Codechange: replace C-style string building with C++-style building --- src/network/network_content_gui.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp index 3ef613824f..7f48a7b581 100644 --- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -741,8 +741,7 @@ public: if (!this->selected->dependencies.empty()) { /* List dependencies */ - char buf[DRAW_STRING_BUFFER] = ""; - char *p = buf; + std::string buf; for (auto &cid : this->selected->dependencies) { /* Try to find the dependency */ ConstContentIterator iter = _network_content_client.Begin(); @@ -750,7 +749,8 @@ public: const ContentInfo *ci = *iter; if (ci->id != cid) continue; - p += seprintf(p, lastof(buf), p == buf ? "%s" : ", %s", (*iter)->name.c_str()); + if (!buf.empty()) buf += ", "; + buf += (*iter)->name; break; } } @@ -760,10 +760,10 @@ public: if (!this->selected->tags.empty()) { /* List all tags */ - char buf[DRAW_STRING_BUFFER] = ""; - char *p = buf; + std::string buf; for (auto &tag : this->selected->tags) { - p += seprintf(p, lastof(buf), p == buf ? "%s" : ", %s", tag.c_str()); + if (!buf.empty()) buf += ", "; + buf += tag; } SetDParamStr(0, buf); tr.top = DrawStringMultiLine(tr, STR_CONTENT_DETAIL_TAGS); @@ -774,14 +774,14 @@ public: ConstContentVector tree; _network_content_client.ReverseLookupTreeDependency(tree, this->selected); - char buf[DRAW_STRING_BUFFER] = ""; - char *p = buf; + std::string buf; for (const ContentInfo *ci : tree) { if (ci == this->selected || ci->state != ContentInfo::SELECTED) continue; - p += seprintf(p, lastof(buf), buf == p ? "%s" : ", %s", ci->name.c_str()); + if (!buf.empty()) buf += ", "; + buf += ci->name; } - if (p != buf) { + if (!buf.empty()) { SetDParamStr(0, buf); tr.top = DrawStringMultiLine(tr, STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF); } From 96fef9f64384b9f76641a28247fb63239ff3d39c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 5 Jun 2023 17:14:35 +0200 Subject: [PATCH 011/123] Codechange: allocate enough memory to layout the strings --- src/gfx_layout.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gfx_layout.cpp b/src/gfx_layout.cpp index 9de917a80e..87b9495409 100644 --- a/src/gfx_layout.cpp +++ b/src/gfx_layout.cpp @@ -64,8 +64,8 @@ static inline void GetLayouter(Layouter::LineCacheItem &line, std::string_view s { if (line.buffer != nullptr) free(line.buffer); - typename T::CharType *buff_begin = MallocT(DRAW_STRING_BUFFER); - const typename T::CharType *buffer_last = buff_begin + DRAW_STRING_BUFFER; + typename T::CharType *buff_begin = MallocT(str.size() + 1); + const typename T::CharType *buffer_last = buff_begin + str.size() + 1; typename T::CharType *buff = buff_begin; FontMap &fontMapping = line.runs; Font *f = Layouter::GetFont(state.fontsize, state.cur_colour); From a47de4b2ab0b6f696816726a8f3cb336d6cc24dd Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 5 Jun 2023 17:15:20 +0200 Subject: [PATCH 012/123] Cleanup: remove DRAW_STRING_BUFFER constant --- src/gfx_func.h | 3 --- src/network/network_chat_gui.cpp | 4 ---- 2 files changed, 7 deletions(-) diff --git a/src/gfx_func.h b/src/gfx_func.h index 2d212c066c..9300b2cafd 100644 --- a/src/gfx_func.h +++ b/src/gfx_func.h @@ -82,9 +82,6 @@ void GameSizeChanged(); bool AdjustGUIZoom(bool automatic); void UndrawMouseCursor(); -/** Size of the buffer used for drawing strings. */ -static const int DRAW_STRING_BUFFER = 2048; - void RedrawScreenRect(int left, int top, int right, int bottom); void GfxScroll(int left, int top, int width, int height, int xo, int yo); diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp index 01aad5fb7a..ca196a4d2b 100644 --- a/src/network/network_chat_gui.cpp +++ b/src/network/network_chat_gui.cpp @@ -30,10 +30,6 @@ #include "../safeguards.h" -/** The draw buffer must be able to contain the chat message, client name and the "[All]" message, - * some spaces and possible translations of [All] to other languages. */ -static_assert((int)DRAW_STRING_BUFFER >= (int)NETWORK_CHAT_LENGTH + NETWORK_NAME_LENGTH + 40); - /** Spacing between chat lines. */ static const uint NETWORK_CHAT_LINE_SPACING = 3; From 617cacd54220050249391e62899f8a49785c98c2 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 6 Jun 2023 19:30:37 +0200 Subject: [PATCH 013/123] Fix #10961, 52a7c69: incorrect order of parameters to gamelog revision constructor --- src/gamelog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gamelog.cpp b/src/gamelog.cpp index 461e0ab3a5..cf0fe4e3b6 100644 --- a/src/gamelog.cpp +++ b/src/gamelog.cpp @@ -376,7 +376,7 @@ void Gamelog::Revision() assert(this->action_type == GLAT_START || this->action_type == GLAT_LOAD); this->Change(std::make_unique( - GetGamelogRevisionString(), SAVEGAME_VERSION, _openttd_revision_modified, _openttd_newgrf_version)); + GetGamelogRevisionString(), _openttd_newgrf_version, SAVEGAME_VERSION, _openttd_revision_modified)); } /** From 316a4349335fff7f7db985e2a2cb04d897986a1a Mon Sep 17 00:00:00 2001 From: translators Date: Tue, 6 Jun 2023 18:40:40 +0000 Subject: [PATCH 014/123] Update: Translations from eints english (au): 6 changes by krysclarke russian: 4 changes by Ln-Wolf danish: 5 changes by bscargo portuguese: 7 changes by azulcosta --- src/lang/danish.txt | 7 +++++-- src/lang/english_AU.txt | 8 ++++++-- src/lang/portuguese.txt | 11 +++++++---- src/lang/russian.txt | 5 ++++- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 9c49a44023..55c14a3619 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -846,7 +846,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} er blevet lukket af kreditorerne og alle ejendomme er solgt! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nyt transportselskab er startet! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} starter konstruktion i nærheden af {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} er blevet overtaget af {STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} er blevet overtaget af {STRING} til et ikke oplyst beløb! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Direktør) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} har sponsoreret stiftelsen af en ny by, {TOWN}! @@ -1558,7 +1558,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Grå til rød STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Gråtoner STR_CONFIG_SETTING_SCROLLMODE :Visningsport bevægelse: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Virkemåde for bevægelse af kortet +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Virkemåde for bevægelse af kortet. "Museposition låst"-mulighederne virker ikke på alle systemer, såsom webbaserede versioner, berøringsskærme, Linux med Wayland og andre ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Bevæg syns vinduet med højre mussetast, musse position låst STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Bevæg kortet med højre mussetast, musse position låst @@ -2080,6 +2080,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allokeri # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Fejl med grafikindstillinger... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... ingen kompatibel GPU fundet. Hardware-acceleration deaktiveret +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... GPU-driver fik spillet til at gå ned. Hardwareacceleration deaktiveret # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -3759,6 +3760,7 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljer STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Se detaljerede infrastruktur-tal STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Giv penge STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Giv penge til dette selskab +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Foretag en fjendtlig overtagelse af dette firma STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nyt ansigt STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Vælg nyt ansigt til direktøren @@ -3774,6 +3776,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Direktørens na STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Skriv hvor mange penge du ønsker at give STR_BUY_COMPANY_MESSAGE :{WHITE}Vi leder efter et selskab til at overtage vores{}{}Vil du købe {COMPANY} for {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}I en fjendtlig overtagelse af {COMPANY} du vil købe alle aktiver, betale af på alle lån og betale to års overskud.{}{}Det samlede anslås at være {CURRENCY_LONG}.{}{}Ønsker du at fortsætte denne fjendtlige overtagelse? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktur for {COMPANY} diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index c5ff3f9ee3..35652fc1ce 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -846,7 +846,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} has been closed down by creditors and all assets sold off! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}New transport company launched! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} starts construction near {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} has been taken over by {STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} has been taken over by {STRING} for an undisclosed amount! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Manager) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponsored construction of new town {TOWN}! @@ -1558,7 +1558,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Grey to red STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Greyscale STR_CONFIG_SETTING_SCROLLMODE :Viewport scroll behaviour: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Behaviour when scrolling the map +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Behaviour when scrolling the map. The "mouse position locked" options don't work on all systems, like web-based versions, touchscreens, Linux with Wayland, and others ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Move viewport with RMB, mouse position locked STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Move map with RMB, mouse position locked @@ -2080,6 +2080,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allocati # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Error with video settings... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... no compatible GPU found. Hardware acceleration disabled +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... GPU driver crashed the game. Hardware acceleration disabled # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -3759,6 +3760,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}View detailed infrastructure counts STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Give money STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Give money to this company +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Hostile takeover +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Do a hostile takeover of this company STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}New Face STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Select new face for manager @@ -3774,6 +3777,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Manager's Name STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Enter the amount of money you want to give STR_BUY_COMPANY_MESSAGE :{WHITE}We are looking for a transport company to take-over our company.{}{}Do you want to purchase {COMPANY} for {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}In a hostile takeover of {COMPANY} you will purchase all assets, pay off all loans, and pay two years worth of profits.{}{}The total is estimated to be {CURRENCY_LONG}.{}{}Do you want to continue this hostile takeover? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructure of {COMPANY} diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 9ebf99bac0..6681c88839 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -847,7 +847,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC 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! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} inicia construção em {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} foi comprada por {STRING}! +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}{}(Presidente) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} subsidiou a construção da nova localidade de {TOWN}! @@ -3761,6 +3761,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalhes STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Ver contagens de infraestrutura detalhadas STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Dar dinheiro STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Dá dinheiro a esta empresa +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Aquisição hostil +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Fazer a aquisição hostil desta empresa STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nova cara STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Seleccione uma nova cara para o presidente @@ -3776,6 +3778,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nome do Preside STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Insira a quantidade de dinheiro que quer dar STR_BUY_COMPANY_MESSAGE :{WHITE}Estamos à procura de uma empresa de transportes para comprar a nossa empresa{}{}Deseja comprar {COMPANY} por {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Na aquisição hostil de {COMPANY} irá adquirir todos os ativos, liquidar todos os empréstimos e pagar o valor de 2 anos de lucros.{}{}O total estimado é de {CURRENCY_LONG}.{}{}Quer continuar com esta aquisição hostil? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infraestrutura de {COMPANY} @@ -4067,9 +4070,9 @@ STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clonar A ###length VEHICLE_TYPES STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Esta acção comprará uma cópia de um comboio, incluindo todas as carruagens. Clique neste botão e, de seguida, num comboio que se encontre dentro ou fora do depósito. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar -STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Esta acção comprará uma cópia de um veículo rodoviário. Clique neste botão e, de seguida, num veículo que se encontre dentro ou fora de um depósito. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar -STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Esta acção comprará uma cópia de um navio. Clique neste botão e, de seguida, num navio que se encontre dentro ou fora do depósito. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar -STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Esta acção comprará uma cópia de uma aeronave. Clique neste botão e, de seguida, numa aeronave que se encontre dentro ou fora do hangar. Ctrl+Clique ira partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Esta ação comprará uma cópia de um veículo rodoviário. Clique neste botão e de seguida, num veículo que se encontre dentro ou fora de um depósito. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Esta ação comprará uma cópia de um navio. Clique neste botão e de seguida, num navio que se encontre dentro ou fora do depósito. Ctrl+Clique irá partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Esta ação comprará uma cópia de uma aeronave. Clique neste botão e de seguida, numa aeronave que se encontre dentro ou fora do hangar. Ctrl+Clique ira partilhar as ordens. Shift+Clique mostra estimativa de custo, sem comprar ###length VEHICLE_TYPES STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrar visualização na localização de um depósito ferroviário. Ctrl+Clique abre um novo visualizador na localização do depósito ferroviário diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 8588f528a1..728f5e5cd8 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -991,7 +991,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} была закрыта кредиторами! Все активы распроданы! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Основана новая транспортная компания! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} начинает строительство около г.{NBSP}{TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} выкуплена {STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} выкуплена {STRING}! Сумма сделки не раскрывается. STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Директор) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Компания «{STRING}» профинансировала основание города {TOWN}! @@ -3935,6 +3935,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Подр STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Посмотреть подробный состав инфраструктуры STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Передать деньги STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Передать некоторую сумму денег этой компании +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Поглощение +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Осуществить поглощение компании STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Внешность STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Изменить внешность директора @@ -3950,6 +3952,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Имя дире STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Введите сумму, которую собираетесь передать STR_BUY_COMPANY_MESSAGE :{WHITE}Мы ищем потенциального покупателя для нашей компании.{}{}Не желаете ли Вы приобрести {COMPANY} за {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}После поглощения компании {COMPANY} вы приобретёте все её активы. При этом вам придётся выплатить все её долги плюс сумму, эквивалентную её двойному годовому доходу.{}{}Сумма сделки оценивается в {CURRENCY_LONG}.{}{}Осуществить поглощение компании? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Инфраструктура «{COMPANY}» From 7a0b6b7ddf09a07cded91b0be86aabfe3ead53d4 Mon Sep 17 00:00:00 2001 From: PeterN Date: Tue, 6 Jun 2023 19:43:27 +0100 Subject: [PATCH 015/123] Codechange: Remove Freetype bits on Win32/OSX. (#10960) These platforms have their own specific font rendering. --- CMakeLists.txt | 4 +- src/fontcache/freetypefontcache.cpp | 12 +- src/os/macosx/font_osx.cpp | 44 ------ src/os/unix/font_unix.cpp | 5 - src/os/windows/font_win32.cpp | 229 +--------------------------- 5 files changed, 6 insertions(+), 288 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 614fd4c230..f62917b50e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -144,7 +144,9 @@ if(NOT OPTION_DEDICATED) find_package(SDL) endif() find_package(Fluidsynth) - find_package(Fontconfig) + if(Freetype_FOUND) + find_package(Fontconfig) + endif() find_package(Harfbuzz) find_package(ICU OPTIONAL_COMPONENTS i18n) endif() diff --git a/src/fontcache/freetypefontcache.cpp b/src/fontcache/freetypefontcache.cpp index df66b73c2b..65b1185435 100644 --- a/src/fontcache/freetypefontcache.cpp +++ b/src/fontcache/freetypefontcache.cpp @@ -143,19 +143,11 @@ void LoadFreeTypeFont(FontSize fs) /* If font is an absolute path to a ttf, try loading that first. */ FT_Error error = FT_New_Face(_library, font_name, 0, &face); -#if defined(WITH_COCOA) - extern void MacOSRegisterExternalFont(const char *file_path); - if (error == FT_Err_Ok) MacOSRegisterExternalFont(font_name); -#endif - if (error != FT_Err_Ok) { /* Check if font is a relative filename in one of our search-paths. */ std::string full_font = FioFindFullPath(BASE_DIR, font_name); if (!full_font.empty()) { error = FT_New_Face(_library, full_font.c_str(), 0, &face); -#if defined(WITH_COCOA) - if (error == FT_Err_Ok) MacOSRegisterExternalFont(full_font.c_str()); -#endif } } @@ -317,10 +309,10 @@ void UninitFreeType() _library = nullptr; } -#if !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA) +#if !defined(WITH_FONTCONFIG) FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) { return FT_Err_Cannot_Open_Resource; } -#endif /* !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA) */ +#endif /* !defined(WITH_FONTCONFIG) */ #endif /* WITH_FREETYPE */ diff --git a/src/os/macosx/font_osx.cpp b/src/os/macosx/font_osx.cpp index bdbbcada64..6179169a86 100644 --- a/src/os/macosx/font_osx.cpp +++ b/src/os/macosx/font_osx.cpp @@ -24,50 +24,6 @@ #include "safeguards.h" - -#ifdef WITH_FREETYPE - -#include -#include FT_FREETYPE_H - -extern FT_Library _library; - - -FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) -{ - FT_Error err = FT_Err_Cannot_Open_Resource; - - /* Get font reference from name. */ - UInt8 file_path[PATH_MAX]; - OSStatus os_err = -1; - CFAutoRelease name(CFStringCreateWithCString(kCFAllocatorDefault, font_name, kCFStringEncodingUTF8)); - - /* Simply creating the font using CTFontCreateWithNameAndSize will *always* return - * something, no matter the name. As such, we can't use it to check for existence. - * We instead query the list of all font descriptors that match the given name which - * does not do this stupid name fallback. */ - CFAutoRelease name_desc(CTFontDescriptorCreateWithNameAndSize(name.get(), 0.0)); - CFAutoRelease mandatory_attribs(CFSetCreate(kCFAllocatorDefault, const_cast(reinterpret_cast(&kCTFontNameAttribute)), 1, &kCFTypeSetCallBacks)); - CFAutoRelease descs(CTFontDescriptorCreateMatchingFontDescriptors(name_desc.get(), mandatory_attribs.get())); - - /* Loop over all matches until we can get a path for one of them. */ - for (CFIndex i = 0; descs.get() != nullptr && i < CFArrayGetCount(descs.get()) && os_err != noErr; i++) { - CFAutoRelease font(CTFontCreateWithFontDescriptor((CTFontDescriptorRef)CFArrayGetValueAtIndex(descs.get(), i), 0.0, nullptr)); - CFAutoRelease fontURL((CFURLRef)CTFontCopyAttribute(font.get(), kCTFontURLAttribute)); - if (CFURLGetFileSystemRepresentation(fontURL.get(), true, file_path, lengthof(file_path))) os_err = noErr; - } - - if (os_err == noErr) { - Debug(fontcache, 3, "Font path for {}: {}", font_name, file_path); - err = FT_New_Face(_library, (const char *)file_path, 0, face); - } - - return err; -} - -#endif /* WITH_FREETYPE */ - - bool SetFallbackFont(FontCacheSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) { /* Determine fallback font using CoreText. This uses the language isocode diff --git a/src/os/unix/font_unix.cpp b/src/os/unix/font_unix.cpp index bfc759c0dd..b4e8c6a0f6 100644 --- a/src/os/unix/font_unix.cpp +++ b/src/os/unix/font_unix.cpp @@ -17,8 +17,6 @@ #include "safeguards.h" -#ifdef WITH_FREETYPE - #include #include FT_FREETYPE_H @@ -97,9 +95,6 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) return err; } -#endif /* WITH_FREETYPE */ - - bool SetFallbackFont(FontCacheSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) { bool ret = false; diff --git a/src/os/windows/font_win32.cpp b/src/os/windows/font_win32.cpp index def4f57552..e6f9147751 100644 --- a/src/os/windows/font_win32.cpp +++ b/src/os/windows/font_win32.cpp @@ -32,208 +32,6 @@ #include "safeguards.h" -#ifdef WITH_FREETYPE - -#include -#include FT_FREETYPE_H - -extern FT_Library _library; - -/** - * Get the short DOS 8.3 format for paths. - * FreeType doesn't support Unicode filenames and Windows' fopen (as used - * by FreeType) doesn't support UTF-8 filenames. So we have to convert the - * filename into something that isn't UTF-8 but represents the Unicode file - * name. This is the short DOS 8.3 format. This does not contain any - * characters that fopen doesn't support. - * @param long_path the path in system encoding. - * @return the short path in ANSI (ASCII). - */ -static const char *GetShortPath(const wchar_t *long_path) -{ - static char short_path[MAX_PATH]; - wchar_t short_path_w[MAX_PATH]; - GetShortPathName(long_path, short_path_w, lengthof(short_path_w)); - WideCharToMultiByte(CP_ACP, 0, short_path_w, -1, short_path, lengthof(short_path), nullptr, nullptr); - return short_path; -} - -/* Get the font file to be loaded into Freetype by looping the registry - * location where windows lists all installed fonts. Not very nice, will - * surely break if the registry path changes, but it works. Much better - * solution would be to use CreateFont, and extract the font data from it - * by GetFontData. The problem with this is that the font file needs to be - * kept in memory then until the font is no longer needed. This could mean - * an additional memory usage of 30MB (just for fonts!) when using an eastern - * font for all font sizes */ -static const wchar_t *FONT_DIR_NT = L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts"; -FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) -{ - FT_Error err = FT_Err_Cannot_Open_Resource; - HKEY hKey; - LONG ret; - wchar_t vbuffer[MAX_PATH], dbuffer[256]; - const char *font_path; - uint index; - size_t path_len; - - ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, FONT_DIR_NT, 0, KEY_READ, &hKey); - - if (ret != ERROR_SUCCESS) { - Debug(fontcache, 0, "Cannot open registry key HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts"); - return err; - } - - /* Convert font name to file system encoding. */ - wchar_t *font_namep = wcsdup(OTTD2FS(font_name).c_str()); - - for (index = 0;; index++) { - wchar_t *s; - DWORD vbuflen = lengthof(vbuffer); - DWORD dbuflen = lengthof(dbuffer); - - ret = RegEnumValue(hKey, index, vbuffer, &vbuflen, nullptr, nullptr, (byte *)dbuffer, &dbuflen); - if (ret != ERROR_SUCCESS) goto registry_no_font_found; - - /* The font names in the registry are of the following 3 forms: - * - ADMUI3.fon - * - Book Antiqua Bold (TrueType) - * - Batang & BatangChe & Gungsuh & GungsuhChe (TrueType) - * We will strip the font-type '()' if any and work with the font name - * itself, which must match exactly; if... - * TTC files, font files which contain more than one font are separated - * by '&'. Our best bet will be to do substr match for the fontname - * and then let FreeType figure out which index to load */ - s = wcschr(vbuffer, L'('); - if (s != nullptr) s[-1] = '\0'; - - if (wcschr(vbuffer, L'&') == nullptr) { - if (wcsicmp(vbuffer, font_namep) == 0) break; - } else { - if (wcsstr(vbuffer, font_namep) != nullptr) break; - } - } - - if (!SUCCEEDED(SHGetFolderPath(nullptr, CSIDL_FONTS, nullptr, SHGFP_TYPE_CURRENT, vbuffer))) { - Debug(fontcache, 0, "SHGetFolderPath cannot return fonts directory"); - goto folder_error; - } - - /* Some fonts are contained in .ttc files, TrueType Collection fonts. These - * contain multiple fonts inside this single file. GetFontData however - * returns the whole file, so we need to check each font inside to get the - * proper font. */ - std::wstring pathbuf(vbuffer); - pathbuf += L"\\"; - pathbuf += dbuffer; - - /* Convert the path into something that FreeType understands. */ - font_path = GetShortPath(pathbuf.c_str()); - - index = 0; - do { - err = FT_New_Face(_library, font_path, index, face); - if (err != FT_Err_Ok) break; - - if (StrStartsWithIgnoreCase(font_name, (*face)->family_name)) break; - /* Try english name if font name failed */ - if (StrStartsWithIgnoreCase(font_name + strlen(font_name) + 1, (*face)->family_name)) break; - err = FT_Err_Cannot_Open_Resource; - - } while ((FT_Long)++index != (*face)->num_faces); - - -folder_error: -registry_no_font_found: - free(font_namep); - RegCloseKey(hKey); - return err; -} - -/** - * Fonts can have localised names and when the system locale is the same as - * one of those localised names Windows will always return that localised name - * instead of allowing to get the non-localised (English US) name of the font. - * This will later on give problems as freetype uses the non-localised name of - * the font and we need to compare based on that name. - * Windows furthermore DOES NOT have an API to get the non-localised name nor - * can we override the system locale. This means that we have to actually read - * the font itself to gather the font name we want. - * Based on: http://blogs.msdn.com/michkap/archive/2006/02/13/530814.aspx - * @param logfont the font information to get the english name of. - * @return the English name (if it could be found). - */ -static std::string GetEnglishFontName(const ENUMLOGFONTEX *logfont) -{ - static char font_name[MAX_PATH]; - const char *ret_font_name = nullptr; - uint pos = 0; - HDC dc; - HGDIOBJ oldfont; - byte *buf; - DWORD dw; - uint16 format, count, stringOffset, platformId, encodingId, languageId, nameId, length, offset; - - HFONT font = CreateFontIndirect(&logfont->elfLogFont); - if (font == nullptr) goto err1; - - dc = GetDC(nullptr); - oldfont = SelectObject(dc, font); - dw = GetFontData(dc, 'eman', 0, nullptr, 0); - if (dw == GDI_ERROR) goto err2; - - buf = MallocT(dw); - dw = GetFontData(dc, 'eman', 0, buf, dw); - if (dw == GDI_ERROR) goto err3; - - format = buf[pos++] << 8; - format += buf[pos++]; - assert(format == 0); - count = buf[pos++] << 8; - count += buf[pos++]; - stringOffset = buf[pos++] << 8; - stringOffset += buf[pos++]; - for (uint i = 0; i < count; i++) { - platformId = buf[pos++] << 8; - platformId += buf[pos++]; - encodingId = buf[pos++] << 8; - encodingId += buf[pos++]; - languageId = buf[pos++] << 8; - languageId += buf[pos++]; - nameId = buf[pos++] << 8; - nameId += buf[pos++]; - if (nameId != 1) { - pos += 4; // skip length and offset - continue; - } - length = buf[pos++] << 8; - length += buf[pos++]; - offset = buf[pos++] << 8; - offset += buf[pos++]; - - /* Don't buffer overflow */ - length = std::min(length, MAX_PATH - 1); - for (uint j = 0; j < length; j++) font_name[j] = buf[stringOffset + offset + j]; - font_name[length] = '\0'; - - if ((platformId == 1 && languageId == 0) || // Macintosh English - (platformId == 3 && languageId == 0x0409)) { // Microsoft English (US) - ret_font_name = font_name; - break; - } - } - -err3: - free(buf); -err2: - SelectObject(dc, oldfont); - ReleaseDC(nullptr, dc); - DeleteObject(font); -err1: - return ret_font_name == nullptr ? FS2OTTD((const wchar_t *)logfont->elfFullName) : std::string(ret_font_name); -} -#endif /* WITH_FREETYPE */ - struct EFCParam { FontCacheSettings *settings; LOCALESIGNATURE locale; @@ -284,34 +82,9 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *logfont, const NEWTEXT char font_name[MAX_PATH]; convert_from_fs((const wchar_t *)logfont->elfFullName, font_name, lengthof(font_name)); -#ifdef WITH_FREETYPE - /* Add english name after font name */ - std::string english_name = GetEnglishFontName(logfont); - strecpy(font_name + strlen(font_name) + 1, english_name.c_str(), lastof(font_name)); - - /* Check whether we can actually load the font. */ - bool ft_init = _library != nullptr; - bool found = false; - FT_Face face; - /* Init FreeType if needed. */ - if ((ft_init || FT_Init_FreeType(&_library) == FT_Err_Ok) && GetFontByFaceName(font_name, &face) == FT_Err_Ok) { - FT_Done_Face(face); - found = true; - } - if (!ft_init) { - /* Uninit FreeType if we did the init. */ - FT_Done_FreeType(_library); - _library = nullptr; - } - - if (!found) return 1; -#else - const char *english_name = font_name; -#endif /* WITH_FREETYPE */ - info->callback->SetFontNames(info->settings, font_name, &logfont->elfLogFont); if (info->callback->FindMissingGlyphs()) return 1; - Debug(fontcache, 1, "Fallback font: {} ({})", font_name, english_name); + Debug(fontcache, 1, "Fallback font: {}", font_name); return 0; // stop enumerating } From eda3defcb5e6653c4c4bc4d53c21d3725bed7fd8 Mon Sep 17 00:00:00 2001 From: PeterN Date: Tue, 6 Jun 2023 21:55:56 +0100 Subject: [PATCH 016/123] Codechange: Pass language for font detection as std::string. (#10964) --- src/fontcache.cpp | 2 +- src/fontdetection.h | 2 +- src/os/macosx/font_osx.cpp | 18 ++++++++---------- src/os/unix/font_unix.cpp | 9 +++------ src/os/windows/font_win32.cpp | 2 +- 5 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/fontcache.cpp b/src/fontcache.cpp index 93c3f01b26..dcaa05d25a 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -189,5 +189,5 @@ bool HasAntialiasedFonts() #if !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA) -bool SetFallbackFont(FontCacheSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) { return false; } +bool SetFallbackFont(FontCacheSettings *settings, const std::string &language_isocode, int winlangid, MissingGlyphSearcher *callback) { return false; } #endif /* !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA) */ diff --git a/src/fontdetection.h b/src/fontdetection.h index a0242fda1f..2a316da505 100644 --- a/src/fontdetection.h +++ b/src/fontdetection.h @@ -37,6 +37,6 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face); * @param callback The function to call to check for missing glyphs. * @return true if a font has been set, false otherwise. */ -bool SetFallbackFont(struct FontCacheSettings *settings, const char *language_isocode, int winlangid, class MissingGlyphSearcher *callback); +bool SetFallbackFont(struct FontCacheSettings *settings, const std::string &language_isocode, int winlangid, class MissingGlyphSearcher *callback); #endif diff --git a/src/os/macosx/font_osx.cpp b/src/os/macosx/font_osx.cpp index 6179169a86..7897d48141 100644 --- a/src/os/macosx/font_osx.cpp +++ b/src/os/macosx/font_osx.cpp @@ -24,28 +24,26 @@ #include "safeguards.h" -bool SetFallbackFont(FontCacheSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) +bool SetFallbackFont(FontCacheSettings *settings, const std::string &language_isocode, int winlangid, MissingGlyphSearcher *callback) { /* Determine fallback font using CoreText. This uses the language isocode * to find a suitable font. CoreText is available from 10.5 onwards. */ - char lang[16]; - if (strcmp(language_isocode, "zh_TW") == 0) { + std::string lang; + if (language_isocode == "zh_TW") { /* Traditional Chinese */ - strecpy(lang, "zh-Hant", lastof(lang)); - } else if (strcmp(language_isocode, "zh_CN") == 0) { + lang = "zh-Hant"; + } else if (language_isocode == "zh_CN") { /* Simplified Chinese */ - strecpy(lang, "zh-Hans", lastof(lang)); + lang = "zh-Hans"; } else { /* Just copy the first part of the isocode. */ - strecpy(lang, language_isocode, lastof(lang)); - char *sep = strchr(lang, '_'); - if (sep != nullptr) *sep = '\0'; + lang = language_isocode.substr(0, language_isocode.find('_')); } /* Create a font descriptor matching the wanted language and latin (english) glyphs. * Can't use CFAutoRelease here for everything due to the way the dictionary has to be created. */ CFStringRef lang_codes[2]; - lang_codes[0] = CFStringCreateWithCString(kCFAllocatorDefault, lang, kCFStringEncodingUTF8); + lang_codes[0] = CFStringCreateWithCString(kCFAllocatorDefault, lang.c_str(), kCFStringEncodingUTF8); lang_codes[1] = CFSTR("en"); CFArrayRef lang_arr = CFArrayCreate(kCFAllocatorDefault, (const void **)lang_codes, lengthof(lang_codes), &kCFTypeArrayCallBacks); CFAutoRelease lang_attribs(CFDictionaryCreate(kCFAllocatorDefault, const_cast(reinterpret_cast(&kCTFontLanguagesAttribute)), (const void **)&lang_arr, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); diff --git a/src/os/unix/font_unix.cpp b/src/os/unix/font_unix.cpp index b4e8c6a0f6..cd428b8d33 100644 --- a/src/os/unix/font_unix.cpp +++ b/src/os/unix/font_unix.cpp @@ -95,7 +95,7 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) return err; } -bool SetFallbackFont(FontCacheSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) +bool SetFallbackFont(FontCacheSettings *settings, const std::string &language_isocode, int winlangid, MissingGlyphSearcher *callback) { bool ret = false; @@ -107,13 +107,10 @@ bool SetFallbackFont(FontCacheSettings *settings, const char *language_isocode, /* Fontconfig doesn't handle full language isocodes, only the part * before the _ of e.g. en_GB is used, so "remove" everything after * the _. */ - char lang[16]; - seprintf(lang, lastof(lang), ":lang=%s", language_isocode); - char *split = strchr(lang, '_'); - if (split != nullptr) *split = '\0'; + std::string lang = language_isocode.substr(0, language_isocode.find('_')); /* First create a pattern to match the wanted language. */ - FcPattern *pat = FcNameParse((FcChar8 *)lang); + FcPattern *pat = FcNameParse((const FcChar8 *)lang.c_str()); /* We only want to know the filename. */ FcObjectSet *os = FcObjectSetBuild(FC_FILE, FC_SPACING, FC_SLANT, FC_WEIGHT, nullptr); /* Get the list of filenames matching the wanted language. */ diff --git a/src/os/windows/font_win32.cpp b/src/os/windows/font_win32.cpp index e6f9147751..7379c09206 100644 --- a/src/os/windows/font_win32.cpp +++ b/src/os/windows/font_win32.cpp @@ -88,7 +88,7 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *logfont, const NEWTEXT return 0; // stop enumerating } -bool SetFallbackFont(FontCacheSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback) +bool SetFallbackFont(FontCacheSettings *settings, const std::string &language_isocode, int winlangid, MissingGlyphSearcher *callback) { Debug(fontcache, 1, "Trying fallback fonts"); EFCParam langInfo; From f249715db329414339d964e0beb8ea1f97da2f6e Mon Sep 17 00:00:00 2001 From: PeterN Date: Tue, 6 Jun 2023 23:38:11 +0100 Subject: [PATCH 017/123] Fix #10964: Missing FontConfig format for language. (#10965) --- src/os/unix/font_unix.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/os/unix/font_unix.cpp b/src/os/unix/font_unix.cpp index cd428b8d33..0175b77f35 100644 --- a/src/os/unix/font_unix.cpp +++ b/src/os/unix/font_unix.cpp @@ -107,7 +107,7 @@ bool SetFallbackFont(FontCacheSettings *settings, const std::string &language_is /* Fontconfig doesn't handle full language isocodes, only the part * before the _ of e.g. en_GB is used, so "remove" everything after * the _. */ - std::string lang = language_isocode.substr(0, language_isocode.find('_')); + std::string lang = fmt::format(":lang={}", language_isocode.substr(0, language_isocode.find('_'))); /* First create a pattern to match the wanted language. */ FcPattern *pat = FcNameParse((const FcChar8 *)lang.c_str()); From 9fa1984ef055337169899455d4d25377b60cdf04 Mon Sep 17 00:00:00 2001 From: PeterN Date: Tue, 6 Jun 2023 23:39:37 +0100 Subject: [PATCH 018/123] Codechange: IniGroup::GetItem() can now be const. (#10966) --- src/ini_load.cpp | 2 +- src/ini_type.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ini_load.cpp b/src/ini_load.cpp index 3f209444ec..69c29bc4ba 100644 --- a/src/ini_load.cpp +++ b/src/ini_load.cpp @@ -86,7 +86,7 @@ IniGroup::~IniGroup() * @param name name of the item to find. * @return the requested item or nullptr if not found. */ -IniItem *IniGroup::GetItem(const std::string &name) +IniItem *IniGroup::GetItem(const std::string &name) const { for (IniItem *item = this->item; item != nullptr; item = item->next) { if (item->name == name) return item; diff --git a/src/ini_type.h b/src/ini_type.h index 580125ff6a..0981cbd197 100644 --- a/src/ini_type.h +++ b/src/ini_type.h @@ -44,7 +44,7 @@ struct IniGroup { IniGroup(struct IniLoadFile *parent, const std::string &name); ~IniGroup(); - IniItem *GetItem(const std::string &name); + IniItem *GetItem(const std::string &name) const; IniItem &GetOrCreateItem(const std::string &name); void RemoveItem(const std::string &name); void Clear(); From d5c0d3beb7abfc66ebd93ad46c78775d85054340 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 6 Jun 2023 17:37:39 +0200 Subject: [PATCH 019/123] Codechange: unify the formatting of the game's caption --- src/video/allegro_v.cpp | 6 ++---- src/video/cocoa/cocoa_wnd.mm | 3 +-- src/video/sdl2_v.cpp | 6 ++---- src/video/sdl_v.cpp | 6 ++---- src/video/video_driver.cpp | 10 ++++++++++ src/video/video_driver.hpp | 2 ++ src/video/win32_v.cpp | 7 ++----- 7 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/video/allegro_v.cpp b/src/video/allegro_v.cpp index 5cf0c5852a..e7310539e2 100644 --- a/src/video/allegro_v.cpp +++ b/src/video/allegro_v.cpp @@ -18,7 +18,6 @@ #include "../openttd.h" #include "../error_func.h" #include "../gfx_func.h" -#include "../rev.h" #include "../blitter/factory.hpp" #include "../core/random_func.hpp" #include "../core/math_func.hpp" @@ -216,9 +215,8 @@ static bool CreateMainSurface(uint w, uint h) InitPalette(); - char caption[32]; - seprintf(caption, lastof(caption), "OpenTTD %s", _openttd_revision); - set_window_title(caption); + std::string caption = VideoDriver::GetCaption(); + set_window_title(caption.c_str()); enable_hardware_cursor(); select_mouse_cursor(MOUSE_CURSOR_ARROW); diff --git a/src/video/cocoa/cocoa_wnd.mm b/src/video/cocoa/cocoa_wnd.mm index 17d9869731..d31be0920c 100644 --- a/src/video/cocoa/cocoa_wnd.mm +++ b/src/video/cocoa/cocoa_wnd.mm @@ -24,7 +24,6 @@ #include "../../openttd.h" #include "../../debug.h" -#include "../../rev.h" #include "cocoa_v.h" #include "cocoa_wnd.h" #include "../../settings_type.h" @@ -456,7 +455,7 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel [ self setContentMinSize:NSMakeSize(64.0f, 64.0f) ]; - std::string caption = std::string{"OpenTTD "} + _openttd_revision; + std::string caption = VideoDriver::GetCaption(); NSString *nsscaption = [ [ NSString alloc ] initWithUTF8String:caption.c_str() ]; [ self setTitle:nsscaption ]; [ self setMiniwindowTitle:nsscaption ]; diff --git a/src/video/sdl2_v.cpp b/src/video/sdl2_v.cpp index 72734e03d4..7ffd3d4eb1 100644 --- a/src/video/sdl2_v.cpp +++ b/src/video/sdl2_v.cpp @@ -10,7 +10,6 @@ #include "../stdafx.h" #include "../openttd.h" #include "../gfx_func.h" -#include "../rev.h" #include "../blitter/factory.hpp" #include "../thread.h" #include "../progress.h" @@ -149,10 +148,9 @@ bool VideoDriver_SDL_Base::CreateMainWindow(uint w, uint h, uint flags) y = r.y + std::max(0, r.h - static_cast(h)) / 4; // decent desktops have taskbars at the bottom } - char caption[50]; - seprintf(caption, lastof(caption), "OpenTTD %s", _openttd_revision); + std::string caption = VideoDriver::GetCaption(); this->sdl_window = SDL_CreateWindow( - caption, + caption.c_str(), x, y, w, h, flags); diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp index eb05f32797..d33ac77a65 100644 --- a/src/video/sdl_v.cpp +++ b/src/video/sdl_v.cpp @@ -13,7 +13,6 @@ #include "../openttd.h" #include "../error_func.h" #include "../gfx_func.h" -#include "../rev.h" #include "../blitter/factory.hpp" #include "../thread.h" #include "../progress.h" @@ -226,7 +225,6 @@ static void GetAvailableVideoMode(uint *w, uint *h) bool VideoDriver_SDL::CreateMainSurface(uint w, uint h) { SDL_Surface *newscreen, *icon; - char caption[50]; int bpp = BlitterFactory::GetCurrentBlitter()->GetScreenDepth(); bool want_hwpalette; @@ -360,8 +358,8 @@ bool VideoDriver_SDL::CreateMainSurface(uint w, uint h) InitPalette(); - seprintf(caption, lastof(caption), "OpenTTD %s", _openttd_revision); - SDL_WM_SetCaption(caption, caption); + std::string caption = VideoDriver::GetCaption(); + SDL_WM_SetCaption(caption.c_str(), caption.c_str()); GameSizeChanged(); diff --git a/src/video/video_driver.cpp b/src/video/video_driver.cpp index ad1c8fb808..cd4b6cd1ae 100644 --- a/src/video/video_driver.cpp +++ b/src/video/video_driver.cpp @@ -17,6 +17,7 @@ #include "../gfx_func.h" #include "../gfxinit.h" #include "../progress.h" +#include "../rev.h" #include "../thread.h" #include "../window_func.h" #include "video_driver.hpp" @@ -180,3 +181,12 @@ void VideoDriver::SleepTillNextTick() std::this_thread::sleep_for(next_tick - now); } } + +/** + * Get the caption to use for the game's title bar. + * @return The caption. + */ +/* static */ std::string VideoDriver::GetCaption() +{ + return fmt::format("OpenTTD {}", _openttd_revision); +} diff --git a/src/video/video_driver.hpp b/src/video/video_driver.hpp index 27e1dcc976..f9e8a254b2 100644 --- a/src/video/video_driver.hpp +++ b/src/video/video_driver.hpp @@ -201,6 +201,8 @@ public: return static_cast(*DriverFactoryBase::GetActiveDriver(Driver::DT_VIDEO)); } + static std::string GetCaption(); + /** * Helper struct to ensure the video buffer is locked and ready for drawing. The destructor * will make sure the buffer is unlocked no matter how the scope is exited. diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index 571ff49ee9..d92fe0079a 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -12,7 +12,6 @@ #include "../error_func.h" #include "../gfx_func.h" #include "../os/windows/win32.h" -#include "../rev.h" #include "../blitter/factory.hpp" #include "../core/geometry_func.hpp" #include "../core/math_func.hpp" @@ -221,10 +220,8 @@ bool VideoDriver_Win32Base::MakeWindow(bool full_screen, bool resize) int x = (mi.rcWork.right - mi.rcWork.left - w) / 2; int y = (mi.rcWork.bottom - mi.rcWork.top - h) / 2; - char window_title[64]; - seprintf(window_title, lastof(window_title), "OpenTTD %s", _openttd_revision); - - this->main_wnd = CreateWindow(L"OTTD", OTTD2FS(window_title).c_str(), style, x, y, w, h, 0, 0, GetModuleHandle(nullptr), this); + std::string caption = VideoDriver::GetCaption(); + this->main_wnd = CreateWindow(L"OTTD", OTTD2FS(caption).c_str(), style, x, y, w, h, 0, 0, GetModuleHandle(nullptr), this); if (this->main_wnd == nullptr) UserError("CreateWindow failed"); ShowWindow(this->main_wnd, showstyle); } From 4de9b8a9880df9d20e9e5b9a43753ca91b99b47c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 6 Jun 2023 17:06:32 +0200 Subject: [PATCH 020/123] Codechange: use fmt::format to create desync dump savegames --- src/genworld.cpp | 3 +-- src/openttd.cpp | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/genworld.cpp b/src/genworld.cpp index 2fd6fc6cb9..42c3a4770c 100644 --- a/src/genworld.cpp +++ b/src/genworld.cpp @@ -193,8 +193,7 @@ static void _GenerateWorld() Debug(desync, 1, "new_map: {:08x}", _settings_game.game_creation.generation_seed); if (_debug_desync_level > 0) { - char name[MAX_PATH]; - seprintf(name, lastof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, TimerGameCalendar::date); + std::string name = fmt::format("dmp_cmds_{:08x}_{:08x}.sav", _settings_game.game_creation.generation_seed, TimerGameCalendar::date); SaveOrLoad(name, SLO_SAVE, DFT_GAME_FILE, AUTOSAVE_DIR, false); } } catch (AbortGenerateWorldSignal&) { diff --git a/src/openttd.cpp b/src/openttd.cpp index 28749e7e37..3eda94a2ec 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -1395,8 +1395,7 @@ void StateGameLoop() } else { if (_debug_desync_level > 2 && TimerGameCalendar::date_fract == 0 && (TimerGameCalendar::date & 0x1F) == 0) { /* Save the desync savegame if needed. */ - char name[MAX_PATH]; - seprintf(name, lastof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, TimerGameCalendar::date); + std::string name = fmt::format("dmp_cmds_{:08x}_{:08x}.sav", _settings_game.game_creation.generation_seed, TimerGameCalendar::date); SaveOrLoad(name, SLO_SAVE, DFT_GAME_FILE, AUTOSAVE_DIR, false); } From 5e9a1eb790ce1e5cdd6a33316182a96040d49629 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 6 Jun 2023 17:09:57 +0200 Subject: [PATCH 021/123] Codechange: use fmt::format to construct error message --- src/map.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/map.cpp b/src/map.cpp index dfaa6ec866..347af92c3a 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -82,14 +82,12 @@ TileIndex TileAdd(TileIndex tile, TileIndexDiff add, y = TileY(tile) + dy; if (x >= Map::SizeX() || y >= Map::SizeY()) { - char buf[512]; - - seprintf(buf, lastof(buf), "TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed", + std::string message = fmt::format("TILE_ADD({}) when adding 0x{:04X} and 0x{%04X} failed", exp, (uint32)tile, add); #if !defined(_MSC_VER) - fmt::print(stderr, "{}:{} {}\n", file, line, buf); + fmt::print(stderr, "{}:{} {}\n", file, line, message); #else - _assert(buf, (char*)file, line); + _assert(message.data(), (char*)file, line); #endif } From a541b8217d9fee67d31a80f1604b8ee25f4c780e Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 6 Jun 2023 17:14:37 +0200 Subject: [PATCH 022/123] Codechange: use fmt::format to build Squirrel error message --- src/3rdparty/squirrel/squirrel/sqapi.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/3rdparty/squirrel/squirrel/sqapi.cpp b/src/3rdparty/squirrel/squirrel/sqapi.cpp index d5fd9dd38b..27b678dbb5 100644 --- a/src/3rdparty/squirrel/squirrel/sqapi.cpp +++ b/src/3rdparty/squirrel/squirrel/sqapi.cpp @@ -48,9 +48,7 @@ SQInteger sq_aux_throwobject(HSQUIRRELVM v,SQObjectPtr &e) SQInteger sq_aux_invalidtype(HSQUIRRELVM v,SQObjectType type) { - char buf[100]; - seprintf(buf, lastof(buf), "unexpected type %s", IdType2Name(type)); - return sq_throwerror(v, buf); + return sq_throwerror(v, fmt::format("unexpected type {}", IdType2Name(type))); } HSQUIRRELVM sq_open(SQInteger initialstacksize) From b2a8d8aea4b45eb350441fc75b7f507deaafc580 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Wed, 7 Jun 2023 06:57:15 +0200 Subject: [PATCH 023/123] Codechange: use std::string for Windows' ISO code mangling --- src/os/windows/win32.cpp | 18 ++++++++---------- src/strings.cpp | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/os/windows/win32.cpp b/src/os/windows/win32.cpp index 73cf4dc3f9..23d68dc3ed 100644 --- a/src/os/windows/win32.cpp +++ b/src/os/windows/win32.cpp @@ -541,23 +541,21 @@ const char *GetCurrentLocale(const char *) static WCHAR _cur_iso_locale[16] = L""; -void Win32SetCurrentLocaleName(const char *iso_code) +void Win32SetCurrentLocaleName(std::string iso_code) { /* Convert the iso code into the format that windows expects. */ - char iso[16]; - if (strcmp(iso_code, "zh_TW") == 0) { - strecpy(iso, "zh-Hant", lastof(iso)); - } else if (strcmp(iso_code, "zh_CN") == 0) { - strecpy(iso, "zh-Hans", lastof(iso)); + if (iso_code == "zh_TW") { + iso_code = "zh-Hant"; + } else if (iso_code == "zh_CN") { + iso_code = "zh-Hans"; } else { /* Windows expects a '-' between language and country code, but we use a '_'. */ - strecpy(iso, iso_code, lastof(iso)); - for (char *c = iso; *c != '\0'; c++) { - if (*c == '_') *c = '-'; + for (char &c : iso_code) { + if (c == '_') c = '-'; } } - MultiByteToWideChar(CP_UTF8, 0, iso, -1, _cur_iso_locale, lengthof(_cur_iso_locale)); + MultiByteToWideChar(CP_UTF8, 0, iso_code.c_str(), -1, _cur_iso_locale, lengthof(_cur_iso_locale)); } int OTTDStringCompare(std::string_view s1, std::string_view s2) diff --git a/src/strings.cpp b/src/strings.cpp index ea1c77c29d..ebe05671be 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1887,7 +1887,7 @@ bool ReadLanguagePack(const LanguageMetadata *lang) SetCurrentGrfLangID(_current_language->newgrflangid); #ifdef _WIN32 - extern void Win32SetCurrentLocaleName(const char *iso_code); + extern void Win32SetCurrentLocaleName(std::string iso_code); Win32SetCurrentLocaleName(_current_language->isocode); #endif From b49bd86a46aeff5b5b8b4b1251d3bcfef62e9eec Mon Sep 17 00:00:00 2001 From: PeterN Date: Wed, 7 Jun 2023 19:01:30 +0100 Subject: [PATCH 024/123] Fix dec7ff6b0c: Dropdowns couldn't be closed by pressing the parent button. (#10954) Since dropdowns self-close, the detection of re-clicking a dropdown button no longer worked, as the dropdown is already closed. Instead set (and then test) a flag on the parent widget to indicate that the dropdown closed. This method avoids looping windows on every click. --- src/widget_type.h | 2 ++ src/widgets/dropdown.cpp | 26 ++++---------------------- src/widgets/dropdown_func.h | 3 --- src/window.cpp | 9 +++++---- 4 files changed, 11 insertions(+), 29 deletions(-) diff --git a/src/widget_type.h b/src/widget_type.h index ca08f2f571..974fd4d852 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -295,6 +295,7 @@ enum NWidgetDisplay { NDB_SCROLLBAR_DOWN = 7, ///< Down-button is lowered bit. /* Generic. */ NDB_HIGHLIGHT = 8, ///< Highlight of widget is on. + NDB_DROPDOWN_CLOSED = 9, ///< Dropdown menu of the dropdown widget has closed. ND_LOWERED = 1 << NDB_LOWERED, ///< Bit value of the lowered flag. ND_DISABLED = 1 << NDB_DISABLED, ///< Bit value of the disabled flag. @@ -306,6 +307,7 @@ enum NWidgetDisplay { ND_SCROLLBAR_UP = 1 << NDB_SCROLLBAR_UP, ///< Bit value of the 'scrollbar up' flag. ND_SCROLLBAR_DOWN = 1 << NDB_SCROLLBAR_DOWN, ///< Bit value of the 'scrollbar down' flag. ND_SCROLLBAR_BTN = ND_SCROLLBAR_UP | ND_SCROLLBAR_DOWN, ///< Bit value of the 'scrollbar up' or 'scrollbar down' flag. + ND_DROPDOWN_CLOSED = 1 << NDB_DROPDOWN_CLOSED, ///< Bit value of the 'dropdown closed' flag. }; DECLARE_ENUM_AS_BIT_SET(NWidgetDisplay) diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index 6ffbfc1bd6..a0ff70e7b4 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -191,6 +191,10 @@ struct DropdownWindow : Window { pt.x -= this->parent->left; pt.y -= this->parent->top; this->parent->OnDropdownClose(pt, this->parent_button, this->selected_index, this->instant_close); + + /* Set flag on parent widget to indicate that we have just closed. */ + NWidgetCore *nwc = this->parent->GetWidget(this->parent_button); + if (nwc != nullptr) SetBit(nwc->disp_flags, NDB_DROPDOWN_CLOSED); } void OnFocusLost() override @@ -471,25 +475,3 @@ void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int butt if (!list.empty()) ShowDropDownList(w, std::move(list), selected, button, width); } - -/** - * Delete the drop-down menu from window \a pw - * @param pw Parent window of the drop-down menu window - * @return Parent widget number if the drop-down was found and closed, \c -1 if the window was not found. - */ -int HideDropDownMenu(Window *pw) -{ - for (Window *w : Window::Iterate()) { - if (w->parent != pw) continue; - if (w->window_class != WC_DROPDOWN_MENU) continue; - - DropdownWindow *dw = dynamic_cast(w); - assert(dw != nullptr); - int parent_button = dw->parent_button; - dw->Close(); - return parent_button; - } - - return -1; -} - diff --git a/src/widgets/dropdown_func.h b/src/widgets/dropdown_func.h index f047fb43df..1a0102c17b 100644 --- a/src/widgets/dropdown_func.h +++ b/src/widgets/dropdown_func.h @@ -15,7 +15,4 @@ /* Show drop down menu containing a fixed list of strings */ void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int button, uint32 disabled_mask, uint32 hidden_mask, uint width = 0); -/* Hide drop down menu of a parent window */ -int HideDropDownMenu(Window *pw); - #endif /* WIDGETS_DROPDOWN_FUNC_H */ diff --git a/src/window.cpp b/src/window.cpp index a1cda1ab4d..314b6eb77e 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -22,7 +22,6 @@ #include "tilehighlight_func.h" #include "network/network.h" #include "querystring_gui.h" -#include "widgets/dropdown_func.h" #include "strings_func.h" #include "settings_type.h" #include "settings_func.h" @@ -679,6 +678,9 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, int click_count) NWidgetCore *nw = w->nested_root->GetWidgetFromPos(x, y); WidgetType widget_type = (nw != nullptr) ? nw->type : WWT_EMPTY; + /* Allow dropdown close flag detection to work. */ + if (nw != nullptr) ClrBit(nw->disp_flags, NDB_DROPDOWN_CLOSED); + bool focused_widget_changed = false; /* If clicked on a window that previously did not have focus */ if (_focused_window != w && // We already have focus, right? @@ -711,9 +713,8 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, int click_count) focused_widget_changed |= w->SetFocusedWidget(widget_index); } - /* Close any child drop down menus. If the button pressed was the drop down - * list's own button, then we should not process the click any further. */ - if (HideDropDownMenu(w) == widget_index && widget_index >= 0) return; + /* Dropdown window of this widget was closed so don't process click this time. */ + if (HasBit(nw->disp_flags, NDB_DROPDOWN_CLOSED)) return; if ((widget_type & ~WWB_PUSHBUTTON) < WWT_LAST && (widget_type & WWB_PUSHBUTTON)) w->HandleButtonClick(widget_index); From 4ca23a19b6b4526d910822d03631c1b73008fe73 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Jun 2023 17:09:56 +0200 Subject: [PATCH 025/123] Cleanup: char-pointer variant of strtolower --- src/string.cpp | 22 ---------------------- src/string_func.h | 1 - 2 files changed, 23 deletions(-) diff --git a/src/string.cpp b/src/string.cpp index 8a092c6969..14e5fee364 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -471,28 +471,6 @@ size_t Utf8StringLength(const std::string &str) return Utf8StringLength(str.c_str()); } -/** - * Convert a given ASCII string to lowercase. - * NOTE: only support ASCII characters, no UTF8 fancy. As currently - * the function is only used to lowercase data-filenames if they are - * not found, this is sufficient. If more, or general functionality is - * needed, look to r7271 where it was removed because it was broken when - * using certain locales: eg in Turkish the uppercase 'I' was converted to - * '?', so just revert to the old functionality - * @param str string to convert - * @return String has changed. - */ -bool strtolower(char *str) -{ - bool changed = false; - for (; *str != '\0'; str++) { - char new_str = tolower(*str); - changed |= new_str != *str; - *str = new_str; - } - return changed; -} - bool strtolower(std::string &str, std::string::size_type offs) { bool changed = false; diff --git a/src/string_func.h b/src/string_func.h index 4a85f338c3..93f2b4e1de 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -43,7 +43,6 @@ void StrMakeValidInPlace(char *str, StringValidationSettings settings = SVS_REPL void str_fix_scc_encoded(char *str, const char *last) NOACCESS(2); void str_strip_colours(char *str); -bool strtolower(char *str); bool strtolower(std::string &str, std::string::size_type offs = 0); [[nodiscard]] bool StrValid(const char *str, const char *last) NOACCESS(2); From 2ae7367024ef0ce27feb9568deb6c95e2c87653c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Jun 2023 16:58:17 +0200 Subject: [PATCH 026/123] Codechange: replace StrMakeValidInPlace with StrValid --- src/script/api/script_text.cpp | 7 ++++--- src/script/script_info.cpp | 38 ++++++++++++++++------------------ 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/src/script/api/script_text.cpp b/src/script/api/script_text.cpp index 61df5e005d..cec2eb4a0d 100644 --- a/src/script/api/script_text.cpp +++ b/src/script/api/script_text.cpp @@ -138,10 +138,11 @@ SQInteger ScriptText::_set(HSQUIRRELVM vm) if (sq_gettype(vm, 2) == OT_STRING) { const SQChar *key_string; sq_getstring(vm, 2, &key_string); - StrMakeValidInPlace(const_cast(key_string)); - if (strncmp(key_string, "param_", 6) != 0 || strlen(key_string) > 8) return SQ_ERROR; - k = atoi(key_string + 6); + std::string str = StrMakeValid(key_string); + if (!StrStartsWith(str, "param_") || str.size() > 8) return SQ_ERROR; + + k = stoi(str.substr(6)); } else if (sq_gettype(vm, 2) == OT_INTEGER) { SQInteger key; sq_getinteger(vm, 2, &key); diff --git a/src/script/script_info.cpp b/src/script/script_info.cpp index ec3c668fa6..5eee02b5c5 100644 --- a/src/script/script_info.cpp +++ b/src/script/script_info.cpp @@ -90,11 +90,11 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) /* Read the table, and find all properties we care about */ sq_pushnull(vm); while (SQ_SUCCEEDED(sq_next(vm, -2))) { - const SQChar *key; - if (SQ_FAILED(sq_getstring(vm, -2, &key))) return SQ_ERROR; - StrMakeValidInPlace(const_cast(key)); + const SQChar *key_string; + if (SQ_FAILED(sq_getstring(vm, -2, &key_string))) return SQ_ERROR; + std::string key = StrMakeValid(key_string); - if (strcmp(key, "name") == 0) { + if (key == "name") { const SQChar *sqvalue; if (SQ_FAILED(sq_getstring(vm, -1, &sqvalue))) return SQ_ERROR; @@ -104,51 +104,51 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) config.name = StrMakeValid(sqvalue); std::replace_if(config.name.begin(), config.name.end(), replace_with_underscore, '_'); items |= 0x001; - } else if (strcmp(key, "description") == 0) { + } else if (key == "description") { const SQChar *sqdescription; if (SQ_FAILED(sq_getstring(vm, -1, &sqdescription))) return SQ_ERROR; config.description = StrMakeValid(sqdescription); items |= 0x002; - } else if (strcmp(key, "min_value") == 0) { + } else if (key == "min_value") { SQInteger res; if (SQ_FAILED(sq_getinteger(vm, -1, &res))) return SQ_ERROR; config.min_value = ClampTo(res); items |= 0x004; - } else if (strcmp(key, "max_value") == 0) { + } else if (key == "max_value") { SQInteger res; if (SQ_FAILED(sq_getinteger(vm, -1, &res))) return SQ_ERROR; config.max_value = ClampTo(res); items |= 0x008; - } else if (strcmp(key, "easy_value") == 0) { + } else if (key == "easy_value") { SQInteger res; if (SQ_FAILED(sq_getinteger(vm, -1, &res))) return SQ_ERROR; config.easy_value = ClampTo(res); items |= 0x010; - } else if (strcmp(key, "medium_value") == 0) { + } else if (key == "medium_value") { SQInteger res; if (SQ_FAILED(sq_getinteger(vm, -1, &res))) return SQ_ERROR; config.medium_value = ClampTo(res); items |= 0x020; - } else if (strcmp(key, "hard_value") == 0) { + } else if (key == "hard_value") { SQInteger res; if (SQ_FAILED(sq_getinteger(vm, -1, &res))) return SQ_ERROR; config.hard_value = ClampTo(res); items |= 0x040; - } else if (strcmp(key, "random_deviation") == 0) { + } else if (key == "random_deviation") { SQInteger res; if (SQ_FAILED(sq_getinteger(vm, -1, &res))) return SQ_ERROR; config.random_deviation = ClampTo(abs(res)); items |= 0x200; - } else if (strcmp(key, "custom_value") == 0) { + } else if (key == "custom_value") { SQInteger res; if (SQ_FAILED(sq_getinteger(vm, -1, &res))) return SQ_ERROR; config.custom_value = ClampTo(res); items |= 0x080; - } else if (strcmp(key, "step_size") == 0) { + } else if (key == "step_size") { SQInteger res; if (SQ_FAILED(sq_getinteger(vm, -1, &res))) return SQ_ERROR; config.step_size = ClampTo(res); - } else if (strcmp(key, "flags") == 0) { + } else if (key == "flags") { SQInteger res; if (SQ_FAILED(sq_getinteger(vm, -1, &res))) return SQ_ERROR; config.flags = (ScriptConfigFlags)res; @@ -184,9 +184,9 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm) SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm) { - const SQChar *setting_name; - if (SQ_FAILED(sq_getstring(vm, -2, &setting_name))) return SQ_ERROR; - StrMakeValidInPlace(const_cast(setting_name)); + const SQChar *setting_name_str; + if (SQ_FAILED(sq_getstring(vm, -2, &setting_name_str))) return SQ_ERROR; + std::string setting_name = StrMakeValid(setting_name_str); ScriptConfigItem *config = nullptr; for (auto &item : this->config_list) { @@ -216,9 +216,7 @@ SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm) key_string++; } int key = atoi(key_string) * sign; - StrMakeValidInPlace(const_cast(label)); - - config->labels[key] = label; + config->labels[key] = StrMakeValid(label); sq_pop(vm, 2); } From 9408ab479901bfc0eab226bf21c0605207ff4162 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Jun 2023 17:34:28 +0200 Subject: [PATCH 027/123] Codechange: only one '\0' is required --- src/saveload/saveload.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 27ca87c461..1d5e214d8d 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -915,9 +915,8 @@ static void SlStdString(void *ptr, VarType conv) return; } - str->resize(len + 1); + str->resize(len); SlCopyBytes(str->data(), len); - (*str)[len] = '\0'; // properly terminate the string StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK; if ((conv & SLF_ALLOW_CONTROL) != 0) { From 35ef6c1723556d9bba4b9effb63b29ee7a78f1be Mon Sep 17 00:00:00 2001 From: mrmbernardi Date: Thu, 8 Jun 2023 19:00:31 +0200 Subject: [PATCH 028/123] Feature: [GS] Goal destination can be updated (#10817) --- src/command_type.h | 1 + src/goal.cpp | 76 +++++++++++++++++++++---------- src/goal_base.h | 2 + src/goal_cmd.h | 2 + src/script/api/game_changelog.hpp | 2 + src/script/api/script_goal.cpp | 39 ++++++++++------ src/script/api/script_goal.hpp | 21 +++++++++ 7 files changed, 106 insertions(+), 37 deletions(-) diff --git a/src/command_type.h b/src/command_type.h index 174120fb91..4373a92e17 100644 --- a/src/command_type.h +++ b/src/command_type.h @@ -295,6 +295,7 @@ enum Commands : uint16 { CMD_CUSTOM_NEWS_ITEM, ///< create a custom news message CMD_CREATE_GOAL, ///< create a new goal CMD_REMOVE_GOAL, ///< remove a goal + CMD_SET_GOAL_DESTINATION, ///< update goal destination of a goal CMD_SET_GOAL_TEXT, ///< update goal text of a goal CMD_SET_GOAL_PROGRESS, ///< update goal progress text of a goal CMD_SET_GOAL_COMPLETED, ///< update goal completed status of a goal diff --git a/src/goal.cpp b/src/goal.cpp index d6866ade02..716b36d477 100644 --- a/src/goal.cpp +++ b/src/goal.cpp @@ -31,53 +31,58 @@ GoalPool _goal_pool("Goal"); INSTANTIATE_POOL_METHODS(Goal) -/** - * Create a new goal. - * @param flags type of operation - * @param company Company for which this goal is. - * @param type GoalType of destination. - * @param dest GoalTypeID of destination. - * @param text Text of the goal. - * @return the cost of this operation or an error - */ -std::tuple CmdCreateGoal(DoCommandFlag flags, CompanyID company, GoalType type, GoalTypeID dest, const std::string &text) +/* static */ bool Goal::IsValidGoalDestination(CompanyID company, GoalType type, GoalTypeID dest) { - if (!Goal::CanAllocateItem()) return { CMD_ERROR, INVALID_GOAL }; - - if (_current_company != OWNER_DEITY) return { CMD_ERROR, INVALID_GOAL }; - if (text.empty()) return { CMD_ERROR, INVALID_GOAL }; - if (company != INVALID_COMPANY && !Company::IsValidID(company)) return { CMD_ERROR, INVALID_GOAL }; - switch (type) { case GT_NONE: - if (dest != 0) return { CMD_ERROR, INVALID_GOAL }; + if (dest != 0) return false; break; case GT_TILE: - if (!IsValidTile(dest)) return { CMD_ERROR, INVALID_GOAL }; + if (!IsValidTile(dest)) return false; break; case GT_INDUSTRY: - if (!Industry::IsValidID(dest)) return { CMD_ERROR, INVALID_GOAL }; + if (!Industry::IsValidID(dest)) return false; break; case GT_TOWN: - if (!Town::IsValidID(dest)) return { CMD_ERROR, INVALID_GOAL }; + if (!Town::IsValidID(dest)) return false; break; case GT_COMPANY: - if (!Company::IsValidID(dest)) return { CMD_ERROR, INVALID_GOAL }; + if (!Company::IsValidID(dest)) return false; break; case GT_STORY_PAGE: { - if (!StoryPage::IsValidID(dest)) return { CMD_ERROR, INVALID_GOAL }; + if (!StoryPage::IsValidID(dest)) return false; CompanyID story_company = StoryPage::Get(dest)->company; - if (company == INVALID_COMPANY ? story_company != INVALID_COMPANY : story_company != INVALID_COMPANY && story_company != company) return { CMD_ERROR, INVALID_GOAL }; + if (company == INVALID_COMPANY ? story_company != INVALID_COMPANY : story_company != INVALID_COMPANY && story_company != company) return false; break; } - default: return { CMD_ERROR, INVALID_GOAL }; + default: return false; } + return true; +} + +/** + * Create a new goal. + * @param flags type of operation + * @param company Company for which this goal is. + * @param type GoalType of destination. + * @param dest GoalTypeID of destination. + * @param text Text of the goal. + * @return the cost of this operation or an error + */ +std::tuple CmdCreateGoal(DoCommandFlag flags, CompanyID company, GoalType type, GoalTypeID dest, const std::string &text) +{ + if (!Goal::CanAllocateItem()) return { CMD_ERROR, INVALID_GOAL }; + + if (_current_company != OWNER_DEITY) return { CMD_ERROR, INVALID_GOAL }; + if (text.empty()) return { CMD_ERROR, INVALID_GOAL }; + if (company != INVALID_COMPANY && !Company::IsValidID(company)) return { CMD_ERROR, INVALID_GOAL }; + if (!Goal::IsValidGoalDestination(company, type, dest)) return { CMD_ERROR, INVALID_GOAL }; if (flags & DC_EXEC) { Goal *g = new Goal(); @@ -127,6 +132,29 @@ CommandCost CmdRemoveGoal(DoCommandFlag flags, GoalID goal) return CommandCost(); } +/** + * Update goal destination of a goal. + * @param flags type of operation + * @param goal GoalID to update. + * @param type GoalType of destination. + * @param dest GoalTypeID of destination. + * @return the cost of this operation or an error + */ +CommandCost CmdSetGoalDestination(DoCommandFlag flags, GoalID goal, GoalType type, GoalTypeID dest) +{ + if (_current_company != OWNER_DEITY) return CMD_ERROR; + if (!Goal::IsValidID(goal)) return CMD_ERROR; + Goal *g = Goal::Get(goal); + if (!Goal::IsValidGoalDestination(g->company, type, dest)) return CMD_ERROR; + + if (flags & DC_EXEC) { + g->type = type; + g->dst = dest; + } + + return CommandCost(); +} + /** * Update goal text of a goal. * @param flags type of operation diff --git a/src/goal_base.h b/src/goal_base.h index c73699514e..bf5954ee18 100644 --- a/src/goal_base.h +++ b/src/goal_base.h @@ -35,6 +35,8 @@ struct Goal : GoalPool::PoolItem<&_goal_pool> { * (Empty) destructor has to be defined else operator delete might be called with nullptr parameter */ inline ~Goal() { } + + static bool IsValidGoalDestination(CompanyID company, GoalType type, GoalTypeID dest); }; #endif /* GOAL_BASE_H */ diff --git a/src/goal_cmd.h b/src/goal_cmd.h index 3f5eac7d8c..c7e0ff1e24 100644 --- a/src/goal_cmd.h +++ b/src/goal_cmd.h @@ -15,6 +15,7 @@ std::tuple CmdCreateGoal(DoCommandFlag flags, CompanyID company, GoalType type, GoalTypeID dest, const std::string &text); CommandCost CmdRemoveGoal(DoCommandFlag flags, GoalID goal); +CommandCost CmdSetGoalDestination(DoCommandFlag flags, GoalID goal, GoalType type, GoalTypeID dest); CommandCost CmdSetGoalText(DoCommandFlag flags, GoalID goal, const std::string &text); CommandCost CmdSetGoalProgress(DoCommandFlag flags, GoalID goal, const std::string &text); CommandCost CmdSetGoalCompleted(DoCommandFlag flags, GoalID goal, bool completed); @@ -23,6 +24,7 @@ CommandCost CmdGoalQuestionAnswer(DoCommandFlag flags, uint16 uniqueid, uint8 bu DEF_CMD_TRAIT(CMD_CREATE_GOAL, CmdCreateGoal, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) DEF_CMD_TRAIT(CMD_REMOVE_GOAL, CmdRemoveGoal, CMD_DEITY, CMDT_OTHER_MANAGEMENT) +DEF_CMD_TRAIT(CMD_SET_GOAL_DESTINATION, CmdSetGoalDestination, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) DEF_CMD_TRAIT(CMD_SET_GOAL_TEXT, CmdSetGoalText, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) DEF_CMD_TRAIT(CMD_SET_GOAL_PROGRESS, CmdSetGoalProgress, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) DEF_CMD_TRAIT(CMD_SET_GOAL_COMPLETED, CmdSetGoalCompleted, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp index 9253748794..ba9c99fb12 100644 --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -75,6 +75,8 @@ * \li GSGroupList * \li GSVehicleList_Group * \li GSVehicleList_DefaultGroup + * \li GSGoal::IsValidGoalDestination + * \li GSGoal::SetDestination * * API removals: * \li GSError::ERR_PRECONDITION_TOO_MANY_PARAMETERS, that error is never returned anymore. diff --git a/src/script/api/script_goal.cpp b/src/script/api/script_goal.cpp index ad36c728b9..4430326101 100644 --- a/src/script/api/script_goal.cpp +++ b/src/script/api/script_goal.cpp @@ -28,29 +28,32 @@ return ::Goal::IsValidID(goal_id); } -/* static */ ScriptGoal::GoalID ScriptGoal::New(ScriptCompany::CompanyID company, Text *goal, GoalType type, SQInteger destination) +/* static */ bool ScriptGoal::IsValidGoalDestination(ScriptCompany::CompanyID company, GoalType type, SQInteger destination) { - CCountedPtr counter(goal); - - EnforceDeityMode(GOAL_INVALID); - EnforcePrecondition(GOAL_INVALID, goal != nullptr); - const std::string &text = goal->GetEncodedText(); - EnforcePreconditionEncodedText(GOAL_INVALID, text); - EnforcePrecondition(GOAL_INVALID, company == ScriptCompany::COMPANY_INVALID || ScriptCompany::ResolveCompanyID(company) != ScriptCompany::COMPANY_INVALID); - CompanyID c = (::CompanyID)company; if (company == ScriptCompany::COMPANY_INVALID) c = INVALID_COMPANY; StoryPage *story_page = nullptr; if (type == GT_STORY_PAGE && ScriptStoryPage::IsValidStoryPage((ScriptStoryPage::StoryPageID)destination)) story_page = ::StoryPage::Get((ScriptStoryPage::StoryPageID)destination); - - EnforcePrecondition(GOAL_INVALID, (type == GT_NONE && destination == 0) || + return (type == GT_NONE && destination == 0) || (type == GT_TILE && ScriptMap::IsValidTile(destination)) || (type == GT_INDUSTRY && ScriptIndustry::IsValidIndustry(destination)) || (type == GT_TOWN && ScriptTown::IsValidTown(destination)) || (type == GT_COMPANY && ScriptCompany::ResolveCompanyID((ScriptCompany::CompanyID)destination) != ScriptCompany::COMPANY_INVALID) || - (type == GT_STORY_PAGE && story_page != nullptr && (c == INVALID_COMPANY ? story_page->company == INVALID_COMPANY : story_page->company == INVALID_COMPANY || story_page->company == c))); + (type == GT_STORY_PAGE && story_page != nullptr && (c == INVALID_COMPANY ? story_page->company == INVALID_COMPANY : story_page->company == INVALID_COMPANY || story_page->company == c)); +} + +/* static */ ScriptGoal::GoalID ScriptGoal::New(ScriptCompany::CompanyID company, Text *goal, GoalType type, SQInteger destination) +{ + CCountedPtr counter(goal); + + EnforceDeityMode(GOAL_INVALID); + EnforcePrecondition(GOAL_INVALID, goal != nullptr); + const std::string &text = goal->GetEncodedText(); + EnforcePreconditionEncodedText(GOAL_INVALID, text); + EnforcePrecondition(GOAL_INVALID, company == ScriptCompany::COMPANY_INVALID || ScriptCompany::ResolveCompanyID(company) != ScriptCompany::COMPANY_INVALID); + EnforcePrecondition(GOAL_INVALID, IsValidGoalDestination(company, type, destination)); - if (!ScriptObject::Command::Do(&ScriptInstance::DoCommandReturnGoalID, c, (::GoalType)type, destination, text)) return GOAL_INVALID; + if (!ScriptObject::Command::Do(&ScriptInstance::DoCommandReturnGoalID, (::CompanyID)company, (::GoalType)type, destination, text)) return GOAL_INVALID; /* In case of test-mode, we return GoalID 0 */ return (ScriptGoal::GoalID)0; @@ -64,6 +67,16 @@ return ScriptObject::Command::Do(goal_id); } +/* static */ bool ScriptGoal::SetDestination(GoalID goal_id, GoalType type, SQInteger destination) +{ + EnforceDeityMode(false); + EnforcePrecondition(false, IsValidGoal(goal_id)); + Goal *g = Goal::Get(goal_id); + EnforcePrecondition(false, IsValidGoalDestination((ScriptCompany::CompanyID)g->company, type, destination)); + + return ScriptObject::Command::Do(goal_id, (::GoalType)type, destination); +} + /* static */ bool ScriptGoal::SetText(GoalID goal_id, Text *goal) { CCountedPtr counter(goal); diff --git a/src/script/api/script_goal.hpp b/src/script/api/script_goal.hpp index c3b1ad2b29..72d61ccba2 100644 --- a/src/script/api/script_goal.hpp +++ b/src/script/api/script_goal.hpp @@ -89,6 +89,15 @@ public: */ static bool IsValidGoal(GoalID goal_id); + /** + * Check whether this is a valid goal destination. + * @param company The relevant company if a story page is the destination. + * @param type The type of the goal. + * @param destination The destination of the \a type type. + * @return True if and only if this goal destination is valid. + */ + static bool IsValidGoalDestination(ScriptCompany::CompanyID company, GoalType type, SQInteger destination); + /** * Create a new goal. * @param company The company to create the goal for, or ScriptCompany::COMPANY_INVALID for all. @@ -114,6 +123,18 @@ public: */ static bool Remove(GoalID goal_id); + /** + * Update goal destination of a goal. + * @param goal_id The goal to update. + * @param type The type of the goal. + * @param destination The destination of the \a type type. + * @return True if the action succeeded. + * @pre ScriptCompanyMode::IsDeity(). + * @pre IsValidGoal(goal_id). + * @pre IsValidGoalDestination(g->company, type, destination). + */ + static bool SetDestination(GoalID goal_id, GoalType type, SQInteger destination); + /** * Update goal text of a goal. * @param goal_id The goal to update. From e7628552018ab57101eefea12549639974e1cb5d Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Jun 2023 17:05:57 +0200 Subject: [PATCH 029/123] Cleanup: remove str_strip_colours; StrMakeValid also removes the colours Essentially str_strip_colours followed by StrMakeValid makes the calling of str_strip_colours useless, as StrMakeValid would have removed them too. --- src/console.cpp | 1 - src/string.cpp | 23 ----------------------- src/string_func.h | 1 - 3 files changed, 25 deletions(-) diff --git a/src/console.cpp b/src/console.cpp index 5c5ae2fb65..d3d908935a 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -107,7 +107,6 @@ void IConsolePrint(TextColour colour_code, const std::string &string) /* Create a copy of the string, strip if of colours and invalid * characters and (when applicable) assign it to the console buffer */ char *str = stredup(string.c_str()); - str_strip_colours(str); StrMakeValidInPlace(str); if (_network_dedicated) { diff --git a/src/string.cpp b/src/string.cpp index 14e5fee364..c4f8278843 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -423,29 +423,6 @@ bool StrEqualsIgnoreCase(const std::string_view str1, const std::string_view str return StrCompareIgnoreCase(str1, str2) == 0; } -/** Scans the string for colour codes and strips them */ -void str_strip_colours(char *str) -{ - char *dst = str; - WChar c; - size_t len; - - for (len = Utf8Decode(&c, str); c != '\0'; len = Utf8Decode(&c, str)) { - if (c < SCC_BLUE || c > SCC_BLACK) { - /* Copy the character back. Even if dst is current the same as str - * (i.e. no characters have been changed) this is quicker than - * moving the pointers ahead by len */ - do { - *dst++ = *str++; - } while (--len != 0); - } else { - /* Just skip (strip) the colour codes */ - str += len; - } - } - *dst = '\0'; -} - /** * Get the length of an UTF-8 encoded string in number of characters * and thus not the number of bytes that the encoded string contains. diff --git a/src/string_func.h b/src/string_func.h index 93f2b4e1de..35a150fb88 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -42,7 +42,6 @@ void StrMakeValidInPlace(char *str, const char *last, StringValidationSettings s void StrMakeValidInPlace(char *str, StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK); void str_fix_scc_encoded(char *str, const char *last) NOACCESS(2); -void str_strip_colours(char *str); bool strtolower(std::string &str, std::string::size_type offs = 0); [[nodiscard]] bool StrValid(const char *str, const char *last) NOACCESS(2); From 3f357874581132e3097ecc95072ced4aafdb9989 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Jun 2023 17:15:32 +0200 Subject: [PATCH 030/123] Codechange: replace stredup + StrMakeValidInPlace with std::string + StrMakeValid --- src/console.cpp | 11 ++++------- src/console_gui.cpp | 2 +- src/console_internal.h | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/console.cpp b/src/console.cpp index d3d908935a..fa977469ed 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -47,13 +47,13 @@ void IConsoleInit() IConsoleStdLibRegister(); } -static void IConsoleWriteToLogFile(const char *string) +static void IConsoleWriteToLogFile(const std::string &string) { if (_iconsole_output_file != nullptr) { /* if there is an console output file ... also print it there */ const char *header = GetLogPrefix(); if ((strlen(header) != 0 && fwrite(header, strlen(header), 1, _iconsole_output_file) != 1) || - fwrite(string, strlen(string), 1, _iconsole_output_file) != 1 || + fwrite(string.c_str(), string.size(), 1, _iconsole_output_file) != 1 || fwrite("\n", 1, 1, _iconsole_output_file) != 1) { fclose(_iconsole_output_file); _iconsole_output_file = nullptr; @@ -104,23 +104,20 @@ void IConsolePrint(TextColour colour_code, const std::string &string) return; } - /* Create a copy of the string, strip if of colours and invalid + /* Create a copy of the string, strip it of colours and invalid * characters and (when applicable) assign it to the console buffer */ - char *str = stredup(string.c_str()); - StrMakeValidInPlace(str); + std::string str = StrMakeValid(string); if (_network_dedicated) { NetworkAdminConsole("console", str); fmt::print("{}{}\n", GetLogPrefix(), str); fflush(stdout); IConsoleWriteToLogFile(str); - free(str); // free duplicated string since it's not used anymore return; } IConsoleWriteToLogFile(str); IConsoleGUIPrint(colour_code, str); - free(str); } /** diff --git a/src/console_gui.cpp b/src/console_gui.cpp index 1d4e9b29c7..497c430489 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -462,7 +462,7 @@ static void IConsoleHistoryNavigate(int direction) * @param colour_code the colour of the command. Red in case of errors, etc. * @param str the message entered or output on the console (notice, error, etc.) */ -void IConsoleGUIPrint(TextColour colour_code, char *str) +void IConsoleGUIPrint(TextColour colour_code, const std::string &str) { _iconsole_buffer.push_front(IConsoleLine(str, colour_code)); SetWindowDirty(WC_CONSOLE, 0); diff --git a/src/console_internal.h b/src/console_internal.h index 19e798c19e..8137a49b6d 100644 --- a/src/console_internal.h +++ b/src/console_internal.h @@ -86,6 +86,6 @@ bool GetArgumentInteger(uint32 *value, const char *arg); void IConsoleGUIInit(); void IConsoleGUIFree(); -void IConsoleGUIPrint(TextColour colour_code, char *string); +void IConsoleGUIPrint(TextColour colour_code, const std::string &string); #endif /* CONSOLE_INTERNAL_H */ From 97dd84d1e0b318a24d8e5151142824e7f1c0e1b1 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Jun 2023 17:15:32 +0200 Subject: [PATCH 031/123] Codechange: move saveload string fixing code to saveload --- src/saveload/saveload.cpp | 25 ++++++++++++++++++++++--- src/string.cpp | 24 ------------------------ src/string_func.h | 1 - 3 files changed, 22 insertions(+), 28 deletions(-) diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 1d5e214d8d..728ffafaa8 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -890,6 +890,27 @@ static inline size_t SlCalcStdStringLen(const void *ptr) return len + SlGetArrayLength(len); // also include the length of the index } + +/** + * Scan the string for old values of SCC_ENCODED and fix it to it's new, value. + * Note that at the moment this runs, the string has not been validated yet + * because the validation looks for SCC_ENCODED. If there is something invalid, + * just bail out and do not continue trying to replace the tokens. + * @param str the string to fix. + */ +static void FixSCCEncoded(std::string &str) +{ + for (size_t i = 0; i < str.size(); /* nothing. */) { + size_t len = Utf8EncodedCharLen(str[i]); + if (len == 0 || i + len > str.size()) break; + + WChar c; + Utf8Decode(&c, &str[i]); + if (c == 0xE028 || c == 0xE02A) Utf8Encode(&str[i], SCC_ENCODED); + i += len; + } +} + /** * Save/Load a \c std::string. * @param ptr the string being manipulated @@ -921,9 +942,7 @@ static void SlStdString(void *ptr, VarType conv) StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK; if ((conv & SLF_ALLOW_CONTROL) != 0) { settings = settings | SVS_ALLOW_CONTROL_CODE; - if (IsSavegameVersionBefore(SLV_169)) { - str_fix_scc_encoded(str->data(), str->data() + len); - } + if (IsSavegameVersionBefore(SLV_169)) FixSCCEncoded(*str); } if ((conv & SLF_ALLOW_NEWLINE) != 0) { settings = settings | SVS_ALLOW_NEWLINE; diff --git a/src/string.cpp b/src/string.cpp index c4f8278843..800efecb22 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -116,30 +116,6 @@ std::string FormatArrayAsHex(span data) return str; } -/** - * Scan the string for old values of SCC_ENCODED and fix it to - * it's new, static value. - * @param str the string to scan - * @param last the last valid character of str - */ -void str_fix_scc_encoded(char *str, const char *last) -{ - while (str <= last && *str != '\0') { - size_t len = Utf8EncodedCharLen(*str); - if ((len == 0 && str + 4 > last) || str + len > last) break; - - WChar c; - Utf8Decode(&c, str); - if (c == '\0') break; - - if (c == 0xE028 || c == 0xE02A) { - c = SCC_ENCODED; - } - str += Utf8Encode(str, c); - } - *str = '\0'; -} - template static void StrMakeValidInPlace(T &dst, const char *str, const char *last, StringValidationSettings settings) diff --git a/src/string_func.h b/src/string_func.h index 35a150fb88..517ced814d 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -41,7 +41,6 @@ void StrMakeValidInPlace(char *str, const char *last, StringValidationSettings s [[nodiscard]] std::string StrMakeValid(std::string_view str, StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK); void StrMakeValidInPlace(char *str, StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK); -void str_fix_scc_encoded(char *str, const char *last) NOACCESS(2); bool strtolower(std::string &str, std::string::size_type offs = 0); [[nodiscard]] bool StrValid(const char *str, const char *last) NOACCESS(2); From 13cdf5fffa44b379a6ad5eff5fba3d79860b118f Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 6 Jun 2023 18:00:51 +0200 Subject: [PATCH 032/123] Codechange: use std::filesystem::path for the language file's path --- src/crashlog.cpp | 3 ++- src/game/game_text.cpp | 14 +------------- src/language.h | 3 ++- src/network/network_survey.cpp | 8 +------- src/strings.cpp | 20 +++++++++----------- 5 files changed, 15 insertions(+), 33 deletions(-) diff --git a/src/crashlog.cpp b/src/crashlog.cpp index 0d613fdd10..141b2bb67e 100644 --- a/src/crashlog.cpp +++ b/src/crashlog.cpp @@ -34,6 +34,7 @@ #include "company_base.h" #include "company_func.h" #include "3rdparty/fmt/chrono.h" +#include "3rdparty/fmt/std.h" #ifdef WITH_ALLEGRO # include @@ -167,7 +168,7 @@ void CrashLog::LogConfiguration(std::back_insert_iterator &output_i BlitterFactory::GetCurrentBlitter() == nullptr ? "none" : BlitterFactory::GetCurrentBlitter()->GetName(), BaseGraphics::GetUsedSet() == nullptr ? "none" : BaseGraphics::GetUsedSet()->name, BaseGraphics::GetUsedSet() == nullptr ? UINT32_MAX : BaseGraphics::GetUsedSet()->version, - _current_language == nullptr ? "none" : _current_language->file, + _current_language == nullptr ? "none" : _current_language->file.filename(), MusicDriver::GetInstance() == nullptr ? "none" : MusicDriver::GetInstance()->GetName(), BaseMusic::GetUsedSet() == nullptr ? "none" : BaseMusic::GetUsedSet()->name, BaseMusic::GetUsedSet() == nullptr ? UINT32_MAX : BaseMusic::GetUsedSet()->version, diff --git a/src/game/game_text.cpp b/src/game/game_text.cpp index adfdcd6ebe..d3b58b9391 100644 --- a/src/game/game_text.cpp +++ b/src/game/game_text.cpp @@ -384,19 +384,7 @@ void ReconsiderGameScriptLanguage() { if (_current_data == nullptr) return; - char temp[MAX_PATH]; - strecpy(temp, _current_language->file, lastof(temp)); - - /* Remove the extension */ - char *l = strrchr(temp, '.'); - assert(l != nullptr); - *l = '\0'; - - /* Skip the path */ - char *language = strrchr(temp, PATHSEPCHAR); - assert(language != nullptr); - language++; - + std::string language = _current_language->file.stem().string(); for (auto &p : _current_data->compiled_strings) { if (p.language == language) { _current_data->cur_language = &p; diff --git a/src/language.h b/src/language.h index 0966ccb197..79dda356b3 100644 --- a/src/language.h +++ b/src/language.h @@ -14,6 +14,7 @@ #include #endif /* WITH_ICU_I18N */ #include "strings_type.h" +#include static const uint8 CASE_GENDER_LEN = 16; ///< The (maximum) length of a case/gender string. static const uint8 MAX_NUM_GENDERS = 8; ///< Maximum number of supported genders. @@ -90,7 +91,7 @@ static_assert(sizeof(LanguagePackHeader) % 4 == 0); /** Metadata about a single language. */ struct LanguageMetadata : public LanguagePackHeader { - char file[MAX_PATH]; ///< Name of the file we read this data from. + std::filesystem::path file; ///< Name of the file we read this data from. }; /** Type for the list of language meta data. */ diff --git a/src/network/network_survey.cpp b/src/network/network_survey.cpp index b3f64662a6..97b0c43f41 100644 --- a/src/network/network_survey.cpp +++ b/src/network/network_survey.cpp @@ -176,13 +176,7 @@ static void SurveyConfiguration(nlohmann::json &survey) { survey["network"] = _networking ? (_network_server ? "server" : "client") : "no"; if (_current_language != nullptr) { - std::string_view language_basename(_current_language->file); - auto e = language_basename.rfind(PATHSEPCHAR); - if (e != std::string::npos) { - language_basename = language_basename.substr(e + 1); - } - - survey["language"]["filename"] = language_basename; + survey["language"]["filename"] = _current_language->file.filename().string(); survey["language"]["name"] = _current_language->name; survey["language"]["isocode"] = _current_language->isocode; } diff --git a/src/strings.cpp b/src/strings.cpp index ebe05671be..808b7daf10 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -42,6 +42,7 @@ #include "table/strings.h" #include "table/control_codes.h" +#include "3rdparty/fmt/std.h" #include "strings_internal.h" @@ -1827,7 +1828,7 @@ bool ReadLanguagePack(const LanguageMetadata *lang) { /* Current language pack */ size_t len = 0; - std::unique_ptr lang_pack(reinterpret_cast(ReadFileToMem(lang->file, len, 1U << 20).release())); + std::unique_ptr lang_pack(reinterpret_cast(ReadFileToMem(lang->file.string(), len, 1U << 20).release())); if (!lang_pack) return false; /* End of read data (+ terminating zero added in ReadFileToMem()) */ @@ -1882,8 +1883,7 @@ bool ReadLanguagePack(const LanguageMetadata *lang) _current_language = lang; _current_text_dir = (TextDirection)_current_language->text_dir; - const char *c_file = strrchr(_current_language->file, PATHSEPCHAR) + 1; - _config_language_file = c_file; + _config_language_file = _current_language->file.filename().string(); SetCurrentGrfLangID(_current_language->newgrflangid); #ifdef _WIN32 @@ -2007,9 +2007,9 @@ static bool GetLanguageFileHeader(const char *file, LanguagePackHeader *hdr) * Gets a list of languages from the given directory. * @param path the base directory to search in */ -static void GetLanguageList(const char *path) +static void GetLanguageList(const std::string &path) { - DIR *dir = ttd_opendir(path); + DIR *dir = ttd_opendir(path.c_str()); if (dir != nullptr) { struct dirent *dirent; while ((dirent = readdir(dir)) != nullptr) { @@ -2020,10 +2020,10 @@ static void GetLanguageList(const char *path) if (extension == nullptr || strcmp(extension, ".lng") != 0) continue; LanguageMetadata lmd; - seprintf(lmd.file, lastof(lmd.file), "%s%s", path, d_name.c_str()); + lmd.file = path + d_name; /* Check whether the file is of the correct version */ - if (!GetLanguageFileHeader(lmd.file, &lmd)) { + if (!GetLanguageFileHeader(lmd.file.string().c_str(), &lmd)) { Debug(misc, 3, "{} is not a valid language file", lmd.file); } else if (GetLanguage(lmd.newgrflangid) != nullptr) { Debug(misc, 3, "{}'s language ID is already known", lmd.file); @@ -2042,8 +2042,7 @@ static void GetLanguageList(const char *path) void InitializeLanguagePacks() { for (Searchpath sp : _valid_searchpaths) { - std::string path = FioGetDirectory(sp, LANG_DIR); - GetLanguageList(path.c_str()); + GetLanguageList(FioGetDirectory(sp, LANG_DIR)); } if (_languages.size() == 0) UserError("No available language packs (invalid versions?)"); @@ -2060,8 +2059,7 @@ void InitializeLanguagePacks() /* We are trying to find a default language. The priority is by * configuration file, local environment and last, if nothing found, * English. */ - const char *lang_file = strrchr(lng.file, PATHSEPCHAR) + 1; - if (_config_language_file == lang_file) { + if (_config_language_file == lng.file.filename()) { chosen_language = &lng; break; } From 48dcb791454fe312c6b91b61e9d856ac86b44f8a Mon Sep 17 00:00:00 2001 From: Rubidium Date: Wed, 7 Jun 2023 22:30:23 +0200 Subject: [PATCH 033/123] Cleanup: remove seprintf and vsnprintf --- src/safeguards.h | 2 +- src/stdafx.h | 6 ----- src/string.cpp | 65 ----------------------------------------------- src/string_func.h | 14 ---------- 4 files changed, 1 insertion(+), 86 deletions(-) diff --git a/src/safeguards.h b/src/safeguards.h index 02da05b918..09cfe9a919 100644 --- a/src/safeguards.h +++ b/src/safeguards.h @@ -40,7 +40,7 @@ #define strcat SAFEGUARD_DO_NOT_USE_THIS_METHOD #define strncat SAFEGUARD_DO_NOT_USE_THIS_METHOD -/* Use seprintf instead. */ +/* Use fmt::format instead. */ #define sprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD #define snprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD diff --git a/src/stdafx.h b/src/stdafx.h index 4056af22a7..ea90c310b0 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -90,10 +90,6 @@ #if defined(__GNUC__) || (defined(__clang__) && !defined(_MSC_VER)) # define NORETURN __attribute__ ((noreturn)) # define CDECL -# define __int64 long long - /* Warn about functions using 'printf' format syntax. First argument determines which parameter - * is the format string, second argument is start of values passed to printf. */ -# define WARN_FORMAT(string, args) __attribute__ ((format (printf, string, args))) # if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) # define FINAL final # else @@ -128,7 +124,6 @@ #if defined(__WATCOMC__) # define NORETURN # define CDECL -# define WARN_FORMAT(string, args) # define FINAL # define FALLTHROUGH # include @@ -170,7 +165,6 @@ # endif # define CDECL _cdecl -# define WARN_FORMAT(string, args) # define FINAL final /* fallthrough attribute, VS 2017 */ diff --git a/src/string.cpp b/src/string.cpp index 800efecb22..4795a226e7 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -21,7 +21,6 @@ #include #ifdef _MSC_VER -# include // required by vsnprintf implementation for MSVC # define strncasecmp strnicmp #endif @@ -44,10 +43,7 @@ # include "os/macosx/string_osx.h" #endif -/* The function vsnprintf is used internally to perform the required formatting - * tasks. As such this one must be allowed, and makes sure it's terminated. */ #include "safeguards.h" -#undef vsnprintf /** @@ -455,67 +451,6 @@ bool IsValidChar(WChar key, CharSetFilter afilter) } } -#ifdef _WIN32 -#if defined(_MSC_VER) && _MSC_VER < 1900 -/** - * Almost POSIX compliant implementation of \c vsnprintf for VC compiler. - * The difference is in the value returned on output truncation. This - * implementation returns size whereas a POSIX implementation returns - * size or more (the number of bytes that would be written to str - * had size been sufficiently large excluding the terminating null byte). - */ -int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap) -{ - if (size == 0) return 0; - - errno = 0; - int ret = _vsnprintf(str, size, format, ap); - - if (ret < 0) { - if (errno != ERANGE) { - /* There's a formatting error, better get that looked - * at properly instead of ignoring it. */ - NOT_REACHED(); - } - } else if ((size_t)ret < size) { - /* The buffer is big enough for the number of - * characters stored (excluding null), i.e. - * the string has been null-terminated. */ - return ret; - } - - /* The buffer is too small for _vsnprintf to write the - * null-terminator at its end and return size. */ - str[size - 1] = '\0'; - return (int)size; -} -#endif /* _MSC_VER */ - -#endif /* _WIN32 */ - -/** - * Safer implementation of snprintf; same as snprintf except: - * - last instead of size, i.e. replace sizeof with lastof. - * - return gives the amount of characters added, not what it would add. - * @param str buffer to write to up to last - * @param last last character we may write to - * @param format the formatting (see snprintf) - * @return the number of added characters - */ -int CDECL seprintf(char *str, const char *last, const char *format, ...) -{ - ptrdiff_t diff = last - str; - if (diff < 0) return 0; - - va_list ap; - - va_start(ap, format); - int ret = std::min(static_cast(diff), vsnprintf(str, diff + 1, format, ap)); - - va_end(ap); - return ret; -} - /* UTF-8 handling routines */ diff --git a/src/string_func.h b/src/string_func.h index 517ced814d..62f472d26f 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -7,18 +7,6 @@ /** * @file string_func.h Functions related to low-level strings. - * - * @note Be aware of "dangerous" string functions; string functions that - * have behaviour that could easily cause buffer overruns and such: - * - strncpy: does not '\0' terminate when input string is longer than - * the size of the output string. Use strecpy instead. - * - [v]snprintf: returns the length of the string as it would be written - * when the output is large enough, so it can be more than the size of - * the buffer and than can underflow size_t (uint-ish) which makes all - * subsequent snprintf alikes write outside of the buffer. Use - * [v]seprintf instead; it will return the number of bytes actually - * added so no [v]seprintf will cause outside of bounds writes. - * - [v]sprintf: does not bounds checking: use [v]seprintf instead. */ #ifndef STRING_FUNC_H @@ -33,8 +21,6 @@ char *strecpy(char *dst, const char *src, const char *last) NOACCESS(3); char *stredup(const char *src, const char *last = nullptr) NOACCESS(2); -int CDECL seprintf(char *str, const char *last, const char *format, ...) WARN_FORMAT(3, 4) NOACCESS(2); - std::string FormatArrayAsHex(span data); void StrMakeValidInPlace(char *str, const char *last, StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK) NOACCESS(2); From 66a984afd725d1bf7b93427e4919b6b961f33530 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 8 Jun 2023 23:24:44 +0200 Subject: [PATCH 034/123] Codechange: rename function to better describe its functionality --- src/strings.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 808b7daf10..3ad0934dd7 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -2004,10 +2004,10 @@ static bool GetLanguageFileHeader(const char *file, LanguagePackHeader *hdr) } /** - * Gets a list of languages from the given directory. - * @param path the base directory to search in + * Search for the languages in the given directory and add them to the #_languages list. + * @param path the base directory to search in */ -static void GetLanguageList(const std::string &path) +static void FillLanguageList(const std::string &path) { DIR *dir = ttd_opendir(path.c_str()); if (dir != nullptr) { @@ -2042,7 +2042,7 @@ static void GetLanguageList(const std::string &path) void InitializeLanguagePacks() { for (Searchpath sp : _valid_searchpaths) { - GetLanguageList(FioGetDirectory(sp, LANG_DIR)); + FillLanguageList(FioGetDirectory(sp, LANG_DIR)); } if (_languages.size() == 0) UserError("No available language packs (invalid versions?)"); From 1be668c2e4379fc5db4aec7b2bdb0d7c5152e1fb Mon Sep 17 00:00:00 2001 From: merni-ns <66267867+merni-ns@users.noreply.github.com> Date: Fri, 9 Jun 2023 20:39:36 +0530 Subject: [PATCH 035/123] Fix #10975: Clear a non-head engine's name (#10976) --- src/train_cmd.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 0a8fe12b7e..2018159eca 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1327,6 +1327,7 @@ CommandCost CmdMoveRailVehicle(DoCommandFlag flags, VehicleID src_veh, VehicleID /* Remove stuff not valid anymore for non-front engines. */ DeleteVehicleOrders(src); src->unitnumber = 0; + src->name.clear(); } /* We weren't a front engine but are becoming one. So From 81f957b9f8c5972ef539c900da5f4763bcb96b8c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 9 Jun 2023 16:44:42 +0200 Subject: [PATCH 036/123] Codechange: use std::string to find the executable's working directory --- src/fileio.cpp | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/fileio.cpp b/src/fileio.cpp index 29927236d5..0461b27a13 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -738,26 +738,28 @@ extern void DetermineBasePaths(const char *exe); */ static bool ChangeWorkingDirectoryToExecutable(const char *exe) { - char tmp[MAX_PATH]; - strecpy(tmp, exe, lastof(tmp)); + std::string path = exe; - bool success = false; #ifdef WITH_COCOA - char *app_bundle = strchr(tmp, '.'); - while (app_bundle != nullptr && !StrStartsWithIgnoreCase(app_bundle, ".app")) app_bundle = strchr(&app_bundle[1], '.'); - - if (app_bundle != nullptr) *app_bundle = '\0'; -#endif /* WITH_COCOA */ - char *s = strrchr(tmp, PATHSEPCHAR); - if (s != nullptr) { - *s = '\0'; - if (chdir(tmp) != 0) { - Debug(misc, 0, "Directory with the binary does not exist?"); - } else { - success = true; + for (size_t pos = path.find_first_of('.'); pos != std::string::npos; pos = path.find_first_of('.', pos + 1)) { + if (StrEqualsIgnoreCase(path.substr(pos, 4), ".app")) { + path.erase(pos); + break; } } - return success; +#endif /* WITH_COCOA */ + + size_t pos = path.find_last_of(PATHSEPCHAR); + if (pos == std::string::npos) return false; + + path.erase(pos); + + if (chdir(path.c_str()) != 0) { + Debug(misc, 0, "Directory with the binary does not exist?"); + return false; + } + + return true; } /** From 6d597879d0f1ef2ff02d02c6b1967014a8d521e8 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 9 Jun 2023 18:10:24 +0200 Subject: [PATCH 037/123] Codechange: let ReadLine return a string instead of passing a buffer --- src/game/game_text.cpp | 10 +++------- src/strgen/strgen.cpp | 6 ++++-- src/strgen/strgen.h | 6 ++---- src/strgen/strgen_base.cpp | 16 ++++++++-------- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/game/game_text.cpp b/src/game/game_text.cpp index d3b58b9391..34feb8f119 100644 --- a/src/game/game_text.cpp +++ b/src/game/game_text.cpp @@ -102,14 +102,10 @@ struct StringListReader : StringReader { { } - char *ReadLine(char *buffer, const char *last) override + std::optional ReadLine() override { - if (this->p == this->end) return nullptr; - - strecpy(buffer, this->p->c_str(), last); - this->p++; - - return buffer; + if (this->p == this->end) return std::nullopt; + return *this->p++; } }; diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp index f264964378..a2a8e79310 100644 --- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -84,9 +84,11 @@ struct FileStringReader : StringReader { this->input_stream.open(file, std::ifstream::binary); } - char *ReadLine(char *buffer, const char *last) override + std::optional ReadLine() override { - return this->input_stream.getline(buffer, last - buffer) ? buffer : nullptr; + std::string result; + if (!std::getline(this->input_stream, result)) return std::nullopt; + return result; } void HandlePragma(char *str) override; diff --git a/src/strgen/strgen.h b/src/strgen/strgen.h index 593060bb15..e07c19b098 100644 --- a/src/strgen/strgen.h +++ b/src/strgen/strgen.h @@ -67,11 +67,9 @@ struct StringReader { /** * Read a single line from the source of strings. - * @param buffer The buffer to read the data in to. - * @param last The last element in the buffer. - * @return The buffer, or nullptr if at the end of the file. + * @return The line, or std::nullopt if at the end of the file. */ - virtual char *ReadLine(char *buffer, const char *last) = 0; + virtual std::optional ReadLine() = 0; /** * Handle the pragma of the file. diff --git a/src/strgen/strgen_base.cpp b/src/strgen/strgen_base.cpp index b114dea3d5..36b6bfcd00 100644 --- a/src/strgen/strgen_base.cpp +++ b/src/strgen/strgen_base.cpp @@ -739,16 +739,13 @@ void StringReader::HandlePragma(char *str) } } -static void rstrip(char *buf) +static void StripTrailingWhitespace(std::string &str) { - size_t i = strlen(buf); - while (i > 0 && (buf[i - 1] == '\r' || buf[i - 1] == '\n' || buf[i - 1] == ' ')) i--; - buf[i] = '\0'; + str.erase(str.find_last_not_of("\r\n ") + 1); } void StringReader::ParseFile() { - char buf[2048]; _warnings = _errors = 0; _translation = this->translation; @@ -765,9 +762,12 @@ void StringReader::ParseFile() strecpy(_lang.digit_decimal_separator, ".", lastof(_lang.digit_decimal_separator)); _cur_line = 1; - while (this->data.next_string_id < this->data.max_strings && this->ReadLine(buf, lastof(buf)) != nullptr) { - rstrip(buf); - this->HandleString(buf); + while (this->data.next_string_id < this->data.max_strings) { + std::optional line = this->ReadLine(); + if (!line.has_value()) return; + + StripTrailingWhitespace(line.value()); + this->HandleString(line.value().data()); _cur_line++; } From 2097719f269edf2e42ada3ebe7854534d27b4e11 Mon Sep 17 00:00:00 2001 From: PeterN Date: Fri, 9 Jun 2023 22:18:55 +0100 Subject: [PATCH 038/123] Fix: Don't restore backed up vehicle name if it's no longer unique. (#10979) --- src/order_backup.cpp | 4 ++++ src/vehicle_cmd.cpp | 2 +- src/vehicle_func.h | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/order_backup.cpp b/src/order_backup.cpp index be4d7180ca..610540b89c 100644 --- a/src/order_backup.cpp +++ b/src/order_backup.cpp @@ -18,6 +18,7 @@ #include "station_map.h" #include "order_cmd.h" #include "group_cmd.h" +#include "vehicle_func.h" #include "safeguards.h" @@ -83,6 +84,9 @@ void OrderBackup::DoRestore(Vehicle *v) InvalidateWindowClassesData(WC_STATION_LIST, 0); } + /* Remove backed up name if it's no longer unique. */ + if (!IsUniqueVehicleName(this->name)) this->name.clear(); + v->CopyConsistPropertiesFrom(this); /* Make sure orders are in range */ diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index c23445aa9c..ef301bbf59 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -746,7 +746,7 @@ CommandCost CmdDepotMassAutoReplace(DoCommandFlag flags, TileIndex tile, Vehicle * @param name Name to test. * @return True ifffffff the name is unique. */ -static bool IsUniqueVehicleName(const std::string &name) +bool IsUniqueVehicleName(const std::string &name) { for (const Vehicle *v : Vehicle::Iterate()) { if (!v->name.empty() && v->name == name) return false; diff --git a/src/vehicle_func.h b/src/vehicle_func.h index 06001f4f07..a8b63ac2d0 100644 --- a/src/vehicle_func.h +++ b/src/vehicle_func.h @@ -178,4 +178,6 @@ void CheckCargoCapacity(Vehicle *v); bool VehiclesHaveSameEngineList(const Vehicle *v1, const Vehicle *v2); bool VehiclesHaveSameOrderList(const Vehicle *v1, const Vehicle *v2); +bool IsUniqueVehicleName(const std::string &name); + #endif /* VEHICLE_FUNC_H */ From 6869f387baddc6a3d75916a4c5448dca177f1b4c Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Sun, 11 Jun 2023 12:00:02 +0200 Subject: [PATCH 039/123] Fix 07add7a9: [Win32] use full monitor resolution for fullscreen (#10985) On Windows in fullscreen you cannot reach the top with the cursor for the halve of the height of your toolbar. Additionally, on Win10 in fullscreen you can see the actual toolbar. --- src/video/win32_v.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index d92fe0079a..cf260c2508 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -212,13 +212,18 @@ bool VideoDriver_Win32Base::MakeWindow(bool full_screen, bool resize) if (this->main_wnd != nullptr) { if (!_window_maximize && resize) SetWindowPos(this->main_wnd, 0, 0, 0, w, h, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER | SWP_NOMOVE); } else { - /* Center on the workspace of the primary display. */ - MONITORINFO mi; - mi.cbSize = sizeof(mi); - GetMonitorInfo(MonitorFromWindow(0, MONITOR_DEFAULTTOPRIMARY), &mi); + int x = 0; + int y = 0; - int x = (mi.rcWork.right - mi.rcWork.left - w) / 2; - int y = (mi.rcWork.bottom - mi.rcWork.top - h) / 2; + /* For windowed mode, center on the workspace of the primary display. */ + if (!this->fullscreen) { + MONITORINFO mi; + mi.cbSize = sizeof(mi); + GetMonitorInfo(MonitorFromWindow(0, MONITOR_DEFAULTTOPRIMARY), &mi); + + x = (mi.rcWork.right - mi.rcWork.left - w) / 2; + y = (mi.rcWork.bottom - mi.rcWork.top - h) / 2; + } std::string caption = VideoDriver::GetCaption(); this->main_wnd = CreateWindow(L"OTTD", OTTD2FS(caption).c_str(), style, x, y, w, h, 0, 0, GetModuleHandle(nullptr), this); From d42ef3a0efaf7fc7be453f236272f884300fd587 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 11 Jun 2023 15:47:53 +0200 Subject: [PATCH 040/123] Codechange: inject the query window caption into the widget --- src/misc_gui.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 03dc1e2144..c4dd6cb93e 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -1106,19 +1106,19 @@ struct QueryWindow : public Window { QueryCallbackProc *proc; ///< callback function executed on closing of popup. Window* points to parent, bool is true if 'yes' clicked, false otherwise uint64 params[10]; ///< local copy of #_global_string_params StringID message; ///< message shown for query window - StringID caption; ///< title of window QueryWindow(WindowDesc *desc, StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) : Window(desc) { /* Create a backup of the variadic arguments to strings because it will be * overridden pretty often. We will copy these back for drawing */ CopyOutDParam(this->params, 0, lengthof(this->params)); - this->caption = caption; this->message = message; this->proc = callback; this->parent = parent; - this->InitNested(WN_CONFIRM_POPUP_QUERY); + this->CreateNestedTree(); + this->GetWidget(WID_Q_CAPTION)->SetDataTip(caption, STR_NULL); + this->FinishInitNested(WN_CONFIRM_POPUP_QUERY); } void Close() override @@ -1139,10 +1139,6 @@ struct QueryWindow : public Window { { switch (widget) { case WID_Q_CAPTION: - CopyInDParam(1, this->params, lengthof(this->params)); - SetDParam(0, this->caption); - break; - case WID_Q_TEXT: CopyInDParam(0, this->params, lengthof(this->params)); break; @@ -1213,7 +1209,7 @@ struct QueryWindow : public Window { static const NWidgetPart _nested_query_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_RED), - NWidget(WWT_CAPTION, COLOUR_RED, WID_Q_CAPTION), SetDataTip(STR_JUST_STRING, STR_NULL), + NWidget(WWT_CAPTION, COLOUR_RED, WID_Q_CAPTION), // The caption's string is set in the constructor EndContainer(), NWidget(WWT_PANEL, COLOUR_RED), NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.modalpopup), From 6c6f365d2fe86106ce2186a04e898f6f9597650c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 11 Jun 2023 15:56:13 +0200 Subject: [PATCH 041/123] Codechange: remove offset parameter for copying DParams in and out --- src/error_gui.cpp | 6 +++--- src/misc_gui.cpp | 4 ++-- src/news_gui.cpp | 10 +++++----- src/statusbar_gui.cpp | 2 +- src/strings.cpp | 10 ++++------ src/strings_func.h | 4 ++-- 6 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/error_gui.cpp b/src/error_gui.cpp index fee7d040c2..b7b5fe75bd 100644 --- a/src/error_gui.cpp +++ b/src/error_gui.cpp @@ -210,7 +210,7 @@ public: { switch (widget) { case WID_EM_MESSAGE: { - CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); + CopyInDParam(this->decode_params, lengthof(this->decode_params)); if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack); this->height_summary = GetStringHeight(this->summary_msg, size->width); @@ -279,7 +279,7 @@ public: void SetStringParameters(int widget) const override { - if (widget == WID_EM_CAPTION) CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); + if (widget == WID_EM_CAPTION) CopyInDParam(this->decode_params, lengthof(this->decode_params)); } void DrawWidget(const Rect &r, int widget) const override @@ -292,7 +292,7 @@ public: } case WID_EM_MESSAGE: - CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); + CopyInDParam(this->decode_params, lengthof(this->decode_params)); if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack); if (this->detailed_msg == INVALID_STRING_ID) { diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index c4dd6cb93e..a94a71fe5d 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -1111,7 +1111,7 @@ struct QueryWindow : public Window { { /* Create a backup of the variadic arguments to strings because it will be * overridden pretty often. We will copy these back for drawing */ - CopyOutDParam(this->params, 0, lengthof(this->params)); + CopyOutDParam(this->params, lengthof(this->params)); this->message = message; this->proc = callback; this->parent = parent; @@ -1140,7 +1140,7 @@ struct QueryWindow : public Window { switch (widget) { case WID_Q_CAPTION: case WID_Q_TEXT: - CopyInDParam(0, this->params, lengthof(this->params)); + CopyInDParam(this->params, lengthof(this->params)); break; } } diff --git a/src/news_gui.cpp b/src/news_gui.cpp index 6527528741..ce4da6ba96 100644 --- a/src/news_gui.cpp +++ b/src/news_gui.cpp @@ -361,7 +361,7 @@ struct NewsWindow : Window { break; case WID_N_MESSAGE: - CopyInDParam(0, this->ni->params, lengthof(this->ni->params)); + CopyInDParam(this->ni->params, lengthof(this->ni->params)); str = this->ni->string_id; break; @@ -429,7 +429,7 @@ struct NewsWindow : Window { break; case WID_N_MESSAGE: - CopyInDParam(0, this->ni->params, lengthof(this->ni->params)); + CopyInDParam(this->ni->params, lengthof(this->ni->params)); DrawStringMultiLine(r.left, r.right, r.top, r.bottom, this->ni->string_id, TC_FROMSTRING, SA_CENTER); break; @@ -582,7 +582,7 @@ private: StringID GetCompanyMessageString() const { /* Company news with a face have a separate headline, so the normal message is shifted by two params */ - CopyInDParam(0, this->ni->params + 2, lengthof(this->ni->params) - 2); + CopyInDParam(this->ni->params + 2, lengthof(this->ni->params) - 2); return this->ni->params[1]; } @@ -804,7 +804,7 @@ NewsItem::NewsItem(StringID string_id, NewsType type, NewsFlag flags, NewsRefere { /* show this news message in colour? */ if (TimerGameCalendar::year >= _settings_client.gui.coloured_news_year) this->flags |= NF_INCOLOUR; - CopyOutDParam(this->params, 0, lengthof(this->params)); + CopyOutDParam(this->params, lengthof(this->params)); } /** @@ -1099,7 +1099,7 @@ void ShowLastNewsMessage() */ static void DrawNewsString(uint left, uint right, int y, TextColour colour, const NewsItem *ni) { - CopyInDParam(0, ni->params, lengthof(ni->params)); + CopyInDParam(ni->params, lengthof(ni->params)); /* Get the string, replaces newlines with spaces and remove control codes from the string. */ std::string message = StrMakeValid(GetString(ni->string_id), SVS_REPLACE_TAB_CR_NL_WITH_SPACE); diff --git a/src/statusbar_gui.cpp b/src/statusbar_gui.cpp index 3bb731a706..ee505f7334 100644 --- a/src/statusbar_gui.cpp +++ b/src/statusbar_gui.cpp @@ -39,7 +39,7 @@ static bool DrawScrollingStatusText(const NewsItem *ni, int scroll_pos, int left, int right, int top, int bottom) { - CopyInDParam(0, ni->params, lengthof(ni->params)); + CopyInDParam(ni->params, lengthof(ni->params)); /* Replace newlines and the likes with spaces. */ std::string message = StrMakeValid(GetString(ni->string_id), SVS_REPLACE_TAB_CR_NL_WITH_SPACE); diff --git a/src/strings.cpp b/src/strings.cpp index 3ad0934dd7..4c358fa78d 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -128,24 +128,22 @@ void SetDParamMaxDigits(uint n, uint count, FontSize size) /** * Copy \a num string parameters from array \a src into the global string parameter array. - * @param offs Index in the global array to copy the first string parameter to. * @param src Source array of string parameters. * @param num Number of string parameters to copy. */ -void CopyInDParam(int offs, const uint64 *src, int num) +void CopyInDParam(const uint64 *src, int num) { - MemCpyT(_global_string_params.GetPointerToOffset(offs), src, num); + MemCpyT(_global_string_params.GetPointerToOffset(0), src, num); } /** * Copy \a num string parameters from the global string parameter array to the \a dst array. * @param dst Destination array of string parameters. - * @param offs Index in the global array to copy the first string parameter from. * @param num Number of string parameters to copy. */ -void CopyOutDParam(uint64 *dst, int offs, int num) +void CopyOutDParam(uint64 *dst, int num) { - MemCpyT(dst, _global_string_params.GetPointerToOffset(offs), num); + MemCpyT(dst, _global_string_params.GetPointerToOffset(0), num); } /** diff --git a/src/strings_func.h b/src/strings_func.h index 6d70c2df8c..7c34c4a252 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -218,8 +218,8 @@ void SetDParamStr(uint n, const char *str); void SetDParamStr(uint n, const std::string &str); void SetDParamStr(uint n, std::string &&str) = delete; // block passing temporaries to SetDParamStr -void CopyInDParam(int offs, const uint64 *src, int num); -void CopyOutDParam(uint64 *dst, int offs, int num); +void CopyInDParam(const uint64 *src, int num); +void CopyOutDParam(uint64 *dst, int num); void CopyOutDParam(uint64 *dst, const char **strings, StringID string, int num); /** From f86500df92c52eb9ab5b65c6ebaf5ef05a1872ed Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 11 Jun 2023 21:16:16 +0200 Subject: [PATCH 042/123] Codechange: remove need for SetDParamX --- src/industry_cmd.cpp | 2 +- src/misc_gui.cpp | 2 +- src/strings_func.h | 11 ----------- src/tile_cmd.h | 2 +- src/town_cmd.cpp | 2 +- 5 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 26d25fa2aa..c5f69bb73f 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -476,7 +476,7 @@ static void GetTileDesc_Industry(TileIndex tile, TileDesc *td) td->owner[0] = i->owner; td->str = is->name; if (!IsIndustryCompleted(tile)) { - SetDParamX(td->dparam, 0, td->str); + td->dparam = td->str; td->str = STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION; } diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index a94a71fe5d..315964dada 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -174,7 +174,7 @@ public: this->landinfo_data.clear(); /* Tiletype */ - SetDParam(0, td.dparam[0]); + SetDParam(0, td.dparam); this->landinfo_data.push_back(GetString(td.str)); /* Up to four owners */ diff --git a/src/strings_func.h b/src/strings_func.h index 7c34c4a252..cc63efdb98 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -190,17 +190,6 @@ static inline int64 PackVelocity(uint speed, VehicleType type) return speed | (static_cast(type) << 56); } -/** - * Set a string parameter \a v at index \a n in a given array \a s. - * @param s Array of string parameters. - * @param n Index of the string parameter. - * @param v Value of the string parameter. - */ -static inline void SetDParamX(uint64 *s, uint n, uint64 v) -{ - s[n] = v; -} - /** * Set a string parameter \a v at index \a n in the global string parameter array. * @param n Index of the string parameter. diff --git a/src/tile_cmd.h b/src/tile_cmd.h index f44e0aac32..32a04ab6ac 100644 --- a/src/tile_cmd.h +++ b/src/tile_cmd.h @@ -51,6 +51,7 @@ struct TileInfo { /** Tile description for the 'land area information' tool */ struct TileDesc { StringID str; ///< Description of the tile + uint64_t dparam; ///< Parameter of the \a str string Owner owner[4]; ///< Name of the owner(s) StringID owner_type[4]; ///< Type of each owner TimerGameCalendar::Date build_date; ///< Date of construction of tile contents @@ -60,7 +61,6 @@ struct TileDesc { StringID airport_name; ///< Name of the airport StringID airport_tile_name; ///< Name of the airport tile const char *grf; ///< newGRF used for the tile contents - uint64 dparam[2]; ///< Parameters of the \a str string StringID railtype; ///< Type of rail on the tile. uint16 rail_speed; ///< Speed limit of rail (bridges and track) StringID roadtype; ///< Type of road on the tile. diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index e12597981e..ae032937ea 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -788,7 +788,7 @@ static void GetTileDesc_Town(TileIndex tile, TileDesc *td) } if (!house_completed) { - SetDParamX(td->dparam, 0, td->str); + td->dparam = td->str; td->str = STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION; } From 82b434b589b087bc75247ddbb01b79a1e7a4b2ef Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 11 Jun 2023 21:48:07 +0200 Subject: [PATCH 043/123] Codechange: rename function to better describe what it is doing --- src/company_cmd.cpp | 10 +++++----- src/company_func.h | 3 ++- src/error_gui.cpp | 3 ++- src/misc_gui.cpp | 2 +- src/road_cmd.cpp | 4 ++-- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 5d186d831b..0cf65688f9 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -285,14 +285,14 @@ void UpdateLandscapingLimits() } /** - * Set the right DParams to get the name of an owner. + * Set the right DParams for STR_ERROR_OWNED_BY. * @param owner the owner to get the name of. * @param tile optional tile to get the right town. * @pre if tile == 0, then owner can't be OWNER_TOWN. */ -void GetNameOfOwner(Owner owner, TileIndex tile) +void SetDParamsForOwnedBy(Owner owner, TileIndex tile) { - SetDParam(2, owner); + SetDParam(OWNED_BY_OWNER_IN_PARAMETERS_OFFSET, owner); if (owner != OWNER_TOWN) { if (!Company::IsValidID(owner)) { @@ -326,7 +326,7 @@ CommandCost CheckOwnership(Owner owner, TileIndex tile) if (owner == _current_company) return CommandCost(); - GetNameOfOwner(owner, tile); + SetDParamsForOwnedBy(owner, tile); return_cmd_error(STR_ERROR_OWNED_BY); } @@ -346,7 +346,7 @@ CommandCost CheckTileOwnership(TileIndex tile) if (owner == _current_company) return CommandCost(); /* no need to get the name of the owner unless we're the local company (saves some time) */ - if (IsLocalCompany()) GetNameOfOwner(owner, tile); + if (IsLocalCompany()) SetDParamsForOwnedBy(owner, tile); return_cmd_error(STR_ERROR_OWNED_BY); } diff --git a/src/company_func.h b/src/company_func.h index 1212c4aa6a..60b70fbf97 100644 --- a/src/company_func.h +++ b/src/company_func.h @@ -17,7 +17,8 @@ bool MayCompanyTakeOver(CompanyID cbig, CompanyID small); void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner); -void GetNameOfOwner(Owner owner, TileIndex tile); +static const int OWNED_BY_OWNER_IN_PARAMETERS_OFFSET = 2; ///< The index in the parameters for the owner information. +void SetDParamsForOwnedBy(Owner owner, TileIndex tile); void SetLocalCompany(CompanyID new_company); void ShowBuyCompanyDialog(CompanyID company, bool hostile_takeover); void CompanyAdminUpdate(const Company *company); diff --git a/src/error_gui.cpp b/src/error_gui.cpp index b7b5fe75bd..1d7107bec4 100644 --- a/src/error_gui.cpp +++ b/src/error_gui.cpp @@ -16,6 +16,7 @@ #include "gfx_func.h" #include "string_func.h" #include "company_base.h" +#include "company_func.h" #include "company_manager_face.h" #include "strings_func.h" #include "zoom_func.h" @@ -141,7 +142,7 @@ void ErrorMessageData::CopyOutDParams() if (this->textref_stack_size > 0) StopTextRefStackUsage(); if (this->detailed_msg == STR_ERROR_OWNED_BY) { - CompanyID company = (CompanyID)GetDParamX(this->decode_params, 2); + CompanyID company = (CompanyID)GetDParamX(this->decode_params, OWNED_BY_OWNER_IN_PARAMETERS_OFFSET); if (company < MAX_COMPANIES) face = company; } } diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 315964dada..42cd589761 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -182,7 +182,7 @@ public: if (td.owner_type[i] == STR_NULL) continue; SetDParam(0, STR_LAND_AREA_INFORMATION_OWNER_N_A); - if (td.owner[i] != OWNER_NONE && td.owner[i] != OWNER_WATER) GetNameOfOwner(td.owner[i], tile); + if (td.owner[i] != OWNER_NONE && td.owner[i] != OWNER_WATER) SetDParamsForOwnedBy(td.owner[i], tile); this->landinfo_data.push_back(GetString(td.owner_type[i])); } diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index c29fef09e7..b7049ebac4 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -2463,8 +2463,8 @@ CommandCost CmdConvertRoad(DoCommandFlag flags, TileIndex tile, TileIndex area_s } if (rtt == RTT_ROAD && owner == OWNER_TOWN) { + SetDParamsForOwnedBy(OWNER_TOWN, tile); error.MakeError(STR_ERROR_OWNED_BY); - GetNameOfOwner(OWNER_TOWN, tile); continue; } } @@ -2516,8 +2516,8 @@ CommandCost CmdConvertRoad(DoCommandFlag flags, TileIndex tile, TileIndex area_s } if (rtt == RTT_ROAD && owner == OWNER_TOWN) { + SetDParamsForOwnedBy(OWNER_TOWN, tile); error.MakeError(STR_ERROR_OWNED_BY); - GetNameOfOwner(OWNER_TOWN, tile); continue; } } From 613ad805810ffc4ca7244d486d07358a93dbf772 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 11 Jun 2023 21:59:58 +0200 Subject: [PATCH 044/123] Codechange: remove need for GetDParamX --- src/error_gui.cpp | 11 ++++++----- src/strings_func.h | 11 ----------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/error_gui.cpp b/src/error_gui.cpp index 1d7107bec4..e73da56fdd 100644 --- a/src/error_gui.cpp +++ b/src/error_gui.cpp @@ -131,6 +131,12 @@ ErrorMessageData::ErrorMessageData(StringID summary_msg, StringID detailed_msg, */ void ErrorMessageData::CopyOutDParams() { + if (this->detailed_msg == STR_ERROR_OWNED_BY) { + /* The parameters are set by SetDParamsForOwnedBy. */ + CompanyID company = (CompanyID)GetDParam(OWNED_BY_OWNER_IN_PARAMETERS_OFFSET); + if (company < MAX_COMPANIES) face = company; + } + /* Reset parameters */ for (size_t i = 0; i < lengthof(this->strings); i++) free(this->strings[i]); memset(this->decode_params, 0, sizeof(this->decode_params)); @@ -140,11 +146,6 @@ void ErrorMessageData::CopyOutDParams() if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack); CopyOutDParam(this->decode_params, this->strings, this->detailed_msg == INVALID_STRING_ID ? this->summary_msg : this->detailed_msg, lengthof(this->decode_params)); if (this->textref_stack_size > 0) StopTextRefStackUsage(); - - if (this->detailed_msg == STR_ERROR_OWNED_BY) { - CompanyID company = (CompanyID)GetDParamX(this->decode_params, OWNED_BY_OWNER_IN_PARAMETERS_OFFSET); - if (company < MAX_COMPANIES) face = company; - } } /** diff --git a/src/strings_func.h b/src/strings_func.h index cc63efdb98..ec3f82cd3f 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -211,17 +211,6 @@ void CopyInDParam(const uint64 *src, int num); void CopyOutDParam(uint64 *dst, int num); void CopyOutDParam(uint64 *dst, const char **strings, StringID string, int num); -/** - * Get the current string parameter at index \a n from parameter array \a s. - * @param s Array of string parameters. - * @param n Index of the string parameter. - * @return Value of the requested string parameter. - */ -static inline uint64 GetDParamX(const uint64 *s, uint n) -{ - return s[n]; -} - /** * Get the current string parameter at index \a n from the global string parameter array. * @param n Index of the string parameter. From ebc451b071ebd66f3a9d84d7718611a9755e28c5 Mon Sep 17 00:00:00 2001 From: PeterN Date: Mon, 12 Jun 2023 08:42:02 +0100 Subject: [PATCH 045/123] Fix #10987: Double-close of dropdown stopped land-info tool working as default. (#11000) Clicking and releasing on the query toolbar icon is meant to select the land-info tool. This did not work as during closing a window, OnFocusLost() is called, which then closes the window again. These two calls toggled the land-info tool one and off in the same action. Resolve by not calling Window::Close in OnFocusLost() if the window is already closing. --- src/console_gui.cpp | 2 +- src/osk_gui.cpp | 4 ++-- src/widgets/dropdown.cpp | 4 ++-- src/window.cpp | 6 +++--- src/window_gui.h | 9 ++++++++- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/console_gui.cpp b/src/console_gui.cpp index 497c430489..143c333ac9 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -336,7 +336,7 @@ struct IConsoleWindow : Window VideoDriver::GetInstance()->EditBoxGainedFocus(); } - void OnFocusLost() override + void OnFocusLost(bool closing) override { VideoDriver::GetInstance()->EditBoxLostFocus(); } diff --git a/src/osk_gui.cpp b/src/osk_gui.cpp index 3b8e963bb5..750838acd6 100644 --- a/src/osk_gui.cpp +++ b/src/osk_gui.cpp @@ -197,10 +197,10 @@ struct OskWindow : public Window { this->parent->SetWidgetDirty(this->text_btn); } - void OnFocusLost() override + void OnFocusLost(bool closing) override { VideoDriver::GetInstance()->EditBoxLostFocus(); - this->Close(); + if (!closing) this->Close(); } }; diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index a0ff70e7b4..c2de0be6c4 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -197,9 +197,9 @@ struct DropdownWindow : Window { if (nwc != nullptr) SetBit(nwc->disp_flags, NDB_DROPDOWN_CLOSED); } - void OnFocusLost() override + void OnFocusLost(bool closing) override { - this->Close(); + if (!closing) this->Close(); } Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) override diff --git a/src/window.cpp b/src/window.cpp index 314b6eb77e..5c31411468 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -469,7 +469,7 @@ void SetFocusedWindow(Window *w) _focused_window = w; /* So we can inform it that it lost focus */ - if (old_focused != nullptr) old_focused->OnFocusLost(); + if (old_focused != nullptr) old_focused->OnFocusLost(false); if (_focused_window != nullptr) _focused_window->OnFocus(); } @@ -545,7 +545,7 @@ void Window::OnFocus() /** * Called when window loses focus */ -void Window::OnFocusLost() +void Window::OnFocusLost(bool closing) { if (this->nested_focus != nullptr && this->nested_focus->type == WWT_EDITBOX) VideoDriver::GetInstance()->EditBoxLostFocus(); } @@ -1132,7 +1132,7 @@ void Window::Close() /* Make sure we don't try to access this window as the focused window when it doesn't exist anymore. */ if (_focused_window == this) { - this->OnFocusLost(); + this->OnFocusLost(true); _focused_window = nullptr; } diff --git a/src/window_gui.h b/src/window_gui.h index 3ef708ab4d..b29912dbd2 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -515,9 +515,16 @@ public: */ virtual void SetStringParameters(int widget) const {} + /** + * The window has gained focus. + */ virtual void OnFocus(); - virtual void OnFocusLost(); + /** + * The window has lost focus. + * @param closing True iff the window has lost focus in the process of closing. + */ + virtual void OnFocusLost(bool closing); /** * A key has been pressed. From f26de0d2f9d1e84bc791fed6c17b8e4816479794 Mon Sep 17 00:00:00 2001 From: Andrii Date: Tue, 13 Jun 2023 10:33:33 +0200 Subject: [PATCH 046/123] Fix #10982: No help text for gamelog command (#10984) --- src/console_cmds.cpp | 5 +++++ src/gamelog.cpp | 2 +- src/gamelog.h | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 111017c0cc..5ac065cdd1 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -2105,6 +2105,11 @@ DEF_CONSOLE_CMD(ConListSettings) DEF_CONSOLE_CMD(ConGamelogPrint) { + if (argc == 0) { + IConsolePrint(CC_HELP, "Print logged fundamental changes to the game since the start. Usage: 'gamelog'."); + return true; + } + _gamelog.PrintConsole(); return true; } diff --git a/src/gamelog.cpp b/src/gamelog.cpp index cf0fe4e3b6..3d2a1b46ab 100644 --- a/src/gamelog.cpp +++ b/src/gamelog.cpp @@ -5,7 +5,7 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -/** @file gamelog.cpp Definition of functions used for logging of important changes in the game */ +/** @file gamelog.cpp Definition of functions used for logging of fundamental changes to the game */ #include "stdafx.h" #include "saveload/saveload.h" diff --git a/src/gamelog.h b/src/gamelog.h index 653a0fec4d..0383169335 100644 --- a/src/gamelog.h +++ b/src/gamelog.h @@ -5,7 +5,7 @@ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ -/** @file gamelog.h Functions to be called to log possibly unsafe game events */ +/** @file gamelog.h Functions to be called to log fundamental changes to the game */ #ifndef GAMELOG_H #define GAMELOG_H From f1ec2f274c75cb5742f5ebebd082bd62ef4efced Mon Sep 17 00:00:00 2001 From: translators Date: Tue, 13 Jun 2023 18:40:34 +0000 Subject: [PATCH 047/123] Update: Translations from eints vietnamese: 6 changes by KhoiCanDev korean: 4 changes by telk5093 german: 33 changes by SecretIdetity romanian: 69 changes by kneekoo russian: 2 changes by Ln-Wolf finnish: 4 changes by hpiirai turkish: 4 changes by BeratSJ danish: 1 change by bscargo dutch: 6 changes by Afoklala french: 4 changes by ottdfevr portuguese (brazilian): 6 changes by pasantoro polish: 6 changes by pAter-exe --- src/lang/brazilian_portuguese.txt | 8 ++- src/lang/danish.txt | 1 + src/lang/dutch.txt | 8 ++- src/lang/finnish.txt | 5 +- src/lang/french.txt | 5 +- src/lang/german.txt | 34 ++++++++++- src/lang/korean.txt | 5 +- src/lang/polish.txt | 8 ++- src/lang/romanian.txt | 96 ++++++++++++++++++++++--------- src/lang/russian.txt | 4 +- src/lang/turkish.txt | 5 +- src/lang/vietnamese.txt | 8 ++- 12 files changed, 145 insertions(+), 42 deletions(-) diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 99707987d3..776953c814 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -847,7 +847,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC 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_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} foi retomada por {STRING}! +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) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} patrocinou a construção da nova cidade {TOWN}! @@ -1559,7 +1559,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Cinza para verm STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Escala de cinza STR_CONFIG_SETTING_SCROLLMODE :Comportamento de rolamento da janela: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamento ao rolar o mapa +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamento ao mover o mapa. A opção de "posição do mouse travada" não funciona em todos os sistemas, tais como versões baseadas na web, telas sensíveis ao toque, Linux com Wayland e outros. ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Mover vista com BDM, posição do mouse travada STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Mover mapa com BDM, posição do mouse travada @@ -2081,6 +2081,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}A aloca # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Erro nas configurações de vídeo... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... nenhuma GPU compatível encontrada. Aceleração de hardware desativada +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... O driver gráfico (GPU) interrompeu o jogo. Aceleração por hardware desativada. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -3760,6 +3761,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalhes STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Ver informações detalhadas de infraestrutura STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Dar dinheiro STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Dá dinheiro a essa empresa +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Aquisição hostil +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Fazer a aquisição hostil desta empresa STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Novo Rosto STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Selecionar novo rosto para o presidente @@ -3775,6 +3778,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nome do Preside STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Inserir a quantidade de dinheiro que você quer dar STR_BUY_COMPANY_MESSAGE :{WHITE}Estamos à procura de uma empresa de transportes para comprar a nossa empresa{}{}Deseja comprar {COMPANY} por {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Na aquisição hostil de {COMPANY} você irá adquirir todos os ativos, liquidar todos os empréstimos e pagar o valor de 2 anos de lucros.{}{}O total estimado é de {CURRENCY_LONG}.{}{}Você quer continuar com esta aquisição hostil? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infraestrutura de {COMPANY} diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 55c14a3619..51c4c51830 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -3760,6 +3760,7 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljer STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Se detaljerede infrastruktur-tal STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Giv penge STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Giv penge til dette selskab +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Fjendtlig overtagelse STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Foretag en fjendtlig overtagelse af dette firma STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nyt ansigt diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index d14dcc2737..d7de2920ef 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -846,7 +846,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} is gesloten door schuldeisers en alle eigendommen zijn verkocht! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nieuw transportbedrijf gestart! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} begint werkzaamheden bij {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} is overgenomen door {STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} is overgenomen door {STRING} voor een niet nader bekend gemaakt bedrag! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Directeur) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} betaalt bouw van nieuwe stad {TOWN}! @@ -1558,7 +1558,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Grijs naar rood STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Grijstinten STR_CONFIG_SETTING_SCROLLMODE :Verplaatsingsgedrag voor kijkvensters: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Gedrag tijdens het verplaatsen van de kaart +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Gedrag tijdens het verplaatsen van de kaart. De opties over vergrendeling van de muis werken niet op alle systemen, bijv. webversies, aanraakschermen, Linux met Wayland en andere ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Kijkvenster verplaatsen met rechtermuisknop, muispositie vergrendeld STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Kaart verplaatsen met rechtermuisknop, muispositie vergrendeld @@ -2080,6 +2080,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Toewijze # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Fout met video-instellingen... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... geen compatibele GPU gevonden. Hardwareversnelling is uitgeschakeld +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... Spel is vastgelopen door het GPU-stuurprogramma. Hardwareversnelling wordt uitgeschakeld # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -3759,6 +3760,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Gedetailleerde aantallen infrastructuur bekijken STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Geld geven STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Geld geven aan dit bedrijf +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Vijandige overname +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Een vijandige overname van dit bedrijf uitvoeren STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nieuw gezicht STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Nieuw gezicht voor directeur kiezen @@ -3774,6 +3777,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Naam van direct STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Voer het bedrag in om weg te geven STR_BUY_COMPANY_MESSAGE :{WHITE}We zoeken een transportbedrijf dat ons bedrijf over kan nemen.{}{}Wil je {COMPANY} kopen voor {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Bij een vijandige overname van {COMPANY} neem je alle bezittingen over, betaal je alle leningen terug en betaal je twee jaar winst.{}{}Het totaal wordt geschat op {CURRENCY_LONG}.{}{}Wil je doorgaan met de vijandige overname? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructuur van {COMPANY} diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 2a5b694fdd..bb5c78f7c9 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -846,7 +846,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} on suljettu velkojien toimesta ja kaikki omaisuus on myyty pois! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Uusi kuljetusyhtiö perustettu! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} aloittaa rakentamisen kunnassa {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{1:STRING} on ottanut haltuunsa yhtiön {0:STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{1:STRING} on ottanut haltuunsa yhtiön {0:STRING} julkistamattomaan hintaan! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(pääjohtaja) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} rahoitti uuden kunnan, {TOWN}, rakentamista! @@ -3760,6 +3760,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Yksityis STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Näytä tarkka infrastruktuurin määrä STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Anna rahaa STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Anna rahaa tälle yhtiölle +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Vihamielinen yrityskaappaus +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Valtaa tämä yhtiö STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Uudet kasvot STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Valitse uudet kasvot pääjohtajalle @@ -3775,6 +3777,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Pääjohtajan n STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Syötä annettava rahamäärä STR_BUY_COMPANY_MESSAGE :{WHITE}Etsimme kuljetusyhtiötä, joka ottaisi haltuunsa yhtiömme{}{}Haluatko ostaa yhtiön {COMPANY} hintaan {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Yhtiön {COMPANY} vihamielisessä valtauksessa ostat sen koko omaisuuden ja maksat sen kaikki lainat sekä kahden vuoden voittoja vastaavan summan.{}{}Arvioitu kustannus on yhteensä {CURRENCY_LONG}.{}{}Haluatko jatkaa tätä yrityskaappausta? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY}: Infrastruktuuri diff --git a/src/lang/french.txt b/src/lang/french.txt index e5063b6c4e..1604694299 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -847,7 +847,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} a été dissolue par ses créanciers et tous ses actifs vendus{NBSP}! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nouvelle compagnie de transport{NBSP}! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} commence à construire près de {TOWN}{NBSP}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} a été rachetée par {STRING}{NBSP}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} a été rachetée par {STRING} pour un montant iconnu ! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Président) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} a sponsorisé la construction de la nouvelle ville {TOWN}{NBSP}! @@ -3761,6 +3761,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Détails STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Afficher le détail des calculs d'infrastructure STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Donner de l’argent STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Donner de l’argent à cette compagnie +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Rachat de force +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Racheter de force cette compagnie STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nouveau visage STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Choix d'un nouveau visage pour le P.D.G. @@ -3776,6 +3778,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nom du P.D.G. STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Entrer le montant que vous souhaiter donner STR_BUY_COMPANY_MESSAGE :{WHITE}Nous sommes à la recherche d'un repreneur pour notre compagnie{}{}Voulez-vous acheter {COMPANY} pour {CURRENCY_LONG}{NBSP}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Si vous rachetez de force la compagnie {COMPANY} vous acquérirez tout ce qu'elle possède, rembourserez les prêts et payerez pendant deux ans une partie des profits.{}{} Le total est estimé à {CURRENCY_LONG}.{}{} Souhaitez-vous tout de même racheter de force cette compagnie ? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructure de {COMPANY} diff --git a/src/lang/german.txt b/src/lang/german.txt index 3e9f349793..bc5f291df1 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -196,6 +196,7 @@ STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP} STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}km/h STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}m/s STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}Kacheln/Tag +STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}Knoten STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}PS STR_UNITS_POWER_METRIC :{DECIMAL}{NBSP}PS @@ -344,7 +345,7 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Auftrags ###length 31 STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spiel anhalten STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Zeitraffer (Zeit vergeht schnellstmöglich) -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Einstellungen +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Optionen und Einstellungen STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Spiel speichern, Spiel laden, Spiel abbrechen, (OpenTTD) Beenden STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Weltkarte, zusätzliche Fenster oder Schilderliste anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Städteverzeichnis anzeigen @@ -931,8 +932,19 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Hauptans # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spieleinstellungen +STR_GAME_OPTIONS_TAB_GENERAL :Allgemein +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Wähle allgemeine Einstellungen +STR_GAME_OPTIONS_TAB_GRAPHICS :Grafik +STR_GAME_OPTIONS_TAB_SOUND :Sound +STR_GAME_OPTIONS_VOLUME :Lautstärke +STR_GAME_OPTIONS_SFX_VOLUME :Sound-Effekte +STR_GAME_OPTIONS_MUSIC_VOLUME :Musik +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_CURRENCY_UNITS_FRAME :{BLACK}Währung STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Währung auswählen @@ -987,6 +999,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Abstand # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Aus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Alle 10 Minuten +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Alle 30 Minuten +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Alle 60 Minuten +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Alle 120 Minuten STR_GAME_OPTIONS_LANGUAGE :{BLACK}Sprache STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Sprache für die Spieloberfläche auswählen @@ -1023,6 +1039,9 @@ STR_GAME_OPTIONS_GUI_SCALE_3X :3× STR_GAME_OPTIONS_GUI_SCALE_4X :4× STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Über Umfrage und Privatsphäre +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Vorschau des Umfrageergebnisses +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Zeige die Umfrageergebnisse des gerade laufenden Spiels an STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafik @@ -1153,6 +1172,7 @@ STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Alles au STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Alles einklappen STR_CONFIG_SETTING_RESET_ALL :{BLACK}Alle Werte zurücksetzen STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(keine Erklärung verfügbar) +STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR} STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Standardwert: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Art der Einstellung: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Nutzer-Einstellung (nicht in Spielständen gespeichert; beeinflusst alle Spiele) @@ -1944,6 +1964,7 @@ STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Auslastung der STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Häufig gibt es mehrere Verbindungen um von einer Station zu einer anderen zu kommen. Zuerst wird der Algorithmus die kürzesten Verbindungen auslasten, dann die längeren usw. Wenn alle Verbindungen ausgelastet sind, verteilt er die verbliebene Nachfrage gleichmäßig. Diese Einstellung besagt, ab welcher Auslastung eine Verbinudng als „voll“ gilt und der Algorithmus in der ersten Runde die nächst längere wählt. Da die Kapazität der Verbindungen geschätzt wird, ist es sinnvoll, hier weniger als 100% anzugeben, um etwas „Luft“ für Fehlschätzungen zu lassen. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Geschwindigkeitseinheit: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Geschwindigkeitseinheit (nautisch): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Immer wenn die Geschwindigkeit angezeigt wird, sie in den gewählten Einheiten anzeigen ###length 5 STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) @@ -2378,6 +2399,9 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Nein STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Ja, diesmal STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Ja, nicht erneut fragen +STR_NETWORK_ASK_SURVEY_LINK :Über Umfrage und Privatsphäre +STR_NETWORK_ASK_SURVEY_NO :Nein +STR_NETWORK_ASK_SURVEY_YES :Ja STR_NETWORK_SPECTATORS :Zuschauer @@ -2669,7 +2693,10 @@ STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Eine Sta STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Die Stationsart auswählen, die gebaut werden soll STR_STATION_CLASS_DFLT :Standardstation +STR_STATION_CLASS_DFLT_STATION :Standart-Haltestelle +STR_STATION_CLASS_DFLT_ROADSTOP :Standard-Staßenhaltestelle STR_STATION_CLASS_WAYP :Wegpunkte +STR_STATION_CLASS_WAYP_WAYPOINT :Standart-Wegpunkt # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalauswahl @@ -3718,6 +3745,7 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Detaillierte Informationen zur Infrastruktur dieser Firma anzeigen STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Verschenke Geld STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Geld an diese Firma verschenken +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Feindliche Übernahme STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Neues Gesicht STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Neues Gesicht für Manager aussuchen @@ -4569,6 +4597,7 @@ STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Die KIs, STR_AI_CONFIG_HUMAN_PLAYER :Menschlicher Spieler STR_AI_CONFIG_RANDOM_AI :Zufällige KI STR_AI_CONFIG_NONE :- +STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Max. Mitbewerber-Zahl: {ORANGE}{COMMA} STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Intervall zwischen Start von Wettbewerbern: {ORANGE}{COMMA} minute{P "" n} @@ -5085,6 +5114,7 @@ STR_ERROR_NO_BUOY :{WHITE}Es gibt STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Fahrplan kann nicht erstellt werden ... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Fahrzeuge halten nur an Stationen STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Das Fahrzeug hält nicht an dieser Station +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... Fahrplan ist unvollständig # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... zu viele Schilder @@ -5564,11 +5594,13 @@ STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} +STR_JUST_DECIMAL :{DECIMAL} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} diff --git a/src/lang/korean.txt b/src/lang/korean.txt index c04bb52aae..3944ca4ed7 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -847,7 +847,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 회사가 채권자에 의해 모든 자산이 팔려 파산하였습니다! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}새로운 운송회사 등장! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}{G 0 "이" "가"} {TOWN}에서 공사를 시작했습니다! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING}의 관리권이 {STRING}(으)로 넘어갔습니다! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} 회사가 비공개 금액에 {STRING} 회사로 인수되었습니다! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(사장) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING}은(는) 새로운 도시 {TOWN}을(를) 건설했습니다! @@ -3761,6 +3761,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}상세 STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}기반시설 상세정보 창을 엽니다 STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}돈 보내기 STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}이 회사에 돈을 보냅니다 +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}강제 인수 +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}이 회사를 강제 인수 STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}새 얼굴 STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}사장의 얼굴을 선택합니다 @@ -3776,6 +3778,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :사장 이름 STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :보내고자 하는 돈의 액수를 입력하세요 STR_BUY_COMPANY_MESSAGE :{WHITE}저희 회사를 거두어주실 운송 회사를 찾고있습니다.{}{}저희 {COMPANY} 회사를 {CURRENCY_LONG}의 가격으로 인수합병하시겠습니까? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}{COMPANY} 회사를 강제 인수하려면 해당 회사의 모든 자산을 구매하고, 모든 대출을 상환하며 2년치 이익을 지불하게 됩니다.{}{}총 금액은 {CURRENCY_LONG} 가 될 것입니다.{}{}정말 강제 인수를 진행하시겠습니까? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY}의 기반시설 diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 543ef3b946..25280f4117 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -1226,7 +1226,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} zostaje zamknięty przez wierzycieli i wszystkie udziały zostają sprzedane! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nowa firma rozpoczęła działalność! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} rozpoczyna budowę w pobliżu miasta {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} zostało przejęte przez {STRING}! +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}! @@ -1938,7 +1938,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Od szarego do c STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Skala szarości STR_CONFIG_SETTING_SCROLLMODE :Zachowanie przeciągania okna podglądu: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Zachowanie podczas przeciągania mapy +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Zachowanie podczas przeciągania mapy. Opcje „pozycja myszy zablokowana” nie działają na systemach, takich jak wersje internetowe, ekrany dotykowe, Linux z Waylandem i innych ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Przeciągnij okno podglądu prawym przyciskiem myszy, pozycja myszy zablokowana STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Przeciągnij mapę prawym przyciskiem myszy, pozycja myszy zablokowana @@ -2460,6 +2460,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nie powi # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Błąd ustawień obrazu... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... nie znaleziono kompatybilnego procesora graficznego. Przyspieszenie sprzętowe wyłączone. +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... Sterownik GPU spowodował awarię gry. Wyłączono akcelerację sprzętową # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -4139,6 +4140,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Szczegó STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Zobacz szczegółowe wartości infrastruktury STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Przekaż pieniądze STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Przekaż część pieniędzy tej firmie +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Wrogie przejęcie +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Dokonaj wrogiego przejęcia tej firmy STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nowa twarz STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Wybierz nową twarz prezesa @@ -4154,6 +4157,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nazwisko prezes STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Wpisz kwotę, jaką chcesz przekazać STR_BUY_COMPANY_MESSAGE :{WHITE}Szukamy firmy transportowej, która przejęłaby naszą firmę.{}{}Chcesz zakupić {COMPANY} za {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}W ramach wrogiego przejęcia {COMPANY} wykupisz wszystkie aktywa, spłacisz wszystkie pożyczki i wypłacisz dwuletnie zyski.{}{}Całość szacowana jest na {CURRENCY_LONG}.{}{}Czy chcesz kontynuować to wrogie przejęcie? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktura firmy {COMPANY} diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 2a6f7bd62a..9e6526d11b 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -344,9 +344,9 @@ STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Deschide ###length 31 STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauză joc STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Măreşte viteza de trecere a timpului -STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opţiuni -STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvare/abandon/ieşire joc -STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Afişează harta +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opțiuni și setări +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvare, încărcare sau abandon joc, ieșire program +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Afișează harta, vizor adițional, flux de marfă sau lista de semne STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Afişează lista cu oraşele de pe hartă STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Afişează subvenţiile STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Afişează lista cu staţiile companiei @@ -354,9 +354,9 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Afişeaz STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Afişează date generale despre companie STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Afişează cartea de poveste STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Afişează lista de scopuri -STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Afişează grafice +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Afișează graficele și ratele plăților pentru marfă ale companiei STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Afişează clasamentul companiilor -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Listează sau fondează obiectivele industriale +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Examinează industriile sau fondează construcția unei noi industrii STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Afișează lista cu trenurile companiei. Ctrl+clic comută afișarea listei cu grupuri/vehicule STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Afișează lista cu autovehiculele companiei. Ctrl+clic comută afișarea listei cu grupuri/vehicule STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Afișează lista cu navele companiei. Ctrl+clic comută afișarea listei cu grupuri/vehicule @@ -370,8 +370,8 @@ STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construi STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construieşte aeroporturi STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Afişează instrumentele pentru modelarea terenului, plantarea copacilor, etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Afişează fereastra pentru configurarea sunetului/muzicii -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Afişează ultimul mesaj (ultima ştire), opţiunile pentru mesaje -STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informaţii despre teren, consolă, depanare IA, capturi ecran, despre OpenTTD +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Afișează ultimul mesaj (ultima știre), istoricul de mesaje sau șterge toate mesajele +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informații despre teren, captură de ecran, despre OpenTTD și unelte de dezvoltare STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Comută bara de unelte # Extra tooltips for the scenario editor toolbar @@ -450,7 +450,7 @@ STR_GRAPH_MENU_INCOME_GRAPH :Venituri STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Număr încărcături livrate STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Evoluţia performanţei STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Valoarea companiei -STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Valorile plăţilor pe încărcături +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Valorile plăților pe mărfuri # Company league menu ###length 3 @@ -496,7 +496,7 @@ STR_TOOLBAR_SOUND_MUSIC :Sunet/muzică # Message menu ###length 3 -STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Ultimul mesaj/ultima ştire +STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Ultimul mesaj/ultima știre STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Lista ultimelor mesaje STR_NEWS_MENU_DELETE_ALL_MESSAGES :Șterge toate mesajele @@ -606,13 +606,13 @@ STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unităţ STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Evaluarea performanţelor companiilor (maxim=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Valorile companiilor -STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Preţurile transportului de călători şi mărfuri +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Prețurile transportului de mărfuri STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Zile în tranzit -STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Plata pentru livrarea a 10 unităţi (sau 10.000 de litri) de marfă pe o distanţă de 20 de pătrăţele +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Plata pentru livrarea a 10 unități (sau 10.000 de litri) de marfă pe o distanță de 20 de pătrățele STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Activează tot STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Dezactivează tot -STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Afişează toate mărfurile în graficul de plăţi -STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Nu afişa niciun tip de marfă în graficul de plăţi +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Afișează toate mărfurile în graficul de plăți +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Nu afișa niciun tip de marfă în graficul de plăți STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Comută ascunderea/afișarea graficului de marfă STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} @@ -799,7 +799,7 @@ STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Nu afiș STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Afișează toate tipurile de încărcătură pe hartă # Status bar messages -STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Re-afişează ultimul mesaj +STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Re-afișează ultimul mesaj sau ultima știre STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZĂ * * STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * PAUZĂ (se actualizează graficul conexiunilor) * * @@ -846,7 +846,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}Compania {STRING} a fost închisă şi toate activele au fost valorificate de creditori! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}A apărut o nouă companie de transport! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} şi-a stabilit sediul lângă {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} a fost preluată de {STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} a fost preluată de {STRING} pentru o sumă nedezvăluită! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Preşedinte) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} a sponsorizat construcţia unui nou oras {TOWN}! @@ -932,13 +932,21 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copiază STR_GAME_OPTIONS_CAPTION :{WHITE}Opţiuni STR_GAME_OPTIONS_TAB_GENERAL :General +STR_GAME_OPTIONS_TAB_GENERAL_TT :{BLACK}Alege setările generale STR_GAME_OPTIONS_TAB_GRAPHICS :Grafică +STR_GAME_OPTIONS_TAB_GRAPHICS_TT :{BLACK}Alege setările grafice +STR_GAME_OPTIONS_TAB_SOUND :Sunet STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Alegeți setările de sunet și muzică STR_GAME_OPTIONS_VOLUME :Volum +STR_GAME_OPTIONS_SFX_VOLUME :Efecte sonore STR_GAME_OPTIONS_MUSIC_VOLUME :Muzică +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}Unitate monetară STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Alege unitatea monetară @@ -993,7 +1001,9 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Alege in # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Dezactivată +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :La fiecare 10 minute STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :La fiecare 30 de minute +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :La fiecare 60 de minute STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :La fiecare 120 de minute STR_GAME_OPTIONS_LANGUAGE :{BLACK}Limba @@ -1031,6 +1041,13 @@ STR_GAME_OPTIONS_GUI_SCALE_3X :3x STR_GAME_OPTIONS_GUI_SCALE_4X :4x STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Sondaj automat +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Participă în sondaje automate +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Când este activat, OpenTTD va transmite un sondaj la ieșirea din joc +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Despre sondaj și intimitate +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Asta va deschide un navigator cu mai multe informații despre sondajul automat +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Previzualizare rezultat sondaj +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Arată rezultatul sondajului pentru jocul curent STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafică @@ -1161,6 +1178,7 @@ STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Extinde STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Colapsează toate STR_CONFIG_SETTING_RESET_ALL :{BLACK}Resetează toate valorile STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(descrierea nu este disponibilă) +STR_CONFIG_SETTING_VALUE :{PUSH_COLOUR}{ORANGE}{STRING}{POP_COLOUR} STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Valoare implicită: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Tip setare: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Setare client (nu se stochează în salvări; se aplică pentru toate jocurile) @@ -1540,7 +1558,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Din gri în ro STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Tonuri de gri STR_CONFIG_SETTING_SCROLLMODE :Comportament derulare vizor: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamentul derulării hărții +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamentul derulării hărții. Opțiunile „poziție cursor fixă” nu funcționează pe toate sistemele, ca versiunile web, pe ecrane tactile, Linux cu Wayland, și altele ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Mută fereastra de vizualizare ținând apăsat click dreapta, poziția cursorului rămânând fixă STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Mută harta ținând apăsat click dreapta, poziția cursorului rămânând fixă @@ -1721,7 +1739,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Câtă memorie STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervaluri de service în procente: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Alege dacă întreținerea vehiculelor este activată de trecerea unei anumite perioade de timp, sau scăzând un anumit procent din gradul de rezistență al vehiculului +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Dacă este activată, vehiculele încearcă să se repare când fiabilitatea le scade sub un anumit procent.{}{}De exemplu, dacă fiabilitatea maximă a unui vehicul este 90% și intervalul de service este 20%, vehiculul va încerca să intre în service când ajunge la 72% fiabilitate. STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalul de întreținere implicit al trenurilor: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Alege perioada de întreținere implicită pentru noi vehicule feroviare, dacă nu există un interval de întreținere stabilit pentru vehicul @@ -1926,6 +1944,8 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :deloc STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicator iniţial dimensiune oraş: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Dimensiunea medie a orașelor mari față de orașele normale, la începutul jocului +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Durată de timp între recalculările grafului de legături. Fiecare recalculare calculează planurile pentru o componentă a grafului. Asta înseamnă că o valoare X pentru această setare nu va actualiza graful la fiecare X secunde, ci doar o componentă va fi actualizată. O durată scurtă înseamnă mai mult timp pentru procesare, iar o durată lungă înseamnă că începutul distribuției mărfii pe noile rute va lua mai mult timp. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Durată de timp pentru fiecare recalculare unei componente a grafului de legături. Când începe recalcularea, un fir de execuție va putea rula acest număr de secunde. Cu un interval scurt, e mai probabil ca firul de execuția să nu termine la timp. Asta pauzează jocul până la terminarea execuției ("lag"). Cu un interval lung, actualizarea distribuției la schimbarea rutelor va lua mai mult timp. STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modalitatea de distribuire a pasagerilor: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simetric" înseamnă că aproximativ același număr de pasageri va fi transportat din stația A spre stația B, precum de la B la A. "Asimetric" presupune transportul unui număr arbitrar de pasageri în fiecare direcție. "Manual" înseamnă că repartizarea pasagerilor nu va fi automatizată. @@ -1951,7 +1971,8 @@ STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :O valoare sub 1 STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturaţia căilor de capacitate mică înainte de a utiliza căi de capacitate mare: {STRING} STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Adesea, există mai multe căi între două stații date. Cargodist va satura mai întâi calea cea mai scurtă, apoi va folosi a doua cea mai scurtă cale până când aceasta este saturată și așa mai departe. Saturația este determinată de o estimare a capacității și a utilizării planificate. Odată ce a saturat toate căile, dacă mai rămâne cerere, va supraîncărca toate căile, preferându-le pe cele cu capacitate mare. Totuși, de cele mai multe ori algoritmul nu va estima capacitatea cu acuratețe. Această setare vă permite să specificați până la ce procent o cale mai scurtă trebuie să fie saturată în prima trecere înainte de a alege următoarea mai lungă. Setați-l la mai puțin de 100% pentru a evita stațiile supraaglomerate în caz de capacitate supraestimată. -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unitate viteză: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unitate viteză (terestru): {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Unități de viteză (nautice): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Afişează viteza în interfaţă folosind unităţile selectate ###length 5 STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) @@ -2057,6 +2078,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nu s-au # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Eroare în setările video... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... GPU incompatibil. Accelerarea hardware este dezactivată +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... Driverul GPU a dus la prăbușirea jocului. Accelerarea hardware a fost dezactivată # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2068,7 +2090,7 @@ STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Hartă t STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor hartă STR_INTRO_MULTIPLAYER :{BLACK}Multiplayer -STR_INTRO_GAME_OPTIONS :{BLACK}Opţiuni +STR_INTRO_GAME_OPTIONS :{BLACK}Opțiuni STR_INTRO_HIGHSCORE :{BLACK}Tabela cu scoruri maxime STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Setări STR_INTRO_NEWGRF_SETTINGS :{BLACK}Setări NewGRF @@ -2359,6 +2381,7 @@ STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(Companie nouă STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Creează o nouă companie și intră în ea STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}Aici ești tu STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Aceasta este gazda jocului +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} {P client clienți "de clienți"} - {NUM}/{NUM}{P companie companii "de companii"} STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}Numărul de clienți conectați în prezent, numărul de companii și numărul maxim de companii permis de administratorul serverului # Matches ConnectionType @@ -2386,6 +2409,12 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Nu STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Da, de data asta STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Da, nu mă mai întreba +STR_NETWORK_ASK_SURVEY_CAPTION :Participați în sondajul automat? +STR_NETWORK_ASK_SURVEY_TEXT :Vrei să participi în sondajul automat?{}OpenTTD va transmite un sondaj când ieși din joc.{}Opțiunea poate fi modificată ulterior din „Opțiuni”. +STR_NETWORK_ASK_SURVEY_PREVIEW :Previzualizează rezultatul sondajului +STR_NETWORK_ASK_SURVEY_LINK :Despre sondaj și intimitate +STR_NETWORK_ASK_SURVEY_NO :Nu +STR_NETWORK_ASK_SURVEY_YES :Da STR_NETWORK_SPECTATORS :Spectatori @@ -2676,8 +2705,11 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construi STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Alege o clasă de staţii pentru afişare STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Alege tipul de staţie pentru construcţie -STR_STATION_CLASS_DFLT :Staţie implicită +STR_STATION_CLASS_DFLT :Implicită +STR_STATION_CLASS_DFLT_STATION :Stație implicită +STR_STATION_CLASS_DFLT_ROADSTOP :Oprire implicită a drumului STR_STATION_CLASS_WAYP :Puncte de tranzit +STR_STATION_CLASS_WAYP_WAYPOINT :Punct intermediar implicit # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Alegere semnal @@ -2909,7 +2941,7 @@ STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Case STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Click pe industrie pentru a vedea furnizorii şi clienţii săi STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Click pe cargo pentru a vedea furnizorii şi clienţii săi STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Afişează lanţ -STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Afişează industriile care furnizează şi acceptă cargo +STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Afișează industriile care furnizează și acceptă marfă STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link către harta mică STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selectează industriile afişate şi pe harta mică STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Alege tipul de marfă @@ -2918,7 +2950,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Alege in STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Alege industria pe care dorești să o afișezi: # Land area window -STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informaţii teren +STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informații teren STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centrează vizorul principal pe locația dalei. Ctrl+clic deschide un vizor nou pe locația dalei STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Costul demolării: {LTBLUE}nu este cazul STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Costul demolării: {RED}{CURRENCY_LONG} @@ -3726,6 +3758,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalii STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Vezi contabilizarea infrastructurii STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Dă banii STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Dă bani acestei companii +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Preluare ostilă +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Preia ostil această companie STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Schimbă poza STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Alege o nouă poză a preşedintelui @@ -3741,6 +3775,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Noul nume al pr STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Introdu suma de bani pe care vrei să o dai STR_BUY_COMPANY_MESSAGE :{WHITE}Căutăm o companie de transport care să preia societatea noastră{}{}Doriţi să cumpăraţi {COMPANY} la preţul de {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Prin preluarea ostilă a {COMPANY}, vei cumpăra toate bunurile acesteia, vei plăti toate împrumuturile și vei plăti profitul pe doi ani.{}{}Totalul estimat este {CURRENCY_LONG}.{}{}Vrei să dai curs preluării ostile? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructura {COMPANY} @@ -3813,6 +3848,8 @@ STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Trimite STR_VEHICLE_LIST_REPLACE_VEHICLES :Înlocuiește vehiculele STR_VEHICLE_LIST_SEND_FOR_SERVICING :Trimite in service STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profit anul acesta: {CURRENCY_LONG} (anul trecut: {CURRENCY_LONG}) +STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] +STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Trimite la depou STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Trimite la depou @@ -4168,10 +4205,10 @@ STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Schimbă STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Schimbă tipul de marfă transportat de aeronavă ###length VEHICLE_TYPES -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Afişează comenzile trenului. Ctrl-Click pentru a afişa orarul -STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Afişează comenzile autovehiculului. Ctrl-Click pentru a afişa orarul -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Afişează comenzile navei. Ctrl-Click pentru a afişa orarul -STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Afişează comenzile aeronavei. Ctrl-Click pentru a afişa orarul +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Afișează comenzile trenului. Ctrl-clic afișează orarul +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Afișează comenzile autovehiculului. Ctrl-clic afișează orarul +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Afișează comenzile navei. Ctrl-clic afișează orarul +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Afișează comenzile aeronavei. Ctrl-clic afișează orarul ###length VEHICLE_TYPES STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Afişează detaliile trenului @@ -4577,7 +4614,9 @@ STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Modulul STR_AI_CONFIG_HUMAN_PLAYER :Jucator uman STR_AI_CONFIG_RANDOM_AI :IA aleator STR_AI_CONFIG_NONE :(niciunul) +STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Numărul maxim de companii concurente: {ORANGE}{COMMA} +STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Intervalul dintre startul competitorilor: {ORANGE}{COMMA} {P minut minute "de minute"} STR_AI_CONFIG_MOVE_UP :{BLACK}În sus STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Mută IA selectată sus în listă @@ -4590,7 +4629,7 @@ STR_AI_CONFIG_AI :{SILVER}IA STR_AI_CONFIG_CHANGE_AI :{BLACK}Selectați IA STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Selectați scriptul jocului -STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Încarcă un alt script +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Încarcă un alt script. Ctrl+clic arată toate versiunile disponibile STR_AI_CONFIG_CONFIGURE :{BLACK}Configurază STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configurează parametrii scriptului @@ -4636,6 +4675,7 @@ STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenţ STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}, fișier readme al {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING}, lista de modificări a {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING}, licența fișierului {STRING} +STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Previzualizare a rezultatului sondajului # Vehicle loading indicators @@ -5572,11 +5612,13 @@ STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} +STR_JUST_DECIMAL :{DECIMAL} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 728f5e5cd8..a3604ba109 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -991,7 +991,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} была закрыта кредиторами! Все активы распроданы! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Основана новая транспортная компания! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} начинает строительство около г.{NBSP}{TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} выкуплена {STRING}! Сумма сделки не раскрывается. +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} поглощена компанией {STRING}! Сумма сделки не разглашается. STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Директор) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Компания «{STRING}» профинансировала основание города {TOWN}! @@ -3952,7 +3952,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Имя дире STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Введите сумму, которую собираетесь передать STR_BUY_COMPANY_MESSAGE :{WHITE}Мы ищем потенциального покупателя для нашей компании.{}{}Не желаете ли Вы приобрести {COMPANY} за {CURRENCY_LONG}? -STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}После поглощения компании {COMPANY} вы приобретёте все её активы. При этом вам придётся выплатить все её долги плюс сумму, эквивалентную её двойному годовому доходу.{}{}Сумма сделки оценивается в {CURRENCY_LONG}.{}{}Осуществить поглощение компании? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}После поглощения компании {COMPANY} все её активы перейдут в вашу собственность. При этом вам придётся выплатить все долги компании плюс сумму, эквивалентную её двойному годовому доходу.{}{}Сумма сделки оценивается в {CURRENCY_LONG}.{}{}Осуществить поглощение компании? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Инфраструктура «{COMPANY}» diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index bd962a615b..78f4cc3388 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -847,7 +847,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} iflas etti ve kapatıldı! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Yeni şirket kuruldu! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}, {TOWN} yakınlarında inşaata başladı! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING}, {STRING} tarafından alındı! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING},açıklanmayan bir miktar karşılığında {STRING} tarafından alındı! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Yönetici) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} {TOWN} adlı yeni kasabanın inşaasını finanse etti! @@ -3761,6 +3761,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Ayrınt STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Ayrıntılı altyapı sayılarını göster STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Para ver STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Bu şirkete para ver +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Şirketi Devralmaya Zorla +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Bu şirketi devralmaya zorlayın STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Yeni Surat STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Müdür için yeni surat seç @@ -3776,6 +3778,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Yöneticinin is STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Vermek istediğin para miktarını gir STR_BUY_COMPANY_MESSAGE :{WHITE}Şirketimizi satın alacak birilerini arıyoruz.{}{} {COMPANY} şirketini şu fiyata almak ister misiniz: {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}{COMPANY} şirketini devralmaya zorlamak için şirketin tüm varlıklarını satın alacak, tüm kredileri geri ödeyecek ve 2 yıllık karı ödeyeceksiniz.{}{}Toplam tutar {CURRENCY_LONG} olacak.{}{}Zorunlu devralma işlemine devam etmek istediğinizden emin misiniz? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} şirketinin altyapısı diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 258e7a219b..4ed8162bf8 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -846,7 +846,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} đã bị đóng cửa bởi chủ nợ và tất cả tài sản đã bị bán đi! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Công ty vận tải mới thành lập! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} đang được xây dựng gần thị trấn {TOWN}! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} đã bị kiểm soát bởi {STRING}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} đã bị kiểm soát bởi {STRING} với số tiền không được tiết lộ! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Giám Đốc) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} Tài trợ xây dựng Thị Xã mới {TOWN}! @@ -1558,7 +1558,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Xám tới đ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Thang màu xám STR_CONFIG_SETTING_SCROLLMODE :Kiểu cuộn khung nhìn: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Hành xử khi kéo, cuộn bản đồ +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Hành xử khi kéo, cuộn bản đồ. Tùy chọn "khóa vị trí chuột" không hoạt động ở một số phiên bản, như phiên bản web, phiên bản cảm ứng, Linux với Wayland, và một số phiên bản khác ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Kéo cuộn khung nhìn kiểu RMB, khoá vị trí con trỏ chuột STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Kéo cuộn kiểu RMB, khoá vị trí con trỏ chuột @@ -2080,6 +2080,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Phân b # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Lỗi ở thiết lập hình ảnh... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... không tìm thấy GPU tương thích. Tăng tốc phần cứng đã được tắt +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... trình điều khiển GPU đã làm trò chơi bị lỗi. Tăng tốc phần cứng đã được tắt # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -3759,6 +3760,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Chi ti STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Xem chi tiết thống kê hạ tầng STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Tặng tiền STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Tặng tiền cho công ty này +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Thâu tóm thù địch +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Thực hiện việc thâu tóm thù địch với công ty này STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Chọn khuôn mặt khác STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Chọn khuôn mặt của người điều hành @@ -3774,6 +3777,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Tên Giám Đ STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Nhập số tiền bạn muốn tặng STR_BUY_COMPANY_MESSAGE :{WHITE}Chúng tôi tìm một công ty để chuyển nhượng công việc kinh doanh và tài sản công ty chúng tôi.{}{}Bạn có muốn mua công ty {COMPANY} của chúng tôi với giá {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE}Khi thâu tóm thù địch công ty {COMPANY}, bạn sẽ mua hết tài sản, trả hết nợ, và trả một số tiền tương ứng với lợi nhuận trong hai năm.{}{}Tổng số tiền dự tính là {CURRENCY_LONG}.{}{}Bạn có muốn tiếp tục việc thâu tóm thù địch này? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Cơ sở hạ tầng của công ty {COMPANY} From 1146904d457bac0d5beaaf9bcc7f2c4b56ee1bf8 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 13 Jun 2023 19:30:03 +0200 Subject: [PATCH 048/123] Fix: when a string consumes more parameters than allowed, nullptr is attempted to be formatted --- src/strings.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings.cpp b/src/strings.cpp index 4c358fa78d..5b059eefaf 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1074,7 +1074,9 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_RAW_STRING_POINTER: { // {RAW_STRING} const char *raw_string = (const char *)(size_t)args->GetInt64(SCC_RAW_STRING_POINTER); - if (game_script && std::find(_game_script_raw_strings.begin(), _game_script_raw_strings.end(), raw_string) == _game_script_raw_strings.end()) { + /* raw_string can be(come) nullptr when the parameter is out of range and 0 is returned instead. */ + if (raw_string == nullptr || + (game_script && std::find(_game_script_raw_strings.begin(), _game_script_raw_strings.end(), raw_string) == _game_script_raw_strings.end())) { builder += "(invalid RAW_STRING parameter)"; break; } From aba0d27a2872b7be104e4b0ab9be58321515bd90 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 13 Jun 2023 15:55:46 +0200 Subject: [PATCH 049/123] Codechange: use StringParameters for remapping the NewGRF string control codes --- src/newgrf_text.cpp | 41 ++++++++++++++++++++--------------------- src/newgrf_text.h | 1 - src/strings.cpp | 4 ++-- src/strings_func.h | 14 ++++++++++++++ src/strings_internal.h | 2 ++ 5 files changed, 38 insertions(+), 24 deletions(-) diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp index 1809a1239d..9eed2b8f71 100644 --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -842,12 +842,11 @@ void RewindTextRefStack() * FormatString for NewGRF specific "magic" string control codes * @param scc the string control code that has been read * @param str the string that we need to write - * @param argv the OpenTTD stack of values - * @param argv_size space on the stack \a argv - * @param modify_argv When true, modify the OpenTTD stack. + * @param parameters the OpenTTD string formatting parameters + * @param modify_parameters When true, modify the OpenTTD string formatting parameters. * @return the string control code to "execute" now */ -uint RemapNewGRFStringControlCode(uint scc, const char **str, int64 *argv, uint argv_size, bool modify_argv) +uint RemapNewGRFStringControlCode(uint scc, const char **str, StringParameters ¶meters, bool modify_parameters) { switch (scc) { default: break; @@ -877,7 +876,7 @@ uint RemapNewGRFStringControlCode(uint scc, const char **str, int64 *argv, uint case SCC_NEWGRF_PRINT_DWORD_FORCE: case SCC_NEWGRF_PRINT_WORD_STATION_NAME: case SCC_NEWGRF_PRINT_WORD_CARGO_NAME: - if (argv_size < 1) { + if (parameters.GetDataLeft() < 1) { Debug(misc, 0, "Too many NewGRF string parameters."); return 0; } @@ -887,47 +886,47 @@ uint RemapNewGRFStringControlCode(uint scc, const char **str, int64 *argv, uint case SCC_NEWGRF_PRINT_WORD_CARGO_LONG: case SCC_NEWGRF_PRINT_WORD_CARGO_SHORT: case SCC_NEWGRF_PRINT_WORD_CARGO_TINY: - if (argv_size < 2) { + if (parameters.GetDataLeft() < 2) { Debug(misc, 0, "Too many NewGRF string parameters."); return 0; } break; } - if (_newgrf_textrefstack.used && modify_argv) { + if (_newgrf_textrefstack.used && modify_parameters) { /* There is data on the NewGRF text stack, and we want to move them to OpenTTD's string stack. - * After this call, a new call is made with `modify_argv` set to false when the string is finally formatted. */ + * After this call, a new call is made with `modify_parameters` set to false when the string is finally formatted. */ switch (scc) { default: NOT_REACHED(); - case SCC_NEWGRF_PRINT_BYTE_SIGNED: *argv = _newgrf_textrefstack.PopSignedByte(); break; - case SCC_NEWGRF_PRINT_QWORD_CURRENCY: *argv = _newgrf_textrefstack.PopSignedQWord(); break; + case SCC_NEWGRF_PRINT_BYTE_SIGNED: parameters.SetParam(0, _newgrf_textrefstack.PopSignedByte()); break; + case SCC_NEWGRF_PRINT_QWORD_CURRENCY: parameters.SetParam(0, _newgrf_textrefstack.PopSignedQWord()); break; case SCC_NEWGRF_PRINT_DWORD_CURRENCY: - case SCC_NEWGRF_PRINT_DWORD_SIGNED: *argv = _newgrf_textrefstack.PopSignedDWord(); break; + case SCC_NEWGRF_PRINT_DWORD_SIGNED: parameters.SetParam(0, _newgrf_textrefstack.PopSignedDWord()); break; - case SCC_NEWGRF_PRINT_BYTE_HEX: *argv = _newgrf_textrefstack.PopUnsignedByte(); break; - case SCC_NEWGRF_PRINT_QWORD_HEX: *argv = _newgrf_textrefstack.PopUnsignedQWord(); break; + case SCC_NEWGRF_PRINT_BYTE_HEX: parameters.SetParam(0, _newgrf_textrefstack.PopUnsignedByte()); break; + case SCC_NEWGRF_PRINT_QWORD_HEX: parameters.SetParam(0, _newgrf_textrefstack.PopUnsignedQWord()); break; case SCC_NEWGRF_PRINT_WORD_SPEED: case SCC_NEWGRF_PRINT_WORD_VOLUME_LONG: case SCC_NEWGRF_PRINT_WORD_VOLUME_SHORT: - case SCC_NEWGRF_PRINT_WORD_SIGNED: *argv = _newgrf_textrefstack.PopSignedWord(); break; + case SCC_NEWGRF_PRINT_WORD_SIGNED: parameters.SetParam(0, _newgrf_textrefstack.PopSignedWord()); break; case SCC_NEWGRF_PRINT_WORD_HEX: case SCC_NEWGRF_PRINT_WORD_WEIGHT_LONG: case SCC_NEWGRF_PRINT_WORD_WEIGHT_SHORT: case SCC_NEWGRF_PRINT_WORD_POWER: case SCC_NEWGRF_PRINT_WORD_STATION_NAME: - case SCC_NEWGRF_PRINT_WORD_UNSIGNED: *argv = _newgrf_textrefstack.PopUnsignedWord(); break; + case SCC_NEWGRF_PRINT_WORD_UNSIGNED: parameters.SetParam(0, _newgrf_textrefstack.PopUnsignedWord()); break; case SCC_NEWGRF_PRINT_DWORD_FORCE: case SCC_NEWGRF_PRINT_DWORD_DATE_LONG: case SCC_NEWGRF_PRINT_DWORD_DATE_SHORT: - case SCC_NEWGRF_PRINT_DWORD_HEX: *argv = _newgrf_textrefstack.PopUnsignedDWord(); break; + case SCC_NEWGRF_PRINT_DWORD_HEX: parameters.SetParam(0, _newgrf_textrefstack.PopUnsignedDWord()); break; /* Dates from NewGRFs have 1920-01-01 as their zero point, convert it to OpenTTD's epoch. */ case SCC_NEWGRF_PRINT_WORD_DATE_LONG: - case SCC_NEWGRF_PRINT_WORD_DATE_SHORT: *argv = _newgrf_textrefstack.PopUnsignedWord() + DAYS_TILL_ORIGINAL_BASE_YEAR; break; + case SCC_NEWGRF_PRINT_WORD_DATE_SHORT: parameters.SetParam(0, _newgrf_textrefstack.PopUnsignedWord() + DAYS_TILL_ORIGINAL_BASE_YEAR); break; case SCC_NEWGRF_DISCARD_WORD: _newgrf_textrefstack.PopUnsignedWord(); break; @@ -937,17 +936,17 @@ uint RemapNewGRFStringControlCode(uint scc, const char **str, int64 *argv, uint case SCC_NEWGRF_PRINT_WORD_CARGO_LONG: case SCC_NEWGRF_PRINT_WORD_CARGO_SHORT: case SCC_NEWGRF_PRINT_WORD_CARGO_TINY: - argv[0] = GetCargoTranslation(_newgrf_textrefstack.PopUnsignedWord(), _newgrf_textrefstack.grffile); - argv[1] = _newgrf_textrefstack.PopUnsignedWord(); + parameters.SetParam(0, GetCargoTranslation(_newgrf_textrefstack.PopUnsignedWord(), _newgrf_textrefstack.grffile)); + parameters.SetParam(1, _newgrf_textrefstack.PopUnsignedWord()); break; case SCC_NEWGRF_PRINT_WORD_STRING_ID: - *argv = MapGRFStringID(_newgrf_textrefstack.grffile->grfid, _newgrf_textrefstack.PopUnsignedWord()); + parameters.SetParam(0, MapGRFStringID(_newgrf_textrefstack.grffile->grfid, _newgrf_textrefstack.PopUnsignedWord())); break; case SCC_NEWGRF_PRINT_WORD_CARGO_NAME: { CargoID cargo = GetCargoTranslation(_newgrf_textrefstack.PopUnsignedWord(), _newgrf_textrefstack.grffile); - *argv = cargo < NUM_CARGO ? 1ULL << cargo : 0; + parameters.SetParam(0, cargo < NUM_CARGO ? 1ULL << cargo : 0); break; } } diff --git a/src/newgrf_text.h b/src/newgrf_text.h index f177f25686..0963a6dde4 100644 --- a/src/newgrf_text.h +++ b/src/newgrf_text.h @@ -49,7 +49,6 @@ void RewindTextRefStack(); bool UsingNewGRFTextStack(); struct TextRefStack *CreateTextRefStackBackup(); void RestoreTextRefStackBackup(struct TextRefStack *backup); -uint RemapNewGRFStringControlCode(uint scc, const char **str, int64 *argv, uint argv_size, bool modify_argv); /** Mapping of language data between a NewGRF and OpenTTD. */ struct LanguageMap { diff --git a/src/strings.cpp b/src/strings.cpp index 5b059eefaf..72e83d81b8 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -868,8 +868,8 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (SCC_NEWGRF_FIRST <= b && b <= SCC_NEWGRF_LAST) { /* We need to pass some stuff as it might be modified. */ - //todo: should argve be passed here too? - b = RemapNewGRFStringControlCode(b, &str, (int64 *)args->GetDataPointer(), args->GetDataLeft(), dry_run); + StringParameters remaining = args->GetRemainingParameters(); + b = RemapNewGRFStringControlCode(b, &str, remaining, dry_run); if (b == 0) continue; } diff --git a/src/strings_func.h b/src/strings_func.h index ec3f82cd3f..d378f5394b 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -129,6 +129,20 @@ public: return &this->data[this->offset]; } + /** + * Get a new instance of StringParameters that is a "range" into the + * parameters existing parameters. Upon destruction the offset in the parent + * is not updated. However, calls to SetDParam do update the parameters. + * + * The returned StringParameters must not outlive this StringParameters. + * @return A "range" of the string parameters. + */ + StringParameters GetRemainingParameters() + { + return StringParameters(&this->data[this->offset], GetDataLeft(), + this->type == nullptr ? nullptr : &this->type[this->offset]); + } + /** Return the amount of elements which can still be read. */ uint GetDataLeft() const { diff --git a/src/strings_internal.h b/src/strings_internal.h index b87bda9c30..d471baadf1 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -119,4 +119,6 @@ void GenerateTownNameString(StringBuilder &builder, size_t lang, uint32_t seed); void GetTownName(StringBuilder &builder, const struct Town *t); void GRFTownNameGenerate(StringBuilder &builder, uint32 grfid, uint16 gen, uint32 seed); +uint RemapNewGRFStringControlCode(uint scc, const char **str, StringParameters ¶meters, bool modify_parameters); + #endif /* STRINGS_INTERNAL_H */ From 82851a9bef928f16a8e87862404b2afe6168e4f3 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 13 Jun 2023 15:41:34 +0200 Subject: [PATCH 050/123] Codechange: do not mess with global string params to get pointer to first element --- src/misc_gui.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 42cd589761..2efc9cb28e 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -673,8 +673,7 @@ struct TooltipsWindow : public Window static_assert(sizeof(this->params[0]) == sizeof(params[0])); assert(paramcount <= lengthof(this->params)); if (params == nullptr) { - _global_string_params.offset = 0; - params = _global_string_params.GetDataPointer(); + params = _global_string_params.GetPointerToOffset(0); } if (paramcount > 0) memcpy(this->params, params, sizeof(this->params[0]) * paramcount); this->paramcount = paramcount; From e33281023195c49ddf9210f19598a23b7df4a80c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 13 Jun 2023 15:49:12 +0200 Subject: [PATCH 051/123] Codechange: pass zero length arguments for {STRING}, instead of the remaining arguments --- src/strings.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 72e83d81b8..4e6ecf665c 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1087,10 +1087,8 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_STRING: {// {STRING} StringID string_id = args->GetInt32(SCC_STRING); if (game_script && GetStringTab(string_id) != TEXT_TAB_GAMESCRIPT_START) break; - /* WARNING. It's prohibited for the included string to consume any arguments. - * For included strings that consume argument, you should use STRING1, STRING2 etc. - * To debug stuff you can set argv to nullptr and it will tell you */ - StringParameters tmp_params(args->GetDataPointer(), args->GetDataLeft(), nullptr); + /* It's prohibited for the included string to consume any arguments. */ + StringParameters tmp_params(*args, 0); GetStringWithArgs(builder, string_id, &tmp_params, next_substr_case_index, game_script); next_substr_case_index = 0; break; From 43f91bc50c00e740d990588b00b459da3b76c7a2 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 13 Jun 2023 15:56:38 +0200 Subject: [PATCH 052/123] Cleanup: unused GetDataPointer function --- src/strings_func.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/strings_func.h b/src/strings_func.h index d378f5394b..736b51a72f 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -123,12 +123,6 @@ public: return (int32)this->GetInt64(type); } - /** Get a pointer to the current element in the data array. */ - uint64 *GetDataPointer() const - { - return &this->data[this->offset]; - } - /** * Get a new instance of StringParameters that is a "range" into the * parameters existing parameters. Upon destruction the offset in the parent From 0a5e58451b11fa7c80ab7aace2efafa7b6c76e9e Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 13 Jun 2023 23:52:43 +0200 Subject: [PATCH 053/123] Codechange: pass string parameters by reference --- src/industry_cmd.cpp | 2 +- src/station_cmd.cpp | 2 +- src/strings.cpp | 246 ++++++++++++++++++++--------------------- src/strings_func.h | 2 +- src/strings_internal.h | 2 +- src/townname.cpp | 2 +- 6 files changed, 128 insertions(+), 128 deletions(-) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index c5f69bb73f..ce2a23490c 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -2433,7 +2433,7 @@ void Industry::FillCachedName() const { int64 args_array[] = { this->index }; StringParameters tmp_params(args_array); - this->cached_name = GetStringWithArgs(STR_INDUSTRY_NAME, &tmp_params); + this->cached_name = GetStringWithArgs(STR_INDUSTRY_NAME, tmp_params); } void ClearAllIndustryCachedNames() diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index ec7d99db7a..1b95d41eca 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -463,7 +463,7 @@ void BaseStation::FillCachedName() const { int64 args_array[] = { this->index }; StringParameters tmp_params(args_array); - this->cached_name = GetStringWithArgs(Waypoint::IsExpected(this) ? STR_WAYPOINT_NAME : STR_STATION_NAME, &tmp_params); + this->cached_name = GetStringWithArgs(Waypoint::IsExpected(this) ? STR_WAYPOINT_NAME : STR_STATION_NAME, tmp_params); } void ClearAllStationCachedNames() diff --git a/src/strings.cpp b/src/strings.cpp index 4e6ecf665c..25cb70cda1 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -172,9 +172,9 @@ void CopyOutDParam(uint64 *dst, const char **strings, StringID string, int num) static void StationGetSpecialString(StringBuilder &builder, int x); static void GetSpecialTownNameString(StringBuilder &builder, int ind, uint32 seed); -static void GetSpecialNameString(StringBuilder &builder, int ind, StringParameters *args); +static void GetSpecialNameString(StringBuilder &builder, int ind, StringParameters &args); -static void FormatString(StringBuilder &builder, const char *str, StringParameters *args, uint case_index = 0, bool game_script = false, bool dry_run = false); +static void FormatString(StringBuilder &builder, const char *str, StringParameters &args, uint case_index = 0, bool game_script = false, bool dry_run = false); struct LanguagePack : public LanguagePackHeader { char data[]; // list of strings @@ -221,7 +221,7 @@ const char *GetStringPtr(StringID string) * @param case_index The "case index". This will only be set when FormatString wants to print the string in a different case. * @param game_script The string is coming directly from a game script. */ -void GetStringWithArgs(StringBuilder &builder, StringID string, StringParameters *args, uint case_index, bool game_script) +void GetStringWithArgs(StringBuilder &builder, StringID string, StringParameters &args, uint case_index, bool game_script) { if (string == 0) { GetStringWithArgs(builder, STR_UNDEFINED, args); @@ -234,7 +234,7 @@ void GetStringWithArgs(StringBuilder &builder, StringID string, StringParameters switch (tab) { case TEXT_TAB_TOWN: if (index >= 0xC0 && !game_script) { - GetSpecialTownNameString(builder, index - 0xC0, args->GetInt32()); + GetSpecialTownNameString(builder, index - 0xC0, args.GetInt32()); return; } break; @@ -291,7 +291,7 @@ std::string GetString(StringID string) { _global_string_params.ClearTypeInformation(); _global_string_params.offset = 0; - return GetStringWithArgs(string, &_global_string_params); + return GetStringWithArgs(string, _global_string_params); } /** @@ -300,7 +300,7 @@ std::string GetString(StringID string) * @param args Arguments for the string. * @return The parsed string. */ -std::string GetStringWithArgs(StringID string, StringParameters *args) +std::string GetStringWithArgs(StringID string, StringParameters &args) { std::string result; StringBuilder builder(result); @@ -439,7 +439,7 @@ static void FormatYmdString(StringBuilder &builder, TimerGameCalendar::Date date int64 args[] = {ymd.day + STR_DAY_NUMBER_1ST - 1, STR_MONTH_ABBREV_JAN + ymd.month, ymd.year}; StringParameters tmp_params(args); - FormatString(builder, GetStringPtr(STR_FORMAT_DATE_LONG), &tmp_params, case_index); + FormatString(builder, GetStringPtr(STR_FORMAT_DATE_LONG), tmp_params, case_index); } static void FormatMonthAndYear(StringBuilder &builder, TimerGameCalendar::Date date, uint case_index) @@ -449,7 +449,7 @@ static void FormatMonthAndYear(StringBuilder &builder, TimerGameCalendar::Date d int64 args[] = {STR_MONTH_JAN + ymd.month, ymd.year}; StringParameters tmp_params(args); - FormatString(builder, GetStringPtr(STR_FORMAT_DATE_SHORT), &tmp_params, case_index); + FormatString(builder, GetStringPtr(STR_FORMAT_DATE_SHORT), tmp_params, case_index); } static void FormatTinyOrISODate(StringBuilder &builder, TimerGameCalendar::Date date, StringID str) @@ -460,7 +460,7 @@ static void FormatTinyOrISODate(StringBuilder &builder, TimerGameCalendar::Date /* Day and month are zero-padded with ZEROFILL_NUM, hence the two 2s. */ int64 args[] = {ymd.day, 2, ymd.month + 1, 2, ymd.year}; StringParameters tmp_params(args); - FormatString(builder, GetStringPtr(str), &tmp_params); + FormatString(builder, GetStringPtr(str), tmp_params); } static void FormatGenericCurrency(StringBuilder &builder, const CurrencySpec *spec, Money number, bool compact) @@ -825,11 +825,11 @@ static std::vector _game_script_raw_strings; * @param args Pointer to extra arguments used by various string codes. * @param dry_run True when the args' type data is not yet initialized. */ -static void FormatString(StringBuilder &builder, const char *str_arg, StringParameters *args, uint case_index, bool game_script, bool dry_run) +static void FormatString(StringBuilder &builder, const char *str_arg, StringParameters &args, uint case_index, bool game_script, bool dry_run) { - uint orig_offset = args->offset; + uint orig_offset = args.offset; - if (!dry_run && args->HasTypeInformation()) { + if (!dry_run && args.HasTypeInformation()) { /* * FormatString was called without `dry_run` set, however `args` has * space allocated for type information and thus wants type checks on @@ -852,7 +852,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara FormatString(dry_run_builder, str_arg, args, case_index, game_script, true); } /* We have to restore the original offset here to to read the correct values. */ - args->offset = orig_offset; + args.offset = orig_offset; } WChar b = '\0'; uint next_substr_case_index = 0; @@ -868,7 +868,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (SCC_NEWGRF_FIRST <= b && b <= SCC_NEWGRF_LAST) { /* We need to pass some stuff as it might be modified. */ - StringParameters remaining = args->GetRemainingParameters(); + StringParameters remaining = args.GetRemainingParameters(); b = RemapNewGRFStringControlCode(b, &str, remaining, dry_run); if (b == 0) continue; } @@ -962,7 +962,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara /* If we didn't error out, we can actually print the string. */ if (*str != '\0') { str = p; - GetStringWithArgs(builder, MakeStringID(TEXT_TAB_GAMESCRIPT_START, stringid), &sub_args, true); + GetStringWithArgs(builder, MakeStringID(TEXT_TAB_GAMESCRIPT_START, stringid), sub_args, true); } for (i = 0; i < 20; i++) { @@ -981,7 +981,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_NEWGRF_PRINT_WORD_STRING_ID: { - StringID substr = args->GetInt32(SCC_NEWGRF_PRINT_WORD_STRING_ID); + StringID substr = args.GetInt32(SCC_NEWGRF_PRINT_WORD_STRING_ID); str_stack.push(GetStringPtr(substr)); case_index = next_substr_case_index; next_substr_case_index = 0; @@ -993,12 +993,12 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara /* First read the meta data from the language file. */ uint offset = orig_offset + (byte)*str++; int gender = 0; - if (!dry_run && args->GetTypeAtOffset(offset) != 0) { + if (!dry_run && args.GetTypeAtOffset(offset) != 0) { /* Now we need to figure out what text to resolve, i.e. * what do we need to draw? So get the actual raw string * first using the control code to get said string. */ char input[4 + 1]; - char *p = input + Utf8Encode(input, args->GetTypeAtOffset(offset)); + char *p = input + Utf8Encode(input, args.GetTypeAtOffset(offset)); *p = '\0'; /* The gender is stored at the start of the formatted string. */ @@ -1006,8 +1006,8 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara _scan_for_gender_data = true; std::string buffer; StringBuilder tmp_builder(buffer); - StringParameters tmp_params(args->GetPointerToOffset(offset), args->num_param - offset, nullptr); - FormatString(tmp_builder, input, &tmp_params); + StringParameters tmp_params(args.GetPointerToOffset(offset), args.num_param - offset, nullptr); + FormatString(tmp_builder, input, tmp_params); _scan_for_gender_data = old_sgd; /* And determine the string. */ @@ -1034,13 +1034,13 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_PLURAL_LIST: { // {P} int plural_form = *str++; // contains the plural form for this string uint offset = orig_offset + (byte)*str++; - int64 v = *args->GetPointerToOffset(offset); // contains the number that determines plural + int64 v = *args.GetPointerToOffset(offset); // contains the number that determines plural str = ParseStringChoice(str, DeterminePluralForm(v, plural_form), builder); break; } case SCC_ARG_INDEX: { // Move argument pointer - args->offset = orig_offset + (byte)*str++; + args.offset = orig_offset + (byte)*str++; break; } @@ -1073,7 +1073,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara break; case SCC_RAW_STRING_POINTER: { // {RAW_STRING} - const char *raw_string = (const char *)(size_t)args->GetInt64(SCC_RAW_STRING_POINTER); + const char *raw_string = (const char *)(size_t)args.GetInt64(SCC_RAW_STRING_POINTER); /* raw_string can be(come) nullptr when the parameter is out of range and 0 is returned instead. */ if (raw_string == nullptr || (game_script && std::find(_game_script_raw_strings.begin(), _game_script_raw_strings.end(), raw_string) == _game_script_raw_strings.end())) { @@ -1085,11 +1085,11 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_STRING: {// {STRING} - StringID string_id = args->GetInt32(SCC_STRING); + StringID string_id = args.GetInt32(SCC_STRING); if (game_script && GetStringTab(string_id) != TEXT_TAB_GAMESCRIPT_START) break; /* It's prohibited for the included string to consume any arguments. */ - StringParameters tmp_params(*args, 0); - GetStringWithArgs(builder, string_id, &tmp_params, next_substr_case_index, game_script); + StringParameters tmp_params(args, 0); + GetStringWithArgs(builder, string_id, tmp_params, next_substr_case_index, game_script); next_substr_case_index = 0; break; } @@ -1102,68 +1102,68 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_STRING6: case SCC_STRING7: { // {STRING1..7} /* Strings that consume arguments */ - StringID string_id = args->GetInt32(b); + StringID string_id = args.GetInt32(b); if (game_script && GetStringTab(string_id) != TEXT_TAB_GAMESCRIPT_START) break; uint size = b - SCC_STRING1 + 1; - if (game_script && size > args->GetDataLeft()) { + if (game_script && size > args.GetDataLeft()) { builder += "(too many parameters)"; } else { - StringParameters sub_args(*args, size); - GetStringWithArgs(builder, string_id, &sub_args, next_substr_case_index, game_script); + StringParameters sub_args(args, size); + GetStringWithArgs(builder, string_id, sub_args, next_substr_case_index, game_script); } next_substr_case_index = 0; break; } case SCC_COMMA: // {COMMA} - FormatCommaNumber(builder, args->GetInt64(SCC_COMMA)); + FormatCommaNumber(builder, args.GetInt64(SCC_COMMA)); break; case SCC_DECIMAL: { // {DECIMAL} - int64 number = args->GetInt64(SCC_DECIMAL); - int digits = args->GetInt32(SCC_DECIMAL); + int64 number = args.GetInt64(SCC_DECIMAL); + int digits = args.GetInt32(SCC_DECIMAL); FormatCommaNumber(builder, number, digits); break; } case SCC_NUM: // {NUM} - FormatNoCommaNumber(builder, args->GetInt64(SCC_NUM)); + FormatNoCommaNumber(builder, args.GetInt64(SCC_NUM)); break; case SCC_ZEROFILL_NUM: { // {ZEROFILL_NUM} - int64 num = args->GetInt64(); - FormatZerofillNumber(builder, num, args->GetInt64()); + int64 num = args.GetInt64(); + FormatZerofillNumber(builder, num, args.GetInt64()); break; } case SCC_HEX: // {HEX} - FormatHexNumber(builder, (uint64)args->GetInt64(SCC_HEX)); + FormatHexNumber(builder, (uint64)args.GetInt64(SCC_HEX)); break; case SCC_BYTES: // {BYTES} - FormatBytes(builder, args->GetInt64()); + FormatBytes(builder, args.GetInt64()); break; case SCC_CARGO_TINY: { // {CARGO_TINY} /* Tiny description of cargotypes. Layout: * param 1: cargo type * param 2: cargo count */ - CargoID cargo = args->GetInt32(SCC_CARGO_TINY); + CargoID cargo = args.GetInt32(SCC_CARGO_TINY); if (cargo >= CargoSpec::GetArraySize()) break; StringID cargo_str = CargoSpec::Get(cargo)->units_volume; int64 amount = 0; switch (cargo_str) { case STR_TONS: - amount = _units_weight[_settings_game.locale.units_weight].c.ToDisplay(args->GetInt64()); + amount = _units_weight[_settings_game.locale.units_weight].c.ToDisplay(args.GetInt64()); break; case STR_LITERS: - amount = _units_volume[_settings_game.locale.units_volume].c.ToDisplay(args->GetInt64()); + amount = _units_volume[_settings_game.locale.units_volume].c.ToDisplay(args.GetInt64()); break; default: { - amount = args->GetInt64(); + amount = args.GetInt64(); break; } } @@ -1176,30 +1176,30 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara /* Short description of cargotypes. Layout: * param 1: cargo type * param 2: cargo count */ - CargoID cargo = args->GetInt32(SCC_CARGO_SHORT); + CargoID cargo = args.GetInt32(SCC_CARGO_SHORT); if (cargo >= CargoSpec::GetArraySize()) break; StringID cargo_str = CargoSpec::Get(cargo)->units_volume; switch (cargo_str) { case STR_TONS: { assert(_settings_game.locale.units_weight < lengthof(_units_weight)); - int64 args_array[] = {_units_weight[_settings_game.locale.units_weight].c.ToDisplay(args->GetInt64())}; + int64 args_array[] = {_units_weight[_settings_game.locale.units_weight].c.ToDisplay(args.GetInt64())}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(_units_weight[_settings_game.locale.units_weight].l), &tmp_params); + FormatString(builder, GetStringPtr(_units_weight[_settings_game.locale.units_weight].l), tmp_params); break; } case STR_LITERS: { assert(_settings_game.locale.units_volume < lengthof(_units_volume)); - int64 args_array[] = {_units_volume[_settings_game.locale.units_volume].c.ToDisplay(args->GetInt64())}; + int64 args_array[] = {_units_volume[_settings_game.locale.units_volume].c.ToDisplay(args.GetInt64())}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(_units_volume[_settings_game.locale.units_volume].l), &tmp_params); + FormatString(builder, GetStringPtr(_units_volume[_settings_game.locale.units_volume].l), tmp_params); break; } default: { - StringParameters tmp_params(*args, 1); - GetStringWithArgs(builder, cargo_str, &tmp_params); + StringParameters tmp_params(args, 1); + GetStringWithArgs(builder, cargo_str, tmp_params); break; } } @@ -1208,17 +1208,17 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_CARGO_LONG: { // {CARGO_LONG} /* First parameter is cargo type, second parameter is cargo count */ - CargoID cargo = args->GetInt32(SCC_CARGO_LONG); + CargoID cargo = args.GetInt32(SCC_CARGO_LONG); if (IsValidCargoID(cargo) && cargo >= CargoSpec::GetArraySize()) break; StringID cargo_str = !IsValidCargoID(cargo) ? STR_QUANTITY_N_A : CargoSpec::Get(cargo)->quantifier; - StringParameters tmp_args(*args, 1); - GetStringWithArgs(builder, cargo_str, &tmp_args); + StringParameters tmp_args(args, 1); + GetStringWithArgs(builder, cargo_str, tmp_args); break; } case SCC_CARGO_LIST: { // {CARGO_LIST} - CargoTypes cmask = args->GetInt64(SCC_CARGO_LIST); + CargoTypes cmask = args.GetInt64(SCC_CARGO_LIST); bool first = true; for (const auto &cs : _sorted_cargo_specs) { @@ -1242,55 +1242,55 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_CURRENCY_SHORT: // {CURRENCY_SHORT} - FormatGenericCurrency(builder, _currency, args->GetInt64(), true); + FormatGenericCurrency(builder, _currency, args.GetInt64(), true); break; case SCC_CURRENCY_LONG: // {CURRENCY_LONG} - FormatGenericCurrency(builder, _currency, args->GetInt64(SCC_CURRENCY_LONG), false); + FormatGenericCurrency(builder, _currency, args.GetInt64(SCC_CURRENCY_LONG), false); break; case SCC_DATE_TINY: // {DATE_TINY} - FormatTinyOrISODate(builder, args->GetInt32(SCC_DATE_TINY), STR_FORMAT_DATE_TINY); + FormatTinyOrISODate(builder, args.GetInt32(SCC_DATE_TINY), STR_FORMAT_DATE_TINY); break; case SCC_DATE_SHORT: // {DATE_SHORT} - FormatMonthAndYear(builder, args->GetInt32(SCC_DATE_SHORT), next_substr_case_index); + FormatMonthAndYear(builder, args.GetInt32(SCC_DATE_SHORT), next_substr_case_index); next_substr_case_index = 0; break; case SCC_DATE_LONG: // {DATE_LONG} - FormatYmdString(builder, args->GetInt32(SCC_DATE_LONG), next_substr_case_index); + FormatYmdString(builder, args.GetInt32(SCC_DATE_LONG), next_substr_case_index); next_substr_case_index = 0; break; case SCC_DATE_ISO: // {DATE_ISO} - FormatTinyOrISODate(builder, args->GetInt32(), STR_FORMAT_DATE_ISO); + FormatTinyOrISODate(builder, args.GetInt32(), STR_FORMAT_DATE_ISO); break; case SCC_FORCE: { // {FORCE} assert(_settings_game.locale.units_force < lengthof(_units_force)); const auto &x = _units_force[_settings_game.locale.units_force]; - int64 args_array[] = {x.c.ToDisplay(args->GetInt64()), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(x.s), &tmp_params); + FormatString(builder, GetStringPtr(x.s), tmp_params); break; } case SCC_HEIGHT: { // {HEIGHT} assert(_settings_game.locale.units_height < lengthof(_units_height)); const auto &x = _units_height[_settings_game.locale.units_height]; - int64 args_array[] = {x.c.ToDisplay(args->GetInt64()), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(x.s), &tmp_params); + FormatString(builder, GetStringPtr(x.s), tmp_params); break; } case SCC_POWER: { // {POWER} assert(_settings_game.locale.units_power < lengthof(_units_power)); const auto &x = _units_power[_settings_game.locale.units_power]; - int64 args_array[] = {x.c.ToDisplay(args->GetInt64()), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(x.s), &tmp_params); + FormatString(builder, GetStringPtr(x.s), tmp_params); break; } @@ -1298,14 +1298,14 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara auto setting = _settings_game.locale.units_power * 3u + _settings_game.locale.units_weight; assert(setting < lengthof(_units_power_to_weight)); const auto &x = _units_power_to_weight[setting]; - int64 args_array[] = {x.c.ToDisplay(args->GetInt64()), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(x.s), &tmp_params); + FormatString(builder, GetStringPtr(x.s), tmp_params); break; } case SCC_VELOCITY: { // {VELOCITY} - int64 arg = args->GetInt64(SCC_VELOCITY); + int64 arg = args.GetInt64(SCC_VELOCITY); // Unpack vehicle type from packed argument to get desired units. VehicleType vt = static_cast(GB(arg, 56, 8)); byte units = GetVelocityUnits(vt); @@ -1313,106 +1313,106 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara const auto &x = _units_velocity[units]; int64 args_array[] = {ConvertKmhishSpeedToDisplaySpeed(GB(arg, 0, 56), vt), x.decimal_places}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(x.s), &tmp_params); + FormatString(builder, GetStringPtr(x.s), tmp_params); break; } case SCC_VOLUME_SHORT: { // {VOLUME_SHORT} assert(_settings_game.locale.units_volume < lengthof(_units_volume)); const auto &x = _units_volume[_settings_game.locale.units_volume]; - int64 args_array[] = {x.c.ToDisplay(args->GetInt64()), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(x.s), &tmp_params); + FormatString(builder, GetStringPtr(x.s), tmp_params); break; } case SCC_VOLUME_LONG: { // {VOLUME_LONG} assert(_settings_game.locale.units_volume < lengthof(_units_volume)); const auto &x = _units_volume[_settings_game.locale.units_volume]; - int64 args_array[] = {x.c.ToDisplay(args->GetInt64(SCC_VOLUME_LONG)), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64(SCC_VOLUME_LONG)), x.decimal_places}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(x.l), &tmp_params); + FormatString(builder, GetStringPtr(x.l), tmp_params); break; } case SCC_WEIGHT_SHORT: { // {WEIGHT_SHORT} assert(_settings_game.locale.units_weight < lengthof(_units_weight)); const auto &x = _units_weight[_settings_game.locale.units_weight]; - int64 args_array[] = {x.c.ToDisplay(args->GetInt64()), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(x.s), &tmp_params); + FormatString(builder, GetStringPtr(x.s), tmp_params); break; } case SCC_WEIGHT_LONG: { // {WEIGHT_LONG} assert(_settings_game.locale.units_weight < lengthof(_units_weight)); const auto &x = _units_weight[_settings_game.locale.units_weight]; - int64 args_array[] = {x.c.ToDisplay(args->GetInt64(SCC_WEIGHT_LONG)), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64(SCC_WEIGHT_LONG)), x.decimal_places}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(x.l), &tmp_params); + FormatString(builder, GetStringPtr(x.l), tmp_params); break; } case SCC_COMPANY_NAME: { // {COMPANY} - const Company *c = Company::GetIfValid(args->GetInt32()); + const Company *c = Company::GetIfValid(args.GetInt32()); if (c == nullptr) break; if (!c->name.empty()) { int64 args_array[] = {(int64)(size_t)c->name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { int64 args_array[] = {c->name_2}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, c->name_1, &tmp_params); + GetStringWithArgs(builder, c->name_1, tmp_params); } break; } case SCC_COMPANY_NUM: { // {COMPANY_NUM} - CompanyID company = (CompanyID)args->GetInt32(); + CompanyID company = (CompanyID)args.GetInt32(); /* Nothing is added for AI or inactive companies */ if (Company::IsValidHumanID(company)) { int64 args_array[] = {company + 1}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_FORMAT_COMPANY_NUM, &tmp_params); + GetStringWithArgs(builder, STR_FORMAT_COMPANY_NUM, tmp_params); } break; } case SCC_DEPOT_NAME: { // {DEPOT} - VehicleType vt = (VehicleType)args->GetInt32(SCC_DEPOT_NAME); + VehicleType vt = (VehicleType)args.GetInt32(SCC_DEPOT_NAME); if (vt == VEH_AIRCRAFT) { - uint64 args_array[] = {(uint64)args->GetInt32()}; + uint64 args_array[] = {(uint64)args.GetInt32()}; WChar types_array[] = {SCC_STATION_NAME}; StringParameters tmp_params(args_array, 1, types_array); - GetStringWithArgs(builder, STR_FORMAT_DEPOT_NAME_AIRCRAFT, &tmp_params); + GetStringWithArgs(builder, STR_FORMAT_DEPOT_NAME_AIRCRAFT, tmp_params); break; } - const Depot *d = Depot::Get(args->GetInt32()); + const Depot *d = Depot::Get(args.GetInt32()); if (!d->name.empty()) { int64 args_array[] = {(int64)(size_t)d->name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { int64 args_array[] = {d->town->index, d->town_cn + 1}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_FORMAT_DEPOT_NAME_TRAIN + 2 * vt + (d->town_cn == 0 ? 0 : 1), &tmp_params); + GetStringWithArgs(builder, STR_FORMAT_DEPOT_NAME_TRAIN + 2 * vt + (d->town_cn == 0 ? 0 : 1), tmp_params); } break; } case SCC_ENGINE_NAME: { // {ENGINE} - int64 arg = args->GetInt64(SCC_ENGINE_NAME); + int64 arg = args.GetInt64(SCC_ENGINE_NAME); const Engine *e = Engine::GetIfValid(static_cast(arg)); if (e == nullptr) break; if (!e->name.empty() && e->IsEnabled()) { int64 args_array[] = {(int64)(size_t)e->name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); break; } @@ -1428,7 +1428,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara uint64 tmp_dparam[6] = { 0 }; WChar tmp_type[6] = { 0 }; StringParameters tmp_params(tmp_dparam, 6, tmp_type); - GetStringWithArgs(builder, GetGRFStringID(grffile->grfid, 0xD000 + callback), &tmp_params); + GetStringWithArgs(builder, GetGRFStringID(grffile->grfid, 0xD000 + callback), tmp_params); StopTextRefStackUsage(); break; @@ -1436,29 +1436,29 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } StringParameters tmp_params(nullptr, 0, nullptr); - GetStringWithArgs(builder, e->info.string_id, &tmp_params); + GetStringWithArgs(builder, e->info.string_id, tmp_params); break; } case SCC_GROUP_NAME: { // {GROUP} - const Group *g = Group::GetIfValid(args->GetInt32()); + const Group *g = Group::GetIfValid(args.GetInt32()); if (g == nullptr) break; if (!g->name.empty()) { int64 args_array[] = {(int64)(size_t)g->name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { int64 args_array[] = {g->index}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_FORMAT_GROUP_NAME, &tmp_params); + GetStringWithArgs(builder, STR_FORMAT_GROUP_NAME, tmp_params); } break; } case SCC_INDUSTRY_NAME: { // {INDUSTRY} - const Industry *i = Industry::GetIfValid(args->GetInt32(SCC_INDUSTRY_NAME)); + const Industry *i = Industry::GetIfValid(args.GetInt32(SCC_INDUSTRY_NAME)); if (i == nullptr) break; static bool use_cache = true; @@ -1469,36 +1469,36 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara /* Gender is defined by the industry type. * STR_FORMAT_INDUSTRY_NAME may have the town first, so it would result in the gender of the town name */ StringParameters tmp_params(nullptr, 0, nullptr); - FormatString(builder, GetStringPtr(GetIndustrySpec(i->type)->name), &tmp_params, next_substr_case_index); + FormatString(builder, GetStringPtr(GetIndustrySpec(i->type)->name), tmp_params, next_substr_case_index); } else { /* First print the town name and the industry type name. */ int64 args_array[2] = {i->town->index, GetIndustrySpec(i->type)->name}; StringParameters tmp_params(args_array); - FormatString(builder, GetStringPtr(STR_FORMAT_INDUSTRY_NAME), &tmp_params, next_substr_case_index); + FormatString(builder, GetStringPtr(STR_FORMAT_INDUSTRY_NAME), tmp_params, next_substr_case_index); } next_substr_case_index = 0; break; } case SCC_PRESIDENT_NAME: { // {PRESIDENT_NAME} - const Company *c = Company::GetIfValid(args->GetInt32(SCC_PRESIDENT_NAME)); + const Company *c = Company::GetIfValid(args.GetInt32(SCC_PRESIDENT_NAME)); if (c == nullptr) break; if (!c->president_name.empty()) { int64 args_array[] = {(int64)(size_t)c->president_name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { int64 args_array[] = {c->president_name_2}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, c->president_name_1, &tmp_params); + GetStringWithArgs(builder, c->president_name_1, tmp_params); } break; } case SCC_STATION_NAME: { // {STATION} - StationID sid = args->GetInt32(SCC_STATION_NAME); + StationID sid = args.GetInt32(SCC_STATION_NAME); const Station *st = Station::GetIfValid(sid); if (st == nullptr) { @@ -1506,7 +1506,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara * be "drawing" an invalid station is in the case of cargo that is * in transit. */ StringParameters tmp_params(nullptr, 0, nullptr); - GetStringWithArgs(builder, STR_UNKNOWN_STATION, &tmp_params); + GetStringWithArgs(builder, STR_UNKNOWN_STATION, tmp_params); break; } @@ -1517,7 +1517,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } else if (!st->name.empty()) { int64 args_array[] = {(int64)(size_t)st->name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { StringID string_id = st->string_id; if (st->indtype != IT_INVALID) { @@ -1535,13 +1535,13 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara uint64 args_array[] = {STR_TOWN_NAME, st->town->index, st->index}; WChar types_array[] = {0, SCC_TOWN_NAME, SCC_NUM}; StringParameters tmp_params(args_array, 3, types_array); - GetStringWithArgs(builder, string_id, &tmp_params); + GetStringWithArgs(builder, string_id, tmp_params); } break; } case SCC_TOWN_NAME: { // {TOWN} - const Town *t = Town::GetIfValid(args->GetInt32(SCC_TOWN_NAME)); + const Town *t = Town::GetIfValid(args.GetInt32(SCC_TOWN_NAME)); if (t == nullptr) break; static bool use_cache = true; @@ -1551,7 +1551,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } else if (!t->name.empty()) { int64 args_array[] = {(int64)(size_t)t->name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { GetTownName(builder, t); } @@ -1559,36 +1559,36 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_WAYPOINT_NAME: { // {WAYPOINT} - Waypoint *wp = Waypoint::GetIfValid(args->GetInt32(SCC_WAYPOINT_NAME)); + Waypoint *wp = Waypoint::GetIfValid(args.GetInt32(SCC_WAYPOINT_NAME)); if (wp == nullptr) break; if (!wp->name.empty()) { int64 args_array[] = {(int64)(size_t)wp->name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { int64 args_array[] = {wp->town->index, wp->town_cn + 1}; StringParameters tmp_params(args_array); StringID string_id = ((wp->string_id == STR_SV_STNAME_BUOY) ? STR_FORMAT_BUOY_NAME : STR_FORMAT_WAYPOINT_NAME); if (wp->town_cn != 0) string_id++; - GetStringWithArgs(builder, string_id, &tmp_params); + GetStringWithArgs(builder, string_id, tmp_params); } break; } case SCC_VEHICLE_NAME: { // {VEHICLE} - const Vehicle *v = Vehicle::GetIfValid(args->GetInt32(SCC_VEHICLE_NAME)); + const Vehicle *v = Vehicle::GetIfValid(args.GetInt32(SCC_VEHICLE_NAME)); if (v == nullptr) break; if (!v->name.empty()) { int64 args_array[] = {(int64)(size_t)v->name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else if (v->group_id != DEFAULT_GROUP) { /* The vehicle has no name, but is member of a group, so print group name */ int64 args_array[] = {v->group_id, v->unitnumber}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_FORMAT_GROUP_VEHICLE_NAME, &tmp_params); + GetStringWithArgs(builder, STR_FORMAT_GROUP_VEHICLE_NAME, tmp_params); } else { int64 args_array[] = {v->unitnumber}; StringParameters tmp_params(args_array); @@ -1602,28 +1602,28 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case VEH_AIRCRAFT: string_id = STR_SV_AIRCRAFT_NAME; break; } - GetStringWithArgs(builder, string_id, &tmp_params); + GetStringWithArgs(builder, string_id, tmp_params); } break; } case SCC_SIGN_NAME: { // {SIGN} - const Sign *si = Sign::GetIfValid(args->GetInt32()); + const Sign *si = Sign::GetIfValid(args.GetInt32()); if (si == nullptr) break; if (!si->name.empty()) { int64 args_array[] = {(int64)(size_t)si->name.c_str()}; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, STR_JUST_RAW_STRING, &tmp_params); + GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { StringParameters tmp_params(nullptr, 0, nullptr); - GetStringWithArgs(builder, STR_DEFAULT_SIGN_NAME, &tmp_params); + GetStringWithArgs(builder, STR_DEFAULT_SIGN_NAME, tmp_params); } break; } case SCC_STATION_FEATURES: { // {STATIONFEATURES} - StationGetSpecialString(builder, args->GetInt32(SCC_STATION_FEATURES)); + StationGetSpecialString(builder, args.GetInt32(SCC_STATION_FEATURES)); break; } @@ -1761,25 +1761,25 @@ static void GenPresidentName(StringBuilder &builder, uint32 x) builder += base[num * GB(x, 16, 8) >> 8]; } -static void GetSpecialNameString(StringBuilder &builder, int ind, StringParameters *args) +static void GetSpecialNameString(StringBuilder &builder, int ind, StringParameters &args) { switch (ind) { case 1: // not used - builder += _silly_company_names[std::min(args->GetInt32() & 0xFFFF, lengthof(_silly_company_names) - 1)]; + builder += _silly_company_names[std::min(args.GetInt32() & 0xFFFF, lengthof(_silly_company_names) - 1)]; return; case 2: // used for Foobar & Co company names - GenAndCoName(builder, args->GetInt32()); + GenAndCoName(builder, args.GetInt32()); return; case 3: // President name - GenPresidentName(builder, args->GetInt32()); + GenPresidentName(builder, args.GetInt32()); return; } /* town name? */ if (IsInsideMM(ind - 6, 0, SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1)) { - GetSpecialTownNameString(builder, ind - 6, args->GetInt32()); + GetSpecialTownNameString(builder, ind - 6, args.GetInt32()); builder += " Transport"; return; } diff --git a/src/strings_func.h b/src/strings_func.h index 736b51a72f..c997a5acc2 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -179,7 +179,7 @@ public: extern StringParameters _global_string_params; std::string GetString(StringID string); -std::string GetStringWithArgs(StringID string, StringParameters *args); +std::string GetStringWithArgs(StringID string, StringParameters &args); const char *GetStringPtr(StringID string); uint ConvertKmhishSpeedToDisplaySpeed(uint speed, VehicleType type); diff --git a/src/strings_internal.h b/src/strings_internal.h index d471baadf1..10c5e523ff 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -112,7 +112,7 @@ public: } }; -void GetStringWithArgs(StringBuilder &builder, StringID string, StringParameters *args, uint case_index = 0, bool game_script = false); +void GetStringWithArgs(StringBuilder &builder, StringID string, StringParameters &args, uint case_index = 0, bool game_script = false); /* Do not leak the StringBuilder to everywhere. */ void GenerateTownNameString(StringBuilder &builder, size_t lang, uint32_t seed); diff --git a/src/townname.cpp b/src/townname.cpp index 8676eb93e9..3cd1b0ab07 100644 --- a/src/townname.cpp +++ b/src/townname.cpp @@ -50,7 +50,7 @@ static void GetTownName(StringBuilder &builder, const TownNameParams *par, uint3 if (par->grfid == 0) { int64 args_array[1] = { townnameparts }; StringParameters tmp_params(args_array); - GetStringWithArgs(builder, par->type, &tmp_params); + GetStringWithArgs(builder, par->type, tmp_params); return; } From 7c37dcb8e3ede2b3c3e89dd2eb3d762441289726 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 13 Jun 2023 20:00:26 +0200 Subject: [PATCH 054/123] Fix: do not use {STRING} when {STRING1} or {STRING2} is needed --- src/airport_gui.cpp | 2 +- src/company_gui.cpp | 24 ++++++++++++------------ src/game/game_gui.cpp | 2 +- src/genworld_gui.cpp | 8 ++++---- src/goal_gui.cpp | 2 +- src/lang/english.txt | 2 ++ src/newgrf_gui.cpp | 2 +- src/rail_gui.cpp | 2 +- src/road_gui.cpp | 2 +- src/script/script_gui.cpp | 4 ++-- src/settings_gui.cpp | 4 ++-- src/story_gui.cpp | 2 +- 12 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/airport_gui.cpp b/src/airport_gui.cpp index 5418f266df..76dff44336 100644 --- a/src/airport_gui.cpp +++ b/src/airport_gui.cpp @@ -596,7 +596,7 @@ static const NWidgetPart _nested_build_airport_widgets[] = { EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_DECREASE), SetMinimalSize(12, 0), SetDataTip(AWV_DECREASE, STR_NULL), - NWidget(WWT_LABEL, COLOUR_GREY, WID_AP_LAYOUT_NUM), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_NULL), + NWidget(WWT_LABEL, COLOUR_GREY, WID_AP_LAYOUT_NUM), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING1, STR_NULL), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_INCREASE), SetMinimalSize(12, 0), SetDataTip(AWV_INCREASE, STR_NULL), EndContainer(), NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_EXTRA_TEXT), SetFill(1, 0), SetMinimalSize(150, 0), diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 45b5aa8d15..bdcad56feb 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -1281,82 +1281,82 @@ static const NWidgetPart _nested_select_company_manager_face_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_EYECOLOUR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_MOUSTACHE_EARRING), SetDataTip(STR_JUST_STRING, STR_FACE_MOUSTACHE_EARRING_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_MOUSTACHE_EARRING), SetDataTip(STR_JUST_STRING1, STR_FACE_MOUSTACHE_EARRING_TOOLTIP), SetTextStyle(TC_WHITE), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_HAS_GLASSES_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_GLASSES, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_GLASSES), SetDataTip(STR_JUST_STRING, STR_FACE_GLASSES_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_GLASSES), SetDataTip(STR_JUST_STRING1, STR_FACE_GLASSES_TOOLTIP), SetTextStyle(TC_WHITE), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 2), SetFill(1, 0), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_HAIR_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_HAIR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_L), SetDataTip(AWV_DECREASE, STR_FACE_HAIR_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAIR), SetDataTip(STR_JUST_STRING, STR_FACE_HAIR_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAIR), SetDataTip(STR_JUST_STRING1, STR_FACE_HAIR_TOOLTIP), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_R), SetDataTip(AWV_INCREASE, STR_FACE_HAIR_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_EYEBROWS_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_EYEBROWS, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_L), SetDataTip(AWV_DECREASE, STR_FACE_EYEBROWS_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYEBROWS), SetDataTip(STR_JUST_STRING, STR_FACE_EYEBROWS_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYEBROWS), SetDataTip(STR_JUST_STRING1, STR_FACE_EYEBROWS_TOOLTIP), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_R), SetDataTip(AWV_INCREASE, STR_FACE_EYEBROWS_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_EYECOLOUR_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_EYECOLOUR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_L), SetDataTip(AWV_DECREASE, STR_FACE_EYECOLOUR_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR), SetDataTip(STR_JUST_STRING, STR_FACE_EYECOLOUR_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR), SetDataTip(STR_JUST_STRING1, STR_FACE_EYECOLOUR_TOOLTIP), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_R), SetDataTip(AWV_INCREASE, STR_FACE_EYECOLOUR_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_GLASSES_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_GLASSES, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_L), SetDataTip(AWV_DECREASE, STR_FACE_GLASSES_TOOLTIP_2), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_GLASSES), SetDataTip(STR_JUST_STRING, STR_FACE_GLASSES_TOOLTIP_2), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_GLASSES), SetDataTip(STR_JUST_STRING1, STR_FACE_GLASSES_TOOLTIP_2), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_R), SetDataTip(AWV_INCREASE, STR_FACE_GLASSES_TOOLTIP_2), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_NOSE_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_NOSE, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_L), SetDataTip(AWV_DECREASE, STR_FACE_NOSE_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_NOSE), SetDataTip(STR_JUST_STRING, STR_FACE_NOSE_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_NOSE), SetDataTip(STR_JUST_STRING1, STR_FACE_NOSE_TOOLTIP), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_R), SetDataTip(AWV_INCREASE, STR_FACE_NOSE_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_LIPS_MOUSTACHE_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_MOUSTACHE, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_L), SetDataTip(AWV_DECREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE), SetDataTip(STR_JUST_STRING, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE), SetDataTip(STR_JUST_STRING1, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_R), SetDataTip(AWV_INCREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_CHIN_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_CHIN, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_L), SetDataTip(AWV_DECREASE, STR_FACE_CHIN_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_CHIN), SetDataTip(STR_JUST_STRING, STR_FACE_CHIN_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_CHIN), SetDataTip(STR_JUST_STRING1, STR_FACE_CHIN_TOOLTIP), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_R), SetDataTip(AWV_INCREASE, STR_FACE_CHIN_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_JACKET_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_JACKET, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_L), SetDataTip(AWV_DECREASE, STR_FACE_JACKET_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_JACKET), SetDataTip(STR_JUST_STRING, STR_FACE_JACKET_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_JACKET), SetDataTip(STR_JUST_STRING1, STR_FACE_JACKET_TOOLTIP), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_R), SetDataTip(AWV_INCREASE, STR_FACE_JACKET_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_COLLAR_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_COLLAR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_L), SetDataTip(AWV_DECREASE, STR_FACE_COLLAR_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_COLLAR), SetDataTip(STR_JUST_STRING, STR_FACE_COLLAR_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_COLLAR), SetDataTip(STR_JUST_STRING1, STR_FACE_COLLAR_TOOLTIP), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_R), SetDataTip(AWV_INCREASE, STR_FACE_COLLAR_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_TIE_EARRING_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_FACE_EARRING, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_L), SetDataTip(AWV_DECREASE, STR_FACE_TIE_EARRING_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING), SetDataTip(STR_JUST_STRING, STR_FACE_TIE_EARRING_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING), SetDataTip(STR_JUST_STRING1, STR_FACE_TIE_EARRING_TOOLTIP), SetTextStyle(TC_WHITE), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_R), SetDataTip(AWV_INCREASE, STR_FACE_TIE_EARRING_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetFill(0, 1), diff --git a/src/game/game_gui.cpp b/src/game/game_gui.cpp index 02aa36af00..85e943a287 100644 --- a/src/game/game_gui.cpp +++ b/src/game/game_gui.cpp @@ -194,7 +194,7 @@ struct GSConfigWindow : public Window { TextColour colour; uint idx = 0; if (config_item.description.empty()) { - str = STR_JUST_STRING; + str = STR_JUST_STRING1; colour = TC_ORANGE; } else { str = STR_AI_SETTINGS_SETTING; diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp index add156d863..9fd8238356 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -111,7 +111,7 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0), EndContainer(), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_VARIETY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_SMOOTHNESS_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), @@ -161,9 +161,9 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWNNAME_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), EndContainer(), diff --git a/src/goal_gui.cpp b/src/goal_gui.cpp index 4cbafd650d..1dfb2997cb 100644 --- a/src/goal_gui.cpp +++ b/src/goal_gui.cpp @@ -283,7 +283,7 @@ struct GoalListWindow : public Window { static const NWidgetPart _nested_goals_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), - NWidget(WWT_CAPTION, COLOUR_BROWN, WID_GOAL_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_BROWN, WID_GOAL_CAPTION), SetDataTip(STR_JUST_STRING1, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GOAL_SELECT_BUTTONS), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_GOAL_GLOBAL_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.captiontext.Vertical()), SetDataTip(STR_GOALS_GLOBAL_BUTTON, STR_GOALS_GLOBAL_BUTTON_HELPTEXT), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_GOAL_COMPANY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.captiontext.Vertical()), SetDataTip(STR_GOALS_COMPANY_BUTTON, STR_GOALS_COMPANY_BUTTON_HELPTEXT), diff --git a/src/lang/english.txt b/src/lang/english.txt index 109360586e..79dc659add 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -5627,6 +5627,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING1} +STR_JUST_STRING2 :{STRING2} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{RAW_STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{RAW_STRING} diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 90626c6c3e..575b96dfe7 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -1813,7 +1813,7 @@ static const NWidgetPart _nested_newgrf_actives_widgets[] = { NWidget(WWT_TEXT, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_SELECT_PRESET, STR_NULL), SetPadding(0, WidgetDimensions::unscaled.frametext.right, 0, 0), NWidget(WWT_DROPDOWN, COLOUR_YELLOW, WID_NS_PRESET_LIST), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_JUST_STRING, STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP), + SetDataTip(STR_JUST_STRING1, STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_PRESET_SAVE), SetFill(1, 0), SetResize(1, 0), diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 0f99326987..0e914b17eb 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -799,7 +799,7 @@ struct BuildRailToolbarWindow : Window { static const NWidgetPart _nested_build_rail_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_RAT_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetTextStyle(TC_WHITE), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_RAT_CAPTION), SetDataTip(STR_JUST_STRING2, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetTextStyle(TC_WHITE), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(NWID_HORIZONTAL), diff --git a/src/road_gui.cpp b/src/road_gui.cpp index ef2f2c6896..aff3d90547 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -822,7 +822,7 @@ struct BuildRoadToolbarWindow : Window { static const NWidgetPart _nested_build_road_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_ROT_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetTextStyle(TC_WHITE), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_ROT_CAPTION), SetDataTip(STR_JUST_STRING2, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetTextStyle(TC_WHITE), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(NWID_HORIZONTAL), diff --git a/src/script/script_gui.cpp b/src/script/script_gui.cpp index ef8f5229b8..eea3140161 100644 --- a/src/script/script_gui.cpp +++ b/src/script/script_gui.cpp @@ -379,7 +379,7 @@ struct ScriptSettingsWindow : public Window { TextColour colour; uint idx = 0; if (config_item.description.empty()) { - str = STR_JUST_STRING; + str = STR_JUST_STRING1; colour = TC_ORANGE; } else { str = STR_AI_SETTINGS_SETTING; @@ -1159,7 +1159,7 @@ static const NWidgetPart _nested_script_debug_widgets[] = { EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_SCRIPT_GAME), SetMinimalSize(100, 20), SetResize(1, 0), SetDataTip(STR_AI_GAME_SCRIPT, STR_AI_GAME_SCRIPT_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_NAME_TEXT), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_STRING, STR_AI_DEBUG_NAME_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_NAME_TEXT), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_STRING2, STR_AI_DEBUG_NAME_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_SETTINGS), SetMinimalSize(100, 20), SetDataTip(STR_AI_DEBUG_SETTINGS, STR_AI_DEBUG_SETTINGS_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_RELOAD_TOGGLE), SetMinimalSize(100, 20), SetDataTip(STR_AI_DEBUG_RELOAD, STR_AI_DEBUG_RELOAD_TOOLTIP), EndContainer(), diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index c3df6d3c68..70cf9189cb 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -808,7 +808,7 @@ static const NWidgetPart _nested_game_options_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12),SetDataTip(STR_GAME_OPTIONS_RESOLUTION, STR_NULL), NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_RESOLUTION_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_STRING, STR_GAME_OPTIONS_RESOLUTION_TOOLTIP), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_RESOLUTION_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_STRING2, STR_GAME_OPTIONS_RESOLUTION_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_REFRESH_RATE, STR_NULL), @@ -2923,7 +2923,7 @@ static const NWidgetPart _nested_cust_currency_widgets[] = { NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_YEAR_DOWN), SetDataTip(AWV_DECREASE, STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_YEAR_UP), SetDataTip(AWV_INCREASE, STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), NWidget(NWID_SPACER), SetMinimalSize(5, 0), - NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_YEAR), SetDataTip(STR_JUST_STRING, STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), SetFill(1, 0), + NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_YEAR), SetDataTip(STR_JUST_STRING1, STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), SetFill(1, 0), EndContainer(), EndContainer(), NWidget(WWT_LABEL, COLOUR_BLUE, WID_CC_PREVIEW), diff --git a/src/story_gui.cpp b/src/story_gui.cpp index e804b40c40..b1564e72c9 100644 --- a/src/story_gui.cpp +++ b/src/story_gui.cpp @@ -955,7 +955,7 @@ GUIStoryPageElementList::SortFunction * const StoryBookWindow::page_element_sort static const NWidgetPart _nested_story_book_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), - NWidget(WWT_CAPTION, COLOUR_BROWN, WID_SB_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_BROWN, WID_SB_CAPTION), SetDataTip(STR_JUST_STRING1, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), From f51f117b00758246741af116a3f07a8b5e8e3a2d Mon Sep 17 00:00:00 2001 From: PeterN Date: Wed, 14 Jun 2023 17:24:14 +0100 Subject: [PATCH 055/123] Change: Add window description flag to disallow interactive window closing. (#11008) This replaces/simplifies testing for a closebox to allow closing a window with right-click, and testing for specific window classes when closing all windows by hotkey. This allows right-click closing of dropdowns and the high-score window. --- src/bootstrap_gui.cpp | 8 ++++---- src/intro_gui.cpp | 2 +- src/main_gui.cpp | 2 +- src/misc_gui.cpp | 2 +- src/statusbar_gui.cpp | 2 +- src/toolbar_gui.cpp | 4 ++-- src/window.cpp | 13 +++---------- src/window_gui.h | 1 + 8 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/bootstrap_gui.cpp b/src/bootstrap_gui.cpp index b8439a89e5..b77e72049b 100644 --- a/src/bootstrap_gui.cpp +++ b/src/bootstrap_gui.cpp @@ -42,7 +42,7 @@ static const struct NWidgetPart _background_widgets[] = { static WindowDesc _background_desc( WDP_MANUAL, nullptr, 0, 0, WC_BOOTSTRAP, WC_NONE, - 0, + WDF_NO_CLOSE, _background_widgets, lengthof(_background_widgets) ); @@ -80,7 +80,7 @@ static const NWidgetPart _nested_bootstrap_errmsg_widgets[] = { static WindowDesc _bootstrap_errmsg_desc( WDP_CENTER, nullptr, 0, 0, WC_BOOTSTRAP, WC_NONE, - WDF_MODAL, + WDF_MODAL | WDF_NO_CLOSE, _nested_bootstrap_errmsg_widgets, lengthof(_nested_bootstrap_errmsg_widgets) ); @@ -137,7 +137,7 @@ static const NWidgetPart _nested_bootstrap_download_status_window_widgets[] = { static WindowDesc _bootstrap_download_status_window_desc( WDP_CENTER, nullptr, 0, 0, WC_NETWORK_STATUS_WINDOW, WC_NONE, - WDF_MODAL, + WDF_MODAL | WDF_NO_CLOSE, _nested_bootstrap_download_status_window_widgets, lengthof(_nested_bootstrap_download_status_window_widgets) ); @@ -191,7 +191,7 @@ static const NWidgetPart _bootstrap_query_widgets[] = { static WindowDesc _bootstrap_query_desc( WDP_CENTER, nullptr, 0, 0, WC_CONFIRM_POPUP_QUERY, WC_NONE, - 0, + WDF_NO_CLOSE, _bootstrap_query_widgets, lengthof(_bootstrap_query_widgets) ); diff --git a/src/intro_gui.cpp b/src/intro_gui.cpp index f445b0d62d..06be8a8530 100644 --- a/src/intro_gui.cpp +++ b/src/intro_gui.cpp @@ -494,7 +494,7 @@ static const NWidgetPart _nested_select_game_widgets[] = { static WindowDesc _select_game_desc( WDP_CENTER, nullptr, 0, 0, WC_SELECT_GAME, WC_NONE, - 0, + WDF_NO_CLOSE, _nested_select_game_widgets, lengthof(_nested_select_game_widgets) ); diff --git a/src/main_gui.cpp b/src/main_gui.cpp index b7757e87cb..5961b90fd2 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -510,7 +510,7 @@ struct MainWindow : Window static WindowDesc _main_window_desc( WDP_MANUAL, nullptr, 0, 0, WC_MAIN_WINDOW, WC_NONE, - 0, + WDF_NO_CLOSE, _nested_main_window_widgets, lengthof(_nested_main_window_widgets), &MainWindow::hotkeys ); diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 2efc9cb28e..9fa845a312 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -654,7 +654,7 @@ static const NWidgetPart _nested_tooltips_widgets[] = { static WindowDesc _tool_tips_desc( WDP_MANUAL, nullptr, 0, 0, // Coordinates and sizes are not used, WC_TOOLTIPS, WC_NONE, - WDF_NO_FOCUS, + WDF_NO_FOCUS | WDF_NO_CLOSE, _nested_tooltips_widgets, lengthof(_nested_tooltips_widgets) ); diff --git a/src/statusbar_gui.cpp b/src/statusbar_gui.cpp index ee505f7334..ce8acf86ef 100644 --- a/src/statusbar_gui.cpp +++ b/src/statusbar_gui.cpp @@ -230,7 +230,7 @@ static const NWidgetPart _nested_main_status_widgets[] = { static WindowDesc _main_status_desc( WDP_MANUAL, nullptr, 0, 0, WC_STATUS_BAR, WC_NONE, - WDF_NO_FOCUS, + WDF_NO_FOCUS | WDF_NO_CLOSE, _nested_main_status_widgets, lengthof(_nested_main_status_widgets) ); diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 168e110c8d..95a480790c 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -2251,7 +2251,7 @@ static const NWidgetPart _nested_toolbar_normal_widgets[] = { static WindowDesc _toolb_normal_desc( WDP_MANUAL, nullptr, 0, 0, WC_MAIN_TOOLBAR, WC_NONE, - WDF_NO_FOCUS, + WDF_NO_FOCUS | WDF_NO_CLOSE, _nested_toolbar_normal_widgets, lengthof(_nested_toolbar_normal_widgets), &MainToolbarWindow::hotkeys ); @@ -2591,7 +2591,7 @@ static const NWidgetPart _nested_toolb_scen_widgets[] = { static WindowDesc _toolb_scen_desc( WDP_MANUAL, nullptr, 0, 0, WC_MAIN_TOOLBAR, WC_NONE, - WDF_NO_FOCUS, + WDF_NO_FOCUS | WDF_NO_CLOSE, _nested_toolb_scen_widgets, lengthof(_nested_toolb_scen_widgets), &ScenarioEditorToolbarWindow::hotkeys ); diff --git a/src/window.cpp b/src/window.cpp index 5c31411468..4622411060 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -820,7 +820,7 @@ static void DispatchRightClickEvent(Window *w, int x, int y) } /* Right-click close is enabled and there is a closebox */ - if (_settings_client.gui.right_mouse_wnd_close && w->nested_root->GetWidgetOfType(WWT_CLOSEBOX)) { + if (_settings_client.gui.right_mouse_wnd_close && (w->window_desc->flags & WDF_NO_CLOSE) == 0) { w->Close(); } else if (_settings_client.gui.hover_delay_ms == 0 && !w->OnTooltip(pt, wid->index, TCC_RIGHT_CLICK) && wid->tool_tip != 0) { GuiShowTooltips(w, wid->tool_tip, 0, nullptr, TCC_RIGHT_CLICK); @@ -3293,11 +3293,7 @@ void CloseNonVitalWindows() { /* Note: the container remains stable, even when deleting windows. */ for (Window *w : Window::Iterate()) { - if (w->window_class != WC_MAIN_WINDOW && - w->window_class != WC_SELECT_GAME && - w->window_class != WC_MAIN_TOOLBAR && - w->window_class != WC_STATUS_BAR && - w->window_class != WC_TOOLTIPS && + if ((w->window_desc->flags & WDF_NO_CLOSE) == 0 && (w->flags & WF_STICKY) == 0) { // do not delete windows which are 'pinned' w->Close(); @@ -3314,12 +3310,9 @@ void CloseNonVitalWindows() */ void CloseAllNonVitalWindows() { - /* Close every window except for stickied ones, then sticky ones as well */ - CloseNonVitalWindows(); - /* Note: the container remains stable, even when closing windows. */ for (Window *w : Window::Iterate()) { - if (w->flags & WF_STICKY) { + if ((w->window_desc->flags & WDF_NO_CLOSE) == 0) { w->Close(); } } diff --git a/src/window_gui.h b/src/window_gui.h index b29912dbd2..8ed060b3c3 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -138,6 +138,7 @@ enum WindowDefaultFlag { WDF_CONSTRUCTION = 1 << 0, ///< This window is used for construction; close it whenever changing company. WDF_MODAL = 1 << 1, ///< The window is a modal child of some other window, meaning the parent is 'inactive' WDF_NO_FOCUS = 1 << 2, ///< This window won't get focus/make any other window lose focus when click + WDF_NO_CLOSE = 1 << 3, ///< This window can't be interactively closed }; /** From 864d3c9c16c2557c21ee4dde90bc53006beae749 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Wed, 14 Jun 2023 18:44:10 +0100 Subject: [PATCH 056/123] Fix: CMD_CHANGE_SETTING did not reject SF_NO_NETWORK_SYNC settings (#11009) --- src/settings.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/settings.cpp b/src/settings.cpp index 6087957940..69819ab57d 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -806,6 +806,7 @@ void IniSaveWindowSettings(IniFile &ini, const char *grpname, void *desc) bool SettingDesc::IsEditable(bool do_command) const { if (!do_command && !(this->flags & SF_NO_NETWORK_SYNC) && _networking && !_network_server && !(this->flags & SF_PER_COMPANY)) return false; + if (do_command && (this->flags & SF_NO_NETWORK_SYNC)) return false; if ((this->flags & SF_NETWORK_ONLY) && !_networking && _game_mode != GM_MENU) return false; if ((this->flags & SF_NO_NETWORK) && _networking) return false; if ((this->flags & SF_NEWGAME_ONLY) && From 1cd49bf5e53c21fc1350019fc3f52b113378e5be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Guilloux?= Date: Thu, 15 Jun 2023 00:07:11 +0200 Subject: [PATCH 057/123] Fix ca1e34c: [Script] Wrong value printed for {RAW_STRING} (#11011) --- src/script/api/script_text.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/script/api/script_text.cpp b/src/script/api/script_text.cpp index cec2eb4a0d..4d13aa42b5 100644 --- a/src/script/api/script_text.cpp +++ b/src/script/api/script_text.cpp @@ -209,7 +209,7 @@ void ScriptText::_GetEncodedText(std::back_insert_iterator &output, switch (cur_param.type) { case StringParam::RAW_STRING: if (!std::holds_alternative(this->param[cur_idx])) throw Script_FatalError(fmt::format("{}: Parameter {} expects a raw string", name, param_count)); - fmt::format_to(output, ":\"%s\"", std::get(this->param[cur_idx++])); + fmt::format_to(output, ":\"{}\"", std::get(this->param[cur_idx++])); break; case StringParam::STRING: { From 5a7098cb4148c7c3f2c5f018ba9055542debc6ef Mon Sep 17 00:00:00 2001 From: Owen Rudge Date: Wed, 14 Jun 2023 16:14:45 +0100 Subject: [PATCH 058/123] Change: [Actions] Use notarytool for notarization instead of gon --- .github/workflows/release-macos.yml | 16 +++++++-------- os/macosx/notarize.sh | 32 ++++++----------------------- 2 files changed, 14 insertions(+), 34 deletions(-) diff --git a/.github/workflows/release-macos.yml b/.github/workflows/release-macos.yml index 596692eaab..ec82f8653e 100644 --- a/.github/workflows/release-macos.yml +++ b/.github/workflows/release-macos.yml @@ -162,19 +162,19 @@ jobs: rm -f bundles/*.sha256 echo "::endgroup::" - - name: Install gon - env: - HOMEBREW_NO_AUTO_UPDATE: 1 - HOMEBREW_NO_INSTALL_CLEANUP: 1 - run: | - brew tap mitchellh/gon - brew install mitchellh/gon/gon - - name: Notarize env: AC_USERNAME: ${{ secrets.APPLE_DEVELOPER_APP_USERNAME }} AC_PASSWORD: ${{ secrets.APPLE_DEVELOPER_APP_PASSWORD }} + AC_TEAM_ID: ${{ secrets.APPLE_DEVELOPER_TEAM_ID }} run: | + if [ -z "${AC_USERNAME}" ]; then + # We may be running on a fork that doesn't have notarization secrets set up; skip this step + echo No notarization secrets set up, skipping. + exit 0 + fi + + xcrun notarytool store-credentials --apple-id "${AC_USERNAME}" --password "${AC_PASSWORD}" --team-id "${AC_TEAM_ID}" openttd cd build-x64 ../os/macosx/notarize.sh diff --git a/os/macosx/notarize.sh b/os/macosx/notarize.sh index 55405cdd89..c34606bdc2 100755 --- a/os/macosx/notarize.sh +++ b/os/macosx/notarize.sh @@ -5,11 +5,8 @@ set -e # If you are building an unofficial branch of OpenTTD, please change the bundle # ID in Info.plist and below. # -# This uses `gon' to perform notarization: -# -# https://github.com/mitchellh/gon -# -# Follow the setup instructions on the gon site to install. +# This uses the Xcode notarytool to perform notarization. You must set up a keychain +# profile called "openttd" using the "store-credentials" notarytool command beforehand. # # Before executing this script, you must first configure CMake with at least the following # parameters: @@ -22,19 +19,11 @@ set -e # This will sign the application with your signing certificate, and will enable # the hardened runtime. # -# You also need to set your Apple Developer username and password (app-specific password -# is recommended) in the AC_USERNAME and AC_PASSWORD environment variables. -# # Then, ensuring you're in your build directory and that the "bundles" directory # exists with a .dmg in it (clear out any old DMGs first), run: # # ../os/macosx/notarize.sh -if [ -z "${AC_USERNAME}" ]; then - echo AC_USERNAME not set, skipping notarization. - exit 0 -fi; - dmg_filename=(bundles/*.dmg) if [ "${dmg_filename}" = "bundles/*.dmg" ]; then @@ -43,24 +32,15 @@ if [ "${dmg_filename}" = "bundles/*.dmg" ]; then exit 1 fi; -cat < notarize.json -{ - "notarize": [ - { - "path": "${dmg_filename[0]}", - "bundle_id": "org.openttd.openttd", - "staple": true - } - ] -} -EOF +xcrun notarytool submit ${dmg_filename[0]} --keychain-profile "openttd" --wait -gon notarize.json +# Staple the ticket to the .dmg +xcrun stapler staple "${dmg_filename[0]}" app_filename=(_CPack_Packages/*/Bundle/openttd-*/OpenTTD.app) if [ "${app_filename}" = "_CPack_Packages/*/Bundle/openttd-*/OpenTTD.app" ]; then - echo "No .app found in the _CPack_Packages directory, skipping stapling." + echo "No .app found in the _CPack_Packages directory, skipping app stapling." exit 0 fi; From aae8f40b9fa9f5eebf006940ddc2ba65b5243bee Mon Sep 17 00:00:00 2001 From: translators Date: Thu, 15 Jun 2023 18:41:48 +0000 Subject: [PATCH 059/123] Update: Translations from eints english (au): 2 changes by krysclarke korean: 2 changes by telk5093 russian: 2 changes by Ln-Wolf french: 2 changes by ottdfevr portuguese: 2 changes by azulcosta portuguese (brazilian): 2 changes by ericandradex polish: 2 changes by pAter-exe --- src/lang/brazilian_portuguese.txt | 2 ++ src/lang/english_AU.txt | 2 ++ src/lang/french.txt | 2 ++ src/lang/korean.txt | 2 ++ src/lang/polish.txt | 2 ++ src/lang/portuguese.txt | 2 ++ src/lang/russian.txt | 2 ++ 7 files changed, 14 insertions(+) diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 776953c814..1673aaf44d 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -5628,6 +5628,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 35652fc1ce..4638773d51 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -5627,6 +5627,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/french.txt b/src/lang/french.txt index 1604694299..86be513818 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -5628,6 +5628,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 3944ca4ed7..d1e12b8cf4 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -5628,6 +5628,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 25280f4117..559cd2d00d 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -6050,6 +6050,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 6681c88839..0b96aabf1f 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -5628,6 +5628,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/russian.txt b/src/lang/russian.txt index a3604ba109..14b88a9104 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -5851,6 +5851,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} From d4c20432947d1cebd18db8037c67e4e6ac47d5ff Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 15 Jun 2023 19:15:08 +0200 Subject: [PATCH 060/123] Codechange: remove a number of unneeded c_str() calls --- src/console_cmds.cpp | 2 +- src/driver.cpp | 2 +- src/fios_gui.cpp | 2 +- src/industry_gui.cpp | 4 ++-- src/network/network_gui.cpp | 4 ++-- src/network/network_server.cpp | 2 +- src/newgrf.cpp | 4 ++-- src/newgrf_gui.cpp | 9 ++++----- src/newgrf_text.cpp | 2 +- src/openttd.cpp | 2 +- src/script/api/script_text.cpp | 4 ++-- src/signs_gui.cpp | 2 +- 12 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 5ac065cdd1..ceb11f5b49 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -1173,7 +1173,7 @@ static void PrintLineByLine(const std::string &full_string) std::istringstream in(full_string); std::string line; while (std::getline(in, line)) { - IConsolePrint(CC_DEFAULT, line.c_str()); + IConsolePrint(CC_DEFAULT, line); } } diff --git a/src/driver.cpp b/src/driver.cpp index acb441309a..7e31390a33 100644 --- a/src/driver.cpp +++ b/src/driver.cpp @@ -96,7 +96,7 @@ void DriverFactoryBase::SelectDriver(const std::string &name, Driver::Type type) if (!DriverFactoryBase::SelectDriverImpl(name, type)) { name.empty() ? UserError("Failed to autoprobe {} driver", GetDriverTypeName(type)) : - UserError("Failed to select requested {} driver '{}'", GetDriverTypeName(type), name.c_str()); + UserError("Failed to select requested {} driver '{}'", GetDriverTypeName(type), name); } } diff --git a/src/fios_gui.cpp b/src/fios_gui.cpp index 05b397f2b6..ffd1b852cf 100644 --- a/src/fios_gui.cpp +++ b/src/fios_gui.cpp @@ -673,7 +673,7 @@ public: } if (this->fop == SLO_SAVE) { /* Copy clicked name to editbox */ - this->filename_editbox.text.Assign(file->title.c_str()); + this->filename_editbox.text.Assign(file->title); this->SetWidgetDirty(WID_SL_SAVE_OSK_TITLE); } } else if (!_load_check_data.HasErrors()) { diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index eb5b1fe2ec..28ca5f3e42 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -455,7 +455,7 @@ public: /* Measure the accepted cargoes, if any. */ GetAllCargoSuffixes(CARGOSUFFIX_IN, CST_FUND, nullptr, indtype, indsp, indsp->accepts_cargo, cargo_suffix); std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, lengthof(indsp->accepts_cargo), STR_INDUSTRY_VIEW_REQUIRES_N_CARGO); - Dimension strdim = GetStringBoundingBox(cargostring.c_str()); + Dimension strdim = GetStringBoundingBox(cargostring); if (strdim.width > max_minwidth) { extra_lines_req = std::max(extra_lines_req, strdim.width / max_minwidth + 1); strdim.width = max_minwidth; @@ -465,7 +465,7 @@ public: /* Measure the produced cargoes, if any. */ GetAllCargoSuffixes(CARGOSUFFIX_OUT, CST_FUND, nullptr, indtype, indsp, indsp->produced_cargo, cargo_suffix); cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, lengthof(indsp->produced_cargo), STR_INDUSTRY_VIEW_PRODUCES_N_CARGO); - strdim = GetStringBoundingBox(cargostring.c_str()); + strdim = GetStringBoundingBox(cargostring); if (strdim.width > max_minwidth) { extra_lines_prd = std::max(extra_lines_prd, strdim.width / max_minwidth + 1); strdim.width = max_minwidth; diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 0345eefd69..e19a7ce1eb 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -480,7 +480,7 @@ public: this->FinishInitNested(WN_NETWORK_WINDOW_GAME); this->querystrings[WID_NG_CLIENT] = &this->name_editbox; - this->name_editbox.text.Assign(_settings_client.network.client_name.c_str()); + this->name_editbox.text.Assign(_settings_client.network.client_name); this->querystrings[WID_NG_FILTER] = &this->filter_editbox; this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; @@ -1036,7 +1036,7 @@ struct NetworkStartServerWindow : public Window { this->InitNested(WN_NETWORK_WINDOW_START); this->querystrings[WID_NSS_GAMENAME] = &this->name_editbox; - this->name_editbox.text.Assign(_settings_client.network.server_name.c_str()); + this->name_editbox.text.Assign(_settings_client.network.server_name); this->SetFocusedWidget(WID_NSS_GAMENAME); } diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 78d2abc0ed..fae30089f2 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -1874,7 +1874,7 @@ void NetworkServerShowStatusToConsole() status = (cs->status < (ptrdiff_t)lengthof(stat_str) ? stat_str[cs->status] : "unknown"); IConsolePrint(CC_INFO, "Client #{} name: '{}' status: '{}' frame-lag: {} company: {} IP: {}", - cs->client_id, ci->client_name.c_str(), status, lag, + cs->client_id, ci->client_name, status, lag, ci->client_playas + (Company::IsValidID(ci->client_playas) ? 1 : 0), cs->GetClientIP()); } diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 2f311c8bd5..13511b72ae 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -7727,7 +7727,7 @@ static void FeatureTownName(ByteReader *buf) const char *name = buf->ReadString(); std::string lang_name = TranslateTTDPatchCodes(grfid, lang, false, name); - GrfMsg(6, "FeatureTownName: lang 0x{:X} -> '{}'", lang, lang_name.c_str()); + GrfMsg(6, "FeatureTownName: lang 0x{:X} -> '{}'", lang, lang_name); style = AddGRFString(grfid, id, lang, new_scheme, false, name, STR_UNDEFINED); @@ -7766,7 +7766,7 @@ static void FeatureTownName(ByteReader *buf) } else { const char *text = buf->ReadString(); part.text = TranslateTTDPatchCodes(grfid, 0, false, text); - GrfMsg(6, "FeatureTownName: part {}, text {}, '{}' (with probability {})", partnum, textnum, part.text.c_str(), part.prob); + GrfMsg(6, "FeatureTownName: part {}, text {}, '{}' (with probability {})", partnum, textnum, part.text, part.prob); } partlist.maxprob += GB(part.prob, 0, 7); } diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 575b96dfe7..93b26b1cad 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -1459,7 +1459,7 @@ private: { filter.ResetState(); filter.AddLine((*a)->GetName()); - filter.AddLine((*a)->filename.c_str()); + filter.AddLine((*a)->filename); filter.AddLine((*a)->GetDescription()); return filter.GetState();; } @@ -2101,7 +2101,7 @@ struct SavePresetWindow : public Window { resize->height = FONT_HEIGHT_NORMAL; size->height = 0; for (uint i = 0; i < this->presets.size(); i++) { - Dimension d = GetStringBoundingBox(this->presets[i].c_str()); + Dimension d = GetStringBoundingBox(this->presets[i]); size->width = std::max(size->width, d.width + padding.width); resize->height = std::max(resize->height, d.height); } @@ -2127,8 +2127,7 @@ struct SavePresetWindow : public Window { for (uint i = min_index; i < max_index; i++) { if ((int)i == this->selected) GfxFillRect(br.left, tr.top, br.right, tr.top + step_height - 1, PC_DARK_BLUE); - const char *text = this->presets[i].c_str(); - DrawString(tr.left, tr.right, tr.top + offset_y, text, ((int)i == this->selected) ? TC_WHITE : TC_SILVER); + DrawString(tr.left, tr.right, tr.top + offset_y, this->presets[i], ((int)i == this->selected) ? TC_WHITE : TC_SILVER); tr.top += step_height; } break; @@ -2143,7 +2142,7 @@ struct SavePresetWindow : public Window { auto it = this->vscroll->GetScrolledItemFromWidget(this->presets, pt.y, this, WID_SVP_PRESET_LIST); if (it != this->presets.end()) { this->selected = it - this->presets.begin(); - this->presetname_editbox.text.Assign(it->c_str()); + this->presetname_editbox.text.Assign(*it); this->SetWidgetDirty(WID_SVP_PRESET_LIST); this->SetWidgetDirty(WID_SVP_EDITBOX); } diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp index 9eed2b8f71..84f36b623e 100644 --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -583,7 +583,7 @@ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid_to_add, bool ne } AddGRFTextToList(_grf_text[id].textholder, langid_to_add, newtext); - GrfMsg(3, "Added 0x{:X} grfid {:08X} string 0x{:X} lang 0x{:X} string '{}' ({:X})", id, grfid, stringid, langid_to_add, newtext.c_str(), MakeStringID(TEXT_TAB_NEWGRF_START, id)); + GrfMsg(3, "Added 0x{:X} grfid {:08X} string 0x{:X} lang 0x{:X} string '{}' ({:X})", id, grfid, stringid, langid_to_add, newtext, MakeStringID(TEXT_TAB_NEWGRF_START, id)); return MakeStringID(TEXT_TAB_NEWGRF_START, id); } diff --git a/src/openttd.cpp b/src/openttd.cpp index 3eda94a2ec..22c4f96cdf 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -723,7 +723,7 @@ int openttd_main(int argc, char *argv[]) if (BlitterFactory::SelectBlitter(blitter) == nullptr) { blitter.empty() ? UserError("Failed to autoprobe blitter") : - UserError("Failed to select requested blitter '{}'; does it exist?", blitter.c_str()); + UserError("Failed to select requested blitter '{}'; does it exist?", blitter); } } diff --git a/src/script/api/script_text.cpp b/src/script/api/script_text.cpp index 4d13aa42b5..a4e8dd7196 100644 --- a/src/script/api/script_text.cpp +++ b/src/script/api/script_text.cpp @@ -193,7 +193,7 @@ void ScriptText::_GetEncodedText(std::back_insert_iterator &output, /* The previous substring added more parameters than expected, means we will consume them but can't properly validate them. */ for (int i = 0; i < cur_param.consumes; i++) { if (prev_idx < prev_count) { - ScriptLog::Warning(fmt::format("{}: Parameter {} uses parameter {} from substring {} and cannot be validated", name, param_count + i, prev_idx++, prev_string).c_str()); + ScriptLog::Warning(fmt::format("{}: Parameter {} uses parameter {} from substring {} and cannot be validated", name, param_count + i, prev_idx++, prev_string)); } else { /* No more extra parameters, assume SQInteger are expected. */ if (cur_idx >= this->paramc) throw Script_FatalError(fmt::format("{}: Not enough parameters", name)); @@ -218,7 +218,7 @@ void ScriptText::_GetEncodedText(std::back_insert_iterator &output, fmt::format_to(output, ":"); std::get(this->param[cur_idx++])->_GetEncodedText(output, count, seen_ids); if (++count != cur_param.consumes) { - ScriptLog::Error(fmt::format("{}: Parameter {} substring consumes {}, but expected {} to be consumed", name, param_count, count - 1, cur_param.consumes - 1).c_str()); + ScriptLog::Error(fmt::format("{}: Parameter {} substring consumes {}, but expected {} to be consumed", name, param_count, count - 1, cur_param.consumes - 1)); /* Fill missing params if needed. */ for (int i = count; i < cur_param.consumes; i++) fmt::format_to(output, ":0"); /* Disable validation for the extra params if any. */ diff --git a/src/signs_gui.cpp b/src/signs_gui.cpp index de0d5d1967..a2a1c0b8d8 100644 --- a/src/signs_gui.cpp +++ b/src/signs_gui.cpp @@ -99,7 +99,7 @@ struct SignList { const std::string &a_name = (*a)->name.empty() ? SignList::default_name : (*a)->name; filter.ResetState(); - filter.AddLine(a_name.c_str()); + filter.AddLine(a_name); return filter.GetState(); } From 1a3d1bca59c4a0702b8362ed040ec033490a3254 Mon Sep 17 00:00:00 2001 From: Owen Rudge Date: Fri, 16 Jun 2023 13:23:55 +0100 Subject: [PATCH 061/123] Remove: OS/2 port --- README.md | 3 - os/os2/build_lang.cmd | 8 - os/os2/dedicated.cmd | 1 - os/os2/installer/download_nosound.cmd | 21 -- os/os2/installer/download_opengfx.cmd | 21 -- os/os2/installer/download_opensfx.cmd | 21 -- os/os2/installer/make_installer.cmd | 85 ------ os/os2/installer/openttd.wis | 106 -------- os/os2/installer/remove_nosound.cmd | 15 -- os/os2/installer/remove_opengfx.cmd | 15 -- os/os2/installer/remove_opensfx.cmd | 15 -- os/os2/openttd.wpj | 64 ----- os/os2/svn_version.cmd | 30 --- os/os2/svnver1.c | 3 - os/os2/svnver2.c | 4 - src/3rdparty/CMakeLists.txt | 1 - src/3rdparty/os2/CMakeLists.txt | 7 - src/3rdparty/os2/getaddrinfo.c | 299 --------------------- src/3rdparty/os2/getaddrinfo.h | 101 ------- src/3rdparty/os2/getnameinfo.c | 367 -------------------------- src/3rdparty/os2/getnameinfo.h | 29 -- src/cpu.cpp | 7 - src/crashlog.cpp | 2 - src/fileio.cpp | 6 +- src/fios.cpp | 4 +- src/music/CMakeLists.txt | 6 - src/music/os2_m.cpp | 86 ------ src/music/os2_m.h | 39 --- src/network/core/address.cpp | 2 - src/network/core/os_abstraction.cpp | 2 - src/network/core/os_abstraction.h | 58 +--- src/os/CMakeLists.txt | 1 - src/os/os2/CMakeLists.txt | 8 - src/os/os2/os2.cpp | 187 ------------- src/os/os2/os2_main.cpp | 27 -- src/os/unix/CMakeLists.txt | 6 +- src/stdafx.h | 12 +- src/video/dedicated_v.cpp | 36 +-- src/video/sdl_v.cpp | 2 +- 39 files changed, 14 insertions(+), 1693 deletions(-) delete mode 100644 os/os2/build_lang.cmd delete mode 100644 os/os2/dedicated.cmd delete mode 100644 os/os2/installer/download_nosound.cmd delete mode 100644 os/os2/installer/download_opengfx.cmd delete mode 100644 os/os2/installer/download_opensfx.cmd delete mode 100644 os/os2/installer/make_installer.cmd delete mode 100644 os/os2/installer/openttd.wis delete mode 100644 os/os2/installer/remove_nosound.cmd delete mode 100644 os/os2/installer/remove_opengfx.cmd delete mode 100644 os/os2/installer/remove_opensfx.cmd delete mode 100644 os/os2/openttd.wpj delete mode 100644 os/os2/svn_version.cmd delete mode 100644 os/os2/svnver1.c delete mode 100644 os/os2/svnver2.c delete mode 100644 src/3rdparty/os2/CMakeLists.txt delete mode 100644 src/3rdparty/os2/getaddrinfo.c delete mode 100644 src/3rdparty/os2/getaddrinfo.h delete mode 100644 src/3rdparty/os2/getnameinfo.c delete mode 100644 src/3rdparty/os2/getnameinfo.h delete mode 100644 src/music/os2_m.cpp delete mode 100644 src/music/os2_m.h delete mode 100644 src/os/os2/CMakeLists.txt delete mode 100644 src/os/os2/os2.cpp delete mode 100644 src/os/os2/os2_main.cpp diff --git a/README.md b/README.md index 6f86b5ae3f..374df8f7f4 100644 --- a/README.md +++ b/README.md @@ -174,9 +174,6 @@ See `src/3rdparty/squirrel/COPYRIGHT` for the complete license text. The md5 implementation in `src/3rdparty/md5` is licensed under the Zlib license. See the comments in the source files in `src/3rdparty/md5` for the complete license text. -The implementations of Posix `getaddrinfo` and `getnameinfo` for OS/2 in `src/3rdparty/os2` are distributed partly under the GNU Lesser General Public License 2.1, and partly under the (3-clause) BSD license. -The exact licensing terms can be found in `src/3rdparty/os2/getaddrinfo.c` resp. `src/3rdparty/os2/getnameinfo.c`. - The fmt implementation in `src/3rdparty/fmt` is licensed under the MIT license. See `src/3rdparty/fmt/LICENSE.rst` for the complete license text. diff --git a/os/os2/build_lang.cmd b/os/os2/build_lang.cmd deleted file mode 100644 index 57d3e9943c..0000000000 --- a/os/os2/build_lang.cmd +++ /dev/null @@ -1,8 +0,0 @@ -rem -rem Building language files... -rem -cd .. -strgen\strgen -for %%f in (lang\*.txt) do strgen\strgen %%f -cd strgen - diff --git a/os/os2/dedicated.cmd b/os/os2/dedicated.cmd deleted file mode 100644 index f4eb524995..0000000000 --- a/os/os2/dedicated.cmd +++ /dev/null @@ -1 +0,0 @@ -start /n /win openttd.exe -D %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/os/os2/installer/download_nosound.cmd b/os/os2/installer/download_nosound.cmd deleted file mode 100644 index 39e9843a92..0000000000 --- a/os/os2/installer/download_nosound.cmd +++ /dev/null @@ -1,21 +0,0 @@ -@echo off -if "%1" == "" goto err -if "%2" == "" goto err - -echo Downloading NoSound... - -%1\wget http://binaries.openttd.org/installer/nosound-NOSOUND_VERSION.7z -O %2/baseset/nosound.7z - -echo Extracting NoSound... - -%1\7za x -y -O%2/baseset %2/baseset/nosound.7z -del %1\baseset\nosound.7z /n - -echo NoSound has been installed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. -echo Please visit www.openttd.org for details on downloading NoSound. - -:end \ No newline at end of file diff --git a/os/os2/installer/download_opengfx.cmd b/os/os2/installer/download_opengfx.cmd deleted file mode 100644 index c2686b456f..0000000000 --- a/os/os2/installer/download_opengfx.cmd +++ /dev/null @@ -1,21 +0,0 @@ -@echo off -if "%1" == "" goto err -if "%2" == "" goto err - -echo Downloading OpenGFX... - -%1\wget http://binaries.openttd.org/installer/opengfx-OPENGFX_VERSION.7z -O %2/baseset/opengfx.7z - -echo Extracting OpenGFX... - -%1\7za x -y -O%2/baseset %2/baseset/opengfx.7z -del %1\baseset\opengfx.7z /n - -echo OpenGFX has been installed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. -echo Please visit www.openttd.org for details on downloading OpenGFX. - -:end diff --git a/os/os2/installer/download_opensfx.cmd b/os/os2/installer/download_opensfx.cmd deleted file mode 100644 index 0a46dea42a..0000000000 --- a/os/os2/installer/download_opensfx.cmd +++ /dev/null @@ -1,21 +0,0 @@ -@echo off -if "%1" == "" goto err -if "%2" == "" goto err - -echo Downloading OpenSFX... - -%1\wget http://binaries.openttd.org/installer/opensfx-OPENSFX_VERSION.7z -O %2/baseset/opensfx.7z - -echo Extracting OpenSFX... - -%1\7za x -y -O%2/baseset %2/baseset/opensfx.7z -del %1\baseset\opensfx.7z /n - -echo OpenSFX has been installed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. -echo Please visit www.openttd.org for details on downloading OpenSFX. - -:end diff --git a/os/os2/installer/make_installer.cmd b/os/os2/installer/make_installer.cmd deleted file mode 100644 index 885b2dc623..0000000000 --- a/os/os2/installer/make_installer.cmd +++ /dev/null @@ -1,85 +0,0 @@ -@echo off - -set OPENTTD_VERSION=1.11.0 -set OPENSFX_VERSION=0.8.0 -set NOSOUND_VERSION=0.8.0 -set OPENGFX_VERSION=1.2.0 - -echo To make the installer, you must have the WarpIN compiler (wic) installed and in -echo your path, as well as wget and unzip. This file will download the various DLLs -echo to be distributed with the installer. If you do not want to continue, please -echo press CTRL-C now. -echo. -pause - -cd ..\..\..\bundle - -if not exist SDL12.dll goto getsdl -if not exist FSLib.dll goto getsdl -goto libc - -:getsdl - -wget http://www.os2site.com/sw/dev/sdl/sdl-1.2.10-bin-20080804.zip -O dl.zip -unzip -j dl.zip SDL/FSLib.dll SDL/SDL12.dll -del dl.zip - -:libc - -if exist libc063.dll goto gcc - -wget ftp://ftp.netlabs.org/pub/gcc/libc-0.6.3-csd3.zip -O dl.zip -unzip -j dl.zip libc063.dll -del dl.zip - -:gcc - -if exist gcc442.dll goto tools - -wget http://www.owenrudge.net/various/gcc442.zip -O dl.zip -unzip -j dl.zip gcc442.dll -del dl.zip - -:tools - -cd ..\os\os2\installer -if exist tools goto opengfx - -mkdir tools -cd tools - -wget http://download.smedley.info/wget-1.11.4-os2-20090315.zip -O dl.zip -unzip -j dl.zip wget/bin/wget.exe -del dl.zip - -wget ftp://ftp.os4.su/moveton/p7zip-9.04-bin-os2.zip -O dl.zip -unzip -j dl.zip bin/7za.exe dll/ilibca.dll -del dl.zip - -cd .. - -:opengfx - -if exist opengfx goto opensfx - -mkdir opengfx -sed s/OPENGFX_VERSION/%OPENGFX_VERSION%/ < download_opengfx.cmd > opengfx\download_opengfx.cmd -copy remove_opengfx.cmd opengfx - -:opensfx -if exist opensfx goto nosound - -mkdir opensfx -sed s/OPENSFX_VERSION/%OPENSFX_VERSION%/ < download_opensfx.cmd > opensfx\download_opensfx.cmd -copy remove_opensfx.cmd opensfx - -:nosound - -mkdir nosound -sed s/NOSOUND_VERSION/%NOSOUND_VERSION%/ < download_nosound.cmd > nosound\download_nosound.cmd -copy remove_nosound.cmd nosound - -:end - -if exist openttd-%OPENTTD_VERSION%-os2.exe del openttd-%OPENTTD_VERSION%-os2.exe -wic -a openttd-%OPENTTD_VERSION%-os2.exe 1 -c../../../bundle -r * 2 -ctools -r * 3 -copengfx -r * 4 -copensfx -r * 5 -cnosound -r * -U -s openttd.wis diff --git a/os/os2/installer/openttd.wis b/os/os2/installer/openttd.wis deleted file mode 100644 index 4b761ed83c..0000000000 --- a/os/os2/installer/openttd.wis +++ /dev/null @@ -1,106 +0,0 @@ - - -OpenTTD - - - -OpenTTD is an open source transport simulation game - -Tools required for downloading the OpenGFX/SFX packs - -Downloads the OpenGFX graphics pack for OpenTTD - -Downloads the OpenSFX sound effects pack for OpenTTD - -Downloads the NoSound pack for OpenTTD, to disable sound effects - - - - - - -~Next -README.md -Welcome to the OpenTTD installer. This program will install OpenTTD 1.0 on your system. Before we begin the installation process, please take a moment to read the following document. - -Select "Next" to continue, or "Cancel" to abort installation. - - - - -~Next -COPYING.md -OpenTTD is licenced under the GNU General Public License. The text of the licence is below. - -Select "Next" if you agree to this licence. -Select "Cancel" to abort installation. - - - - -~Next -On this page, you may choose which components to install. If you don't own Transport Tycoon Deluxe, you will need to download OpenGFX (3MiB) and OpenSFX (10MiB). - - - - - -I~nstall - -Press "Install" to begin installing OpenTTD. - - - diff --git a/os/os2/installer/remove_nosound.cmd b/os/os2/installer/remove_nosound.cmd deleted file mode 100644 index 21c11e80d9..0000000000 --- a/os/os2/installer/remove_nosound.cmd +++ /dev/null @@ -1,15 +0,0 @@ -@echo off -if "%1" == "" goto err - -echo Removing NoSound... - -del %1\baseset\nosound\*.* /n -rmdir %1\baseset\nosound - -echo NoSound has been removed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. - -:end diff --git a/os/os2/installer/remove_opengfx.cmd b/os/os2/installer/remove_opengfx.cmd deleted file mode 100644 index 71465d1677..0000000000 --- a/os/os2/installer/remove_opengfx.cmd +++ /dev/null @@ -1,15 +0,0 @@ -@echo off -if "%1" == "" goto err - -echo Removing OpenGFX... - -del %1\baseset\opengfx\*.* /n -rmdir %1\baseset\opengfx - -echo OpenGFX has been removed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. - -:end diff --git a/os/os2/installer/remove_opensfx.cmd b/os/os2/installer/remove_opensfx.cmd deleted file mode 100644 index 361a870e33..0000000000 --- a/os/os2/installer/remove_opensfx.cmd +++ /dev/null @@ -1,15 +0,0 @@ -@echo off -if "%1" == "" goto err - -echo Removing OpenSFX... - -del %1\baseset\opensfx\*.* /n -rmdir %1\baseset\opensfx - -echo OpenSFX has been removed. -goto end - -:err -echo This batch file is only intended for use by the OpenTTD installer. - -:end diff --git a/os/os2/openttd.wpj b/os/os2/openttd.wpj deleted file mode 100644 index 61b2caa553..0000000000 --- a/os/os2/openttd.wpj +++ /dev/null @@ -1,64 +0,0 @@ -40 -projectIdent -0 -VpeMain -1 -WRect -0 -0 -10304 -10020 -2 -MProject -3 -MCommand -15 -svn_version.cmd -4 -MCommand -0 -2 -5 -WFileName -17 -..\..\openttd.tgt -6 -WFileName -23 -..\..\strgen\strgen.tgt -7 -WVList -2 -8 -VComponent -9 -WRect -0 -0 -5696 -4240 -0 -0 -10 -WFileName -17 -..\..\openttd.tgt -0 -0 -11 -VComponent -12 -WRect -688 -680 -5696 -4240 -0 -0 -13 -WFileName -23 -..\..\strgen\strgen.tgt -0 -1 -8 diff --git a/os/os2/svn_version.cmd b/os/os2/svn_version.cmd deleted file mode 100644 index cc8836fc0b..0000000000 --- a/os/os2/svn_version.cmd +++ /dev/null @@ -1,30 +0,0 @@ -@echo off -echo Running SVN version detection script... -rem -rem Requires subversion (`svnversion') to be installed -rem -cd ..\.. -if not "%RELEASE%"=="" goto forcerelease -if not exist .svn goto nosvn -svnversion -n . > os\os2\svnver.tmp -if not "%ERRORLEVEL%"=="0" goto nosvn - -copy os\os2\svnver1.c+os\os2\svnver.tmp+os\os2\svnver2.c rev.c /a /y > nul 2> nul -goto end - -:forcerelease -echo Forcing release string "%RELEASE%"... -echo const char _openttd_revision[] = "%RELEASE%"; > rev.c -echo const int _revision_number = 0; >> rev.c -goto end - -:nosvn -echo Error executing `svnversion' or no SVN data detected -echo const char _openttd_revision[] = "norev000"; > rev.c -echo const int _revision_number = 0; >> rev.c -goto end - -:end -cd os\os2 -del svnver.tmp > nul 2> nul -rem end diff --git a/os/os2/svnver1.c b/os/os2/svnver1.c deleted file mode 100644 index 56d3572c50..0000000000 --- a/os/os2/svnver1.c +++ /dev/null @@ -1,3 +0,0 @@ -/* rev.c part #1 for OS/2 - ensure no newline at end of file! */ - -const char _openttd_revision[] = "r \ No newline at end of file diff --git a/os/os2/svnver2.c b/os/os2/svnver2.c deleted file mode 100644 index 02d87603c5..0000000000 --- a/os/os2/svnver2.c +++ /dev/null @@ -1,4 +0,0 @@ -"; -const int _revision_number = 0; - -/* rev.c part 2 for OS/2 - ensure no newline at start of file! */ \ No newline at end of file diff --git a/src/3rdparty/CMakeLists.txt b/src/3rdparty/CMakeLists.txt index 051ec193ba..e2b72c4bd1 100644 --- a/src/3rdparty/CMakeLists.txt +++ b/src/3rdparty/CMakeLists.txt @@ -4,4 +4,3 @@ add_subdirectory(icu) add_subdirectory(md5) add_subdirectory(squirrel) add_subdirectory(opengl) -add_subdirectory(os2) diff --git a/src/3rdparty/os2/CMakeLists.txt b/src/3rdparty/os2/CMakeLists.txt deleted file mode 100644 index 8edc63479e..0000000000 --- a/src/3rdparty/os2/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -add_files( - getaddrinfo.c - getaddrinfo.h - getnameinfo.c - getnameinfo.h - CONDITION OPTION_OS2 -) diff --git a/src/3rdparty/os2/getaddrinfo.c b/src/3rdparty/os2/getaddrinfo.c deleted file mode 100644 index 3cdda21f1b..0000000000 --- a/src/3rdparty/os2/getaddrinfo.c +++ /dev/null @@ -1,299 +0,0 @@ -/* - * This file is part of libESMTP, a library for submission of RFC 2822 - * formatted electronic mail messages using the SMTP protocol described - * in RFC 2821. - * - * Copyright (C) 2001,2002 Brian Stafford - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* An emulation of the RFC 2553 / Posix getaddrinfo resolver interface. - */ - -#if !HAVE_GETADDRINFO - -/* Need to turn off Posix features in glibc to build this */ -#undef _POSIX_C_SOURCE -#undef _XOPEN_SOURCE - -#include "getaddrinfo.h" -//#include "compat/inet_pton.h" - -#include -#include -#include -#include -#include -#include -#include - -static struct addrinfo * -dup_addrinfo (struct addrinfo *info, void *addr, size_t addrlen) { - struct addrinfo *ret; - - ret = malloc (sizeof (struct addrinfo)); - if (ret == NULL) - return NULL; - memcpy (ret, info, sizeof (struct addrinfo)); - ret->ai_addr = malloc (addrlen); - if (ret->ai_addr == NULL) { - free (ret); - return NULL; - } - memcpy (ret->ai_addr, addr, addrlen); - ret->ai_addrlen = addrlen; - return ret; -} - -int -getaddrinfo (const char *nodename, const char *servname, - const struct addrinfo *hints, struct addrinfo **res) -{ - struct hostent *hp; - struct servent *servent; - const char *socktype; - int port; - struct addrinfo hint, result; - struct addrinfo *ai, *sai, *eai; - char **addrs; - - if (servname == NULL && nodename == NULL) - return EAI_NONAME; - - memset (&result, 0, sizeof result); - - /* default for hints */ - if (hints == NULL) { - memset (&hint, 0, sizeof hint); - hint.ai_family = PF_UNSPEC; - hints = &hint; - } - - if (servname == NULL) - port = 0; - else { - /* check for tcp or udp sockets only */ - if (hints->ai_socktype == SOCK_STREAM) - socktype = "tcp"; - else if (hints->ai_socktype == SOCK_DGRAM) - socktype = "udp"; - else - return EAI_SERVICE; - result.ai_socktype = hints->ai_socktype; - - /* Note: maintain port in host byte order to make debugging easier */ - if (isdigit (*servname)) - port = strtol (servname, NULL, 10); - else if ((servent = getservbyname (servname, socktype)) != NULL) - port = ntohs (servent->s_port); - else - return EAI_NONAME; - } - - /* if nodename == NULL refer to the local host for a client or any - for a server */ - if (nodename == NULL) { - struct sockaddr_in sin; - - /* check protocol family is PF_UNSPEC or PF_INET - could try harder - for IPv6 but that's more code than I'm prepared to write */ - if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET) - result.ai_family = AF_INET; - else - return EAI_FAMILY; - - sin.sin_family = result.ai_family; - sin.sin_port = htons (port); - if (hints->ai_flags & AI_PASSIVE) - sin.sin_addr.s_addr = htonl (INADDR_ANY); - else - sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK); - /* Duplicate result and addr and return */ - *res = dup_addrinfo (&result, &sin, sizeof sin); - return (*res == NULL) ? EAI_MEMORY : 0; - } - - /* If AI_NUMERIC is specified, use inet_pton to translate numbers and - dots notation. */ - if (hints->ai_flags & AI_NUMERICHOST) { - struct sockaddr_in sin; - - /* check protocol family is PF_UNSPEC or PF_INET */ - if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET) - result.ai_family = AF_INET; - else - return EAI_FAMILY; - - sin.sin_family = result.ai_family; - sin.sin_port = htons (port); - if (inet_pton(result.ai_family, nodename, &sin.sin_addr)==0) - return EAI_NONAME; - sin.sin_addr.s_addr = inet_addr (nodename); - /* Duplicate result and addr and return */ - *res = dup_addrinfo (&result, &sin, sizeof sin); - return (*res == NULL) ? EAI_MEMORY : 0; - } - -#if HAVE_H_ERRNO - h_errno = 0; -#endif - errno = 0; - hp = gethostbyname(nodename); - if (hp == NULL) { -#ifdef EAI_SYSTEM - if (errno != 0) { - return EAI_SYSTEM; - } -#endif - switch (h_errno) { - case HOST_NOT_FOUND: - return EAI_NODATA; - case NO_DATA: - return EAI_NODATA; -#if defined(NO_ADDRESS) && NO_ADDRESS != NO_DATA - case NO_ADDRESS: - return EAI_NODATA; -#endif - case NO_RECOVERY: - return EAI_FAIL; - case TRY_AGAIN: - return EAI_AGAIN; - default: - return EAI_FAIL; - } - return EAI_FAIL; - } - - /* Check that the address family is acceptable. - */ - switch (hp->h_addrtype) { - case AF_INET: - if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)) - return EAI_FAMILY; - break; -#ifndef __OS2__ - case AF_INET6: - if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET6)) - return EAI_FAMILY; - break; -#endif - default: - return EAI_FAMILY; - } - - /* For each element pointed to by hp, create an element in the - result linked list. */ - sai = eai = NULL; - for (addrs = hp->h_addr_list; *addrs != NULL; addrs++) { - struct sockaddr sa; - size_t addrlen; - - if (hp->h_length < 1) - continue; - sa.sa_family = hp->h_addrtype; - switch (hp->h_addrtype) { - case AF_INET: - ((struct sockaddr_in *) &sa)->sin_port = htons (port); - memcpy (&((struct sockaddr_in *) &sa)->sin_addr, - *addrs, hp->h_length); - addrlen = sizeof (struct sockaddr_in); - break; -#ifndef __OS2__ - case AF_INET6: -#if SIN6_LEN - ((struct sockaddr_in6 *) &sa)->sin6_len = hp->h_length; -#endif - ((struct sockaddr_in6 *) &sa)->sin6_port = htons (port); - memcpy (&((struct sockaddr_in6 *) &sa)->sin6_addr, - *addrs, hp->h_length); - addrlen = sizeof (struct sockaddr_in6); - break; -#endif - default: - continue; - } - - result.ai_family = hp->h_addrtype; - ai = dup_addrinfo (&result, &sa, addrlen); - if (ai == NULL) { - freeaddrinfo (sai); - return EAI_MEMORY; - } - if (sai == NULL) - sai = ai; - else - eai->ai_next = ai; - eai = ai; - } - - if (sai == NULL) { - return EAI_NODATA; - } - - if (hints->ai_flags & AI_CANONNAME) { - sai->ai_canonname = malloc (strlen (hp->h_name) + 1); - if (sai->ai_canonname == NULL) { - freeaddrinfo (sai); - return EAI_MEMORY; - } - strcpy (sai->ai_canonname, hp->h_name); - } - - *res = sai; - return 0; -} - -void -freeaddrinfo (struct addrinfo *ai) -{ - struct addrinfo *next; - - while (ai != NULL) { - next = ai->ai_next; - if (ai->ai_canonname != NULL) - free (ai->ai_canonname); - if (ai->ai_addr != NULL) - free (ai->ai_addr); - free (ai); - ai = next; - } -} - -const char * -gai_strerror (int ecode) -{ - static const char *eai_descr[] = { - "no error", - "address family for nodename not supported", /* EAI_ADDRFAMILY */ - "temporary failure in name resolution", /* EAI_AGAIN */ - "invalid value for ai_flags", /* EAI_BADFLAGS */ - "non-recoverable failure in name resolution", /* EAI_FAIL */ - "ai_family not supported", /* EAI_FAMILY */ - "memory allocation failure", /* EAI_MEMORY */ - "no address associated with nodename", /* EAI_NODATA */ - "nodename nor servname provided, or not known", /* EAI_NONAME */ - "servname not supported for ai_socktype", /* EAI_SERVICE */ - "ai_socktype not supported", /* EAI_SOCKTYPE */ - "system error returned in errno", /* EAI_SYSTEM */ - "argument buffer overflow", /* EAI_OVERFLOW */ - }; - - if (ecode < 0 || ecode > (int) (sizeof eai_descr/ sizeof eai_descr[0])) - return "unknown error"; - return eai_descr[ecode]; -} - -#endif /* HAVE_GETADDRINFO */ diff --git a/src/3rdparty/os2/getaddrinfo.h b/src/3rdparty/os2/getaddrinfo.h deleted file mode 100644 index 0a588a40a2..0000000000 --- a/src/3rdparty/os2/getaddrinfo.h +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef _getaddrinfo_h -#define _getaddrinfo_h - -/* - * Shamelessly duplicated from the fetchmail public sources - * for use by the Squid Project under GNU Public License. - * - * Update/Maintenance History: - * - * 15-Aug-2007 : Copied from fetchmail 6.3.8 - * - added protection around libray headers - * - * 16-Aug-2007 : Altered configure checks - * Un-hacked slightly to use system gethostbyname() - * - * Original License and code follows. - */ - -/* - * This file is part of libESMTP, a library for submission of RFC 2822 - * formatted electronic mail messages using the SMTP protocol described - * in RFC 2821. - * - * Copyright (C) 2001,2002 Brian Stafford - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* Structure and prototypes taken from RFC 2553 */ - -/* SG 23/09/2007: -On Windows the following definitions are already available, may be that -this could be needed on some other platform */ -typedef int socklen_t; - -struct addrinfo { - int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ - int ai_family; /* PF_xxx */ - int ai_socktype; /* SOCK_xxx */ - int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ - socklen_t ai_addrlen; /* length of ai_addr */ - char *ai_canonname; /* canonical name for nodename */ - struct sockaddr *ai_addr; /* binary address */ - struct addrinfo *ai_next; /* next structure in linked list */ -}; - -/* Supposed to be defined in */ -#define AI_ADDRCONFIG 0 -#define AI_PASSIVE 1 /* Socket address is intended for `bind'. */ -#define AI_CANONNAME 2 /* Request for canonical name. */ -#define AI_NUMERICHOST 4 /* Don't use name resolution. */ - -/* Supposed to be defined in */ -#define EAI_ADDRFAMILY 1 /* address family for nodename not supported */ -#define EAI_AGAIN 2 /* temporary failure in name resolution */ -#define EAI_BADFLAGS 3 /* invalid value for ai_flags */ -#define EAI_FAIL 4 /* non-recoverable failure in name resolution */ -#define EAI_FAMILY 5 /* ai_family not supported */ -#define EAI_MEMORY 6 /* memory allocation failure */ -#define EAI_NODATA 7 /* no address associated with nodename */ -#define EAI_NONAME 8 /* nodename nor servname provided, or not known */ -#define EAI_SERVICE 9 /* servname not supported for ai_socktype */ -#define EAI_SOCKTYPE 10 /* ai_socktype not supported */ - -#ifndef EAI_SYSTEM -/* Not defined on mingw32. */ -#define EAI_SYSTEM 11 /* System error returned in `errno'. */ -#endif -#ifndef EAI_OVERFLOW -/* Not defined on mingw32. */ -#define EAI_OVERFLOW 12 /* Argument buffer overflow. */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif -/* RFC 2553 / Posix resolver */ -int getaddrinfo (const char *nodename, const char *servname, - const struct addrinfo *hints, struct addrinfo **res); -/* Free addrinfo structure and associated storage */ -void freeaddrinfo (struct addrinfo *ai); - -/* Convert error return from getaddrinfo() to string */ -const char *gai_strerror (int code); -#ifdef __cplusplus -} -#endif - -#endif /* _getaddrinfo_h */ diff --git a/src/3rdparty/os2/getnameinfo.c b/src/3rdparty/os2/getnameinfo.c deleted file mode 100644 index 14fd89ef15..0000000000 --- a/src/3rdparty/os2/getnameinfo.c +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Issues to be discussed: - * - RFC2553 says that we should raise error on short buffer. X/Open says - * we need to truncate the result. We obey RFC2553 (and X/Open should be - * modified). ipngwg rough consensus seems to follow RFC2553. RFC3493 says - * nothing about it, but defines a new error code EAI_OVERFLOW which seems - * to be intended the code for this case. - * - What is "local" in NI_NOFQDN? (see comments in the code) - * - NI_NAMEREQD and NI_NUMERICHOST conflict with each other. - * - (KAME extension) always attach textual scopeid (fe80::1%lo0), if - * sin6_scope_id is filled - standardization status? - * - what should we do if we should do getservbyport("sctp")? - */ - -/* - * Considerations about thread-safeness - * The code in this file is thread-safe, and so the thread-safeness of - * getnameinfo() depends on the property of backend functions. - * - getservbyport() is not thread safe for most systems we are targeting. - * - getipnodebyaddr() is thread safe. However, many resolver libraries - * used in the function are not thread safe. - * - gethostbyaddr() is usually not thread safe. - */ - -#if !HAVE_GETNAMEINFO - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "getaddrinfo.h" -#include "getnameinfo.h" - -static const struct afd { - int a_af; - int a_addrlen; - int a_socklen; - int a_off; - int a_portoff; -} afdl [] = { -#if INET6 - {PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6), - offsetof(struct sockaddr_in6, sin6_addr), - offsetof(struct sockaddr_in6, sin6_port)}, -#endif - {PF_INET, sizeof(struct in_addr), sizeof(struct sockaddr_in), - offsetof(struct sockaddr_in, sin_addr), - offsetof(struct sockaddr_in, sin_port)}, - {0, 0, 0, 0, 0}, -}; - -#if INET6 -static int ip6_parsenumeric __P((const struct sockaddr *, const char *, char *, - size_t, int)); -static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int)); -#endif - -int -getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) -const struct sockaddr *sa; -socklen_t salen; -char *host; -size_t hostlen; -char *serv; -size_t servlen; -int flags; -{ - const struct afd *afd; - struct servent *sp; - struct hostent *hp; - unsigned short port; - int family, i; - const char *addr; - uint32_t v4a; - char numserv[512]; - - if (sa == NULL) - return EAI_FAIL; - -#if HAVE_SA_LEN /*XXX*/ - if (sa->sa_len != salen) - return EAI_FAIL; -#endif - - family = sa->sa_family; - for (i = 0; afdl[i].a_af; i++) - if (afdl[i].a_af == family) { - afd = &afdl[i]; - goto found; - } - return EAI_FAMILY; - -found: - if (salen != afd->a_socklen) - return EAI_FAIL; - - /* network byte order */ - memcpy(&port, (const char *)sa + afd->a_portoff, sizeof(port)); - addr = (const char *)sa + afd->a_off; - - if (serv == NULL || servlen == 0) { - /* - * do nothing in this case. - * in case you are wondering if "&&" is more correct than - * "||" here: RFC3493 says that serv == NULL OR servlen == 0 - * means that the caller does not want the result. - */ - } else { - if (flags & NI_NUMERICSERV) - sp = NULL; - else { - sp = getservbyport(port, - (flags & NI_DGRAM) ? "udp" : "tcp"); - } - if (sp) { - if (strlen(sp->s_name) + 1 > servlen) - return EAI_OVERFLOW; - strncpy(serv, sp->s_name, servlen); - } else { - snprintf(numserv, sizeof(numserv), "%u", ntohs(port)); - if (strlen(numserv) + 1 > servlen) - return EAI_OVERFLOW; - strncpy(serv, numserv, servlen); - } - } - - switch (sa->sa_family) { - case AF_INET: - v4a = (uint32_t) - ntohl(((const struct sockaddr_in *)sa)->sin_addr.s_addr); - if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a)) - flags |= NI_NUMERICHOST; - v4a >>= IN_CLASSA_NSHIFT; - if (v4a == 0) - flags |= NI_NUMERICHOST; - break; -#if INET6 - case AF_INET6: { - const struct sockaddr_in6 *sin6; - sin6 = (const struct sockaddr_in6 *)sa; - switch (sin6->sin6_addr.s6_addr[0]) { - case 0x00: - if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) - ; - else if (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr)) - ; - else - flags |= NI_NUMERICHOST; - break; - default: - if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) - flags |= NI_NUMERICHOST; - else if (IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) - flags |= NI_NUMERICHOST; - break; - } - } - break; -#endif - } - if (host == NULL || hostlen == 0) { - /* - * do nothing in this case. - * in case you are wondering if "&&" is more correct than - * "||" here: RFC3493 says that host == NULL or hostlen == 0 - * means that the caller does not want the result. - */ - } else if (flags & NI_NUMERICHOST) { - /* NUMERICHOST and NAMEREQD conflicts with each other */ - if (flags & NI_NAMEREQD) - return EAI_NONAME; - - goto numeric; - } else { -#if USE_GETIPNODEBY - int h_error = 0; - hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error); -#else - hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af); -#if 0 // getnameinfo.c:161:9: error: variable 'h_error' set but not used -#if HAVE_H_ERRNO - h_error = h_errno; -#else - h_error = EINVAL; -#endif -#endif /* 0 */ -#endif - - if (hp) { -#if 0 - if (flags & NI_NOFQDN) { - /* - * According to RFC3493 section 6.2, NI_NOFQDN - * means "node name portion of the FQDN shall - * be returned for local hosts." The following - * code tries to implement it by returning the - * first label (the part before the first - * period) of the FQDN. However, it is not - * clear if this always makes sense, since the - * given address may be outside of "local - * hosts." Due to the unclear description, we - * disable the code in this implementation. - */ - char *p; - p = strchr(hp->h_name, '.'); - if (p) - *p = '\0'; - } -#endif - if (strlen(hp->h_name) + 1 > hostlen) { -#if USE_GETIPNODEBY - freehostent(hp); -#endif - return EAI_OVERFLOW; - } - strncpy(host, hp->h_name, hostlen); -#if USE_GETIPNODEBY - freehostent(hp); -#endif - } else { - if (flags & NI_NAMEREQD) - return EAI_NONAME; - -numeric: - switch (afd->a_af) { -#if INET6 - case AF_INET6: { - int error; - - if ((error = ip6_parsenumeric(sa, addr, host, - hostlen, - flags)) != 0) - return(error); - break; - } -#endif - default: - if (inet_ntop(afd->a_af, addr, host, - hostlen) == NULL) - return EAI_SYSTEM; - break; - } - } - } - return(0); -} - -#if INET6 -static int -ip6_parsenumeric(sa, addr, host, hostlen, flags) -const struct sockaddr *sa; -const char *addr; -char *host; -size_t hostlen; -int flags; -{ - int numaddrlen; - char numaddr[512]; - - if (inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr)) == NULL) - return EAI_SYSTEM; - - numaddrlen = strlen(numaddr); - if (numaddrlen + 1 > hostlen) /* don't forget terminator */ - return EAI_OVERFLOW; - strncpy(host, numaddr, hostlen); - - if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) { - char zonebuf[SQUIDHOSTNAMELEN]; - int zonelen; - - zonelen = ip6_sa2str( - (const struct sockaddr_in6 *)(const void *)sa, - zonebuf, sizeof(zonebuf), flags); - if (zonelen < 0) - return EAI_OVERFLOW; - if (zonelen + 1 + numaddrlen + 1 > hostlen) - return EAI_OVERFLOW; - - /* construct */ - memcpy(host + numaddrlen + 1, zonebuf, - (size_t)zonelen); - host[numaddrlen] = SCOPE_DELIMITER; - host[numaddrlen + 1 + zonelen] = '\0'; - } - - return 0; -} - -/* ARGSUSED */ -static int -ip6_sa2str(sa6, buf, bufsiz, flags) -const struct sockaddr_in6 *sa6; -char *buf; -size_t bufsiz; -int flags; -{ - unsigned int ifindex; - const struct in6_addr *a6; - int n; - - ifindex = (unsigned int)sa6->sin6_scope_id; - a6 = &sa6->sin6_addr; - -#if NI_NUMERICSCOPE - if ((flags & NI_NUMERICSCOPE) != 0) { - n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id); - if (n < 0 || n >= bufsiz) - return -1; - else - return n; - } -#endif - - /* if_indextoname() does not take buffer size. not a good api... */ - if ((IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6) || - IN6_IS_ADDR_MC_NODELOCAL(a6)) && bufsiz >= IF_NAMESIZE) { - char *p = if_indextoname(ifindex, buf); - if (p) - return (strlen(p)); - } - - /* last resort */ - n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id); - if (n < 0 || n >= bufsiz) - return -1; - else - return n; -} -#endif /* INET6 */ -#endif diff --git a/src/3rdparty/os2/getnameinfo.h b/src/3rdparty/os2/getnameinfo.h deleted file mode 100644 index c1861aa033..0000000000 --- a/src/3rdparty/os2/getnameinfo.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef _getnameinfo_h -#define _getnameinfo_h -/* - * Reconstructed from KAME getnameinfo.c (in lib/) - */ - - /* getnameinfo flags */ -#define NI_NOFQDN 0x0001 -#define NI_NUMERICHOST 0x0002 /* return numeric form of address */ -#define NI_NAMEREQD 0x0004 /* request DNS name */ -#define NI_NUMERICSERV 0x0008 -#define NI_DGRAM 0x0010 - -#ifdef __cplusplus -extern "C" { -#endif -/* RFC 2553 / Posix resolver */ -int getnameinfo(const struct sockaddr *sa, - socklen_t salen, - char *host, - size_t hostlen, - char *serv, - size_t servlen, - int flags ); -#ifdef __cplusplus -} -#endif - -#endif /* _getnameinfo_h */ diff --git a/src/cpu.cpp b/src/cpu.cpp index d95c704e2a..e9b875015d 100644 --- a/src/cpu.cpp +++ b/src/cpu.cpp @@ -32,13 +32,6 @@ uint64 ottd_rdtsc() #define RDTSC_AVAILABLE #endif -/* rdtsc for OS/2. Hopefully this works, who knows */ -#if defined (__WATCOMC__) && !defined(RDTSC_AVAILABLE) -unsigned __int64 ottd_rdtsc(); -# pragma aux ottd_rdtsc = 0x0F 0x31 value [edx eax] parm nomemory modify exact [edx eax] nomemory; -# define RDTSC_AVAILABLE -#endif - /* rdtsc for all other *nix-en (hopefully). Use GCC syntax */ #if (defined(__i386__) || defined(__x86_64__)) && !defined(RDTSC_AVAILABLE) uint64 ottd_rdtsc() diff --git a/src/crashlog.cpp b/src/crashlog.cpp index 141b2bb67e..8be9bc134c 100644 --- a/src/crashlog.cpp +++ b/src/crashlog.cpp @@ -88,8 +88,6 @@ void CrashLog::LogCompiler(std::back_insert_iterator &output_iterat "ICC {}", __ICC #elif defined(__GNUC__) "GCC {}.{}.{}", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ -#elif defined(__WATCOMC__) - "WatcomC {}", __WATCOMC__ #else "" #endif diff --git a/src/fileio.cpp b/src/fileio.cpp index 0461b27a13..7e69db0316 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -347,8 +347,6 @@ void FioCreateDirectory(const std::string &name) * of the time they are 'directory already exists' errors anyhow. */ #if defined(_WIN32) CreateDirectory(OTTD2FS(name).c_str(), nullptr); -#elif defined(OS2) && !defined(__INNOTEK_LIBC__) - mkdir(OTTD2FS(name).c_str()); #else mkdir(OTTD2FS(name).c_str(), 0755); #endif @@ -724,7 +722,7 @@ bool ExtractTar(const std::string &tar_filename, Subdirectory subdir) /** * Determine the base (personal dir and game data dir) paths * @param exe the path from the current path to the executable - * @note defined in the OS related files (os2.cpp, win32.cpp, unix.cpp etc) + * @note defined in the OS related files (win32.cpp, unix.cpp etc) */ extern void DetermineBasePaths(const char *exe); #else /* defined(_WIN32) */ @@ -846,7 +844,7 @@ void DetermineBasePaths(const char *exe) } #endif -#if defined(OS2) || !defined(WITH_PERSONAL_DIR) +#if !defined(WITH_PERSONAL_DIR) _searchpaths[SP_PERSONAL_DIR].clear(); #else if (!homedir.empty()) { diff --git a/src/fios.cpp b/src/fios.cpp index 0388e6ecae..20f923804f 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -34,7 +34,7 @@ static std::string *_fios_path = nullptr; SortingBits _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING; -/* OS-specific functions are taken from their respective files (win32/unix/os2 .c) */ +/* OS-specific functions are taken from their respective files (win32/unix .c) */ extern bool FiosIsRoot(const std::string &path); extern bool FiosIsValidFile(const std::string &path, const struct dirent *ent, struct stat *sb); extern bool FiosIsHiddenFile(const struct dirent *ent); @@ -143,7 +143,7 @@ bool FiosBrowseTo(const FiosItem *item) { switch (item->type) { case FIOS_TYPE_DRIVE: -#if defined(_WIN32) || defined(__OS2__) +#if defined(_WIN32) assert(_fios_path != nullptr); *_fios_path = std::string{ item->title, 0, 1 } + ":" PATHSEP; #endif diff --git a/src/music/CMakeLists.txt b/src/music/CMakeLists.txt index 8f87a9c936..54105bd3cb 100644 --- a/src/music/CMakeLists.txt +++ b/src/music/CMakeLists.txt @@ -36,12 +36,6 @@ if(NOT OPTION_DEDICATED) bemidi.h CONDITION HAIKU ) - - add_files( - os2_m.cpp - os2_m.h - CONDITION OPTION_OS2 - ) endif() add_files( diff --git a/src/music/os2_m.cpp b/src/music/os2_m.cpp deleted file mode 100644 index 1c898138ad..0000000000 --- a/src/music/os2_m.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file os2_m.cpp Music playback on OS/2. */ - -#include "../stdafx.h" -#include "../openttd.h" -#include "os2_m.h" -#include "midifile.hpp" -#include "../base_media_base.h" -#include "../3rdparty/fmt/format.h" - -#define INCL_DOS -#define INCL_OS2MM -#define INCL_WIN - -#include -#include - -#include "../safeguards.h" - -/********************** - * OS/2 MIDI PLAYER - **********************/ - -/* Interesting how similar the MCI API in OS/2 is to the Win32 MCI API, - * eh? Anyone would think they both came from the same place originally! ;) - */ - -/** - * Send a midi command. - * @param cmd The command to send. - * @return The result of sending it. - */ -static long CDECL MidiSendCommand(const std::string_view cmd) -{ - return mciSendString(cmd.data(), nullptr, 0, nullptr, 0); -} - -/** OS/2's music player's factory. */ -static FMusicDriver_OS2 iFMusicDriver_OS2; - -void MusicDriver_OS2::PlaySong(const MusicSongInfo &song) -{ - std::string filename = MidiFile::GetSMFFile(song); - - MidiSendCommand("close all"); - if (filename.empty()) return; - - if (MidiSendCommand(fmt::format("open {} type sequencer alias song", filename)) != 0) { - return; - } - - MidiSendCommand("play song from 0"); -} - -void MusicDriver_OS2::StopSong() -{ - MidiSendCommand("close all"); -} - -void MusicDriver_OS2::SetVolume(byte vol) -{ - MidiSendCommand("set song audio volume %d", ((vol/127)*100)); -} - -bool MusicDriver_OS2::IsSongPlaying() -{ - char buf[16]; - mciSendString("status song mode", buf, sizeof(buf), nullptr, 0); - return strcmp(buf, "playing") == 0 || strcmp(buf, "seeking") == 0; -} - -const char *MusicDriver_OS2::Start(const StringList &parm) -{ - return 0; -} - -void MusicDriver_OS2::Stop() -{ - MidiSendCommand("close all"); -} diff --git a/src/music/os2_m.h b/src/music/os2_m.h deleted file mode 100644 index a60f5bbfc7..0000000000 --- a/src/music/os2_m.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file os2_m.h Base for OS2 music playback. */ - -#ifndef MUSIC_OS2_H -#define MUSIC_OS2_H - -#include "music_driver.hpp" - -/** OS/2's music player. */ -class MusicDriver_OS2 : public MusicDriver { -public: - const char *Start(const StringList ¶m) override; - - void Stop() override; - - void PlaySong(const MusicSongInfo &song) override; - - void StopSong() override; - - bool IsSongPlaying() override; - - void SetVolume(byte vol) override; - const char *GetName() const override { return "os2"; } -}; - -/** Factory for OS/2's music player. */ -class FMusicDriver_OS2 : public DriverFactoryBase { -public: - FMusicDriver_OS2() : DriverFactoryBase(Driver::DT_MUSIC, 10, "os2", "OS/2 Music Driver") {} - Driver *CreateInstance() const override { return new MusicDriver_OS2(); } -}; - -#endif /* MUSIC_OS2_H */ diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index 313a725c55..478aab3ad0 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -316,13 +316,11 @@ static SOCKET ListenLoopProc(addrinfo *runp) Debug(net, 0, "Setting reuse-address mode failed: {}", NetworkError::GetLast().AsString()); } -#ifndef __OS2__ int on = 1; if (runp->ai_family == AF_INET6 && setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)&on, sizeof(on)) == -1) { Debug(net, 3, "Could not disable IPv4 over IPv6: {}", NetworkError::GetLast().AsString()); } -#endif if (bind(sock, runp->ai_addr, (int)runp->ai_addrlen) != 0) { Debug(net, 0, "Could not bind socket on {}: {}", address, NetworkError::GetLast().AsString()); diff --git a/src/network/core/os_abstraction.cpp b/src/network/core/os_abstraction.cpp index 9fcb9bf7fd..74dbc2fe4b 100644 --- a/src/network/core/os_abstraction.cpp +++ b/src/network/core/os_abstraction.cpp @@ -118,8 +118,6 @@ bool NetworkError::HasError() const { #if defined(_WIN32) return NetworkError(WSAGetLastError()); -#elif defined(__OS2__) - return NetworkError(sock_errno()); #else return NetworkError(errno); #endif diff --git a/src/network/core/os_abstraction.h b/src/network/core/os_abstraction.h index 6bb6101a17..461ada2b12 100644 --- a/src/network/core/os_abstraction.h +++ b/src/network/core/os_abstraction.h @@ -60,7 +60,7 @@ typedef unsigned long in_addr_t; #endif /* _WIN32 */ /* UNIX stuff */ -#if defined(UNIX) && !defined(__OS2__) +#if defined(UNIX) # if defined(OPENBSD) || defined(__NetBSD__) # define AI_ADDRCONFIG 0 # endif @@ -79,7 +79,7 @@ typedef unsigned long in_addr_t; # include # include /* According to glibc/NEWS, appeared in glibc-2.3. */ -# if !defined(__sgi__) && !defined(SUNOS) && !defined(__INNOTEK_LIBC__) \ +# if !defined(__sgi__) && !defined(SUNOS) \ && !(defined(__GLIBC__) && (__GLIBC__ <= 2) && (__GLIBC_MINOR__ <= 2)) && !defined(__dietlibc__) && !defined(HPUX) /* If for any reason ifaddrs.h does not exist on your system, comment out * the following two lines and an alternative way will be used to fetch @@ -117,60 +117,6 @@ typedef unsigned long in_addr_t; #endif /* UNIX */ -/* OS/2 stuff */ -#if defined(__OS2__) -# define SOCKET int -# define INVALID_SOCKET -1 -# define closesocket close - -/* Includes needed for OS/2 systems */ -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# define INADDR_NONE 0xffffffff -# include "../../3rdparty/os2/getaddrinfo.h" -# include "../../3rdparty/os2/getnameinfo.h" - -#define IPV6_V6ONLY 27 - -/* - * IPv6 address - */ -struct in6_addr { - union { - uint8_t __u6_addr8[16]; - uint16_t __u6_addr16[8]; - uint32_t __u6_addr32[4]; - } __u6_addr; /* 128-bit IP6 address */ -}; - -#define s6_addr __u6_addr.__u6_addr8 - -struct sockaddr_in6 { - uint8_t sin6_len; /* length of this struct */ - sa_family_t sin6_family; /* AF_INET6 */ - in_port_t sin6_port; /* Transport layer port # */ - uint32_t sin6_flowinfo; /* IP6 flow information */ - struct in6_addr sin6_addr; /* IP6 address */ - uint32_t sin6_scope_id; /* scope zone index */ -}; - -typedef int socklen_t; -#if !defined(__INNOTEK_LIBC__) -typedef unsigned long in_addr_t; -#endif /* __INNOTEK_LIBC__ */ - -#endif /* OS/2 */ - #ifdef __EMSCRIPTEN__ /** * Emscripten doesn't set 'addrlen' for accept(), getsockname(), getpeername() diff --git a/src/os/CMakeLists.txt b/src/os/CMakeLists.txt index e302c448b5..0ec182dfcb 100644 --- a/src/os/CMakeLists.txt +++ b/src/os/CMakeLists.txt @@ -1,4 +1,3 @@ add_subdirectory(macosx) -add_subdirectory(os2) add_subdirectory(unix) add_subdirectory(windows) diff --git a/src/os/os2/CMakeLists.txt b/src/os/os2/CMakeLists.txt deleted file mode 100644 index 141dd98043..0000000000 --- a/src/os/os2/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -add_files( - os2.cpp - CONDITION OPTION_OS2 -) - -if(OPTION_OS2) - target_sources(openttd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/os2_main.cpp) -endif() diff --git a/src/os/os2/os2.cpp b/src/os/os2/os2.cpp deleted file mode 100644 index ae49d8633a..0000000000 --- a/src/os/os2/os2.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file os2.cpp OS2 related OS support. */ - -#include "../../stdafx.h" -#include "../../openttd.h" -#include "../../gui.h" -#include "../../fileio_func.h" -#include "../../fios.h" -#include "../../string_func.h" -#include "../../textbuf_gui.h" -#include "../../thread.h" - -#include "table/strings.h" - -#include -#include -#include -#include -#ifndef __INNOTEK_LIBC__ -# include -#endif - -#include "../../safeguards.h" - -#define INCL_WIN -#define INCL_WINCLIPBOARD - -#include -#ifndef __INNOTEK_LIBC__ -# include -#endif - -bool FiosIsRoot(const std::string &file) -{ - return file.size() == 3; // C:\... -} - -void FiosGetDrives(FileList &file_list) -{ - uint disk, disk2, save, total; - -#ifndef __INNOTEK_LIBC__ - _dos_getdrive(&save); // save original drive -#else - save = _getdrive(); // save original drive - char wd[MAX_PATH]; - getcwd(wd, MAX_PATH); - total = 'z'; -#endif - - /* get an available drive letter */ -#ifndef __INNOTEK_LIBC__ - for (disk = 1;; disk++) { - _dos_setdrive(disk, &total); -#else - for (disk = 'A';; disk++) { - _chdrive(disk); -#endif - if (disk >= total) break; - -#ifndef __INNOTEK_LIBC__ - _dos_getdrive(&disk2); -#else - disk2 = _getdrive(); -#endif - - if (disk == disk2) { - FiosItem *fios = file_list.Append(); - fios->type = FIOS_TYPE_DRIVE; - fios->mtime = 0; -#ifndef __INNOTEK_LIBC__ - fios->name += 'A' + disk - 1; -#else - fios->name += (char)disk; -#endif - fios->name += ':'; - fios->title = fios->name; - } - } - - /* Restore the original drive */ -#ifndef __INNOTEK_LIBC__ - _dos_setdrive(save, &total); -#else - chdir(wd); -#endif -} - -std::optional FiosGetDiskFreeSpace(const std::string &path) -{ -#ifndef __INNOTEK_LIBC__ - struct diskfree_t free; - char drive = path[0] - 'A' + 1; - - if (_getdiskfree(drive, &free) == 0) { - return free.avail_clusters * free.sectors_per_cluster * free.bytes_per_sector; - } -#elif defined(HAS_STATVFS) - struct statvfs s; - - if (statvfs(path.c_str(), &s) == 0) return static_cast(s.f_frsize) * s.f_bavail; -#endif - return std::nullopt; -} - -bool FiosIsValidFile(const std::string &path, const struct dirent *ent, struct stat *sb) -{ - std::string filename = fmt::format("{}" PATHSEP "{}", path, ent->d_name); - return stat(filename.c_str(), sb) == 0; -} - -bool FiosIsHiddenFile(const struct dirent *ent) -{ - return ent->d_name[0] == '.'; -} - -void ShowInfoI(const std::string &str) -{ - HAB hab; - HMQ hmq; - ULONG rc; - - /* init PM env. */ - hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0); - - /* display the box */ - rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, (const unsigned char *)str.c_str(), (const unsigned char *)"OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_INFORMATION); - - /* terminate PM env. */ - WinDestroyMsgQueue(hmq); - WinTerminate(hab); -} - -void ShowOSErrorBox(const char *buf, bool system) -{ - HAB hab; - HMQ hmq; - ULONG rc; - - /* init PM env. */ - hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0); - - /* display the box */ - rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, (const unsigned char *)buf, (const unsigned char *)"OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_ERROR); - - /* terminate PM env. */ - WinDestroyMsgQueue(hmq); - WinTerminate(hab); -} - -std::optional GetClipboardContents() -{ -/* XXX -- Currently no clipboard support implemented with GCC */ -#ifndef __INNOTEK_LIBC__ - HAB hab = 0; - - if (WinOpenClipbrd(hab)) { - const char *text = (const char *)WinQueryClipbrdData(hab, CF_TEXT); - - if (text != nullptr) { - std::string result = text; - WinCloseClipbrd(hab); - return result; - } - - WinCloseClipbrd(hab); - } -#endif - return std::nullopt; -} - - -void OSOpenBrowser(const char *url) -{ - // stub only - Debug(misc, 0, "Failed to open url: {}", url); -} - -void SetCurrentThreadName(const char *) -{ -} diff --git a/src/os/os2/os2_main.cpp b/src/os/os2/os2_main.cpp deleted file mode 100644 index 9f903e3868..0000000000 --- a/src/os/os2/os2_main.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . - */ - -/** @file os2_main.cpp Main entry for OS/2. */ - -#include "../../stdafx.h" -#include "../../openttd.h" -#include "../../core/random_func.hpp" -#include "../../string_func.h" - -#include - -#include "../../safeguards.h" - -int CDECL main(int argc, char *argv[]) -{ - SetRandomSeed(time(nullptr)); - - /* Make sure our arguments contain only valid UTF-8 characters. */ - for (int i = 0; i < argc; i++) StrMakeValidInPlace(argv[i]); - - return openttd_main(argc, argv); -} diff --git a/src/os/unix/CMakeLists.txt b/src/os/unix/CMakeLists.txt index acdc73831f..1e8bb5d63d 100644 --- a/src/os/unix/CMakeLists.txt +++ b/src/os/unix/CMakeLists.txt @@ -1,12 +1,12 @@ add_files( crashlog_unix.cpp survey_unix.cpp - CONDITION UNIX AND NOT APPLE AND NOT OPTION_OS2 + CONDITION UNIX AND NOT APPLE ) add_files( unix.cpp - CONDITION UNIX AND NOT OPTION_OS2 + CONDITION UNIX ) add_files( @@ -14,6 +14,6 @@ add_files( CONDITION Fontconfig_FOUND ) -if(UNIX AND NOT APPLE AND NOT OPTION_OS2) +if(UNIX AND NOT APPLE) target_sources(openttd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/unix_main.cpp) endif() diff --git a/src/stdafx.h b/src/stdafx.h index ea90c310b0..b249d97e08 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -121,14 +121,6 @@ # define NODISCARD [[nodiscard]] #endif -#if defined(__WATCOMC__) -# define NORETURN -# define CDECL -# define FINAL -# define FALLTHROUGH -# include -#endif /* __WATCOMC__ */ - #if defined(_WIN32) # define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #endif @@ -236,7 +228,7 @@ # endif /* _WIN32 or WITH_ICONV */ #endif /* STRGEN || SETTINGSGEN */ -#if defined(_WIN32) || defined(__OS2__) && !defined(__INNOTEK_LIBC__) +#if defined(_WIN32) # define PATHSEP "\\" # define PATHSEPCHAR '\\' #else @@ -244,7 +236,7 @@ # define PATHSEPCHAR '/' #endif -#if defined(_MSC_VER) || defined(__WATCOMC__) +#if defined(_MSC_VER) # define PACK_N(type_dec, n) __pragma(pack(push, n)) type_dec; __pragma(pack(pop)) #elif defined(__MINGW32__) # define PRAGMA(x) _Pragma(#x) diff --git a/src/video/dedicated_v.cpp b/src/video/dedicated_v.cpp index bfd15425f8..4b492c7019 100644 --- a/src/video/dedicated_v.cpp +++ b/src/video/dedicated_v.cpp @@ -25,33 +25,6 @@ #include "../window_func.h" #include "dedicated_v.h" -#ifdef __OS2__ -# include /* gettimeofday */ -# include -# include -# include - -# define INCL_DOS -# include - -# define STDIN 0 /* file descriptor for standard input */ - -/** - * Switches OpenTTD to a console app at run-time, instead of a PM app - * Necessary to see stdout, etc. - */ -static void OS2_SwitchToConsoleMode() -{ - PPIB pib; - PTIB tib; - - DosGetInfoBlocks(&tib, &pib); - - /* Change flag from PM to VIO */ - pib->pib_ultype = 3; -} -#endif - #if defined(UNIX) # include /* gettimeofday */ # include @@ -160,11 +133,6 @@ const char *VideoDriver_Dedicated::Start(const StringList &parm) _set_error_mode(_OUT_TO_STDERR); #endif -#ifdef __OS2__ - /* For OS/2 we also need to switch to console mode instead of PM mode */ - OS2_SwitchToConsoleMode(); -#endif - Debug(driver, 1, "Loading dedicated server"); return nullptr; } @@ -181,7 +149,7 @@ void VideoDriver_Dedicated::MakeDirty(int left, int top, int width, int height) bool VideoDriver_Dedicated::ChangeResolution(int w, int h) { return false; } bool VideoDriver_Dedicated::ToggleFullscreen(bool fs) { return false; } -#if defined(UNIX) || defined(__OS2__) +#if defined(UNIX) static bool InputWaiting() { struct timeval tv; @@ -214,7 +182,7 @@ static void DedicatedHandleKeyInput() if (_exit_game) return; -#if defined(UNIX) || defined(__OS2__) +#if defined(UNIX) if (fgets(input_line, lengthof(input_line), stdin) == nullptr) return; #else /* Handle console input, and signal console thread, it can accept input again */ diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp index d33ac77a65..af3571314f 100644 --- a/src/video/sdl_v.cpp +++ b/src/video/sdl_v.cpp @@ -446,7 +446,7 @@ static uint ConvertSdlKeyIntoMy(SDL_keysym *sym, WChar *character) } /* check scancode for BACKQUOTE key, because we want the key left of "1", not anything else (on non-US keyboards) */ -#if defined(_WIN32) || defined(__OS2__) +#if defined(_WIN32) if (sym->scancode == 41) key = WKC_BACKQUOTE; #elif defined(__APPLE__) if (sym->scancode == 10) key = WKC_BACKQUOTE; From fc2510e2ba6a7114d9fd035aba44ee146e343b00 Mon Sep 17 00:00:00 2001 From: PeterN Date: Fri, 16 Jun 2023 17:04:46 +0100 Subject: [PATCH 062/123] Codechange: Use std::vector for midifile's ByteBuffer. (#11019) --- src/music/midifile.cpp | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/src/music/midifile.cpp b/src/music/midifile.cpp index 060f5393e4..6f849247c0 100644 --- a/src/music/midifile.cpp +++ b/src/music/midifile.cpp @@ -60,8 +60,7 @@ const byte *MidiGetStandardSysexMessage(MidiSysexMessage msg, size_t &length) * RAII-compliant to make teardown in error situations easier. */ class ByteBuffer { - byte *buf; - size_t buflen; + std::vector buf; size_t pos; public: /** @@ -73,31 +72,22 @@ public: */ ByteBuffer(FILE *file, size_t len) { - this->buf = MallocT(len); - if (fread(this->buf, 1, len, file) == len) { - this->buflen = len; + this->buf.resize(len); + if (fread(this->buf.data(), 1, len, file) == len) { this->pos = 0; } else { /* invalid state */ - this->buflen = 0; + this->buf.clear(); } } - /** - * Destructor, frees the buffer. - */ - ~ByteBuffer() - { - free(this->buf); - } - /** * Return whether the buffer was constructed successfully. * @return true is the buffer contains data */ bool IsValid() const { - return this->buflen > 0; + return this->buf.size() > 0; } /** @@ -106,7 +96,7 @@ public: */ bool IsEnd() const { - return this->pos >= this->buflen; + return this->pos >= this->buf.size(); } /** @@ -149,8 +139,8 @@ public: bool ReadBuffer(byte *dest, size_t length) { if (this->IsEnd()) return false; - if (this->buflen - this->pos < length) return false; - memcpy(dest, this->buf + this->pos, length); + if (this->buf.size() - this->pos < length) return false; + std::copy(std::begin(this->buf) + this->pos, std::begin(this->buf) + this->pos + length, dest); this->pos += length; return true; } @@ -164,8 +154,8 @@ public: bool ReadDataBlock(MidiFile::DataBlock *dest, size_t length) { if (this->IsEnd()) return false; - if (this->buflen - this->pos < length) return false; - dest->data.insert(dest->data.end(), this->buf + this->pos, this->buf + this->pos + length); + if (this->buf.size() - this->pos < length) return false; + dest->data.insert(dest->data.end(), std::begin(this->buf) + this->pos, std::begin(this->buf) + this->pos + length); this->pos += length; return true; } @@ -178,7 +168,7 @@ public: bool Skip(size_t count) { if (this->IsEnd()) return false; - if (this->buflen - this->pos < count) return false; + if (this->buf.size() - this->pos < count) return false; this->pos += count; return true; } From ed06c6bdcffaea357b84b6f80d6a83457173a361 Mon Sep 17 00:00:00 2001 From: PeterN Date: Fri, 16 Jun 2023 19:40:24 +0100 Subject: [PATCH 063/123] Codechange: Use vector when migrating old savegame orders. (#11020) --- src/saveload/order_sl.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/saveload/order_sl.cpp b/src/saveload/order_sl.cpp index 9ec0d0e256..e94026dfc9 100644 --- a/src/saveload/order_sl.cpp +++ b/src/saveload/order_sl.cpp @@ -143,27 +143,23 @@ struct ORDRChunkHandler : ChunkHandler { /* Pre-version 5 had another layout for orders * (uint16 instead of uint32) */ len /= sizeof(uint16); - uint16 *orders = MallocT(len + 1); + std::vector orders(len); - SlCopy(orders, len, SLE_UINT16); + SlCopy(&orders[0], len, SLE_UINT16); for (size_t i = 0; i < len; ++i) { Order *o = new (i) Order(); o->AssignOrder(UnpackVersion4Order(orders[i])); } - - free(orders); } else if (IsSavegameVersionBefore(SLV_5, 2)) { len /= sizeof(uint32); - uint32 *orders = MallocT(len + 1); + std::vector orders(len); - SlCopy(orders, len, SLE_UINT32); + SlCopy(&orders[0], len, SLE_UINT32); for (size_t i = 0; i < len; ++i) { new (i) Order(orders[i]); } - - free(orders); } /* Update all the next pointer */ From ee8b03e8da5867c52473367d4a9f5ae80e5dae0e Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Fri, 16 Jun 2023 19:41:26 +0100 Subject: [PATCH 064/123] Fix: Crash when failing to load a game into a dedicated server at startup (#11021) Using the -g switch --- src/openttd.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openttd.cpp b/src/openttd.cpp index 22c4f96cdf..973ed8e16d 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -1511,6 +1511,7 @@ void GameLoop() if (_switch_mode != SM_NONE && !HasModalProgress()) { SwitchToMode(_switch_mode); _switch_mode = SM_NONE; + if (_exit_game) return; } IncreaseSpriteLRU(); From ac0c932ce7d460c14684dfa852f93a5a5672e555 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sat, 17 Jun 2023 08:50:49 +0200 Subject: [PATCH 065/123] Codechange: use SetDParam to set measurement tooltip parameters --- src/viewport.cpp | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/src/viewport.cpp b/src/viewport.cpp index 30f69ba7c7..0eaa5c8e3b 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -2640,13 +2640,11 @@ void UpdateTileSelection() * Displays the measurement tooltips when selecting multiple tiles * @param str String to be displayed * @param paramcount number of params to deal with - * @param params (optional) up to 5 pieces of additional information that may be added to a tooltip - * @param close_cond Condition for closing this tooltip. */ -static inline void ShowMeasurementTooltips(StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_cond = TCC_EXIT_VIEWPORT) +static inline void ShowMeasurementTooltips(StringID str, uint paramcount) { if (!_settings_client.gui.measure_tooltip) return; - GuiShowTooltips(_thd.GetCallbackWnd(), str, paramcount, params, close_cond); + GuiShowTooltips(_thd.GetCallbackWnd(), str, paramcount, nullptr, TCC_EXIT_VIEWPORT); } static void HideMeasurementTooltips() @@ -2722,7 +2720,8 @@ void VpSetPresizeRange(TileIndex from, TileIndex to) /* show measurement only if there is any length to speak of */ if (distance > 1) { - ShowMeasurementTooltips(STR_MEASURE_LENGTH, 1, &distance); + SetDParam(0, distance); + ShowMeasurementTooltips(STR_MEASURE_LENGTH, 1); } else { HideMeasurementTooltips(); } @@ -3110,7 +3109,6 @@ static void CalcRaildirsDrawstyle(int x, int y, int method) TileIndex t1 = TileVirtXY(x, y); uint distance = DistanceManhattan(t0, t1) + 1; byte index = 0; - uint64 params[2]; if (distance != 1) { int heightdiff = CalcHeightdiff(b, distance, t0, t1); @@ -3121,11 +3119,11 @@ static void CalcRaildirsDrawstyle(int x, int y, int method) distance = CeilDiv(distance, 2); } - params[index++] = distance; - if (heightdiff != 0) params[index++] = heightdiff; + SetDParam(index++, distance); + if (heightdiff != 0) SetDParam(index++, heightdiff); } - ShowMeasurementTooltips(measure_strings_length[index], index, params); + ShowMeasurementTooltips(measure_strings_length[index], index); } _thd.selend.x = x; @@ -3207,7 +3205,6 @@ calc_heightdiff_single_direction:; TileIndex t1 = TileVirtXY(x, y); uint distance = DistanceManhattan(t0, t1) + 1; byte index = 0; - uint64 params[2]; if (distance != 1) { /* With current code passing a HT_LINE style to calculate the height @@ -3217,11 +3214,11 @@ calc_heightdiff_single_direction:; * new_style := (_thd.next_drawstyle & HT_RECT) ? HT_LINE | style : _thd.next_drawstyle; */ int heightdiff = CalcHeightdiff(HT_LINE | style, 0, t0, t1); - params[index++] = distance; - if (heightdiff != 0) params[index++] = heightdiff; + SetDParam(index++, distance); + if (heightdiff != 0) SetDParam(index++, heightdiff); } - ShowMeasurementTooltips(measure_strings_length[index], index, params); + ShowMeasurementTooltips(measure_strings_length[index], index); } break; @@ -3242,7 +3239,6 @@ calc_heightdiff_single_direction:; uint dx = Delta(TileX(t0), TileX(t1)) + 1; uint dy = Delta(TileY(t0), TileY(t1)) + 1; byte index = 0; - uint64 params[3]; /* If dragging an area (eg dynamite tool) and it is actually a single * row/column, change the type to 'line' to get proper calculation for height */ @@ -3287,12 +3283,12 @@ calc_heightdiff_single_direction:; if (dx != 1 || dy != 1) { int heightdiff = CalcHeightdiff(style, 0, t0, t1); - params[index++] = dx - (style & HT_POINT ? 1 : 0); - params[index++] = dy - (style & HT_POINT ? 1 : 0); - if (heightdiff != 0) params[index++] = heightdiff; + SetDParam(index++, dx - (style & HT_POINT ? 1 : 0)); + SetDParam(index++, dy - (style & HT_POINT ? 1 : 0)); + if (heightdiff != 0) SetDParam(index++, heightdiff); } - ShowMeasurementTooltips(measure_strings_area[index], index, params); + ShowMeasurementTooltips(measure_strings_area[index], index); } break; From 836541b41c6504a667fef4690bcd58c93003de53 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sat, 17 Jun 2023 08:46:59 +0200 Subject: [PATCH 066/123] Codechange: use SetDParam and CopyOutDParam for tooltips --- src/autoreplace_gui.cpp | 7 +++---- src/depot_gui.cpp | 7 +++---- src/industry_gui.cpp | 7 +++---- src/linkgraph/linkgraph_gui.cpp | 16 +++++++--------- src/misc_gui.cpp | 15 +++++---------- src/network/network_gui.cpp | 6 +++--- src/viewport.cpp | 2 +- src/window.cpp | 4 ++-- src/window_gui.h | 2 +- 9 files changed, 28 insertions(+), 38 deletions(-) diff --git a/src/autoreplace_gui.cpp b/src/autoreplace_gui.cpp index f71347b516..f7ff774b37 100644 --- a/src/autoreplace_gui.cpp +++ b/src/autoreplace_gui.cpp @@ -717,11 +717,10 @@ public: if (widget != WID_RV_TRAIN_WAGONREMOVE_TOGGLE) return false; if (Group::IsValidID(this->sel_group)) { - uint64 params[1]; - params[0] = STR_REPLACE_REMOVE_WAGON_HELP; - GuiShowTooltips(this, STR_REPLACE_REMOVE_WAGON_GROUP_HELP, 1, params, close_cond); + SetDParam(0, STR_REPLACE_REMOVE_WAGON_HELP); + GuiShowTooltips(this, STR_REPLACE_REMOVE_WAGON_GROUP_HELP, close_cond, 1); } else { - GuiShowTooltips(this, STR_REPLACE_REMOVE_WAGON_HELP, 0, nullptr, close_cond); + GuiShowTooltips(this, STR_REPLACE_REMOVE_WAGON_HELP, close_cond); } return true; } diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp index 58f63dd918..b00f8e3022 100644 --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -889,10 +889,9 @@ struct DepotWindow : Window { } /* Show tooltip window */ - uint64 args[2]; - args[0] = (whole_chain ? num : v->engine_type); - args[1] = (uint64)(size_t)details.c_str(); - GuiShowTooltips(this, whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args, TCC_RIGHT_CLICK); + SetDParam(0, whole_chain ? num : v->engine_type); + SetDParamStr(1, details); + GuiShowTooltips(this, whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, TCC_RIGHT_CLICK, 2); return true; } diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index 28ca5f3e42..545b51188d 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -3129,7 +3129,7 @@ struct IndustryCargoesWindow : public Window { case CFT_INDUSTRY: if (fld->u.industry.ind_type < NUM_INDUSTRYTYPES && (this->ind_cargo >= NUM_INDUSTRYTYPES || fieldxy.x != 2)) { - GuiShowTooltips(this, STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP, 0, nullptr, close_cond); + GuiShowTooltips(this, STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP, close_cond); } return true; @@ -3138,9 +3138,8 @@ struct IndustryCargoesWindow : public Window { } if (IsValidCargoID(cid) && (this->ind_cargo < NUM_INDUSTRYTYPES || cid != this->ind_cargo - NUM_INDUSTRYTYPES)) { const CargoSpec *csp = CargoSpec::Get(cid); - uint64 params[5]; - params[0] = csp->name; - GuiShowTooltips(this, STR_INDUSTRY_CARGOES_CARGO_TOOLTIP, 1, params, close_cond); + SetDParam(0, csp->name); + GuiShowTooltips(this, STR_INDUSTRY_CARGOES_CARGO_TOOLTIP, close_cond, 1); return true; } diff --git a/src/linkgraph/linkgraph_gui.cpp b/src/linkgraph/linkgraph_gui.cpp index e93a0f9d68..fd1b3eaee9 100644 --- a/src/linkgraph/linkgraph_gui.cpp +++ b/src/linkgraph/linkgraph_gui.cpp @@ -404,12 +404,12 @@ bool LinkGraphOverlay::ShowTooltip(Point pt, TooltipCloseCondition close_cond) SetDParam(3, j->first); SetDParam(4, link.Usage() * 100 / (link.capacity + 1)); SetDParamStr(5, tooltip_extension); - GuiShowTooltips(this->window, STR_LINKGRAPH_STATS_TOOLTIP, 7, nullptr, close_cond); + GuiShowTooltips(this->window, STR_LINKGRAPH_STATS_TOOLTIP, close_cond, 7); return true; } } } - GuiShowTooltips(this->window, STR_NULL, 0, nullptr, close_cond); + GuiShowTooltips(this->window, STR_NULL, close_cond); return false; } @@ -642,19 +642,17 @@ bool LinkGraphLegendWindow::OnTooltip(Point pt, int widget, TooltipCloseConditio { if (IsInsideMM(widget, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST + 1)) { if (this->IsWidgetDisabled(widget)) { - GuiShowTooltips(this, STR_LINKGRAPH_LEGEND_SELECT_COMPANIES, 0, nullptr, close_cond); + GuiShowTooltips(this, STR_LINKGRAPH_LEGEND_SELECT_COMPANIES, close_cond); } else { - uint64 params[2]; - CompanyID cid = (CompanyID)(widget - WID_LGL_COMPANY_FIRST); - params[0] = STR_LINKGRAPH_LEGEND_SELECT_COMPANIES; - params[1] = cid; - GuiShowTooltips(this, STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP, 2, params, close_cond); + SetDParam(0, STR_LINKGRAPH_LEGEND_SELECT_COMPANIES); + SetDParam(1, (CompanyID)(widget - WID_LGL_COMPANY_FIRST)); + GuiShowTooltips(this, STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP, close_cond, 2); } return true; } if (IsInsideMM(widget, WID_LGL_CARGO_FIRST, WID_LGL_CARGO_LAST + 1)) { const CargoSpec *cargo = _sorted_cargo_specs[widget - WID_LGL_CARGO_FIRST]; - GuiShowTooltips(this, cargo->name, 0, nullptr, close_cond); + GuiShowTooltips(this, cargo->name, close_cond); return true; } return false; diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 9fa845a312..71994c4e14 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -666,17 +666,13 @@ struct TooltipsWindow : public Window uint64 params[8]; ///< The string parameters. TooltipCloseCondition close_cond; ///< Condition for closing the window. - TooltipsWindow(Window *parent, StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip) : Window(&_tool_tips_desc) + TooltipsWindow(Window *parent, StringID str, uint paramcount, TooltipCloseCondition close_tooltip) : Window(&_tool_tips_desc) { this->parent = parent; this->string_id = str; - static_assert(sizeof(this->params[0]) == sizeof(params[0])); assert(paramcount <= lengthof(this->params)); - if (params == nullptr) { - params = _global_string_params.GetPointerToOffset(0); - } - if (paramcount > 0) memcpy(this->params, params, sizeof(this->params[0]) * paramcount); this->paramcount = paramcount; + if (paramcount > 0) CopyOutDParam(this->params, this->paramcount); this->close_cond = close_tooltip; this->InitNested(); @@ -757,17 +753,16 @@ struct TooltipsWindow : public Window * Shows a tooltip * @param parent The window this tooltip is related to. * @param str String to be displayed + * @param close_tooltip the condition under which the tooltip closes * @param paramcount number of params to deal with - * @param params (optional) up to 5 pieces of additional information that may be added to a tooltip - * @param close_tooltip when the left (true) or right (false) mouse button is released */ -void GuiShowTooltips(Window *parent, StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip) +void GuiShowTooltips(Window *parent, StringID str, TooltipCloseCondition close_tooltip, uint paramcount) { CloseWindowById(WC_TOOLTIPS, 0); if (str == STR_NULL || !_cursor.in_window) return; - new TooltipsWindow(parent, str, paramcount, params, close_tooltip); + new TooltipsWindow(parent, str, paramcount, close_tooltip); } void QueryString::HandleEditBox(Window *w, int wid) diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index e19a7ce1eb..cbd057e18e 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -1849,10 +1849,10 @@ public: if (IsInsideMM(pt.x, player_icon_x, player_icon_x + d2.width)) { if (index == this->player_self_index) { - GuiShowTooltips(this, STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP, 0, nullptr, close_cond); + GuiShowTooltips(this, STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP, close_cond); return true; } else if (index == this->player_host_index) { - GuiShowTooltips(this, STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP, 0, nullptr, close_cond); + GuiShowTooltips(this, STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP, close_cond); return true; } } @@ -1860,7 +1860,7 @@ public: ButtonCommon *button = this->GetButtonAtPoint(pt); if (button == nullptr) return false; - GuiShowTooltips(this, button->tooltip, 0, nullptr, close_cond); + GuiShowTooltips(this, button->tooltip, close_cond); return true; }; } diff --git a/src/viewport.cpp b/src/viewport.cpp index 0eaa5c8e3b..de74ec336d 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -2644,7 +2644,7 @@ void UpdateTileSelection() static inline void ShowMeasurementTooltips(StringID str, uint paramcount) { if (!_settings_client.gui.measure_tooltip) return; - GuiShowTooltips(_thd.GetCallbackWnd(), str, paramcount, nullptr, TCC_EXIT_VIEWPORT); + GuiShowTooltips(_thd.GetCallbackWnd(), str, TCC_EXIT_VIEWPORT, paramcount); } static void HideMeasurementTooltips() diff --git a/src/window.cpp b/src/window.cpp index 4622411060..ad1a817cdc 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -823,7 +823,7 @@ static void DispatchRightClickEvent(Window *w, int x, int y) if (_settings_client.gui.right_mouse_wnd_close && (w->window_desc->flags & WDF_NO_CLOSE) == 0) { w->Close(); } else if (_settings_client.gui.hover_delay_ms == 0 && !w->OnTooltip(pt, wid->index, TCC_RIGHT_CLICK) && wid->tool_tip != 0) { - GuiShowTooltips(w, wid->tool_tip, 0, nullptr, TCC_RIGHT_CLICK); + GuiShowTooltips(w, wid->tool_tip, TCC_RIGHT_CLICK); } } @@ -844,7 +844,7 @@ static void DispatchHoverEvent(Window *w, int x, int y) /* Show the tooltip if there is any */ if (!w->OnTooltip(pt, wid->index, TCC_HOVER) && wid->tool_tip != 0) { - GuiShowTooltips(w, wid->tool_tip); + GuiShowTooltips(w, wid->tool_tip, TCC_HOVER); return; } diff --git a/src/window_gui.h b/src/window_gui.h index 8ed060b3c3..8bbfb6ede2 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -898,7 +898,7 @@ Wcls *AllocateWindowDescFront(WindowDesc *desc, int window_number, bool return_e void RelocateAllWindows(int neww, int newh); -void GuiShowTooltips(Window *parent, StringID str, uint paramcount = 0, const uint64 params[] = nullptr, TooltipCloseCondition close_tooltip = TCC_HOVER); +void GuiShowTooltips(Window *parent, StringID str, TooltipCloseCondition close_tooltip, uint paramcount = 0); /* widget.cpp */ int GetWidgetFromPos(const Window *w, int x, int y); From dd53a738bb5cc41e6d9d4ec6d17cf66be2ad451c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 11 Jun 2023 17:26:09 +0200 Subject: [PATCH 067/123] Codechange: automatically set/check the correct type for string parameters/genders --- src/strings.cpp | 73 ++++++++++++++++++++++++++-------------------- src/strings_func.h | 7 +++-- 2 files changed, 45 insertions(+), 35 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 25cb70cda1..77094a2991 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -74,18 +74,21 @@ void StringParameters::ClearTypeInformation() * Read an int64 from the argument array. The offset is increased * so the next time GetInt64 is called the next value is read. */ -int64 StringParameters::GetInt64(WChar type) +int64 StringParameters::GetInt64() { + assert(this->next_type == 0 || (SCC_CONTROL_START <= this->next_type && this->next_type <= SCC_CONTROL_END)); if (this->offset >= this->num_param) { Debug(misc, 0, "Trying to read invalid string parameter"); return 0; } if (this->type != nullptr) { - if (this->type[this->offset] != 0 && this->type[this->offset] != type) { + if (this->type[this->offset] != 0 && this->type[this->offset] != this->next_type) { Debug(misc, 0, "Trying to read string parameter with wrong type"); + this->next_type = 0; return 0; } - this->type[this->offset] = type; + this->type[this->offset] = next_type; + this->next_type = 0; } return this->data[this->offset++]; } @@ -873,6 +876,12 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (b == 0) continue; } + if (b < SCC_CONTROL_START || b > SCC_CONTROL_END) { + builder.Utf8Encode(b); + continue; + } + + args.next_type = b; switch (b) { case SCC_ENCODED: { uint64 sub_args_data[20]; @@ -981,7 +990,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_NEWGRF_PRINT_WORD_STRING_ID: { - StringID substr = args.GetInt32(SCC_NEWGRF_PRINT_WORD_STRING_ID); + StringID substr = args.GetInt32(); str_stack.push(GetStringPtr(substr)); case_index = next_substr_case_index; next_substr_case_index = 0; @@ -1073,7 +1082,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara break; case SCC_RAW_STRING_POINTER: { // {RAW_STRING} - const char *raw_string = (const char *)(size_t)args.GetInt64(SCC_RAW_STRING_POINTER); + const char *raw_string = (const char *)(size_t)args.GetInt64(); /* raw_string can be(come) nullptr when the parameter is out of range and 0 is returned instead. */ if (raw_string == nullptr || (game_script && std::find(_game_script_raw_strings.begin(), _game_script_raw_strings.end(), raw_string) == _game_script_raw_strings.end())) { @@ -1085,7 +1094,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_STRING: {// {STRING} - StringID string_id = args.GetInt32(SCC_STRING); + StringID string_id = args.GetInt32(); if (game_script && GetStringTab(string_id) != TEXT_TAB_GAMESCRIPT_START) break; /* It's prohibited for the included string to consume any arguments. */ StringParameters tmp_params(args, 0); @@ -1102,7 +1111,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_STRING6: case SCC_STRING7: { // {STRING1..7} /* Strings that consume arguments */ - StringID string_id = args.GetInt32(b); + StringID string_id = args.GetInt32(); if (game_script && GetStringTab(string_id) != TEXT_TAB_GAMESCRIPT_START) break; uint size = b - SCC_STRING1 + 1; if (game_script && size > args.GetDataLeft()) { @@ -1116,18 +1125,18 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_COMMA: // {COMMA} - FormatCommaNumber(builder, args.GetInt64(SCC_COMMA)); + FormatCommaNumber(builder, args.GetInt64()); break; case SCC_DECIMAL: { // {DECIMAL} - int64 number = args.GetInt64(SCC_DECIMAL); - int digits = args.GetInt32(SCC_DECIMAL); + int64 number = args.GetInt64(); + int digits = args.GetInt32(); FormatCommaNumber(builder, number, digits); break; } case SCC_NUM: // {NUM} - FormatNoCommaNumber(builder, args.GetInt64(SCC_NUM)); + FormatNoCommaNumber(builder, args.GetInt64()); break; case SCC_ZEROFILL_NUM: { // {ZEROFILL_NUM} @@ -1137,7 +1146,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_HEX: // {HEX} - FormatHexNumber(builder, (uint64)args.GetInt64(SCC_HEX)); + FormatHexNumber(builder, (uint64)args.GetInt64()); break; case SCC_BYTES: // {BYTES} @@ -1148,7 +1157,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara /* Tiny description of cargotypes. Layout: * param 1: cargo type * param 2: cargo count */ - CargoID cargo = args.GetInt32(SCC_CARGO_TINY); + CargoID cargo = args.GetInt32(); if (cargo >= CargoSpec::GetArraySize()) break; StringID cargo_str = CargoSpec::Get(cargo)->units_volume; @@ -1176,7 +1185,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara /* Short description of cargotypes. Layout: * param 1: cargo type * param 2: cargo count */ - CargoID cargo = args.GetInt32(SCC_CARGO_SHORT); + CargoID cargo = args.GetInt32(); if (cargo >= CargoSpec::GetArraySize()) break; StringID cargo_str = CargoSpec::Get(cargo)->units_volume; @@ -1208,7 +1217,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_CARGO_LONG: { // {CARGO_LONG} /* First parameter is cargo type, second parameter is cargo count */ - CargoID cargo = args.GetInt32(SCC_CARGO_LONG); + CargoID cargo = args.GetInt32(); if (IsValidCargoID(cargo) && cargo >= CargoSpec::GetArraySize()) break; StringID cargo_str = !IsValidCargoID(cargo) ? STR_QUANTITY_N_A : CargoSpec::Get(cargo)->quantifier; @@ -1218,7 +1227,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_CARGO_LIST: { // {CARGO_LIST} - CargoTypes cmask = args.GetInt64(SCC_CARGO_LIST); + CargoTypes cmask = args.GetInt64(); bool first = true; for (const auto &cs : _sorted_cargo_specs) { @@ -1246,20 +1255,20 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara break; case SCC_CURRENCY_LONG: // {CURRENCY_LONG} - FormatGenericCurrency(builder, _currency, args.GetInt64(SCC_CURRENCY_LONG), false); + FormatGenericCurrency(builder, _currency, args.GetInt64(), false); break; case SCC_DATE_TINY: // {DATE_TINY} - FormatTinyOrISODate(builder, args.GetInt32(SCC_DATE_TINY), STR_FORMAT_DATE_TINY); + FormatTinyOrISODate(builder, args.GetInt32(), STR_FORMAT_DATE_TINY); break; case SCC_DATE_SHORT: // {DATE_SHORT} - FormatMonthAndYear(builder, args.GetInt32(SCC_DATE_SHORT), next_substr_case_index); + FormatMonthAndYear(builder, args.GetInt32(), next_substr_case_index); next_substr_case_index = 0; break; case SCC_DATE_LONG: // {DATE_LONG} - FormatYmdString(builder, args.GetInt32(SCC_DATE_LONG), next_substr_case_index); + FormatYmdString(builder, args.GetInt32(), next_substr_case_index); next_substr_case_index = 0; break; @@ -1305,7 +1314,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_VELOCITY: { // {VELOCITY} - int64 arg = args.GetInt64(SCC_VELOCITY); + int64 arg = args.GetInt64(); // Unpack vehicle type from packed argument to get desired units. VehicleType vt = static_cast(GB(arg, 56, 8)); byte units = GetVelocityUnits(vt); @@ -1329,7 +1338,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_VOLUME_LONG: { // {VOLUME_LONG} assert(_settings_game.locale.units_volume < lengthof(_units_volume)); const auto &x = _units_volume[_settings_game.locale.units_volume]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64(SCC_VOLUME_LONG)), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; StringParameters tmp_params(args_array); FormatString(builder, GetStringPtr(x.l), tmp_params); break; @@ -1347,7 +1356,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_WEIGHT_LONG: { // {WEIGHT_LONG} assert(_settings_game.locale.units_weight < lengthof(_units_weight)); const auto &x = _units_weight[_settings_game.locale.units_weight]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64(SCC_WEIGHT_LONG)), x.decimal_places}; + int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; StringParameters tmp_params(args_array); FormatString(builder, GetStringPtr(x.l), tmp_params); break; @@ -1382,7 +1391,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_DEPOT_NAME: { // {DEPOT} - VehicleType vt = (VehicleType)args.GetInt32(SCC_DEPOT_NAME); + VehicleType vt = (VehicleType)args.GetInt32(); if (vt == VEH_AIRCRAFT) { uint64 args_array[] = {(uint64)args.GetInt32()}; WChar types_array[] = {SCC_STATION_NAME}; @@ -1405,7 +1414,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_ENGINE_NAME: { // {ENGINE} - int64 arg = args.GetInt64(SCC_ENGINE_NAME); + int64 arg = args.GetInt64(); const Engine *e = Engine::GetIfValid(static_cast(arg)); if (e == nullptr) break; @@ -1458,7 +1467,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_INDUSTRY_NAME: { // {INDUSTRY} - const Industry *i = Industry::GetIfValid(args.GetInt32(SCC_INDUSTRY_NAME)); + const Industry *i = Industry::GetIfValid(args.GetInt32()); if (i == nullptr) break; static bool use_cache = true; @@ -1482,7 +1491,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_PRESIDENT_NAME: { // {PRESIDENT_NAME} - const Company *c = Company::GetIfValid(args.GetInt32(SCC_PRESIDENT_NAME)); + const Company *c = Company::GetIfValid(args.GetInt32()); if (c == nullptr) break; if (!c->president_name.empty()) { @@ -1498,7 +1507,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_STATION_NAME: { // {STATION} - StationID sid = args.GetInt32(SCC_STATION_NAME); + StationID sid = args.GetInt32(); const Station *st = Station::GetIfValid(sid); if (st == nullptr) { @@ -1541,7 +1550,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_TOWN_NAME: { // {TOWN} - const Town *t = Town::GetIfValid(args.GetInt32(SCC_TOWN_NAME)); + const Town *t = Town::GetIfValid(args.GetInt32()); if (t == nullptr) break; static bool use_cache = true; @@ -1559,7 +1568,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_WAYPOINT_NAME: { // {WAYPOINT} - Waypoint *wp = Waypoint::GetIfValid(args.GetInt32(SCC_WAYPOINT_NAME)); + Waypoint *wp = Waypoint::GetIfValid(args.GetInt32()); if (wp == nullptr) break; if (!wp->name.empty()) { @@ -1577,7 +1586,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_VEHICLE_NAME: { // {VEHICLE} - const Vehicle *v = Vehicle::GetIfValid(args.GetInt32(SCC_VEHICLE_NAME)); + const Vehicle *v = Vehicle::GetIfValid(args.GetInt32()); if (v == nullptr) break; if (!v->name.empty()) { @@ -1623,7 +1632,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_STATION_FEATURES: { // {STATIONFEATURES} - StationGetSpecialString(builder, args.GetInt32(SCC_STATION_FEATURES)); + StationGetSpecialString(builder, args.GetInt32()); break; } diff --git a/src/strings_func.h b/src/strings_func.h index c997a5acc2..23e0a60ce9 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -66,6 +66,7 @@ class StringParameters { public: uint offset; ///< Current offset in the data/type arrays. uint num_param; ///< Length of the data array. + WChar next_type = 0; ///< The type of the next data that is retrieved. /** Create a new StringParameters instance. */ StringParameters(uint64 *data, uint num_param, WChar *type) : @@ -115,12 +116,12 @@ public: void ClearTypeInformation(); - int64 GetInt64(WChar type = 0); + int64 GetInt64(); /** Read an int32 from the argument array. @see GetInt64. */ - int32 GetInt32(WChar type = 0) + int32 GetInt32() { - return (int32)this->GetInt64(type); + return (int32)this->GetInt64(); } /** From ad048b143a5125cde2442d17488575985fe6ae75 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 15 Jun 2023 16:54:50 +0200 Subject: [PATCH 068/123] Codechange: move implementation of Set/GetDParam to strings.cpp --- src/strings.cpp | 23 ++++++++++++++++++++++- src/strings_func.h | 23 +++-------------------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 77094a2991..d18cfc5ff9 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -93,6 +93,27 @@ int64 StringParameters::GetInt64() return this->data[this->offset++]; } + +/** + * Set a string parameter \a v at index \a n in the global string parameter array. + * @param n Index of the string parameter. + * @param v Value of the string parameter. + */ +void SetDParam(uint n, uint64_t v) +{ + _global_string_params.SetParam(n, v); +} + +/** + * Get the current string parameter at index \a n from the global string parameter array. + * @param n Index of the string parameter. + * @return Value of the requested string parameter. + */ +uint64_t GetDParam(uint n) +{ + return _global_string_params.GetParam(n); +} + /** * Set DParam n to some number that is suitable for string size computations. * @param n Index of the string parameter. @@ -101,7 +122,7 @@ int64 StringParameters::GetInt64() * @param min_count Minimum number of digits independent of \a max. * @param size Font of the number */ -void SetDParamMaxValue(uint n, uint64 max_value, uint min_count, FontSize size) +void SetDParamMaxValue(uint n, uint64_t max_value, uint min_count, FontSize size) { uint num_digits = 1; while (max_value >= 10) { diff --git a/src/strings_func.h b/src/strings_func.h index 23e0a60ce9..177cac8323 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -199,17 +199,8 @@ static inline int64 PackVelocity(uint speed, VehicleType type) return speed | (static_cast(type) << 56); } -/** - * Set a string parameter \a v at index \a n in the global string parameter array. - * @param n Index of the string parameter. - * @param v Value of the string parameter. - */ -static inline void SetDParam(uint n, uint64 v) -{ - _global_string_params.SetParam(n, v); -} - -void SetDParamMaxValue(uint n, uint64 max_value, uint min_count = 0, FontSize size = FS_NORMAL); +void SetDParam(uint n, uint64_t v); +void SetDParamMaxValue(uint n, uint64_t max_value, uint min_count = 0, FontSize size = FS_NORMAL); void SetDParamMaxDigits(uint n, uint count, FontSize size = FS_NORMAL); void SetDParamStr(uint n, const char *str); @@ -220,15 +211,7 @@ void CopyInDParam(const uint64 *src, int num); void CopyOutDParam(uint64 *dst, int num); void CopyOutDParam(uint64 *dst, const char **strings, StringID string, int num); -/** - * Get the current string parameter at index \a n from the global string parameter array. - * @param n Index of the string parameter. - * @return Value of the requested string parameter. - */ -static inline uint64 GetDParam(uint n) -{ - return _global_string_params.GetParam(n); -} +uint64_t GetDParam(uint n); extern TextDirection _current_text_dir; ///< Text direction of the currently selected language From 1d902a97ce8ded072e41966c13c7d35f0ab5b6a9 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 15 Jun 2023 17:09:34 +0200 Subject: [PATCH 069/123] Codechange: move StringParameters to strings_internal.h --- src/industry_cmd.cpp | 2 +- src/newgrf_text.cpp | 2 +- src/station_cmd.cpp | 2 +- src/strings_func.h | 122 ----------------------------------------- src/strings_internal.h | 122 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 125 insertions(+), 125 deletions(-) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index ce2a23490c..f3e6361730 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -25,7 +25,7 @@ #include "newgrf_industrytiles.h" #include "autoslope.h" #include "water.h" -#include "strings_func.h" +#include "strings_internal.h" #include "window_func.h" #include "vehicle_func.h" #include "sound_func.h" diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp index 84f36b623e..26020e60bb 100644 --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -18,7 +18,7 @@ #include "stdafx.h" #include "newgrf.h" -#include "strings_func.h" +#include "strings_internal.h" #include "newgrf_storage.h" #include "newgrf_text.h" #include "newgrf_cargo.h" diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 1b95d41eca..732eb0655d 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -27,7 +27,7 @@ #include "road_internal.h" /* For drawing catenary/checking road removal */ #include "autoslope.h" #include "water.h" -#include "strings_func.h" +#include "strings_internal.h" #include "clear_func.h" #include "timer/timer_game_calendar.h" #include "vehicle_func.h" diff --git a/src/strings_func.h b/src/strings_func.h index 177cac8323..1f755b3af0 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -58,129 +58,7 @@ static inline StringID MakeStringID(StringTab tab, uint index) return (tab << TAB_SIZE_BITS) + index; } -class StringParameters { - StringParameters *parent; ///< If not nullptr, this instance references data from this parent instance. - uint64 *data; ///< Array with the actual data. - WChar *type; ///< Array with type information about the data. Can be nullptr when no type information is needed. See #StringControlCode. - -public: - uint offset; ///< Current offset in the data/type arrays. - uint num_param; ///< Length of the data array. - WChar next_type = 0; ///< The type of the next data that is retrieved. - - /** Create a new StringParameters instance. */ - StringParameters(uint64 *data, uint num_param, WChar *type) : - parent(nullptr), - data(data), - type(type), - offset(0), - num_param(num_param) - { } - - /** Create a new StringParameters instance. */ - template - StringParameters(int64 (&data)[Tnum_param]) : - parent(nullptr), - data((uint64 *)data), - type(nullptr), - offset(0), - num_param(Tnum_param) - { - static_assert(sizeof(data[0]) == sizeof(uint64)); - } - - /** - * Create a new StringParameters instance that can reference part of the data of - * the given partent instance. - */ - StringParameters(StringParameters &parent, uint size) : - parent(&parent), - data(parent.data + parent.offset), - offset(0), - num_param(size) - { - assert(size <= parent.GetDataLeft()); - if (parent.type == nullptr) { - this->type = nullptr; - } else { - this->type = parent.type + parent.offset; - } - } - - ~StringParameters() - { - if (this->parent != nullptr) { - this->parent->offset += this->num_param; - } - } - - void ClearTypeInformation(); - - int64 GetInt64(); - - /** Read an int32 from the argument array. @see GetInt64. */ - int32 GetInt32() - { - return (int32)this->GetInt64(); - } - - /** - * Get a new instance of StringParameters that is a "range" into the - * parameters existing parameters. Upon destruction the offset in the parent - * is not updated. However, calls to SetDParam do update the parameters. - * - * The returned StringParameters must not outlive this StringParameters. - * @return A "range" of the string parameters. - */ - StringParameters GetRemainingParameters() - { - return StringParameters(&this->data[this->offset], GetDataLeft(), - this->type == nullptr ? nullptr : &this->type[this->offset]); - } - - /** Return the amount of elements which can still be read. */ - uint GetDataLeft() const - { - return this->num_param - this->offset; - } - - /** Get a pointer to a specific element in the data array. */ - uint64 *GetPointerToOffset(uint offset) const - { - assert(offset < this->num_param); - return &this->data[offset]; - } - - /** Does this instance store information about the type of the parameters. */ - bool HasTypeInformation() const - { - return this->type != nullptr; - } - - /** Get the type of a specific element. */ - WChar GetTypeAtOffset(uint offset) const - { - assert(offset < this->num_param); - assert(this->HasTypeInformation()); - return this->type[offset]; - } - - void SetParam(uint n, uint64 v) - { - assert(n < this->num_param); - this->data[n] = v; - } - - uint64 GetParam(uint n) const - { - assert(n < this->num_param); - return this->data[n]; - } -}; -extern StringParameters _global_string_params; - std::string GetString(StringID string); -std::string GetStringWithArgs(StringID string, StringParameters &args); const char *GetStringPtr(StringID string); uint ConvertKmhishSpeedToDisplaySpeed(uint speed, VehicleType type); diff --git a/src/strings_internal.h b/src/strings_internal.h index 10c5e523ff..0244c0ceea 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -11,6 +11,127 @@ #define STRINGS_INTERNAL_H #include "strings_func.h" +#include "string_func.h" + +class StringParameters { + StringParameters *parent; ///< If not nullptr, this instance references data from this parent instance. + uint64 *data; ///< Array with the actual data. + WChar *type; ///< Array with type information about the data. Can be nullptr when no type information is needed. See #StringControlCode. + +public: + uint offset; ///< Current offset in the data/type arrays. + uint num_param; ///< Length of the data array. + WChar next_type = 0; ///< The type of the next data that is retrieved. + + /** Create a new StringParameters instance. */ + StringParameters(uint64 *data, uint num_param, WChar *type) : + parent(nullptr), + data(data), + type(type), + offset(0), + num_param(num_param) + { } + + /** Create a new StringParameters instance. */ + template + StringParameters(int64 (&data)[Tnum_param]) : + parent(nullptr), + data((uint64 *)data), + type(nullptr), + offset(0), + num_param(Tnum_param) + { + static_assert(sizeof(data[0]) == sizeof(uint64)); + } + + /** + * Create a new StringParameters instance that can reference part of the data of + * the given partent instance. + */ + StringParameters(StringParameters &parent, uint size) : + parent(&parent), + data(parent.data + parent.offset), + offset(0), + num_param(size) + { + assert(size <= parent.GetDataLeft()); + if (parent.type == nullptr) { + this->type = nullptr; + } else { + this->type = parent.type + parent.offset; + } + } + + ~StringParameters() + { + if (this->parent != nullptr) { + this->parent->offset += this->num_param; + } + } + + void ClearTypeInformation(); + + int64 GetInt64(); + + /** Read an int32 from the argument array. @see GetInt64. */ + int32 GetInt32() + { + return (int32)this->GetInt64(); + } + + /** + * Get a new instance of StringParameters that is a "range" into the + * parameters existing parameters. Upon destruction the offset in the parent + * is not updated. However, calls to SetDParam do update the parameters. + * + * The returned StringParameters must not outlive this StringParameters. + * @return A "range" of the string parameters. + */ + StringParameters GetRemainingParameters() + { + return StringParameters(&this->data[this->offset], GetDataLeft(), + this->type == nullptr ? nullptr : &this->type[this->offset]); + } + + /** Return the amount of elements which can still be read. */ + uint GetDataLeft() const + { + return this->num_param - this->offset; + } + + /** Get a pointer to a specific element in the data array. */ + uint64 *GetPointerToOffset(uint offset) const + { + assert(offset < this->num_param); + return &this->data[offset]; + } + + /** Does this instance store information about the type of the parameters. */ + bool HasTypeInformation() const + { + return this->type != nullptr; + } + + /** Get the type of a specific element. */ + WChar GetTypeAtOffset(uint offset) const + { + assert(offset < this->num_param); + assert(this->HasTypeInformation()); + return this->type[offset]; + } + + void SetParam(uint n, uint64 v) + { + assert(n < this->num_param); + this->data[n] = v; + } + + uint64 GetParam(uint n) const + { + assert(n < this->num_param); + return this->data[n]; + } +}; /** * Equivalent to the std::back_insert_iterator in function, with some @@ -113,6 +234,7 @@ public: }; void GetStringWithArgs(StringBuilder &builder, StringID string, StringParameters &args, uint case_index = 0, bool game_script = false); +std::string GetStringWithArgs(StringID string, StringParameters &args); /* Do not leak the StringBuilder to everywhere. */ void GenerateTownNameString(StringBuilder &builder, size_t lang, uint32_t seed); From a6b625eea3469719a6169e496199b8566657fc43 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 17 Jun 2023 17:56:27 +0100 Subject: [PATCH 070/123] Fix #10993: Crash log when font caches not initialised (#11024) See also: #10836 --- src/crashlog.cpp | 8 ++++---- src/fontcache.cpp | 15 +++++++++++++++ src/fontcache.h | 2 ++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/crashlog.cpp b/src/crashlog.cpp index 8be9bc134c..f8f4677ce0 100644 --- a/src/crashlog.cpp +++ b/src/crashlog.cpp @@ -183,10 +183,10 @@ void CrashLog::LogConfiguration(std::back_insert_iterator &output_i " Medium: {}\n" " Large: {}\n" " Mono: {}\n\n", - FontCache::Get(FS_SMALL)->GetFontName(), - FontCache::Get(FS_NORMAL)->GetFontName(), - FontCache::Get(FS_LARGE)->GetFontName(), - FontCache::Get(FS_MONO)->GetFontName() + FontCache::GetName(FS_SMALL), + FontCache::GetName(FS_NORMAL), + FontCache::GetName(FS_LARGE), + FontCache::GetName(FS_MONO) ); fmt::format_to(output_iterator, "AI Configuration (local: {}) (current: {}):\n", _local_company, _current_company); diff --git a/src/fontcache.cpp b/src/fontcache.cpp index dcaa05d25a..096d5eddde 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -53,6 +53,21 @@ int FontCache::GetDefaultFontHeight(FontSize fs) return _default_font_height[fs]; } +/** + * Get the font name of a given font size. + * @param fs The font size to look up. + * @return The font name. + */ +std::string FontCache::GetName(FontSize fs) +{ + FontCache *fc = FontCache::Get(fs); + if (fc != nullptr) { + return fc->GetFontName(); + } else { + return "[NULL]"; + } +} + /** * Get height of a character for a given font size. diff --git a/src/fontcache.h b/src/fontcache.h index 6f9958f889..04c38a6888 100644 --- a/src/fontcache.h +++ b/src/fontcache.h @@ -147,6 +147,8 @@ public: return FontCache::caches[fs]; } + static std::string GetName(FontSize fs); + /** * Check whether the font cache has a parent. */ From 9215e36300fecd8726078505f47b8205618cc7e1 Mon Sep 17 00:00:00 2001 From: translators Date: Sat, 17 Jun 2023 18:40:32 +0000 Subject: [PATCH 071/123] Update: Translations from eints vietnamese: 2 changes by KhoiCanDev finnish: 2 changes by hpiirai danish: 2 changes by bscargo --- src/lang/danish.txt | 2 ++ src/lang/finnish.txt | 2 ++ src/lang/vietnamese.txt | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 51c4c51830..1dd3ada58b 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -5627,6 +5627,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index bb5c78f7c9..b129b14d10 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -5627,6 +5627,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 4ed8162bf8..049055cdfe 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -5627,6 +5627,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} From e404ba0631fc72cf16d8b3f7833a8811d0f134c6 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sat, 17 Jun 2023 23:17:04 +0200 Subject: [PATCH 072/123] Codechange: generify GetRemainingParameters to allow custom offsets --- src/strings.cpp | 2 +- src/strings_internal.h | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index d18cfc5ff9..6cb346f4bf 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1036,7 +1036,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara _scan_for_gender_data = true; std::string buffer; StringBuilder tmp_builder(buffer); - StringParameters tmp_params(args.GetPointerToOffset(offset), args.num_param - offset, nullptr); + StringParameters tmp_params = args.GetRemainingParameters(offset); FormatString(tmp_builder, input, tmp_params); _scan_for_gender_data = old_sgd; diff --git a/src/strings_internal.h b/src/strings_internal.h index 0244c0ceea..a17f60ae32 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -81,16 +81,28 @@ public: /** * Get a new instance of StringParameters that is a "range" into the - * parameters existing parameters. Upon destruction the offset in the parent + * remaining existing parameters. Upon destruction the offset in the parent * is not updated. However, calls to SetDParam do update the parameters. * * The returned StringParameters must not outlive this StringParameters. * @return A "range" of the string parameters. */ - StringParameters GetRemainingParameters() + StringParameters GetRemainingParameters() { return GetRemainingParameters(this->offset); } + + /** + * Get a new instance of StringParameters that is a "range" into the + * remaining existing parameters from the given offset. Upon destruction the + * offset in the parent is not updated. However, calls to SetDParam do + * update the parameters. + * + * The returned StringParameters must not outlive this StringParameters. + * @param offset The offset to get the remaining parameters for. + * @return A "range" of the string parameters. + */ + StringParameters GetRemainingParameters(size_t offset) { - return StringParameters(&this->data[this->offset], GetDataLeft(), - this->type == nullptr ? nullptr : &this->type[this->offset]); + return StringParameters(&this->data[offset], GetDataLeft(), + this->type == nullptr ? nullptr : &this->type[offset]); } /** Return the amount of elements which can still be read. */ From 4e6733cc6e1d2e9214eea0be2f44a795ab09a076 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sat, 17 Jun 2023 23:27:15 +0200 Subject: [PATCH 073/123] Codechange: use args.GetParam(offset) over *args.GetPointerToOffset(offset) --- src/strings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings.cpp b/src/strings.cpp index 6cb346f4bf..7f40b9f6cf 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1064,7 +1064,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_PLURAL_LIST: { // {P} int plural_form = *str++; // contains the plural form for this string uint offset = orig_offset + (byte)*str++; - int64 v = *args.GetPointerToOffset(offset); // contains the number that determines plural + int64 v = args.GetParam(offset); // contains the number that determines plural str = ParseStringChoice(str, DeterminePluralForm(v, plural_form), builder); break; } From 381e8b69d218bbb2f05c9aa85c108e109a87be99 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Jun 2023 07:35:30 +0200 Subject: [PATCH 074/123] Codechange: make size and offset size_t --- src/strings.cpp | 18 +++++++++--------- src/strings_func.h | 14 +++++++------- src/strings_internal.h | 20 +++++++++----------- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 7f40b9f6cf..9e5b3a7b07 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -99,7 +99,7 @@ int64 StringParameters::GetInt64() * @param n Index of the string parameter. * @param v Value of the string parameter. */ -void SetDParam(uint n, uint64_t v) +void SetDParam(size_t n, uint64_t v) { _global_string_params.SetParam(n, v); } @@ -109,7 +109,7 @@ void SetDParam(uint n, uint64_t v) * @param n Index of the string parameter. * @return Value of the requested string parameter. */ -uint64_t GetDParam(uint n) +uint64_t GetDParam(size_t n) { return _global_string_params.GetParam(n); } @@ -122,7 +122,7 @@ uint64_t GetDParam(uint n) * @param min_count Minimum number of digits independent of \a max. * @param size Font of the number */ -void SetDParamMaxValue(uint n, uint64_t max_value, uint min_count, FontSize size) +void SetDParamMaxValue(size_t n, uint64_t max_value, uint min_count, FontSize size) { uint num_digits = 1; while (max_value >= 10) { @@ -138,7 +138,7 @@ void SetDParamMaxValue(uint n, uint64_t max_value, uint min_count, FontSize size * @param count Number of digits which shall be displayable. * @param size Font of the number */ -void SetDParamMaxDigits(uint n, uint count, FontSize size) +void SetDParamMaxDigits(size_t n, uint count, FontSize size) { uint front = 0; uint next = 0; @@ -337,7 +337,7 @@ std::string GetStringWithArgs(StringID string, StringParameters &args) * @param n slot of the string * @param str string to bind */ -void SetDParamStr(uint n, const char *str) +void SetDParamStr(size_t n, const char *str) { SetDParam(n, (uint64)(size_t)str); } @@ -348,7 +348,7 @@ void SetDParamStr(uint n, const char *str) * @param n slot of the string * @param str string to bind */ -void SetDParamStr(uint n, const std::string &str) +void SetDParamStr(size_t n, const std::string &str) { SetDParamStr(n, str.c_str()); } @@ -851,7 +851,7 @@ static std::vector _game_script_raw_strings; */ static void FormatString(StringBuilder &builder, const char *str_arg, StringParameters &args, uint case_index, bool game_script, bool dry_run) { - uint orig_offset = args.offset; + size_t orig_offset = args.offset; if (!dry_run && args.HasTypeInformation()) { /* @@ -1021,7 +1021,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_GENDER_LIST: { // {G 0 Der Die Das} /* First read the meta data from the language file. */ - uint offset = orig_offset + (byte)*str++; + size_t offset = orig_offset + (byte)*str++; int gender = 0; if (!dry_run && args.GetTypeAtOffset(offset) != 0) { /* Now we need to figure out what text to resolve, i.e. @@ -1063,7 +1063,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_PLURAL_LIST: { // {P} int plural_form = *str++; // contains the plural form for this string - uint offset = orig_offset + (byte)*str++; + size_t offset = orig_offset + (byte)*str++; int64 v = args.GetParam(offset); // contains the number that determines plural str = ParseStringChoice(str, DeterminePluralForm(v, plural_form), builder); break; diff --git a/src/strings_func.h b/src/strings_func.h index 1f755b3af0..aa726e2435 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -77,19 +77,19 @@ static inline int64 PackVelocity(uint speed, VehicleType type) return speed | (static_cast(type) << 56); } -void SetDParam(uint n, uint64_t v); -void SetDParamMaxValue(uint n, uint64_t max_value, uint min_count = 0, FontSize size = FS_NORMAL); -void SetDParamMaxDigits(uint n, uint count, FontSize size = FS_NORMAL); +void SetDParam(size_t n, uint64_t v); +void SetDParamMaxValue(size_t n, uint64_t max_value, uint min_count = 0, FontSize size = FS_NORMAL); +void SetDParamMaxDigits(size_t n, uint count, FontSize size = FS_NORMAL); -void SetDParamStr(uint n, const char *str); -void SetDParamStr(uint n, const std::string &str); -void SetDParamStr(uint n, std::string &&str) = delete; // block passing temporaries to SetDParamStr +void SetDParamStr(size_t n, const char *str); +void SetDParamStr(size_t n, const std::string &str); +void SetDParamStr(size_t n, std::string &&str) = delete; // block passing temporaries to SetDParamStr void CopyInDParam(const uint64 *src, int num); void CopyOutDParam(uint64 *dst, int num); void CopyOutDParam(uint64 *dst, const char **strings, StringID string, int num); -uint64_t GetDParam(uint n); +uint64_t GetDParam(size_t n); extern TextDirection _current_text_dir; ///< Text direction of the currently selected language diff --git a/src/strings_internal.h b/src/strings_internal.h index a17f60ae32..69e1bcf626 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -19,16 +19,15 @@ class StringParameters { WChar *type; ///< Array with type information about the data. Can be nullptr when no type information is needed. See #StringControlCode. public: - uint offset; ///< Current offset in the data/type arrays. - uint num_param; ///< Length of the data array. + size_t offset = 0; ///< Current offset in the data/type arrays. + size_t num_param; ///< Length of the data array. WChar next_type = 0; ///< The type of the next data that is retrieved. /** Create a new StringParameters instance. */ - StringParameters(uint64 *data, uint num_param, WChar *type) : + StringParameters(uint64 *data, size_t num_param, WChar *type) : parent(nullptr), data(data), type(type), - offset(0), num_param(num_param) { } @@ -48,10 +47,9 @@ public: * Create a new StringParameters instance that can reference part of the data of * the given partent instance. */ - StringParameters(StringParameters &parent, uint size) : + StringParameters(StringParameters &parent, size_t size) : parent(&parent), data(parent.data + parent.offset), - offset(0), num_param(size) { assert(size <= parent.GetDataLeft()); @@ -106,13 +104,13 @@ public: } /** Return the amount of elements which can still be read. */ - uint GetDataLeft() const + size_t GetDataLeft() const { return this->num_param - this->offset; } /** Get a pointer to a specific element in the data array. */ - uint64 *GetPointerToOffset(uint offset) const + uint64 *GetPointerToOffset(size_t offset) const { assert(offset < this->num_param); return &this->data[offset]; @@ -125,20 +123,20 @@ public: } /** Get the type of a specific element. */ - WChar GetTypeAtOffset(uint offset) const + WChar GetTypeAtOffset(size_t offset) const { assert(offset < this->num_param); assert(this->HasTypeInformation()); return this->type[offset]; } - void SetParam(uint n, uint64 v) + void SetParam(size_t n, uint64 v) { assert(n < this->num_param); this->data[n] = v; } - uint64 GetParam(uint n) const + uint64 GetParam(size_t n) const { assert(n < this->num_param); return this->data[n]; From 1d9bc2352538bbe4ee0a2b281da95fe9f5015f02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Guilloux?= Date: Sun, 18 Jun 2023 12:03:59 +0200 Subject: [PATCH 075/123] Fix #10868: [Script] Handle errors when loading savegame data on stack (#11029) --- src/script/script_instance.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp index 71365850f4..ab0adfb34d 100644 --- a/src/script/script_instance.cpp +++ b/src/script/script_instance.cpp @@ -694,9 +694,16 @@ void ScriptInstance::LoadOnStack(ScriptData *data) ScriptDataVariant version = data->front(); data->pop_front(); - sq_pushinteger(vm, std::get(version)); - LoadObjects(vm, data); - this->is_save_data_on_stack = true; + SQInteger top = sq_gettop(vm); + try { + sq_pushinteger(vm, std::get(version)); + LoadObjects(vm, data); + this->is_save_data_on_stack = true; + } catch (Script_FatalError &e) { + ScriptLog::Warning(fmt::format("Loading failed: {}", e.GetErrorMessage())); + /* Discard partially loaded savegame data and version. */ + sq_settop(vm, top); + } } bool ScriptInstance::CallLoad() From 09f585b7720ac10bb7b558ee426f34b9da526cae Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Jun 2023 17:23:11 +0200 Subject: [PATCH 076/123] Codechange: use std::string over stredup+free for splitting font name --- src/os/unix/font_unix.cpp | 44 +++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/os/unix/font_unix.cpp b/src/os/unix/font_unix.cpp index 0175b77f35..9b58e6d8a4 100644 --- a/src/os/unix/font_unix.cpp +++ b/src/os/unix/font_unix.cpp @@ -22,6 +22,20 @@ extern FT_Library _library; +/** + * Split the font name into the font family and style. These fields are separated by a comma, + * but the style does not necessarily need to exist. + * @param font_name The font name. + * @return The font family and style. + */ +static std::tuple SplitFontFamilyAndStyle(std::string_view font_name) +{ + auto separator = font_name.find(','); + if (separator == std::string_view::npos) return { std::string(font_name), std::string() }; + + auto begin = font_name.find_first_not_of("\t ", separator + 1); + return { std::string(font_name.substr(0, separator)), std::string(font_name.substr(begin)) }; +} FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) { @@ -35,39 +49,26 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) auto fc_instance = FcConfigReference(nullptr); assert(fc_instance != nullptr); - FcPattern *match; - FcPattern *pat; - FcFontSet *fs; - FcResult result; - char *font_style; - char *font_family; - /* Split & strip the font's style */ - font_family = stredup(font_name); - font_style = strchr(font_family, ','); - if (font_style != nullptr) { - font_style[0] = '\0'; - font_style++; - while (*font_style == ' ' || *font_style == '\t') font_style++; - } + auto [font_family, font_style] = SplitFontFamilyAndStyle(font_name); /* Resolve the name and populate the information structure */ - pat = FcNameParse((FcChar8 *)font_family); - if (font_style != nullptr) FcPatternAddString(pat, FC_STYLE, (FcChar8 *)font_style); + FcPattern *pat = FcNameParse((FcChar8 *)font_family.data()); + if (!font_style.empty()) FcPatternAddString(pat, FC_STYLE, (FcChar8 *)font_style.data()); FcConfigSubstitute(nullptr, pat, FcMatchPattern); FcDefaultSubstitute(pat); - fs = FcFontSetCreate(); - match = FcFontMatch(nullptr, pat, &result); + FcFontSet *fs = FcFontSetCreate(); + FcResult result; + FcPattern *match = FcFontMatch(nullptr, pat, &result); if (fs != nullptr && match != nullptr) { - int i; FcChar8 *family; FcChar8 *style; FcChar8 *file; int32_t index; FcFontSetAdd(fs, match); - for (i = 0; err != FT_Err_Ok && i < fs->nfont; i++) { + for (int i = 0; err != FT_Err_Ok && i < fs->nfont; i++) { /* Try the new filename */ if (FcPatternGetString(fs->fonts[i], FC_FILE, 0, &file) == FcResultMatch && FcPatternGetString(fs->fonts[i], FC_FAMILY, 0, &family) == FcResultMatch && @@ -75,7 +76,7 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) FcPatternGetInteger(fs->fonts[i], FC_INDEX, 0, &index) == FcResultMatch) { /* The correct style? */ - if (font_style != nullptr && !StrEqualsIgnoreCase(font_style, (char *)style)) continue; + if (!font_style.empty() && !StrEqualsIgnoreCase(font_style, (char *)style)) continue; /* Font config takes the best shot, which, if the family name is spelled * wrongly a 'random' font, so check whether the family name is the @@ -87,7 +88,6 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face) } } - free(font_family); FcPatternDestroy(pat); FcFontSetDestroy(fs); FcConfigDestroy(fc_instance); From 31cc349a0977facc7a46ba8fad1595c5db07d6ea Mon Sep 17 00:00:00 2001 From: translators Date: Sun, 18 Jun 2023 18:43:02 +0000 Subject: [PATCH 077/123] Update: Translations from eints swedish: 51 changes by SkogisREAL --- src/lang/swedish.txt | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 6ada48888f..d06468cff3 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -195,6 +195,7 @@ STR_UNITS_VELOCITY_IMPERIAL :{DECIMAL}{NBSP} STR_UNITS_VELOCITY_METRIC :{DECIMAL}{NBSP}km/h STR_UNITS_VELOCITY_SI :{DECIMAL}{NBSP}m/s STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}rutor/dag +STR_UNITS_VELOCITY_KNOTS :{DECIMAL}{NBSP}knop STR_UNITS_POWER_IMPERIAL :{DECIMAL}{NBSP}hk STR_UNITS_POWER_METRIC :{DECIMAL}{NBSP}hk @@ -930,8 +931,20 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopiera # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spelinställningar +STR_GAME_OPTIONS_TAB_GENERAL :Allmänt +STR_GAME_OPTIONS_TAB_GRAPHICS :Grafik +STR_GAME_OPTIONS_TAB_SOUND :Ljud +STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Väljd ljud- och musikinställningar +STR_GAME_OPTIONS_VOLUME :Volym +STR_GAME_OPTIONS_SFX_VOLUME :Ljudeffekter +STR_GAME_OPTIONS_MUSIC_VOLUME :Musik +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}Valutaenheter STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Välj valutaenhet @@ -986,6 +999,10 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Välj in # Autosave dropdown ###length 5 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Avstängd +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES :Var 10:e minut +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_30_MINUTES :Var 30:e minut +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :Var 60:e minut +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_120_MINUTES :Var 120:e minut STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Välj vilket språk som ska användas @@ -1022,6 +1039,12 @@ STR_GAME_OPTIONS_GUI_SCALE_3X :3x STR_GAME_OPTIONS_GUI_SCALE_4X :4x STR_GAME_OPTIONS_GUI_SCALE_5X :5x +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Automatisk undersökning +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Delta i en automatisk undersökning +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Om aktiverat, kommer OpenTTD att skicka en enkät när du lämnar ett spel +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Om undersökning och integritet +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Detta öppnar en länk i webbläsaren med mer information om den automatiska undersökningen. +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Förhandsgranska enkätresultat STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafik @@ -1917,6 +1940,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Inga STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial stadsstorleks-multiplikator: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Storstäders genomsnittliga storlek i relation till vanliga städers vid spelets början +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Uppdatera distributionsdiagram var {STRING}{NBSP}sekund{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Tid mellan efterföljande omräkningar av länkgrafen. Varje omräkning beräknar planerna för en komponent i grafen. Det betyder att ett värde X för den här inställningen inte betyder att hela grafen kommer att uppdateras var X:e sekund. Bara viss komponent kommer att göra det. Ju kortare du ställer in den desto mer CPU-tid kommer att behövas för att beräkna den. Ju längre du ställer in den desto längre tid tar det tills lastdistributionen startar på nya rutter. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Ta {STRING}{NBSP}sekund{P 0:2 "" s} för omräkning av distributionsdiagrammet +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Tid som det tar för varje omräkning av en länkdiagramkomponent. När en omräkning startas skapas en tråd som tillåts köra i detta antal sekunder. Ju kortare du ställer in detta desto mer sannolikt är det att tråden inte är färdig när den ska. Sedan stannar spelet tills det är ("lag"). Ju längre du ställer in den desto längre tid tar det för distributionen att uppdateras när rutter ändras. STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributionssätt för passagerare: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symmetriskt" innebär att ungefär samma antal passagerare färdas från station A till station B som från B till A. "Asymmetriskt" innebär att en godtycklig mängd passagerare kan färdas i vardera riktningen. "Manuellt" innebär att ingen automatisk distribution av passagerare sker. @@ -1943,12 +1970,14 @@ STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Belastning av k STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Ofta finns det flera rutter mellan två givna stationer. Godsdistributionen kommer att fylla upp den första rutten först och därefter den näst kortaste tills den är mättad osv. Mättnadsgraden bestäms utifrån en uppskattning av kapaciteten och planerad användning. När godsdristributionen har belastat samtliga rutter, och om det finns kvarvarande behov, då kommer samtliga rutter att överbelastas med preferens för rutterna med högst kapacitet. Uppskattningen av kapaciteten kommer oftast inte ske med hög noggrannhet. Denna inställning tillåter dig att ställa in hur många procent som en kort rutt ska belastas innan algoritmen ska välja nästa längre rutt. Sätt värdet till under 100 % om du vill undvika överfulla stationer i händelse av överskattad kapacitet. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighetsenhet: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_NAUTICAL :Hastighetsenheter (nautical): {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Närhelst en hastighet visas i användargränssnittet, visa den i den valda enheten ###length 5 STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Brittisk (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisk (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Spel enheter (rutor/dag) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_KNOTS :Knop STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Enhet för fordons motoreffekt: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Närhelst ett fordons motoreffekt visas i användargränssnittet, visa den i den valda enheten @@ -2047,6 +2076,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allokera # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Fel med video inställningarna... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... Inget kompatibelt grafikkort hittat. Hårdvaruacceleration inaktiverad +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... GPU-drivrutinen kraschade spelet. Maskinvaruacceleration inaktiverad # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2377,6 +2407,12 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Nej STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Ja, den här gången STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Ja, fråga inte igen +STR_NETWORK_ASK_SURVEY_CAPTION :Delta i automatiserad undersökning? +STR_NETWORK_ASK_SURVEY_TEXT :Vill du delta i den automatiska undersökningen?{}OpenTTD kommer att skicka en undersökning när du lämnar ett spel.{}Du kan ändra detta när som helst under "Spelalternativ". +STR_NETWORK_ASK_SURVEY_PREVIEW :Förhandsgranska enkätresultat +STR_NETWORK_ASK_SURVEY_LINK :Om undersökning och integritet +STR_NETWORK_ASK_SURVEY_NO :Nej +STR_NETWORK_ASK_SURVEY_YES :Ja STR_NETWORK_SPECTATORS :Åskådare @@ -2668,7 +2704,10 @@ STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Välj vi STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Välj stationstyp att bygga STR_STATION_CLASS_DFLT :Grundinställd station +STR_STATION_CLASS_DFLT_STATION :Standardstation +STR_STATION_CLASS_DFLT_ROADSTOP :Standardvägstopp STR_STATION_CLASS_WAYP :Riktmärken +STR_STATION_CLASS_WAYP_WAYPOINT :Standard vägpunkt # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalval @@ -3717,6 +3756,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljer STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Visa detaljerat antal infrastruktur-element STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Ge pengar STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Ge pengar till detta företaget +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Fientligt övertagande +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Gör ett fientligt övertagande av det här företaget STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nytt ansikte STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Välj nytt ansikte på VD:n @@ -3732,6 +3773,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Namn på VD STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Ange hur mycket pengar du vill ge STR_BUY_COMPANY_MESSAGE :{WHITE}Vi letar efter någon som vill köpa och ta över vårt företag{}{}Vill du köpa {COMPANY} för {CURRENCY_LONG}? +STR_BUY_COMPANY_HOSTILE_TAKEOVER :{WHITE} vid ett fientligt övertagande av {COMPANY} kommer du att köpa alla tillgångar, betala av alla lån och betala två års vinst.{}{}Den totala summan uppskattas till {CURRENCY_LONG}.{}{}Vill du fortsätta denna fientliga övertagningen? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktur för {COMPANY} @@ -3804,6 +3846,7 @@ STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Skicka i STR_VEHICLE_LIST_REPLACE_VEHICLES :Byt ut fordon STR_VEHICLE_LIST_SEND_FOR_SERVICING :Skicka på service STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Vinst detta år: {CURRENCY_LONG} (förra året: {CURRENCY_LONG}) +STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Skicka till depå STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Skicka till depå @@ -4568,7 +4611,9 @@ STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Datorspe STR_AI_CONFIG_HUMAN_PLAYER :Mänsklig spelare STR_AI_CONFIG_RANDOM_AI :Slumpa datorspelare STR_AI_CONFIG_NONE :(inget) +STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Max antal motståndare: {ORANGE}{COMMA} +STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Intervall mellan start av tävlande: {ORANGE}{COMMA} minut{P "" s} STR_AI_CONFIG_MOVE_UP :{BLACK}Flytta upp STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Flytta upp vald datorspelare i listan @@ -4627,6 +4672,7 @@ STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licens STR_TEXTFILE_README_CAPTION :{WHITE} {STRING}-manual för {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Ändringshistorik för {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licens för {STRING}{STRING} +STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Förhandsgranskning av enkätresultat. # Vehicle loading indicators @@ -5083,6 +5129,7 @@ STR_ERROR_NO_BUOY :{WHITE}Det finn STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan inte lägga till fordonet i en tidtabell... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Fordon kan enbart vänta vid stationer STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Detta fordon stannar inte vid denna station +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... tidtabellen är ofullständig # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... för många skyltar @@ -5562,17 +5609,21 @@ STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_RIGHT_ARROW :{RIGHT_ARROW} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} +STR_JUST_DECIMAL :{DECIMAL} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} From ed3f14686d1a8328c384674cb2f7a665245ef0a9 Mon Sep 17 00:00:00 2001 From: Niels Martin Hansen Date: Sun, 18 Jun 2023 19:26:53 +0200 Subject: [PATCH 078/123] Fix: Layouter::GetCharAtPosition counting wrong Bug introduced in commit 60399e --- src/gfx_layout.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/gfx_layout.cpp b/src/gfx_layout.cpp index 87b9495409..4ed2204363 100644 --- a/src/gfx_layout.cpp +++ b/src/gfx_layout.cpp @@ -255,9 +255,9 @@ Point Layouter::GetCharPosition(std::string_view::const_iterator ch) const } /** - * Get the character that is at a position. + * Get the character that is at a pixel position in the first line of the layouted text. * @param x Position in the string. - * @return Index of the position or -1 if no character is at the position. + * @return String offset of the position (bytes) or -1 if no character is at the position. */ ptrdiff_t Layouter::GetCharAtPosition(int x) const { @@ -278,9 +278,8 @@ ptrdiff_t Layouter::GetCharAtPosition(int x) const size_t index = run.GetGlyphToCharMap()[i]; size_t cur_idx = 0; - int char_index = 0; - for (auto str = this->string.begin(); str != this->string.end(); char_index++) { - if (cur_idx == index) return char_index; + for (auto str = this->string.begin(); str != this->string.end();) { + if (cur_idx == index) return str - this->string.begin(); WChar c = Utf8Consume(str); cur_idx += line->GetInternalCharLength(c); From 74924c81863a20cc6369060f177915cca102caca Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Jun 2023 19:46:53 +0200 Subject: [PATCH 079/123] Codechange: includes must be before 'safeguards.h' --- src/mixer.cpp | 2 +- src/music.cpp | 2 +- src/settings_gui.cpp | 3 +-- src/town_gui.cpp | 2 +- src/waypoint_gui.cpp | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/mixer.cpp b/src/mixer.cpp index 95f1c30f9d..eefff9dd8d 100644 --- a/src/mixer.cpp +++ b/src/mixer.cpp @@ -12,10 +12,10 @@ #include #include "core/math_func.hpp" #include "framerate_type.h" +#include "mixer.h" #include "settings_type.h" #include "safeguards.h" -#include "mixer.h" struct MixerChannel { /* pointer to allocated buffer memory */ diff --git a/src/music.cpp b/src/music.cpp index 6c69d5e625..bd224fb7fe 100644 --- a/src/music.cpp +++ b/src/music.cpp @@ -13,9 +13,9 @@ /** The type of set we're replacing */ #define SET_TYPE "music" #include "base_media_func.h" +#include "random_access_file_type.h" #include "safeguards.h" -#include "random_access_file_type.h" /** diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 70cf9189cb..9e4f372175 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -44,10 +44,9 @@ #include "network/core/config.h" #include "network/network_gui.h" #include "network/network_survey.h" - +#include "video/video_driver.hpp" #include "safeguards.h" -#include "video/video_driver.hpp" static const StringID _autosave_dropdown[] = { diff --git a/src/town_gui.cpp b/src/town_gui.cpp index 0ddf2b9906..c60307fa5c 100644 --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -37,13 +37,13 @@ #include "timer/timer.h" #include "timer/timer_game_calendar.h" #include "timer/timer_window.h" +#include "zoom_func.h" #include "widgets/town_widget.h" #include "table/strings.h" #include "safeguards.h" -#include "zoom_func.h" TownKdtree _town_local_authority_kdtree(&Kdtree_TownXYFunc); diff --git a/src/waypoint_gui.cpp b/src/waypoint_gui.cpp index 8081984e0c..d8b3c10379 100644 --- a/src/waypoint_gui.cpp +++ b/src/waypoint_gui.cpp @@ -21,13 +21,13 @@ #include "window_func.h" #include "waypoint_base.h" #include "waypoint_cmd.h" +#include "zoom_func.h" #include "widgets/waypoint_widget.h" #include "table/strings.h" #include "safeguards.h" -#include "zoom_func.h" /** GUI for accessing waypoints and buoys. */ struct WaypointWindow : Window { From 70de70bdcddf9c2fbb79fd3c7520a85f34aed466 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Jun 2023 19:24:12 +0200 Subject: [PATCH 080/123] Codechange: refactor code to remove need for stredup --- src/console_cmds.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index ceb11f5b49..62a22037a3 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -1275,16 +1275,14 @@ DEF_CONSOLE_CMD(ConStartAI) * try again with the assumption everything right of the dot is * the version the user wants to load. */ if (!config->HasScript()) { - char *name = stredup(argv[1]); - char *e = strrchr(name, '.'); + const char *e = strrchr(argv[1], '.'); if (e != nullptr) { - *e = '\0'; + size_t name_length = e - argv[1]; e++; int version = atoi(e); - config->Change(name, version, true); + config->Change(std::string(argv[1], name_length), version, true); } - free(name); } if (!config->HasScript()) { From 2a2443dd01385d39b687befd6b5ddee6494505a8 Mon Sep 17 00:00:00 2001 From: PeterN Date: Sun, 18 Jun 2023 20:48:04 +0100 Subject: [PATCH 081/123] Feature: Create group of vehicles from manage vehicle list button. (#10890) --- src/CMakeLists.txt | 1 + src/autoreplace_cmd.cpp | 2 +- src/group_cmd.cpp | 59 +++++++++++++++++++++------------ src/group_cmd.h | 6 ++-- src/group_gui.cpp | 18 ++++++---- src/lang/english.txt | 1 + src/order_backup.cpp | 2 +- src/script/api/script_group.cpp | 2 +- src/vehicle_cmd.cpp | 2 +- src/vehicle_cmd.h | 12 +------ src/vehicle_gui.cpp | 19 ++++++++--- src/vehicle_gui_base.h | 5 +-- src/vehiclelist_cmd.h | 27 +++++++++++++++ 13 files changed, 104 insertions(+), 52 deletions(-) create mode 100644 src/vehiclelist_cmd.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bc00244f7c..8420e650a9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -504,6 +504,7 @@ add_files( vehicle_type.h vehiclelist.cpp vehiclelist.h + vehiclelist_cmd.h viewport.cpp viewport_cmd.h viewport_func.h diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index 50e6f94907..81c2831cdb 100644 --- a/src/autoreplace_cmd.cpp +++ b/src/autoreplace_cmd.cpp @@ -403,7 +403,7 @@ static CommandCost CopyHeadSpecificThings(Vehicle *old_head, Vehicle *new_head, if (cost.Succeeded() && old_head != new_head) cost.AddCost(Command::Do(DC_EXEC, CO_SHARE, new_head->index, old_head->index)); /* Copy group membership */ - if (cost.Succeeded() && old_head != new_head) cost.AddCost(std::get<0>(Command::Do(DC_EXEC, old_head->group_id, new_head->index, false))); + if (cost.Succeeded() && old_head != new_head) cost.AddCost(std::get<0>(Command::Do(DC_EXEC, old_head->group_id, new_head->index, false, VehicleListIdentifier{}))); /* Perform start/stop check whether the new vehicle suits newgrf restrictions etc. */ if (cost.Succeeded()) { diff --git a/src/group_cmd.cpp b/src/group_cmd.cpp index 00c7c82b06..407b31ab5d 100644 --- a/src/group_cmd.cpp +++ b/src/group_cmd.cpp @@ -512,48 +512,63 @@ static void AddVehicleToGroup(Vehicle *v, GroupID new_g) * @param add_shared Add shared vehicles as well. * @return the cost of this operation or an error */ -std::tuple CmdAddVehicleGroup(DoCommandFlag flags, GroupID group_id, VehicleID veh_id, bool add_shared) +std::tuple CmdAddVehicleGroup(DoCommandFlag flags, GroupID group_id, VehicleID veh_id, bool add_shared, const VehicleListIdentifier &vli) { - Vehicle *v = Vehicle::GetIfValid(veh_id); GroupID new_g = group_id; + if (!Group::IsValidID(new_g) && !IsDefaultGroupID(new_g) && new_g != NEW_GROUP) return { CMD_ERROR, INVALID_GROUP }; - if (v == nullptr || (!Group::IsValidID(new_g) && !IsDefaultGroupID(new_g) && new_g != NEW_GROUP)) return { CMD_ERROR, INVALID_GROUP }; + VehicleList list; + if (veh_id == INVALID_VEHICLE && vli.Valid()) { + if (!GenerateVehicleSortList(&list, vli) || list.empty()) return { CMD_ERROR, INVALID_GROUP }; + } else { + Vehicle *v = Vehicle::GetIfValid(veh_id); + if (v == nullptr) return { CMD_ERROR, INVALID_GROUP }; + list.push_back(v); + } + + VehicleType vtype = list.front()->type; + for (const Vehicle *v : list) { + if (v->owner != _current_company || !v->IsPrimaryVehicle()) return { CMD_ERROR, INVALID_GROUP }; + } if (Group::IsValidID(new_g)) { Group *g = Group::Get(new_g); - if (g->owner != _current_company || g->vehicle_type != v->type) return { CMD_ERROR, INVALID_GROUP }; + if (g->owner != _current_company || g->vehicle_type != vtype) return { CMD_ERROR, INVALID_GROUP }; } - if (v->owner != _current_company || !v->IsPrimaryVehicle()) return { CMD_ERROR, INVALID_GROUP }; - if (new_g == NEW_GROUP) { /* Create new group. */ - auto [ret, new_group_id] = CmdCreateGroup(flags, v->type, INVALID_GROUP); + auto [ret, new_group_id] = CmdCreateGroup(flags, vtype, INVALID_GROUP); if (ret.Failed()) return { ret, new_group_id }; new_g = new_group_id; } if (flags & DC_EXEC) { - AddVehicleToGroup(v, new_g); + for (const Vehicle *vc : list) { + /* VehicleList is const but we need to modify the vehicle. */ + Vehicle *v = Vehicle::Get(vc->index); + AddVehicleToGroup(v, new_g); - if (add_shared) { - /* Add vehicles in the shared order list as well. */ - for (Vehicle *v2 = v->FirstShared(); v2 != nullptr; v2 = v2->NextShared()) { - if (v2->group_id != new_g) AddVehicleToGroup(v2, new_g); + if (add_shared) { + /* Add vehicles in the shared order list as well. */ + for (Vehicle *v2 = v->FirstShared(); v2 != nullptr; v2 = v2->NextShared()) { + if (v2->group_id != new_g) AddVehicleToGroup(v2, new_g); + } } + + SetWindowDirty(WC_VEHICLE_DEPOT, v->tile); + SetWindowDirty(WC_VEHICLE_VIEW, v->index); + SetWindowDirty(WC_VEHICLE_DETAILS, v->index); + InvalidateWindowData(WC_VEHICLE_VIEW, v->index); + InvalidateWindowData(WC_VEHICLE_DETAILS, v->index); } - GroupStatistics::UpdateAutoreplace(v->owner); + GroupStatistics::UpdateAutoreplace(_current_company); /* Update the Replace Vehicle Windows */ - SetWindowDirty(WC_REPLACE_VEHICLE, v->type); - SetWindowDirty(WC_VEHICLE_DEPOT, v->tile); - SetWindowDirty(WC_VEHICLE_VIEW, v->index); - SetWindowDirty(WC_VEHICLE_DETAILS, v->index); - InvalidateWindowData(GetWindowClassForVehicleType(v->type), VehicleListIdentifier(VL_GROUP_LIST, v->type, _current_company).Pack()); - InvalidateWindowData(WC_VEHICLE_VIEW, v->index); - InvalidateWindowData(WC_VEHICLE_DETAILS, v->index); + SetWindowDirty(WC_REPLACE_VEHICLE, vtype); + InvalidateWindowData(GetWindowClassForVehicleType(vtype), VehicleListIdentifier(VL_GROUP_LIST, vtype, _current_company).Pack()); } return { CommandCost(), new_g }; @@ -579,7 +594,7 @@ CommandCost CmdAddSharedVehicleGroup(DoCommandFlag flags, GroupID id_g, VehicleT /* For each shared vehicles add it to the group */ for (Vehicle *v2 = v->FirstShared(); v2 != nullptr; v2 = v2->NextShared()) { - if (v2->group_id != id_g) Command::Do(flags, id_g, v2->index, false); + if (v2->group_id != id_g) Command::Do(flags, id_g, v2->index, false, VehicleListIdentifier{}); } } } @@ -610,7 +625,7 @@ CommandCost CmdRemoveAllVehiclesGroup(DoCommandFlag flags, GroupID group_id) if (v->group_id != group_id) continue; /* Add The Vehicle to the default group */ - Command::Do(flags, DEFAULT_GROUP, v->index, false); + Command::Do(flags, DEFAULT_GROUP, v->index, false, VehicleListIdentifier{}); } } diff --git a/src/group_cmd.h b/src/group_cmd.h index f84e378598..28ef29b974 100644 --- a/src/group_cmd.h +++ b/src/group_cmd.h @@ -13,6 +13,8 @@ #include "command_type.h" #include "group_type.h" #include "vehicle_type.h" +#include "vehiclelist.h" +#include "vehiclelist_cmd.h" enum Colours : byte; enum GroupFlags : uint8; @@ -26,7 +28,7 @@ enum class AlterGroupMode : byte { std::tuple CmdCreateGroup(DoCommandFlag flags, VehicleType vt, GroupID parent_group); CommandCost CmdAlterGroup(DoCommandFlag flags, AlterGroupMode mode, GroupID group_id, GroupID parent_id, const std::string &text); CommandCost CmdDeleteGroup(DoCommandFlag flags, GroupID group_id); -std::tuple CmdAddVehicleGroup(DoCommandFlag flags, GroupID group_id, VehicleID veh_id, bool add_shared); +std::tuple CmdAddVehicleGroup(DoCommandFlag flags, GroupID group_id, VehicleID veh_id, bool add_shared, const VehicleListIdentifier &vli); CommandCost CmdAddSharedVehicleGroup(DoCommandFlag flags, GroupID id_g, VehicleType type); CommandCost CmdRemoveAllVehiclesGroup(DoCommandFlag flags, GroupID group_id); CommandCost CmdSetGroupFlag(DoCommandFlag flags, GroupID group_id, GroupFlags flag, bool value, bool recursive); @@ -42,6 +44,6 @@ DEF_CMD_TRAIT(CMD_SET_GROUP_FLAG, CmdSetGroupFlag, 0, CMDT_ DEF_CMD_TRAIT(CMD_SET_GROUP_LIVERY, CmdSetGroupLivery, 0, CMDT_ROUTE_MANAGEMENT) void CcCreateGroup(Commands cmd, const CommandCost &result, GroupID new_group, VehicleType vt, GroupID parent_group); -void CcAddVehicleNewGroup(Commands cmd, const CommandCost &result, GroupID new_group, GroupID, VehicleID veh_id, bool); +void CcAddVehicleNewGroup(Commands cmd, const CommandCost &result, GroupID new_group, GroupID, VehicleID veh_id, bool, const VehicleListIdentifier &); #endif /* GROUP_CMD_H */ diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 4beee5a318..7999f9faac 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -428,7 +428,7 @@ public: break; case WID_GL_MANAGE_VEHICLES_DROPDOWN: { - Dimension d = this->GetActionDropdownSize(true, true); + Dimension d = this->GetActionDropdownSize(true, true, true); d.height += padding.height; d.width += padding.width; *size = maxdim(*size, d); @@ -809,7 +809,7 @@ public: break; case WID_GL_MANAGE_VEHICLES_DROPDOWN: { - ShowDropDownList(this, this->BuildActionDropdownList(true, Group::IsValidID(this->vli.index)), 0, WID_GL_MANAGE_VEHICLES_DROPDOWN); + ShowDropDownList(this, this->BuildActionDropdownList(true, Group::IsValidID(this->vli.index), IsDefaultGroupID(this->vli.index)), 0, WID_GL_MANAGE_VEHICLES_DROPDOWN); break; } @@ -865,7 +865,7 @@ public: { switch (widget) { case WID_GL_DEFAULT_VEHICLES: // Ungrouped vehicles - Command::Post(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE, DEFAULT_GROUP, this->vehicle_sel, _ctrl_pressed || this->grouping == GB_SHARED_ORDERS); + Command::Post(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE, DEFAULT_GROUP, this->vehicle_sel, _ctrl_pressed || this->grouping == GB_SHARED_ORDERS, VehicleListIdentifier{}); this->vehicle_sel = INVALID_VEHICLE; this->group_over = INVALID_GROUP; @@ -882,7 +882,7 @@ public: auto it = this->group_sb->GetScrolledItemFromWidget(this->groups, pt.y, this, WID_GL_LIST_GROUP); GroupID new_g = it == this->groups.end() ? NEW_GROUP : (*it)->index; - Command::Post(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE, new_g == NEW_GROUP ? CcAddVehicleNewGroup : nullptr, new_g, vindex, _ctrl_pressed || this->grouping == GB_SHARED_ORDERS); + Command::Post(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE, new_g == NEW_GROUP ? CcAddVehicleNewGroup : nullptr, new_g, vindex, _ctrl_pressed || this->grouping == GB_SHARED_ORDERS, VehicleListIdentifier{}); break; } @@ -975,6 +975,10 @@ public: break; } + case ADI_CREATE_GROUP: // Create group + Command::Post(CcAddVehicleNewGroup, NEW_GROUP, INVALID_VEHICLE, false, this->vli); + break; + case ADI_ADD_SHARED: // Add shared Vehicles assert(Group::IsValidID(this->vli.index)); @@ -1190,12 +1194,12 @@ void CcCreateGroup(Commands cmd, const CommandCost &result, GroupID new_group, V * @param new_group ID of the created group. * @param veh_id vehicle to add to a group */ -void CcAddVehicleNewGroup(Commands cmd, const CommandCost &result, GroupID new_group, GroupID, VehicleID veh_id, bool) +void CcAddVehicleNewGroup(Commands cmd, const CommandCost &result, GroupID new_group, GroupID, VehicleID veh_id, bool, const VehicleListIdentifier &) { if (result.Failed()) return; - assert(Vehicle::IsValidID(veh_id)); - CcCreateGroup(new_group, Vehicle::Get(veh_id)->type); + const Group *g = Group::Get(new_group); + CcCreateGroup(new_group, g->vehicle_type); } /** diff --git a/src/lang/english.txt b/src/lang/english.txt index 79dc659add..bf818a40c3 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -3849,6 +3849,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Manage l STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Send instructions to all vehicles in this list STR_VEHICLE_LIST_REPLACE_VEHICLES :Replace vehicles STR_VEHICLE_LIST_SEND_FOR_SERVICING :Send for Servicing +STR_VEHICLE_LIST_CREATE_GROUP :Create group STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profit this year: {CURRENCY_LONG} (last year: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING1} {STRING1} diff --git a/src/order_backup.cpp b/src/order_backup.cpp index 610540b89c..633aa6c06e 100644 --- a/src/order_backup.cpp +++ b/src/order_backup.cpp @@ -94,7 +94,7 @@ void OrderBackup::DoRestore(Vehicle *v) if (v->cur_implicit_order_index >= v->GetNumOrders()) v->cur_implicit_order_index = v->cur_real_order_index; /* Restore vehicle group */ - Command::Do(DC_EXEC, this->group, v->index, false); + Command::Do(DC_EXEC, this->group, v->index, false, VehicleListIdentifier{}); } /** diff --git a/src/script/api/script_group.cpp b/src/script/api/script_group.cpp index 490da7564a..ba4eab3913 100644 --- a/src/script/api/script_group.cpp +++ b/src/script/api/script_group.cpp @@ -132,7 +132,7 @@ EnforcePrecondition(false, IsValidGroup(group_id) || group_id == GROUP_DEFAULT); EnforcePrecondition(false, ScriptVehicle::IsPrimaryVehicle(vehicle_id)); - return ScriptObject::Command::Do(group_id, vehicle_id, false); + return ScriptObject::Command::Do(group_id, vehicle_id, false, VehicleListIdentifier{}); } /* static */ bool ScriptGroup::EnableWagonRemoval(bool enable_removal) diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index ef301bbf59..ba988ffeb9 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -920,7 +920,7 @@ std::tuple CmdCloneVehicle(DoCommandFlag flags, TileInde if (flags & DC_EXEC) { /* Cloned vehicles belong to the same group */ - Command::Do(flags, v_front->group_id, w_front->index, false); + Command::Do(flags, v_front->group_id, w_front->index, false, VehicleListIdentifier{}); } diff --git a/src/vehicle_cmd.h b/src/vehicle_cmd.h index 3f8faf5d7d..d892875ff1 100644 --- a/src/vehicle_cmd.h +++ b/src/vehicle_cmd.h @@ -14,6 +14,7 @@ #include "engine_type.h" #include "vehicle_type.h" #include "vehiclelist.h" +#include "vehiclelist_cmd.h" #include "cargo_type.h" std::tuple CmdBuildVehicle(DoCommandFlag flags, TileIndex tile, EngineID eid, bool use_free_vehicles, CargoID cargo, ClientID client_id); @@ -43,17 +44,6 @@ DEF_CMD_TRAIT(CMD_DEPOT_MASS_AUTOREPLACE, CmdDepotMassAutoReplace, 0, void CcBuildPrimaryVehicle(Commands cmd, const CommandCost &result, VehicleID new_veh_id, uint, uint16, CargoArray); void CcStartStopVehicle(Commands cmd, const CommandCost &result, VehicleID veh_id, bool); -template -inline EndianBufferWriter &operator <<(EndianBufferWriter &buffer, const VehicleListIdentifier &vli) -{ - return buffer << vli.type << vli.vtype << vli.company << vli.index; -} - -inline EndianBufferReader &operator >>(EndianBufferReader &buffer, VehicleListIdentifier &vli) -{ - return buffer >> vli.type >> vli.vtype >> vli.company >> vli.index; -} - template inline EndianBufferWriter &operator <<(EndianBufferWriter &buffer, const CargoArray &cargo_array) { diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index 7bab872700..772425b3b4 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -43,6 +43,7 @@ #include "roadveh_cmd.h" #include "train_cmd.h" #include "hotkeys.h" +#include "group_cmd.h" #include "safeguards.h" @@ -344,9 +345,10 @@ void BaseVehicleListWindow::FilterVehicleList() * Compute the size for the Action dropdown. * @param show_autoreplace If true include the autoreplace item. * @param show_group If true include group-related stuff. + * @param show_create If true include group-create item. * @return Required size. */ -Dimension BaseVehicleListWindow::GetActionDropdownSize(bool show_autoreplace, bool show_group) +Dimension BaseVehicleListWindow::GetActionDropdownSize(bool show_autoreplace, bool show_group, bool show_create) { Dimension d = {0, 0}; @@ -357,6 +359,8 @@ Dimension BaseVehicleListWindow::GetActionDropdownSize(bool show_autoreplace, bo if (show_group) { d = maxdim(d, GetStringBoundingBox(STR_GROUP_ADD_SHARED_VEHICLE)); d = maxdim(d, GetStringBoundingBox(STR_GROUP_REMOVE_ALL_VEHICLES)); + } else if (show_create) { + d = maxdim(d, GetStringBoundingBox(STR_VEHICLE_LIST_CREATE_GROUP)); } return d; @@ -372,9 +376,10 @@ void BaseVehicleListWindow::OnInit() * Display the Action dropdown window. * @param show_autoreplace If true include the autoreplace item. * @param show_group If true include group-related stuff. + * @param show_create If true include group-create item. * @return Itemlist for dropdown */ -DropDownList BaseVehicleListWindow::BuildActionDropdownList(bool show_autoreplace, bool show_group) +DropDownList BaseVehicleListWindow::BuildActionDropdownList(bool show_autoreplace, bool show_group, bool show_create) { DropDownList list; @@ -385,6 +390,8 @@ DropDownList BaseVehicleListWindow::BuildActionDropdownList(bool show_autoreplac if (show_group) { list.emplace_back(new DropDownListStringItem(STR_GROUP_ADD_SHARED_VEHICLE, ADI_ADD_SHARED, false)); list.emplace_back(new DropDownListStringItem(STR_GROUP_REMOVE_ALL_VEHICLES, ADI_REMOVE_ALL, false)); + } else if (show_create) { + list.emplace_back(new DropDownListStringItem(STR_VEHICLE_LIST_CREATE_GROUP, ADI_CREATE_GROUP, false)); } return list; @@ -1889,7 +1896,7 @@ public: break; case WID_VL_MANAGE_VEHICLES_DROPDOWN: { - Dimension d = this->GetActionDropdownSize(this->vli.type == VL_STANDARD, false); + Dimension d = this->GetActionDropdownSize(this->vli.type == VL_STANDARD, false, true); d.height += padding.height; d.width += padding.width; *size = maxdim(*size, d); @@ -2070,7 +2077,7 @@ public: break; case WID_VL_MANAGE_VEHICLES_DROPDOWN: { - ShowDropDownList(this, this->BuildActionDropdownList(VehicleListIdentifier::UnPack(this->window_number).type == VL_STANDARD, false), 0, WID_VL_MANAGE_VEHICLES_DROPDOWN); + ShowDropDownList(this, this->BuildActionDropdownList(VehicleListIdentifier::UnPack(this->window_number).type == VL_STANDARD, false, true), 0, WID_VL_MANAGE_VEHICLES_DROPDOWN); break; } @@ -2108,6 +2115,10 @@ public: Command::Post(GetCmdSendToDepotMsg(this->vli.vtype), 0, DepotCommand::MassSend | (index == ADI_SERVICE ? DepotCommand::Service : DepotCommand::None), this->vli); break; + case ADI_CREATE_GROUP: // Create group + Command::Post(CcAddVehicleNewGroup, NEW_GROUP, INVALID_VEHICLE, false, this->vli); + break; + default: NOT_REACHED(); } break; diff --git a/src/vehicle_gui_base.h b/src/vehicle_gui_base.h index 8ebaae2f49..b7235a2d75 100644 --- a/src/vehicle_gui_base.h +++ b/src/vehicle_gui_base.h @@ -102,6 +102,7 @@ struct BaseVehicleListWindow : public Window { ADI_DEPOT, ADI_ADD_SHARED, ADI_REMOVE_ALL, + ADI_CREATE_GROUP, }; static const StringID vehicle_depot_name[]; @@ -124,8 +125,8 @@ struct BaseVehicleListWindow : public Window { void SetCargoFilterIndex(byte index); void SetCargoFilterArray(); void FilterVehicleList(); - Dimension GetActionDropdownSize(bool show_autoreplace, bool show_group); - DropDownList BuildActionDropdownList(bool show_autoreplace, bool show_group); + Dimension GetActionDropdownSize(bool show_autoreplace, bool show_group, bool show_create); + DropDownList BuildActionDropdownList(bool show_autoreplace, bool show_group, bool show_create); const StringID *GetVehicleSorterNames() { diff --git a/src/vehiclelist_cmd.h b/src/vehiclelist_cmd.h new file mode 100644 index 0000000000..9960647062 --- /dev/null +++ b/src/vehiclelist_cmd.h @@ -0,0 +1,27 @@ +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file vehiclelist_cmd.h Functions and type for serializing vehicle lists. */ + +#ifndef VEHICLELIST_CMD_H +#define VEHICLELIST_CMD_H + +#include "command_func.h" +#include "vehiclelist.h" + +template +inline EndianBufferWriter &operator <<(EndianBufferWriter &buffer, const VehicleListIdentifier &vli) +{ + return buffer << vli.type << vli.vtype << vli.company << vli.index; +} + +inline EndianBufferReader &operator >>(EndianBufferReader &buffer, VehicleListIdentifier &vli) +{ + return buffer >> vli.type >> vli.vtype >> vli.company >> vli.index; +} + +#endif /* VEHICLELIST_CMD_H */ From 714ff35e9d9c7b65094fdd9c5ec2b8aa977cacd8 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Jun 2023 21:30:25 +0200 Subject: [PATCH 082/123] Codechange: move to std::string over stredup + free --- src/os/windows/win32_main.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/os/windows/win32_main.cpp b/src/os/windows/win32_main.cpp index f8b13a751f..745d35cbab 100644 --- a/src/os/windows/win32_main.cpp +++ b/src/os/windows/win32_main.cpp @@ -58,10 +58,8 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi CrashLog::InitialiseCrashLog(); - /* Convert the command line to UTF-8. We need a dedicated buffer - * for this because argv[] points into this buffer and this needs to - * be available between subsequent calls to FS2OTTD(). */ - char *cmdline = stredup(FS2OTTD(GetCommandLine()).c_str()); + /* Convert the command line to UTF-8. */ + std::string cmdline = FS2OTTD(GetCommandLine()); /* Set the console codepage to UTF-8. */ SetConsoleOutputCP(CP_UTF8); @@ -76,7 +74,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi SetRandomSeed(GetTickCount()); char *argv[64]; // max 64 command line arguments - int argc = ParseCommandLine(cmdline, argv, lengthof(argv)); + int argc = ParseCommandLine(cmdline.data(), argv, lengthof(argv)); /* Make sure our arguments contain only valid UTF-8 characters. */ for (int i = 0; i < argc; i++) StrMakeValidInPlace(argv[i]); @@ -86,6 +84,5 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi /* Restore system timer resolution. */ timeEndPeriod(1); - free(cmdline); return ret; } From b3669a87959bb5b00953f9ad8a5344c12b0b5074 Mon Sep 17 00:00:00 2001 From: merni-ns <66267867+merni-ns@users.noreply.github.com> Date: Mon, 19 Jun 2023 04:33:32 +0530 Subject: [PATCH 083/123] Fix #11026: Use real engine name instead of default name for filtering (#11033) --- src/build_vehicle_gui.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index a06c6088af..8bbf899901 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -1370,7 +1370,8 @@ struct BuildVehicleWindow : Window { /* Filter engine name */ this->string_filter.ResetState(); - this->string_filter.AddLine(GetString(e->info.string_id)); + SetDParam(0, PackEngineNameDParam(e->index, EngineNameContext::PurchaseList)); + this->string_filter.AddLine(GetString(STR_ENGINE_NAME)); /* Filter NewGRF extra text */ auto text = GetNewGRFAdditionalText(e->index); From ea54408e1d9e39b5459497f0de5f3bd193c93ae8 Mon Sep 17 00:00:00 2001 From: translators Date: Mon, 19 Jun 2023 18:40:36 +0000 Subject: [PATCH 084/123] Update: Translations from eints french: 1 change by Lishouuu --- src/lang/french.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/french.txt b/src/lang/french.txt index 86be513818..2e6b252bd2 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -2097,7 +2097,7 @@ STR_INTRO_GAME_OPTIONS :{BLACK}Options STR_INTRO_HIGHSCORE :{BLACK}Meilleurs scores STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Paramètres de jeu STR_INTRO_NEWGRF_SETTINGS :{BLACK}Paramètres NewGRF -STR_INTRO_ONLINE_CONTENT :{BLACK}Contenue additionnel en ligne +STR_INTRO_ONLINE_CONTENT :{BLACK}Contenu additionnel en ligne STR_INTRO_AI_SETTINGS :{BLACK}Configuration des IAs STR_INTRO_GAMESCRIPT_SETTINGS :{BLACK}Configuration du script de jeu STR_INTRO_QUIT :{BLACK}Quitter From 4fbc81003fd5c680d4357ddd0b22d9583789eb15 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 15 Jun 2023 18:07:58 +0200 Subject: [PATCH 085/123] Codechange: make SQString::Create that supports std::string and use that --- src/3rdparty/squirrel/include/squirrel.h | 2 +- src/3rdparty/squirrel/squirrel/sqcompiler.cpp | 2 +- src/3rdparty/squirrel/squirrel/sqdebug.cpp | 6 +++--- src/3rdparty/squirrel/squirrel/sqstring.h | 1 + src/3rdparty/squirrel/squirrel/sqvm.cpp | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/3rdparty/squirrel/include/squirrel.h b/src/3rdparty/squirrel/include/squirrel.h index d5ec13c119..7924dde346 100644 --- a/src/3rdparty/squirrel/include/squirrel.h +++ b/src/3rdparty/squirrel/include/squirrel.h @@ -238,7 +238,7 @@ void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars); SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask); SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx); void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len); -static inline void sq_pushstring(HSQUIRRELVM v, const std::string &str, SQInteger len = -1) { sq_pushstring(v, str.c_str(), len == -1 ? str.size() : len); } +static inline void sq_pushstring(HSQUIRRELVM v, const std::string &str, SQInteger len = -1) { sq_pushstring(v, str.data(), len == -1 ? str.size() : len); } void sq_pushfloat(HSQUIRRELVM v,SQFloat f); void sq_pushinteger(HSQUIRRELVM v,SQInteger n); void sq_pushbool(HSQUIRRELVM v,SQBool b); diff --git a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp index f29cf34485..ab11a2ccd1 100644 --- a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp +++ b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp @@ -187,7 +187,7 @@ public: _ss(_vm)->_compilererrorhandler(_vm, compilererror.c_str(), type(_sourcename) == OT_STRING ? _stringval(_sourcename) : "unknown", _lex._currentline, _lex._currentcolumn); } - _vm->_lasterror = SQString::Create(_ss(_vm), compilererror.c_str(), -1); + _vm->_lasterror = SQString::Create(_ss(_vm), compilererror); return false; } } diff --git a/src/3rdparty/squirrel/squirrel/sqdebug.cpp b/src/3rdparty/squirrel/squirrel/sqdebug.cpp index 6a7eea5169..6ea958bbdf 100644 --- a/src/3rdparty/squirrel/squirrel/sqdebug.cpp +++ b/src/3rdparty/squirrel/squirrel/sqdebug.cpp @@ -66,7 +66,7 @@ SQRESULT sq_stackinfos(HSQUIRRELVM v, SQInteger level, SQStackInfos *si) void SQVM::Raise_Error(const std::string &msg) { - _lasterror = SQString::Create(_ss(this),msg.c_str(),-1); + _lasterror = SQString::Create(_ss(this),msg); } void SQVM::Raise_Error(SQObjectPtr &desc) @@ -79,9 +79,9 @@ SQString *SQVM::PrintObjVal(const SQObject &o) switch(type(o)) { case OT_STRING: return _string(o); case OT_INTEGER: - return SQString::Create(_ss(this), fmt::format("{}", _integer(o)).c_str()); + return SQString::Create(_ss(this), fmt::format("{}", _integer(o))); case OT_FLOAT: - return SQString::Create(_ss(this), fmt::format("{:.14g}", _float(o)).c_str()); + return SQString::Create(_ss(this), fmt::format("{:.14g}", _float(o))); default: return SQString::Create(_ss(this), GetTypeName(o)); } diff --git a/src/3rdparty/squirrel/squirrel/sqstring.h b/src/3rdparty/squirrel/squirrel/sqstring.h index a5f298e1e2..1d20d0b610 100644 --- a/src/3rdparty/squirrel/squirrel/sqstring.h +++ b/src/3rdparty/squirrel/squirrel/sqstring.h @@ -17,6 +17,7 @@ struct SQString : public SQRefCounted ~SQString(){} public: static SQString *Create(SQSharedState *ss, const SQChar *, SQInteger len = -1 ); + static SQString *Create(SQSharedState *ss, const std::string &str) { return Create(ss, str.data(), str.size()); } SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); void Release(); SQSharedState *_sharedstate; diff --git a/src/3rdparty/squirrel/squirrel/sqvm.cpp b/src/3rdparty/squirrel/squirrel/sqvm.cpp index a976a91093..977e9fa25c 100644 --- a/src/3rdparty/squirrel/squirrel/sqvm.cpp +++ b/src/3rdparty/squirrel/squirrel/sqvm.cpp @@ -291,7 +291,7 @@ void SQVM::ToString(const SQObjectPtr &o,SQObjectPtr &res) default: str = fmt::format("({} : 0x{:08X})",GetTypeName(o),(size_t)(void*)_rawval(o)); } - res = SQString::Create(_ss(this),str.c_str()); + res = SQString::Create(_ss(this),str); } From 8caacb5a49265b49cb2f179e3f8a81b5ce4e290e Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Jun 2023 18:57:37 +0200 Subject: [PATCH 086/123] Codechange: use std::deque for console history --- src/console_gui.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/console_gui.cpp b/src/console_gui.cpp index 143c333ac9..9baef57542 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -71,8 +71,8 @@ static bool TruncateBuffer(); /* ** main console cmd buffer ** */ static Textbuf _iconsole_cmdline(ICON_CMDLN_SIZE); -static char *_iconsole_history[ICON_HISTORY_SIZE]; -static int _iconsole_historypos; +static std::deque _iconsole_history; +static ptrdiff_t _iconsole_historypos; IConsoleModes _iconsole_mode; /* *************** * @@ -350,7 +350,6 @@ void IConsoleGUIInit() _iconsole_mode = ICONSOLE_CLOSED; IConsoleClearBuffer(); - memset(_iconsole_history, 0, sizeof(_iconsole_history)); IConsolePrint(TC_LIGHT_BLUE, "OpenTTD Game Console Revision 7 - {}", _openttd_revision); IConsolePrint(CC_WHITE, "------------------------------------"); @@ -424,15 +423,14 @@ static const char *IConsoleHistoryAdd(const char *cmd) if (StrEmpty(cmd)) return nullptr; /* Do not put in history if command is same as previous */ - if (_iconsole_history[0] == nullptr || strcmp(_iconsole_history[0], cmd) != 0) { - free(_iconsole_history[ICON_HISTORY_SIZE - 1]); - memmove(&_iconsole_history[1], &_iconsole_history[0], sizeof(_iconsole_history[0]) * (ICON_HISTORY_SIZE - 1)); - _iconsole_history[0] = stredup(cmd); + if (_iconsole_history.empty() || _iconsole_history.front() != cmd) { + _iconsole_history.emplace_front(cmd); + while (_iconsole_history.size() > ICON_HISTORY_SIZE) _iconsole_history.pop_back(); } /* Reset the history position */ IConsoleResetHistoryPos(); - return _iconsole_history[0]; + return _iconsole_history.front().c_str(); } /** @@ -441,10 +439,8 @@ static const char *IConsoleHistoryAdd(const char *cmd) */ static void IConsoleHistoryNavigate(int direction) { - if (_iconsole_history[0] == nullptr) return; // Empty history - _iconsole_historypos = Clamp(_iconsole_historypos + direction, -1, ICON_HISTORY_SIZE - 1); - - if (direction > 0 && _iconsole_history[_iconsole_historypos] == nullptr) _iconsole_historypos--; + if (_iconsole_history.empty()) return; // Empty history + _iconsole_historypos = Clamp(_iconsole_historypos + direction, -1, _iconsole_history.size() - 1); if (_iconsole_historypos == -1) { _iconsole_cmdline.DeleteAll(); From aaf6811a2c88ba410ee21ea23f68278da7281190 Mon Sep 17 00:00:00 2001 From: translators Date: Tue, 20 Jun 2023 13:37:22 +0000 Subject: [PATCH 087/123] Update: Translations from eints english (au): 1 change by krysclarke korean: 1 change by telk5093 russian: 1 change by Ln-Wolf french: 1 change by Lishouuu portuguese: 1 change by azulcosta --- src/lang/english_AU.txt | 1 + src/lang/french.txt | 1 + src/lang/korean.txt | 1 + src/lang/portuguese.txt | 1 + src/lang/russian.txt | 1 + 5 files changed, 5 insertions(+) diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 4638773d51..cea897b6bb 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -3849,6 +3849,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Manage l STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Send instructions to all vehicles in this list STR_VEHICLE_LIST_REPLACE_VEHICLES :Replace vehicles STR_VEHICLE_LIST_SEND_FOR_SERVICING :Send for Servicing +STR_VEHICLE_LIST_CREATE_GROUP :Create group STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profit this year: {CURRENCY_LONG} (last year: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} diff --git a/src/lang/french.txt b/src/lang/french.txt index 2e6b252bd2..08bb406091 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -3850,6 +3850,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Gérer l STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Envoyer des instructions à tous les véhicules de cette liste STR_VEHICLE_LIST_REPLACE_VEHICLES :Remplacer des véhicules STR_VEHICLE_LIST_SEND_FOR_SERVICING :Envoyer à l'entretien +STR_VEHICLE_LIST_CREATE_GROUP :Créer un groupe STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profit cette année{NBSP}: {CURRENCY_LONG} (année précédente{NBSP}: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} diff --git a/src/lang/korean.txt b/src/lang/korean.txt index d1e12b8cf4..7f881e447c 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -3850,6 +3850,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}관리 STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}이 목록에 있는 모든 열차에 지시를 내려 관리합니다 STR_VEHICLE_LIST_REPLACE_VEHICLES :차량 교체 STR_VEHICLE_LIST_SEND_FOR_SERVICING :점검하러 보내기 +STR_VEHICLE_LIST_CREATE_GROUP :그룹 생성 STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}올해 이익: {CURRENCY_LONG} (작년: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 0b96aabf1f..0248538d6a 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -3850,6 +3850,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Gerir li STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Enviar instruções a todos os veículos desta lista STR_VEHICLE_LIST_REPLACE_VEHICLES :Substituir Veículos STR_VEHICLE_LIST_SEND_FOR_SERVICING :Enviar para Serviço +STR_VEHICLE_LIST_CREATE_GROUP :Criar grupo STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Lucro deste ano: {CURRENCY_LONG} (último ano: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 14b88a9104..1bf4e1692b 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -4024,6 +4024,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Орга STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Управление транспортом, находящимся в этом списке STR_VEHICLE_LIST_REPLACE_VEHICLES :Замена транспорта STR_VEHICLE_LIST_SEND_FOR_SERVICING :Отправить на тех. обслуживание +STR_VEHICLE_LIST_CREATE_GROUP :Создать группу STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Прибыль в этом году: {CURRENCY_LONG} (в прошлом году: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} From 456abda508a1ed2c7b2f22ab06dd629fe24ab4f5 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 20 Jun 2023 16:23:57 +0200 Subject: [PATCH 088/123] Fix: [DorpsGek] report eints commits on Discord / IRC (#11045) --- .dorpsgek.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dorpsgek.yml b/.dorpsgek.yml index 7ce84af72f..e19183bddf 100644 --- a/.dorpsgek.yml +++ b/.dorpsgek.yml @@ -8,7 +8,7 @@ notifications: only: - master only-by: - - DorpsGek + - eints-sync[bot] commit-comment: discussion: pull-request: From 5bac27287e94c1eaafdec6da47b3cb88c3e6ea0e Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 20 Jun 2023 17:25:32 +0200 Subject: [PATCH 089/123] Fix 456abda5: [DorpsGek] escape "[" and "]" correctly (#11046) --- .dorpsgek.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dorpsgek.yml b/.dorpsgek.yml index e19183bddf..4b09738b87 100644 --- a/.dorpsgek.yml +++ b/.dorpsgek.yml @@ -8,7 +8,7 @@ notifications: only: - master only-by: - - eints-sync[bot] + - eints-sync\[bot\] commit-comment: discussion: pull-request: From 3e8f8c55c27ff68217babe7cc96a264700fa05e1 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 13 Jun 2023 23:46:08 +0200 Subject: [PATCH 090/123] Codechange: make creating temporary StringParameters easier --- src/industry_cmd.cpp | 3 +- src/station_cmd.cpp | 3 +- src/strings.cpp | 114 ++++++++++++++--------------------------- src/strings_internal.h | 46 ++++++++++++----- src/townname.cpp | 3 +- 5 files changed, 76 insertions(+), 93 deletions(-) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index f3e6361730..09c850c9ab 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -2431,8 +2431,7 @@ void Industry::RecomputeProductionMultipliers() void Industry::FillCachedName() const { - int64 args_array[] = { this->index }; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(this->index); this->cached_name = GetStringWithArgs(STR_INDUSTRY_NAME, tmp_params); } diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 732eb0655d..33df1a2c18 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -461,8 +461,7 @@ void UpdateAllStationVirtCoords() void BaseStation::FillCachedName() const { - int64 args_array[] = { this->index }; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(this->index); this->cached_name = GetStringWithArgs(Waypoint::IsExpected(this) ? STR_WAYPOINT_NAME : STR_STATION_NAME, tmp_params); } diff --git a/src/strings.cpp b/src/strings.cpp index 9e5b3a7b07..a7efd7b8b6 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -339,7 +339,7 @@ std::string GetStringWithArgs(StringID string, StringParameters &args) */ void SetDParamStr(size_t n, const char *str) { - SetDParam(n, (uint64)(size_t)str); + _global_string_params.SetParam(n, str); } /** @@ -350,7 +350,7 @@ void SetDParamStr(size_t n, const char *str) */ void SetDParamStr(size_t n, const std::string &str) { - SetDParamStr(n, str.c_str()); + _global_string_params.SetParam(n, str); } /** @@ -461,8 +461,7 @@ static void FormatYmdString(StringBuilder &builder, TimerGameCalendar::Date date TimerGameCalendar::YearMonthDay ymd; TimerGameCalendar::ConvertDateToYMD(date, &ymd); - int64 args[] = {ymd.day + STR_DAY_NUMBER_1ST - 1, STR_MONTH_ABBREV_JAN + ymd.month, ymd.year}; - StringParameters tmp_params(args); + auto tmp_params = MakeParameters(ymd.day + STR_DAY_NUMBER_1ST - 1, STR_MONTH_ABBREV_JAN + ymd.month, ymd.year); FormatString(builder, GetStringPtr(STR_FORMAT_DATE_LONG), tmp_params, case_index); } @@ -471,8 +470,7 @@ static void FormatMonthAndYear(StringBuilder &builder, TimerGameCalendar::Date d TimerGameCalendar::YearMonthDay ymd; TimerGameCalendar::ConvertDateToYMD(date, &ymd); - int64 args[] = {STR_MONTH_JAN + ymd.month, ymd.year}; - StringParameters tmp_params(args); + auto tmp_params = MakeParameters(STR_MONTH_JAN + ymd.month, ymd.year); FormatString(builder, GetStringPtr(STR_FORMAT_DATE_SHORT), tmp_params, case_index); } @@ -482,8 +480,7 @@ static void FormatTinyOrISODate(StringBuilder &builder, TimerGameCalendar::Date TimerGameCalendar::ConvertDateToYMD(date, &ymd); /* Day and month are zero-padded with ZEROFILL_NUM, hence the two 2s. */ - int64 args[] = {ymd.day, 2, ymd.month + 1, 2, ymd.year}; - StringParameters tmp_params(args); + auto tmp_params = MakeParameters(ymd.day, 2, ymd.month + 1, 2, ymd.year); FormatString(builder, GetStringPtr(str), tmp_params); } @@ -1213,16 +1210,14 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara switch (cargo_str) { case STR_TONS: { assert(_settings_game.locale.units_weight < lengthof(_units_weight)); - int64 args_array[] = {_units_weight[_settings_game.locale.units_weight].c.ToDisplay(args.GetInt64())}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(_units_weight[_settings_game.locale.units_weight].c.ToDisplay(args.GetInt64())); FormatString(builder, GetStringPtr(_units_weight[_settings_game.locale.units_weight].l), tmp_params); break; } case STR_LITERS: { assert(_settings_game.locale.units_volume < lengthof(_units_volume)); - int64 args_array[] = {_units_volume[_settings_game.locale.units_volume].c.ToDisplay(args.GetInt64())}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(_units_volume[_settings_game.locale.units_volume].c.ToDisplay(args.GetInt64())); FormatString(builder, GetStringPtr(_units_volume[_settings_game.locale.units_volume].l), tmp_params); break; } @@ -1300,8 +1295,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_FORCE: { // {FORCE} assert(_settings_game.locale.units_force < lengthof(_units_force)); const auto &x = _units_force[_settings_game.locale.units_force]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetInt64()), x.decimal_places); FormatString(builder, GetStringPtr(x.s), tmp_params); break; } @@ -1309,8 +1303,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_HEIGHT: { // {HEIGHT} assert(_settings_game.locale.units_height < lengthof(_units_height)); const auto &x = _units_height[_settings_game.locale.units_height]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetInt64()), x.decimal_places); FormatString(builder, GetStringPtr(x.s), tmp_params); break; } @@ -1318,8 +1311,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_POWER: { // {POWER} assert(_settings_game.locale.units_power < lengthof(_units_power)); const auto &x = _units_power[_settings_game.locale.units_power]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetInt64()), x.decimal_places); FormatString(builder, GetStringPtr(x.s), tmp_params); break; } @@ -1328,8 +1320,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara auto setting = _settings_game.locale.units_power * 3u + _settings_game.locale.units_weight; assert(setting < lengthof(_units_power_to_weight)); const auto &x = _units_power_to_weight[setting]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetInt64()), x.decimal_places); FormatString(builder, GetStringPtr(x.s), tmp_params); break; } @@ -1341,8 +1332,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara byte units = GetVelocityUnits(vt); assert(units < lengthof(_units_velocity)); const auto &x = _units_velocity[units]; - int64 args_array[] = {ConvertKmhishSpeedToDisplaySpeed(GB(arg, 0, 56), vt), x.decimal_places}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(ConvertKmhishSpeedToDisplaySpeed(GB(arg, 0, 56), vt), x.decimal_places); FormatString(builder, GetStringPtr(x.s), tmp_params); break; } @@ -1350,8 +1340,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_VOLUME_SHORT: { // {VOLUME_SHORT} assert(_settings_game.locale.units_volume < lengthof(_units_volume)); const auto &x = _units_volume[_settings_game.locale.units_volume]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetInt64()), x.decimal_places); FormatString(builder, GetStringPtr(x.s), tmp_params); break; } @@ -1359,8 +1348,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_VOLUME_LONG: { // {VOLUME_LONG} assert(_settings_game.locale.units_volume < lengthof(_units_volume)); const auto &x = _units_volume[_settings_game.locale.units_volume]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetInt64()), x.decimal_places); FormatString(builder, GetStringPtr(x.l), tmp_params); break; } @@ -1368,8 +1356,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_WEIGHT_SHORT: { // {WEIGHT_SHORT} assert(_settings_game.locale.units_weight < lengthof(_units_weight)); const auto &x = _units_weight[_settings_game.locale.units_weight]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetInt64()), x.decimal_places); FormatString(builder, GetStringPtr(x.s), tmp_params); break; } @@ -1377,8 +1364,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_WEIGHT_LONG: { // {WEIGHT_LONG} assert(_settings_game.locale.units_weight < lengthof(_units_weight)); const auto &x = _units_weight[_settings_game.locale.units_weight]; - int64 args_array[] = {x.c.ToDisplay(args.GetInt64()), x.decimal_places}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetInt64()), x.decimal_places); FormatString(builder, GetStringPtr(x.l), tmp_params); break; } @@ -1388,12 +1374,10 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (c == nullptr) break; if (!c->name.empty()) { - int64 args_array[] = {(int64)(size_t)c->name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(c->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { - int64 args_array[] = {c->name_2}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(c->name_2); GetStringWithArgs(builder, c->name_1, tmp_params); } break; @@ -1404,8 +1388,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara /* Nothing is added for AI or inactive companies */ if (Company::IsValidHumanID(company)) { - int64 args_array[] = {company + 1}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(company + 1); GetStringWithArgs(builder, STR_FORMAT_COMPANY_NUM, tmp_params); } break; @@ -1423,12 +1406,10 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara const Depot *d = Depot::Get(args.GetInt32()); if (!d->name.empty()) { - int64 args_array[] = {(int64)(size_t)d->name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(d->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { - int64 args_array[] = {d->town->index, d->town_cn + 1}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(d->town->index, d->town_cn + 1); GetStringWithArgs(builder, STR_FORMAT_DEPOT_NAME_TRAIN + 2 * vt + (d->town_cn == 0 ? 0 : 1), tmp_params); } break; @@ -1440,10 +1421,8 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (e == nullptr) break; if (!e->name.empty() && e->IsEnabled()) { - int64 args_array[] = {(int64)(size_t)e->name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(e->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); - break; } @@ -1465,7 +1444,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } } - StringParameters tmp_params(nullptr, 0, nullptr); + auto tmp_params = AllocatedStringParameters(); GetStringWithArgs(builder, e->info.string_id, tmp_params); break; } @@ -1475,13 +1454,10 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (g == nullptr) break; if (!g->name.empty()) { - int64 args_array[] = {(int64)(size_t)g->name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(g->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { - int64 args_array[] = {g->index}; - StringParameters tmp_params(args_array); - + auto tmp_params = MakeParameters(g->index); GetStringWithArgs(builder, STR_FORMAT_GROUP_NAME, tmp_params); } break; @@ -1498,13 +1474,11 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } else if (_scan_for_gender_data) { /* Gender is defined by the industry type. * STR_FORMAT_INDUSTRY_NAME may have the town first, so it would result in the gender of the town name */ - StringParameters tmp_params(nullptr, 0, nullptr); + auto tmp_params = AllocatedStringParameters(); FormatString(builder, GetStringPtr(GetIndustrySpec(i->type)->name), tmp_params, next_substr_case_index); } else { /* First print the town name and the industry type name. */ - int64 args_array[2] = {i->town->index, GetIndustrySpec(i->type)->name}; - StringParameters tmp_params(args_array); - + auto tmp_params = MakeParameters(i->town->index, GetIndustrySpec(i->type)->name); FormatString(builder, GetStringPtr(STR_FORMAT_INDUSTRY_NAME), tmp_params, next_substr_case_index); } next_substr_case_index = 0; @@ -1516,12 +1490,10 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (c == nullptr) break; if (!c->president_name.empty()) { - int64 args_array[] = {(int64)(size_t)c->president_name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(c->president_name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { - int64 args_array[] = {c->president_name_2}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(c->president_name_2); GetStringWithArgs(builder, c->president_name_1, tmp_params); } break; @@ -1535,7 +1507,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara /* The station doesn't exist anymore. The only place where we might * be "drawing" an invalid station is in the case of cargo that is * in transit. */ - StringParameters tmp_params(nullptr, 0, nullptr); + auto tmp_params = AllocatedStringParameters(); GetStringWithArgs(builder, STR_UNKNOWN_STATION, tmp_params); break; } @@ -1545,8 +1517,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara AutoRestoreBackup cache_backup(use_cache, false); builder += st->GetCachedName(); } else if (!st->name.empty()) { - int64 args_array[] = {(int64)(size_t)st->name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(st->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { StringID string_id = st->string_id; @@ -1579,8 +1550,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara AutoRestoreBackup cache_backup(use_cache, false); builder += t->GetCachedName(); } else if (!t->name.empty()) { - int64 args_array[] = {(int64)(size_t)t->name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(t->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { GetTownName(builder, t); @@ -1593,12 +1563,10 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (wp == nullptr) break; if (!wp->name.empty()) { - int64 args_array[] = {(int64)(size_t)wp->name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(wp->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { - int64 args_array[] = {wp->town->index, wp->town_cn + 1}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(wp->town->index, wp->town_cn + 1); StringID string_id = ((wp->string_id == STR_SV_STNAME_BUOY) ? STR_FORMAT_BUOY_NAME : STR_FORMAT_WAYPOINT_NAME); if (wp->town_cn != 0) string_id++; GetStringWithArgs(builder, string_id, tmp_params); @@ -1611,17 +1579,14 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (v == nullptr) break; if (!v->name.empty()) { - int64 args_array[] = {(int64)(size_t)v->name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(v->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else if (v->group_id != DEFAULT_GROUP) { /* The vehicle has no name, but is member of a group, so print group name */ - int64 args_array[] = {v->group_id, v->unitnumber}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(v->group_id, v->unitnumber); GetStringWithArgs(builder, STR_FORMAT_GROUP_VEHICLE_NAME, tmp_params); } else { - int64 args_array[] = {v->unitnumber}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(v->unitnumber); StringID string_id; switch (v->type) { @@ -1642,11 +1607,10 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara if (si == nullptr) break; if (!si->name.empty()) { - int64 args_array[] = {(int64)(size_t)si->name.c_str()}; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(si->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { - StringParameters tmp_params(nullptr, 0, nullptr); + auto tmp_params = AllocatedStringParameters(); GetStringWithArgs(builder, STR_DEFAULT_SIGN_NAME, tmp_params); } break; diff --git a/src/strings_internal.h b/src/strings_internal.h index 69e1bcf626..9781c8f6b6 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -14,6 +14,7 @@ #include "string_func.h" class StringParameters { +protected: StringParameters *parent; ///< If not nullptr, this instance references data from this parent instance. uint64 *data; ///< Array with the actual data. WChar *type; ///< Array with type information about the data. Can be nullptr when no type information is needed. See #StringControlCode. @@ -31,18 +32,6 @@ public: num_param(num_param) { } - /** Create a new StringParameters instance. */ - template - StringParameters(int64 (&data)[Tnum_param]) : - parent(nullptr), - data((uint64 *)data), - type(nullptr), - offset(0), - num_param(Tnum_param) - { - static_assert(sizeof(data[0]) == sizeof(uint64)); - } - /** * Create a new StringParameters instance that can reference part of the data of * the given partent instance. @@ -136,6 +125,10 @@ public: this->data[n] = v; } + void SetParam(size_t n, const char *str) { this->SetParam(n, (uint64_t)(size_t)str); } + void SetParam(size_t n, const std::string &str) { this->SetParam(n, str.c_str()); } + void SetParam(size_t n, std::string &&str) = delete; // block passing temporaries to SetDParam + uint64 GetParam(size_t n) const { assert(n < this->num_param); @@ -143,6 +136,35 @@ public: } }; +/** + * Extension of StringParameters with its own statically allocated buffer for + * the parameters. + */ +class AllocatedStringParameters : public StringParameters { + std::vector params; ///< The actual parameters + +public: + AllocatedStringParameters(size_t parameters = 0) : StringParameters(nullptr, parameters, nullptr), params(parameters) + { + this->data = params.data(); + } +}; + +/** + * Helper to create the StringParameters with its own buffer with the given + * parameter values. + * @param args The parameters to set for the to be created StringParameters. + * @return The constructed StringParameters. + */ +template +static auto MakeParameters(const Args&... args) +{ + AllocatedStringParameters parameters(sizeof...(args)); + size_t index = 0; + (parameters.SetParam(index++, std::forward(args)), ...); + return parameters; +} + /** * Equivalent to the std::back_insert_iterator in function, with some * convenience helpers for string concatenation. diff --git a/src/townname.cpp b/src/townname.cpp index 3cd1b0ab07..0e6e2262b6 100644 --- a/src/townname.cpp +++ b/src/townname.cpp @@ -48,8 +48,7 @@ TownNameParams::TownNameParams(const Town *t) : static void GetTownName(StringBuilder &builder, const TownNameParams *par, uint32 townnameparts) { if (par->grfid == 0) { - int64 args_array[1] = { townnameparts }; - StringParameters tmp_params(args_array); + auto tmp_params = MakeParameters(townnameparts); GetStringWithArgs(builder, par->type, tmp_params); return; } From 01abcdfcac7e1b498252a6efcec3278b811f4946 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Jun 2023 10:48:54 +0200 Subject: [PATCH 091/123] Codechange: make StringParameters#next_type only writable from outside the class --- src/strings.cpp | 2 +- src/strings_internal.h | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index a7efd7b8b6..2c0549b9f1 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -899,7 +899,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara continue; } - args.next_type = b; + args.SetTypeOfNextParameter(b); switch (b) { case SCC_ENCODED: { uint64 sub_args_data[20]; diff --git a/src/strings_internal.h b/src/strings_internal.h index 9781c8f6b6..869ad121ed 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -19,10 +19,11 @@ protected: uint64 *data; ///< Array with the actual data. WChar *type; ///< Array with type information about the data. Can be nullptr when no type information is needed. See #StringControlCode. + WChar next_type = 0; ///< The type of the next data that is retrieved. + public: size_t offset = 0; ///< Current offset in the data/type arrays. size_t num_param; ///< Length of the data array. - WChar next_type = 0; ///< The type of the next data that is retrieved. /** Create a new StringParameters instance. */ StringParameters(uint64 *data, size_t num_param, WChar *type) : @@ -57,6 +58,7 @@ public: } void ClearTypeInformation(); + void SetTypeOfNextParameter(WChar type) { this->next_type = type; } int64 GetInt64(); From 9c3c90effa2ab4ce5cddcd9864c810829d8facac Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Jun 2023 10:53:08 +0200 Subject: [PATCH 092/123] Codechange: rename ClearTypeInformation so it can be used for preparing for the next run --- src/strings.cpp | 13 ++++++++----- src/strings_internal.h | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 2c0549b9f1..eabeb09990 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -62,11 +62,15 @@ static uint64 _global_string_params_data[20]; ///< Global array of string pa static WChar _global_string_params_type[20]; ///< Type of parameters stored in #_global_string_params StringParameters _global_string_params(_global_string_params_data, 20, _global_string_params_type); -/** Reset the type array. */ -void StringParameters::ClearTypeInformation() +/** + * Prepare the string parameters for the next formatting run. This means + * resetting the type information and resetting the offset to the begin. + */ +void StringParameters::PrepareForNextRun() { assert(this->type != nullptr); MemSetT(this->type, 0, this->num_param); + this->offset = 0; } @@ -313,8 +317,7 @@ void GetStringWithArgs(StringBuilder &builder, StringID string, StringParameters */ std::string GetString(StringID string) { - _global_string_params.ClearTypeInformation(); - _global_string_params.offset = 0; + _global_string_params.PrepareForNextRun(); return GetStringWithArgs(string, _global_string_params); } @@ -907,7 +910,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara bool sub_args_need_free[20]; StringParameters sub_args(sub_args_data, 20, sub_args_type); - sub_args.ClearTypeInformation(); + sub_args.PrepareForNextRun(); // Needed to reset the currently undefined types memset(sub_args_need_free, 0, sizeof(sub_args_need_free)); char *p; diff --git a/src/strings_internal.h b/src/strings_internal.h index 869ad121ed..2feb282aa4 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -57,7 +57,7 @@ public: } } - void ClearTypeInformation(); + void PrepareForNextRun(); void SetTypeOfNextParameter(WChar type) { this->next_type = type; } int64 GetInt64(); From 88138c55f865ae83e740a93c2923ceae9f0bbfc8 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Jun 2023 10:57:22 +0200 Subject: [PATCH 093/123] Codechange: make offset protected and guard against invalid offsets --- src/strings.cpp | 6 +++--- src/strings_internal.h | 27 ++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index eabeb09990..5a3f9295b3 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -851,7 +851,7 @@ static std::vector _game_script_raw_strings; */ static void FormatString(StringBuilder &builder, const char *str_arg, StringParameters &args, uint case_index, bool game_script, bool dry_run) { - size_t orig_offset = args.offset; + size_t orig_offset = args.GetOffset(); if (!dry_run && args.HasTypeInformation()) { /* @@ -876,7 +876,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara FormatString(dry_run_builder, str_arg, args, case_index, game_script, true); } /* We have to restore the original offset here to to read the correct values. */ - args.offset = orig_offset; + args.SetOffset(orig_offset); } WChar b = '\0'; uint next_substr_case_index = 0; @@ -1070,7 +1070,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_ARG_INDEX: { // Move argument pointer - args.offset = orig_offset + (byte)*str++; + args.SetOffset(orig_offset + (byte)*str++); break; } diff --git a/src/strings_internal.h b/src/strings_internal.h index 2feb282aa4..208f082a9d 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -20,9 +20,9 @@ protected: WChar *type; ///< Array with type information about the data. Can be nullptr when no type information is needed. See #StringControlCode. WChar next_type = 0; ///< The type of the next data that is retrieved. + size_t offset = 0; ///< Current offset in the data/type arrays. public: - size_t offset = 0; ///< Current offset in the data/type arrays. size_t num_param; ///< Length of the data array. /** Create a new StringParameters instance. */ @@ -60,6 +60,31 @@ public: void PrepareForNextRun(); void SetTypeOfNextParameter(WChar type) { this->next_type = type; } + /** + * Get the current offset, so it can be backed up for certain processing + * steps, or be used to offset the argument index within sub strings. + * @return The current offset. + */ + size_t GetOffset() { return this->offset; } + + /** + * Set the offset within the string from where to return the next result of + * \c GetInt64 or \c GetInt32. + * @param offset The offset. + */ + void SetOffset(size_t offset) + { + /* + * The offset must be fewer than the number of parameters when it is + * being set. Unless restoring a backup, then the original value is + * correct as well as long as the offset was not changed. In other + * words, when the offset was already at the end of the parameters and + * the string did not consume any parameters. + */ + assert(offset < this->num_param || this->offset == offset); + this->offset = offset; + } + int64 GetInt64(); /** Read an int32 from the argument array. @see GetInt64. */ From b1fb209bed058c1bc3004f76e523c38106eb8b9c Mon Sep 17 00:00:00 2001 From: glx22 Date: Sat, 15 Apr 2023 04:32:13 +0200 Subject: [PATCH 094/123] Add: {COLOUR} control code to allow colour changes at runtime --- src/strings.cpp | 6 ++++++ src/table/control_codes.h | 1 + src/table/strgen_tables.h | 1 + 3 files changed, 8 insertions(+) diff --git a/src/strings.cpp b/src/strings.cpp index 5a3f9295b3..095008feb3 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1624,6 +1624,12 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara break; } + case SCC_COLOUR: { // {COLOUR} + StringControlCode scc = (StringControlCode)(SCC_BLUE + args.GetInt32(SCC_COLOUR)); + if (IsInsideMM(scc, SCC_BLUE, SCC_COLOUR)) builder.Utf8Encode(scc); + break; + } + default: builder.Utf8Encode(b); break; diff --git a/src/table/control_codes.h b/src/table/control_codes.h index 390d8185ee..5ef2b02a60 100644 --- a/src/table/control_codes.h +++ b/src/table/control_codes.h @@ -114,6 +114,7 @@ enum StringControlCode { SCC_GRAY, SCC_DKBLUE, SCC_BLACK, + SCC_COLOUR, SCC_PUSH_COLOUR, SCC_POP_COLOUR, diff --git a/src/table/strgen_tables.h b/src/table/strgen_tables.h index 19ce4b0a7d..e6ec697958 100644 --- a/src/table/strgen_tables.h +++ b/src/table/strgen_tables.h @@ -58,6 +58,7 @@ static const CmdStruct _cmd_structs[] = { {"GRAY", EmitSingleChar, SCC_GRAY, 0, -1, C_DONTCOUNT}, {"DKBLUE", EmitSingleChar, SCC_DKBLUE, 0, -1, C_DONTCOUNT}, {"BLACK", EmitSingleChar, SCC_BLACK, 0, -1, C_DONTCOUNT}, + {"COLOUR", EmitSingleChar, SCC_COLOUR, 1, -1, C_NONE}, {"PUSH_COLOUR", EmitSingleChar, SCC_PUSH_COLOUR, 0, -1, C_DONTCOUNT}, {"POP_COLOUR", EmitSingleChar, SCC_POP_COLOUR, 0, -1, C_DONTCOUNT}, From 6c7f977197b0551b31b7e9616b3b6a55063f76ff Mon Sep 17 00:00:00 2001 From: glx22 Date: Sun, 16 Apr 2023 22:55:03 +0200 Subject: [PATCH 095/123] Codechange: Use {COLOUR} to simplify drawing of timetables --- src/lang/english.txt | 4 ++-- src/timetable_gui.cpp | 31 +++++++++---------------------- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/src/lang/english.txt b/src/lang/english.txt index bf818a40c3..90668a13cf 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -4572,8 +4572,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Expected STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: +STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY} # Date window (for timetable) diff --git a/src/timetable_gui.cpp b/src/timetable_gui.cpp index 8f52c6580a..5065330e76 100644 --- a/src/timetable_gui.cpp +++ b/src/timetable_gui.cpp @@ -153,8 +153,6 @@ struct TimetableWindow : Window { VehicleTimetableWidgets query_widget; ///< Which button was clicked to open the query text input? const Vehicle *vehicle; ///< Vehicle monitored by the window. bool show_expected; ///< Whether we show expected arrival or scheduled. - uint deparr_time_width; ///< The width of the departure/arrival time - uint deparr_abbr_width; ///< The width of the departure/arrival abbreviation Scrollbar *vscroll; ///< The scrollbar. bool set_start_date_all; ///< Set start date using minutes text entry for all timetable entries (ctrl-click) action. bool change_timetable_all; ///< Set wait time or speed for all timetable entries (ctrl-click) action. @@ -195,10 +193,8 @@ struct TimetableWindow : Window { { switch (widget) { case WID_VT_ARRIVAL_DEPARTURE_PANEL: - SetDParamMaxValue(0, MAX_YEAR * DAYS_IN_YEAR, 0, FS_SMALL); - this->deparr_time_width = GetStringBoundingBox(STR_JUST_DATE_TINY).width; - this->deparr_abbr_width = std::max(GetStringBoundingBox(STR_TIMETABLE_ARRIVAL_ABBREVIATION).width, GetStringBoundingBox(STR_TIMETABLE_DEPARTURE_ABBREVIATION).width); - size->width = this->deparr_abbr_width + WidgetDimensions::scaled.hsep_wide + this->deparr_time_width + padding.width; + SetDParamMaxValue(1, MAX_YEAR * DAYS_IN_YEAR, 0, FS_SMALL); + size->width = std::max(GetStringBoundingBox(STR_TIMETABLE_ARRIVAL).width, GetStringBoundingBox(STR_TIMETABLE_DEPARTURE).width) + WidgetDimensions::scaled.hsep_wide + padding.width; FALLTHROUGH; case WID_VT_ARRIVAL_DEPARTURE_SELECTION: @@ -442,44 +438,35 @@ struct TimetableWindow : Window { bool show_late = this->show_expected && v->lateness_counter > DAY_TICKS; Ticks offset = show_late ? 0 : -v->lateness_counter; - bool rtl = _current_text_dir == TD_RTL; - Rect abbr = tr.WithWidth(this->deparr_abbr_width, rtl); - Rect time = tr.WithWidth(this->deparr_time_width, !rtl); - for (int i = this->vscroll->GetPosition(); i / 2 < v->GetNumOrders(); ++i) { // note: i is also incremented in the loop /* Don't draw anything if it extends past the end of the window. */ if (!this->vscroll->IsVisible(i)) break; + /* TC_INVALID will skip the colour change. */ + SetDParam(0, show_late ? TC_RED : TC_INVALID); if (i % 2 == 0) { /* Draw an arrival time. */ if (arr_dep[i / 2].arrival != INVALID_TICKS) { - /* First draw the arrival abbreviation. */ - DrawString(abbr.left, abbr.right, tr.top, STR_TIMETABLE_ARRIVAL_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK); - /* First set the offset and text colour based on the expected/scheduled mode and some other things. */ Ticks this_offset; - TextColour colour; if (this->show_expected && i / 2 == earlyID) { /* Show expected arrival. */ this_offset = 0; - colour = TC_GREEN; + SetDParam(0, TC_GREEN); } else { /* Show scheduled arrival. */ this_offset = offset; - colour = show_late ? TC_RED : (i == selected ? TC_WHITE : TC_BLACK); } /* Now actually draw the arrival time. */ - SetDParam(0, TimerGameCalendar::date + (arr_dep[i / 2].arrival + this_offset) / DAY_TICKS); - DrawString(time.left, time.right, tr.top, STR_JUST_DATE_TINY, colour); + SetDParam(1, TimerGameCalendar::date + (arr_dep[i / 2].arrival + this_offset) / DAY_TICKS); + DrawString(tr.left, tr.right, tr.top, STR_TIMETABLE_ARRIVAL, i == selected ? TC_WHITE : TC_BLACK); } } else { /* Draw a departure time. */ if (arr_dep[i / 2].departure != INVALID_TICKS) { - DrawString(abbr.left, abbr.right, tr.top, STR_TIMETABLE_DEPARTURE_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK); - TextColour colour = show_late ? TC_RED : (i == selected ? TC_WHITE : TC_BLACK); - SetDParam(0, TimerGameCalendar::date + (arr_dep[i / 2].departure + offset) / DAY_TICKS); - DrawString(time.left, time.right, tr.top, STR_JUST_DATE_TINY, colour); + SetDParam(1, TimerGameCalendar::date + (arr_dep[i / 2].departure + offset) / DAY_TICKS); + DrawString(tr.left, tr.right, tr.top, STR_TIMETABLE_DEPARTURE, i == selected ? TC_WHITE : TC_BLACK); } } tr.top += FONT_HEIGHT_NORMAL; From 4d0369ea9c10a58aff6cee3b59a992e5f3f47ab4 Mon Sep 17 00:00:00 2001 From: translators Date: Tue, 20 Jun 2023 18:38:55 +0000 Subject: [PATCH 096/123] Update: Translations from eints finnish: 1 change by hpiirai portuguese (brazilian): 1 change by pasantoro --- 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 | 3 +-- src/lang/bulgarian.txt | 2 -- src/lang/catalan.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 | 3 +-- 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/hungarian.txt | 2 -- src/lang/icelandic.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/malay.txt | 2 -- src/lang/norwegian_bokmal.txt | 2 -- src/lang/norwegian_nynorsk.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/vietnamese.txt | 2 -- src/lang/welsh.txt | 2 -- 56 files changed, 2 insertions(+), 112 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index c11b554570..f9b67870c8 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -4189,8 +4189,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Word ver STR_TIMETABLE_SCHEDULED :{BLACK}Geskeduleer STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Verander tussen verwagte tyd en geskeduleerde tyd -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index a8086688d4..702f611f1f 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -3912,8 +3912,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}متوق STR_TIMETABLE_SCHEDULED :{BLACK}مجدول STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}غير بين المتوقع و المجدول -STR_TIMETABLE_ARRIVAL_ABBREVIATION :و: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :م: # Date window (for timetable) diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 312984cf93..ac83fd63ab 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -3947,8 +3947,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Espero z STR_TIMETABLE_SCHEDULED :{BLACK}Programatuta STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Espero zena eta programatutakoaren artean aukeratu -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 40500bae8e..60b25eacc5 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -4551,8 +4551,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Чака STR_TIMETABLE_SCHEDULED :{BLACK}Па раскладзе STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Пераключэньне паміж ґрафікам руху й чаканым часам прыбыцьця/адпраўленьня -STR_TIMETABLE_ARRIVAL_ABBREVIATION :П: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :А: # Date window (for timetable) diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 1673aaf44d..ff545c60bd 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -3850,6 +3850,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Administ STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Envia instruções a todos os veículos desta lista STR_VEHICLE_LIST_REPLACE_VEHICLES :Substituir veículos STR_VEHICLE_LIST_SEND_FOR_SERVICING :Enviar para Manutenção +STR_VEHICLE_LIST_CREATE_GROUP :Criar grupo STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Lucro anual: {CURRENCY_LONG} (último ano: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -4572,8 +4573,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Agendado STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Trocar entre esperado e agendado -STR_TIMETABLE_ARRIVAL_ABBREVIATION :C: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :P: # Date window (for timetable) diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index fc4aafa6e2..299448e2d5 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -4025,8 +4025,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}В оч STR_TIMETABLE_SCHEDULED :{BLACK}Насрочен STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Промени между очакване и разписание -STR_TIMETABLE_ARRIVAL_ABBREVIATION :П: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :З: # Date window (for timetable) diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index b44eab9b91..f292ae36c0 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -4568,8 +4568,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Esperat STR_TIMETABLE_SCHEDULED :{BLACK}Planificat STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Canvia entre esperat i planificat -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 6d82f3d8af..cd3ed98e2c 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -4375,8 +4375,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Očekiva STR_TIMETABLE_SCHEDULED :{BLACK}Raspoređeno STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Promijeni između očekivanog i zadanog -STR_TIMETABLE_ARRIVAL_ABBREVIATION :D: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: # Date window (for timetable) diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 2de9771fed..c5847d1270 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -4619,8 +4619,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Očekáv STR_TIMETABLE_SCHEDULED :{BLACK}Plánovaný STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Přepnout mezi očekávaným a plánovaným -STR_TIMETABLE_ARRIVAL_ABBREVIATION :P: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: # Date window (for timetable) diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 1dd3ada58b..989aa236e1 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -4571,8 +4571,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Forvente STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skift mellem forventet og tidslagt -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ank: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :Afg: # Date window (for timetable) diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index d7de2920ef..1c7e79132d 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -4571,8 +4571,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Verwacht STR_TIMETABLE_SCHEDULED :{BLACK}Volgens dienstregeling STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Wissel tussen verwacht en volgens dienstregeling -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :V: # Date window (for timetable) diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index cea897b6bb..4339a61c64 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -4572,8 +4572,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Expected STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 0d8a3d1661..e4a53193e6 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -4567,8 +4567,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Expected STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index 6bcf3c81bf..dedfb6c923 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -4488,8 +4488,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Atendite STR_TIMETABLE_SCHEDULED :{BLACK}Planite STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Ŝalti inter atendite kaj planite -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index cf698362ed..85d22df3be 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -4578,8 +4578,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Eeldatav STR_TIMETABLE_SCHEDULED :{BLACK}Plaanis STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Vaheta eeldatava ja graafiku vahel -STR_TIMETABLE_ARRIVAL_ABBREVIATION :S: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :V: # Date window (for timetable) diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index 37c243436e..e9e664572f 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -3606,8 +3606,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Væntað STR_TIMETABLE_SCHEDULED :{BLACK}Ætlað STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skift ímillum væntað og ætlað -STR_TIMETABLE_ARRIVAL_ABBREVIATION :K: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index b129b14d10..1ef4a485a7 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -3849,6 +3849,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Muokkaa STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Ohjaa kaikkia listan kulkuneuvoja STR_VEHICLE_LIST_REPLACE_VEHICLES :Korvaa kulkuneuvoja STR_VEHICLE_LIST_SEND_FOR_SERVICING :Lähetä huoltoon +STR_VEHICLE_LIST_CREATE_GROUP :Luo ryhmä STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Tuotto tänä vuonna: {CURRENCY_LONG} (viime vuonna: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -4571,8 +4572,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Odotettu STR_TIMETABLE_SCHEDULED :{BLACK}Aikataulu STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Vaihda odotetun ja aikataulun välillä -STR_TIMETABLE_ARRIVAL_ABBREVIATION :S: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :L: # Date window (for timetable) diff --git a/src/lang/french.txt b/src/lang/french.txt index 08bb406091..ed2d1f5d72 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -4573,8 +4573,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Attendu STR_TIMETABLE_SCHEDULED :{BLACK}Planifié STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alterner entre attendu et planifié -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index b2cbf166e3..0fc08c44bf 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -3807,8 +3807,6 @@ STR_TIMETABLE_RESET_LATENESS :{BLACK}Fertragi STR_TIMETABLE_EXPECTED :{BLACK}Ferwachte STR_TIMETABLE_SCHEDULED :{BLACK}Pland -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index 3638eddb11..bd09902308 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -4339,8 +4339,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Dùil ai STR_TIMETABLE_SCHEDULED :{BLACK}Clàraichte STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Gearr leum eadar dùil air is clàraichte -STR_TIMETABLE_ARRIVAL_ABBREVIATION :R: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 3bc27d8f8f..a79aea2532 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -4568,8 +4568,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Programado STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alternar entre o esperado e o programado -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ch: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :S: # Date window (for timetable) diff --git a/src/lang/german.txt b/src/lang/german.txt index bc5f291df1..544cc74af7 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -4552,8 +4552,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Voraussi STR_TIMETABLE_SCHEDULED :{BLACK}Fahrplanmäßig STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Umschalten zwischen Anzeige der erwarteten Ankunftszeit und des Fahrplans -STR_TIMETABLE_ARRIVAL_ABBREVIATION :an -STR_TIMETABLE_DEPARTURE_ABBREVIATION :ab # Date window (for timetable) diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 7022138599..3eb6158350 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -4626,8 +4626,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Αναμ STR_TIMETABLE_SCHEDULED :{BLACK}Προγραμματισμένη STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Εναλλαγή μεταξύ αναμενόμενης και προγραμματισμένης -STR_TIMETABLE_ARRIVAL_ABBREVIATION :ΑΦ: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :ΑΝ: # Date window (for timetable) diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index c9bf5b2ddc..d575d755cb 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -4235,8 +4235,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}צפוי STR_TIMETABLE_SCHEDULED :{BLACK}מתוכנן STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}החלף בין מתוכנן וצפוי -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index ba8d3aeed9..7fe4b7a8c5 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -4616,8 +4616,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Várhat STR_TIMETABLE_SCHEDULED :{BLACK}Tervezett STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Váltás a várható és a tervezett időpontok között -STR_TIMETABLE_ARRIVAL_ABBREVIATION :É: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :I: # Date window (for timetable) diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 35743210eb..c9c56ed5e7 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -3834,8 +3834,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Væntanl STR_TIMETABLE_SCHEDULED :{BLACK}Áætluð STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skifta á milli væntanlegs og áætlaðs -STR_TIMETABLE_ARRIVAL_ABBREVIATION :K: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index bcbb80a5df..2eb194b43f 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -4513,8 +4513,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Harapan STR_TIMETABLE_SCHEDULED :{BLACK}Dijadwalkan STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Ubah antara perkiraan dan jadwal -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 77422cd9cd..9a682e241a 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -4434,8 +4434,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Ag súil STR_TIMETABLE_SCHEDULED :{BLACK}Sceidealta STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Athraigh idir an t-am a bhfuil súil leis agus an t-am sceidealta -STR_TIMETABLE_ARRIVAL_ABBREVIATION :I: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) diff --git a/src/lang/italian.txt b/src/lang/italian.txt index fc443875d7..0fc5c1c032 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -4608,8 +4608,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Orari at STR_TIMETABLE_SCHEDULED :{BLACK}Orari programmati STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alterna fra la visualizzazione degli orari attesi e degli orari programmati -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :P: # Date window (for timetable) diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index a8f651f6ad..83682f399f 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -4548,8 +4548,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}予想 STR_TIMETABLE_SCHEDULED :{BLACK}定刻日時 STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}予想日時(現状の運転時刻から推定される今後の発着日時)と定刻日時(ダイヤから割り出される定刻の発着日時)の表示を切り返えます -STR_TIMETABLE_ARRIVAL_ABBREVIATION :着: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :発: # Date window (for timetable) diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 7f881e447c..d6d01ff1cc 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -4573,8 +4573,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}예정 STR_TIMETABLE_SCHEDULED :{BLACK}예정 소요시간 기준 STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}시간표 검사 기준을 도착 예정일과 도착 예정 시간 기준 중에서 선택합니다 -STR_TIMETABLE_ARRIVAL_ABBREVIATION :도착: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :출발: # Date window (for timetable) diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 6ed858084a..33bee818cf 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -4332,8 +4332,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Aestimat STR_TIMETABLE_SCHEDULED :{BLACK}Secundum horarium STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Mutare inter tempora quae aestimata sunt ac secundum horarium sunt -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :E: # Date window (for timetable) diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 2034386279..bc521dba6d 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -4529,8 +4529,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Paredzē STR_TIMETABLE_SCHEDULED :{BLACK}Ieplānots STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Pārslēgties starp sagaidāmo un ieplānoto -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ie: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :Iz: # Date window (for timetable) diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index afee6ce5d2..ea5a2b4aa2 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -4727,8 +4727,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Tikėtin STR_TIMETABLE_SCHEDULED :{BLACK}Planuoti laikai STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Rodyti arba suplanuotus atvykimo laikus, arba tikėtinus atvykimo laikus (pastarieji gali keistis atsižvelgiant į tai, ar transporto priemonė laikosi tvarkaraščio) -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Atv.: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :Išv.: # Date window (for timetable) diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 0183697a00..0bfc7c596b 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -4521,8 +4521,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Erwaard STR_TIMETABLE_SCHEDULED :{BLACK}Geplangt STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Tëschent erwaard a geplangt wiesselen -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/malay.txt b/src/lang/malay.txt index 6fdd7444d8..7bf1a08c4a 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -3745,8 +3745,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Dijangka STR_TIMETABLE_SCHEDULED :{BLACK}Dijadualkan STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Tukar di antara dijangkakan dan dijadualkan -STR_TIMETABLE_ARRIVAL_ABBREVIATION :T: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :B: # Date window (for timetable) diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 9447a88bda..6c709957b0 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -4456,8 +4456,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Ventet STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Veksle mellom forventet og planlagt -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ank: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :Avg: # Date window (for timetable) diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index fcf0a1adca..056b7a6d98 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -3968,8 +3968,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Forventa STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Byt mellom antatt og planlagt -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ank: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :Avg: # Date window (for timetable) diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 559cd2d00d..840bd80dd2 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -4957,8 +4957,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Wymagany STR_TIMETABLE_SCHEDULED :{BLACK}Zaplanowany STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Przełącz między spodziewanymi i zaplanowanymi -STR_TIMETABLE_ARRIVAL_ABBREVIATION :P: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: # Date window (for timetable) diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 0248538d6a..0d5c4e2db9 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -4573,8 +4573,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Marcado STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alternar entre tempo esperado e marcado -STR_TIMETABLE_ARRIVAL_ABBREVIATION :C: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :P: # Date window (for timetable) diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 9e6526d11b..db038c18a7 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -4569,8 +4569,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Estimat STR_TIMETABLE_SCHEDULED :{BLACK}Planificat STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Comută între estimare şi orar -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 1bf4e1692b..dd76422e46 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -4759,8 +4759,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Ожид STR_TIMETABLE_SCHEDULED :{BLACK}График STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Переключение между графиком движения и ожидаемым временем прибытия/отправления -STR_TIMETABLE_ARRIVAL_ABBREVIATION :П: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :О: # Date window (for timetable) diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 4431535ce8..d78d791dfc 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -4724,8 +4724,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Očekiva STR_TIMETABLE_SCHEDULED :{BLACK}Po planu STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Prebacivanje između prikaza očekivanog i po planu -STR_TIMETABLE_ARRIVAL_ABBREVIATION :D: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :P: # Date window (for timetable) diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 45615a00db..4ae68c5e46 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -4521,8 +4521,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}预期 STR_TIMETABLE_SCHEDULED :{BLACK}表定时间 STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}切换显示(根据实际情况计算的)预期时间或表定时间 -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 65e1b2a853..ae66469f9e 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -4594,8 +4594,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Očakáv STR_TIMETABLE_SCHEDULED :{BLACK}Plánované STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Prepnúť medzi očakávaným a plánovaným -STR_TIMETABLE_ARRIVAL_ABBREVIATION :P: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: # Date window (for timetable) diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 80ebd98f9f..1677f29aae 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -4221,8 +4221,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Pričako STR_TIMETABLE_SCHEDULED :{BLACK}Določen STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Preklopi med pričakovanim in določenim -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 363bcf3b4c..118721d282 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -4520,8 +4520,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Previsto STR_TIMETABLE_SCHEDULED :{BLACK}Programado STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alterna entre fechas previstas y programadas -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ll: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :S: # Date window (for timetable) diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 27f02562bb..1f1cf18292 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -4521,8 +4521,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Programado STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Cambiar entre esperado y programado -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Lleg: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :Sal: # Date window (for timetable) diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index d06468cff3..3b5fef7075 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -4566,8 +4566,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Förvän STR_TIMETABLE_SCHEDULED :{BLACK}Schemalagt STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Ändra mellan förväntat och schemalagt -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 9f368f734d..5c99d9ad77 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -4037,8 +4037,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}எத STR_TIMETABLE_SCHEDULED :{BLACK}அட்டவணையிடப்பட்ட STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}எதிர்பார்க்கப்பட்ட மற்றும் அட்டவணையிடப்பட்ட ஆகிவற்றிற்குள் இடைமாற்றவும் -STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) diff --git a/src/lang/thai.txt b/src/lang/thai.txt index b190ad63cd..024b348ae1 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -4180,8 +4180,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}กา STR_TIMETABLE_SCHEDULED :{BLACK}ตารางเวลา STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}สลับระหว่างการดูรายการตารางเวลาและการคาดการณ์ -STR_TIMETABLE_ARRIVAL_ABBREVIATION :ถึง: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :ออก: # Date window (for timetable) diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index bc4017a5d0..b45eaa3062 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -4523,8 +4523,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}實際 STR_TIMETABLE_SCHEDULED :{BLACK}表定時間 STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}切換顯示 (根據實際情況的) 預期時間 或 表定時間 -STR_TIMETABLE_ARRIVAL_ABBREVIATION :到: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :開: # Date window (for timetable) diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 78f4cc3388..f56d9edd2f 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -4572,8 +4572,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Beklenen STR_TIMETABLE_SCHEDULED :{BLACK}Programlanan STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Beklenen ile programlanan arasında geçiş yap -STR_TIMETABLE_ARRIVAL_ABBREVIATION :V: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :Ç: # Date window (for timetable) diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 9682542fb4..d5da475b71 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -4681,8 +4681,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Очік STR_TIMETABLE_SCHEDULED :{BLACK}Призначено STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Перемкнути очікуване на заплановане -STR_TIMETABLE_ARRIVAL_ABBREVIATION :П: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :В: # Date window (for timetable) diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 049055cdfe..bc436b69f3 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -4571,8 +4571,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Mong mu STR_TIMETABLE_SCHEDULED :{BLACK}Chốt lịch STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Chuyển giữa lịch mong muốn và lịch được chốt -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Đến: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :Đi: # Date window (for timetable) diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index ac26439e08..385514e478 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -4088,8 +4088,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Disgwyli STR_TIMETABLE_SCHEDULED :{BLACK}Amserlenwyd STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Newid rhwng yr amser a ddisgwylir a'r amserlen -STR_TIMETABLE_ARRIVAL_ABBREVIATION :Cyr: -STR_TIMETABLE_DEPARTURE_ABBREVIATION :Gad: # Date window (for timetable) From 9f3254b72a0fbc5ed6943177fa41bd1e3fae5c64 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 20 Jun 2023 20:28:43 +0200 Subject: [PATCH 097/123] Fix b1fb209: build failure due to removed parameter --- src/strings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings.cpp b/src/strings.cpp index 095008feb3..5dbeccd04f 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1625,7 +1625,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } case SCC_COLOUR: { // {COLOUR} - StringControlCode scc = (StringControlCode)(SCC_BLUE + args.GetInt32(SCC_COLOUR)); + StringControlCode scc = (StringControlCode)(SCC_BLUE + args.GetInt32()); if (IsInsideMM(scc, SCC_BLUE, SCC_COLOUR)) builder.Utf8Encode(scc); break; } From b68d56d94d78b3c16dda3f744b6af902d642f75b Mon Sep 17 00:00:00 2001 From: PeterN Date: Tue, 20 Jun 2023 20:34:05 +0100 Subject: [PATCH 098/123] Fix #11043: Don't choose toolbar dropdown option if focus is lost. (#11044) Since dropdown menus now get closed if they lose focus, 'instant close' dropdowns (i.e. the toolbar dropdowns) should no longer execute their action to avoid unintended actions. --- src/widgets/dropdown.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index c2de0be6c4..5664c37d30 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -199,7 +199,10 @@ struct DropdownWindow : Window { void OnFocusLost(bool closing) override { - if (!closing) this->Close(); + if (!closing) { + this->instant_close = false; + this->Close(); + } } Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) override From f23249f8f16f08c162bdc8ff6d1a96617a09d18f Mon Sep 17 00:00:00 2001 From: Finn Willard Date: Tue, 20 Jun 2023 13:02:09 -0700 Subject: [PATCH 099/123] Fix #10917: Pay loan interest before generating statistics (#11040) --- src/economy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/economy.cpp b/src/economy.cpp index 0e93f9e3ba..8f5dc9333f 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -1977,12 +1977,12 @@ void LoadUnloadStation(Station *st) */ static IntervalTimer _companies_monthly({TimerGameCalendar::MONTH, TimerGameCalendar::Priority::COMPANY}, [](auto) { + CompaniesPayInterest(); CompaniesGenStatistics(); if (_settings_game.economy.inflation) { AddInflation(); RecomputePrices(); } - CompaniesPayInterest(); HandleEconomyFluctuations(); }); From 428333aeba68b35450c7da5675f9f6024a561621 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 13 Jun 2023 23:46:08 +0200 Subject: [PATCH 100/123] Codechange: let AllocatedStringParameters allocated types too --- src/strings.cpp | 22 +++++----------------- src/strings_internal.h | 13 +++++++------ 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 5dbeccd04f..5c8ec2369e 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -58,9 +58,7 @@ TextDirection _current_text_dir; ///< Text direction of the currently selected l std::unique_ptr _current_collator; ///< Collator for the language currently in use. #endif /* WITH_ICU_I18N */ -static uint64 _global_string_params_data[20]; ///< Global array of string parameters. To access, use #SetDParam. -static WChar _global_string_params_type[20]; ///< Type of parameters stored in #_global_string_params -StringParameters _global_string_params(_global_string_params_data, 20, _global_string_params_type); +AllocatedStringParameters _global_string_params(20); /** * Prepare the string parameters for the next formatting run. This means @@ -905,12 +903,8 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara args.SetTypeOfNextParameter(b); switch (b) { case SCC_ENCODED: { - uint64 sub_args_data[20]; - WChar sub_args_type[20]; bool sub_args_need_free[20]; - StringParameters sub_args(sub_args_data, 20, sub_args_type); - - sub_args.PrepareForNextRun(); // Needed to reset the currently undefined types + AllocatedStringParameters sub_args(20); memset(sub_args_need_free, 0, sizeof(sub_args_need_free)); char *p; @@ -1400,9 +1394,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara case SCC_DEPOT_NAME: { // {DEPOT} VehicleType vt = (VehicleType)args.GetInt32(); if (vt == VEH_AIRCRAFT) { - uint64 args_array[] = {(uint64)args.GetInt32()}; - WChar types_array[] = {SCC_STATION_NAME}; - StringParameters tmp_params(args_array, 1, types_array); + StringParameters tmp_params = StringParameters(args, 1); GetStringWithArgs(builder, STR_FORMAT_DEPOT_NAME_AIRCRAFT, tmp_params); break; } @@ -1437,9 +1429,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara assert(grffile != nullptr); StartTextRefStackUsage(grffile, 6); - uint64 tmp_dparam[6] = { 0 }; - WChar tmp_type[6] = { 0 }; - StringParameters tmp_params(tmp_dparam, 6, tmp_type); + AllocatedStringParameters tmp_params(6); GetStringWithArgs(builder, GetGRFStringID(grffile->grfid, 0xD000 + callback), tmp_params); StopTextRefStackUsage(); @@ -1536,9 +1526,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } } - uint64 args_array[] = {STR_TOWN_NAME, st->town->index, st->index}; - WChar types_array[] = {0, SCC_TOWN_NAME, SCC_NUM}; - StringParameters tmp_params(args_array, 3, types_array); + auto tmp_params = MakeParameters(STR_TOWN_NAME, st->town->index, st->index); GetStringWithArgs(builder, string_id, tmp_params); } break; diff --git a/src/strings_internal.h b/src/strings_internal.h index 208f082a9d..a78c72f3a8 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -15,24 +15,23 @@ class StringParameters { protected: - StringParameters *parent; ///< If not nullptr, this instance references data from this parent instance. + StringParameters *parent = nullptr; ///< If not nullptr, this instance references data from this parent instance. uint64 *data; ///< Array with the actual data. WChar *type; ///< Array with type information about the data. Can be nullptr when no type information is needed. See #StringControlCode. WChar next_type = 0; ///< The type of the next data that is retrieved. size_t offset = 0; ///< Current offset in the data/type arrays. -public: - size_t num_param; ///< Length of the data array. - /** Create a new StringParameters instance. */ StringParameters(uint64 *data, size_t num_param, WChar *type) : - parent(nullptr), data(data), type(type), num_param(num_param) { } +public: + size_t num_param; ///< Length of the data array. + /** * Create a new StringParameters instance that can reference part of the data of * the given partent instance. @@ -169,11 +168,13 @@ public: */ class AllocatedStringParameters : public StringParameters { std::vector params; ///< The actual parameters + std::vector types; ///< The actual types. public: - AllocatedStringParameters(size_t parameters = 0) : StringParameters(nullptr, parameters, nullptr), params(parameters) + AllocatedStringParameters(size_t parameters = 0) : StringParameters(nullptr, parameters, nullptr), params(parameters), types(parameters) { this->data = params.data(); + this->type = types.data(); } }; From 7a785a4224a2db65f9d066d895dce978412d9b3f Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 20 Jun 2023 19:16:38 +0200 Subject: [PATCH 101/123] Codechange: simplify StringParameters now type cannot be nullptr --- src/strings.cpp | 14 ++++++++------ src/strings_internal.h | 12 ++---------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 5c8ec2369e..f0d4d9102d 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -187,7 +187,7 @@ void CopyOutDParam(uint64 *dst, const char **strings, StringID string, int num) MemCpyT(dst, _global_string_params.GetPointerToOffset(0), num); for (int i = 0; i < num; i++) { - if (_global_string_params.HasTypeInformation() && _global_string_params.GetTypeAtOffset(i) == SCC_RAW_STRING_POINTER) { + if (_global_string_params.GetTypeAtOffset(i) == SCC_RAW_STRING_POINTER) { strings[i] = stredup((const char *)(size_t)_global_string_params.GetParam(i)); dst[i] = (size_t)strings[i]; } else { @@ -851,12 +851,14 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara { size_t orig_offset = args.GetOffset(); - if (!dry_run && args.HasTypeInformation()) { + if (!dry_run) { /* - * FormatString was called without `dry_run` set, however `args` has - * space allocated for type information and thus wants type checks on - * the parameters. So, we need to gather the type information via the - * dry run first, before we can continue formatting the string. + * This function is normally called with `dry_run` false, then we call this function again + * with `dry_run` being true. The dry run is required for the gender formatting. For the + * gender determination we need to format a sub string to get the gender, but for that we + * need to know as what string control code type the specific parameter is encoded. Since + * gendered words can be before the "parameter" words, this needs to be determined before + * the actual formatting. */ std::string buffer; StringBuilder dry_run_builder(buffer); diff --git a/src/strings_internal.h b/src/strings_internal.h index a78c72f3a8..8e32dccec9 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -17,7 +17,7 @@ class StringParameters { protected: StringParameters *parent = nullptr; ///< If not nullptr, this instance references data from this parent instance. uint64 *data; ///< Array with the actual data. - WChar *type; ///< Array with type information about the data. Can be nullptr when no type information is needed. See #StringControlCode. + WChar *type; ///< Array with type information about the data. See #StringControlCode. WChar next_type = 0; ///< The type of the next data that is retrieved. size_t offset = 0; ///< Current offset in the data/type arrays. @@ -114,8 +114,7 @@ public: */ StringParameters GetRemainingParameters(size_t offset) { - return StringParameters(&this->data[offset], GetDataLeft(), - this->type == nullptr ? nullptr : &this->type[offset]); + return StringParameters(&this->data[offset], GetDataLeft(), &this->type[offset]); } /** Return the amount of elements which can still be read. */ @@ -131,17 +130,10 @@ public: return &this->data[offset]; } - /** Does this instance store information about the type of the parameters. */ - bool HasTypeInformation() const - { - return this->type != nullptr; - } - /** Get the type of a specific element. */ WChar GetTypeAtOffset(size_t offset) const { assert(offset < this->num_param); - assert(this->HasTypeInformation()); return this->type[offset]; } From 2aa48bfcb3506edc98626c857e566c3424b0e206 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sat, 17 Jun 2023 11:59:06 +0200 Subject: [PATCH 102/123] Add: subspan function to span --- src/core/span_type.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/span_type.hpp b/src/core/span_type.hpp index 1cee60288b..beaa0be292 100644 --- a/src/core/span_type.hpp +++ b/src/core/span_type.hpp @@ -96,6 +96,12 @@ public: constexpr pointer data() const noexcept { return first; } + constexpr span subspan(size_t offset, size_t count) + { + assert(offset + count <= size()); + return span(this->data() + offset, count); + } + private: pointer first; pointer last; From fa8c50758b417d2641054badddcac73c6deb642a Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 20 Jun 2023 22:58:37 +0200 Subject: [PATCH 103/123] Codechange: replace memcpy when copying DParams --- src/strings.cpp | 6 +++--- src/strings_internal.h | 7 ------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index f0d4d9102d..ac78e6a115 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -159,7 +159,7 @@ void SetDParamMaxDigits(size_t n, uint count, FontSize size) */ void CopyInDParam(const uint64 *src, int num) { - MemCpyT(_global_string_params.GetPointerToOffset(0), src, num); + for (int i = 0; i < num; i++) SetDParam(i, src[i]); } /** @@ -169,7 +169,7 @@ void CopyInDParam(const uint64 *src, int num) */ void CopyOutDParam(uint64 *dst, int num) { - MemCpyT(dst, _global_string_params.GetPointerToOffset(0), num); + for (int i = 0; i < num; i++) dst[i] = GetDParam(i); } /** @@ -185,13 +185,13 @@ void CopyOutDParam(uint64 *dst, const char **strings, StringID string, int num) /* Just get the string to extract the type information. */ GetString(string); - MemCpyT(dst, _global_string_params.GetPointerToOffset(0), num); for (int i = 0; i < num; i++) { if (_global_string_params.GetTypeAtOffset(i) == SCC_RAW_STRING_POINTER) { strings[i] = stredup((const char *)(size_t)_global_string_params.GetParam(i)); dst[i] = (size_t)strings[i]; } else { strings[i] = nullptr; + dst[i] = _global_string_params.GetParam(i); } } } diff --git a/src/strings_internal.h b/src/strings_internal.h index 8e32dccec9..d634a51c6e 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -123,13 +123,6 @@ public: return this->num_param - this->offset; } - /** Get a pointer to a specific element in the data array. */ - uint64 *GetPointerToOffset(size_t offset) const - { - assert(offset < this->num_param); - return &this->data[offset]; - } - /** Get the type of a specific element. */ WChar GetTypeAtOffset(size_t offset) const { From 4e9a8717184ce547e54896bff38e2231b2fd293b Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sat, 17 Jun 2023 12:00:00 +0200 Subject: [PATCH 104/123] Codechange: merge multiple string parameter arrays to single array of structs --- src/strings.cpp | 21 +++++++------- src/strings_internal.h | 63 ++++++++++++++++++------------------------ 2 files changed, 37 insertions(+), 47 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index ac78e6a115..e14056758a 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -66,8 +66,7 @@ AllocatedStringParameters _global_string_params(20); */ void StringParameters::PrepareForNextRun() { - assert(this->type != nullptr); - MemSetT(this->type, 0, this->num_param); + for (auto ¶m : this->parameters) param.type = 0; this->offset = 0; } @@ -79,20 +78,20 @@ void StringParameters::PrepareForNextRun() int64 StringParameters::GetInt64() { assert(this->next_type == 0 || (SCC_CONTROL_START <= this->next_type && this->next_type <= SCC_CONTROL_END)); - if (this->offset >= this->num_param) { + if (this->offset >= this->parameters.size()) { Debug(misc, 0, "Trying to read invalid string parameter"); return 0; } - if (this->type != nullptr) { - if (this->type[this->offset] != 0 && this->type[this->offset] != this->next_type) { - Debug(misc, 0, "Trying to read string parameter with wrong type"); - this->next_type = 0; - return 0; - } - this->type[this->offset] = next_type; + + auto ¶m = this->parameters[this->offset++]; + if (param.type != 0 && param.type != this->next_type) { + Debug(misc, 0, "Trying to read string parameter with wrong type"); this->next_type = 0; + return 0; } - return this->data[this->offset++]; + param.type = next_type; + this->next_type = 0; + return param.data; } diff --git a/src/strings_internal.h b/src/strings_internal.h index d634a51c6e..33306aa1e0 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -12,47 +12,40 @@ #include "strings_func.h" #include "string_func.h" +#include "core/span_type.hpp" + +/** The data required to format and validate a single parameter of a string. */ +struct StringParameter { + uint64_t data; ///< The data of the parameter. + WChar type; ///< The #StringControlCode to interpret this data with when it's the first parameter, otherwise '\0'. +}; class StringParameters { protected: StringParameters *parent = nullptr; ///< If not nullptr, this instance references data from this parent instance. - uint64 *data; ///< Array with the actual data. - WChar *type; ///< Array with type information about the data. See #StringControlCode. + span parameters = {}; ///< Array with the actual parameters. + size_t offset = 0; ///< Current offset in the parameters span. WChar next_type = 0; ///< The type of the next data that is retrieved. - size_t offset = 0; ///< Current offset in the data/type arrays. - /** Create a new StringParameters instance. */ - StringParameters(uint64 *data, size_t num_param, WChar *type) : - data(data), - type(type), - num_param(num_param) - { } + StringParameters(span parameters = {}) : + parameters(parameters) + {} public: - size_t num_param; ///< Length of the data array. - /** * Create a new StringParameters instance that can reference part of the data of * the given partent instance. */ StringParameters(StringParameters &parent, size_t size) : parent(&parent), - data(parent.data + parent.offset), - num_param(size) - { - assert(size <= parent.GetDataLeft()); - if (parent.type == nullptr) { - this->type = nullptr; - } else { - this->type = parent.type + parent.offset; - } - } + parameters(parent.parameters.subspan(parent.offset, size)) + {} ~StringParameters() { if (this->parent != nullptr) { - this->parent->offset += this->num_param; + this->parent->offset += this->parameters.size(); } } @@ -80,7 +73,7 @@ public: * words, when the offset was already at the end of the parameters and * the string did not consume any parameters. */ - assert(offset < this->num_param || this->offset == offset); + assert(offset < this->parameters.size() || this->offset == offset); this->offset = offset; } @@ -114,26 +107,26 @@ public: */ StringParameters GetRemainingParameters(size_t offset) { - return StringParameters(&this->data[offset], GetDataLeft(), &this->type[offset]); + return StringParameters(this->parameters.subspan(this->offset, GetDataLeft())); } /** Return the amount of elements which can still be read. */ size_t GetDataLeft() const { - return this->num_param - this->offset; + return this->parameters.size() - this->offset; } /** Get the type of a specific element. */ WChar GetTypeAtOffset(size_t offset) const { - assert(offset < this->num_param); - return this->type[offset]; + assert(offset < this->parameters.size()); + return this->parameters[offset].type; } void SetParam(size_t n, uint64 v) { - assert(n < this->num_param); - this->data[n] = v; + assert(n < this->parameters.size()); + this->parameters[n].data = v; } void SetParam(size_t n, const char *str) { this->SetParam(n, (uint64_t)(size_t)str); } @@ -142,8 +135,8 @@ public: uint64 GetParam(size_t n) const { - assert(n < this->num_param); - return this->data[n]; + assert(n < this->parameters.size()); + return this->parameters[n].data; } }; @@ -152,14 +145,12 @@ public: * the parameters. */ class AllocatedStringParameters : public StringParameters { - std::vector params; ///< The actual parameters - std::vector types; ///< The actual types. + std::vector params; ///< The actual parameters public: - AllocatedStringParameters(size_t parameters = 0) : StringParameters(nullptr, parameters, nullptr), params(parameters), types(parameters) + AllocatedStringParameters(size_t parameters = 0) : params(parameters) { - this->data = params.data(); - this->type = types.data(); + this->parameters = span(params.data(), params.size()); } }; From ff050ea1d9e097f37bba7967ee90662ec86a30a6 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Wed, 21 Jun 2023 13:37:13 +0200 Subject: [PATCH 105/123] Fix: [CI] enable audio (alsa / jack / pulse) for generic Linux builds (#11051) SDL needs to see the header files when compiling to enable those drivers runtime. It doesn't actually link against them: it just needs to see the headers. --- .github/workflows/release-linux.yml | 53 +++++++++++++++++------------ 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index 30c2a04ee4..acfe45c2cf 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -55,6 +55,38 @@ jobs: cp /usr/share/aclocal/* /usr/local/share/aclocal/ echo "::endgroup::" + # The yum variant of fluidsynth depends on all possible audio drivers, + # like jack, ALSA, pulseaudio, etc. This is not really useful for us, + # as we route the output of fluidsynth back via our sound driver, and + # as such do not use these audio driver outputs at all. + # The vcpkg variant of fluidsynth depends on ALSA. Similar issue here. + # So instead, we compile fluidsynth ourselves, with as few + # dependencies as possible. We do it before anything else is installed, + # to make sure it doesn't pick up on any of the drivers. + echo "::group::Install fluidsynth" + wget https://github.com/FluidSynth/fluidsynth/archive/v2.3.3.tar.gz + tar xf v2.3.3.tar.gz + ( + cd fluidsynth-2.3.3 + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr + cmake --build . -j $(nproc) + cmake --install . + ) + echo "::endgroup::" + + echo "::group::Install audio drivers" + # These audio libs are to make sure the SDL version of vcpkg adds + # sound-support; these libraries are not added to the resulting + # binary, but the headers are used to enable them in SDL. + yum install -y \ + alsa-lib-devel \ + jack-audio-connection-kit-devel \ + pulseaudio-libs-devel \ + # EOF + echo "::endgroup::" + # We use vcpkg for our dependencies, to get more up-to-date version. echo "::group::Install vcpkg and dependencies" @@ -91,27 +123,6 @@ jobs: ) echo "::endgroup::" - # The yum variant of fluidsynth depends on all possible audio drivers, - # like jack, ALSA, pulseaudio, etc. This is not really useful for us, - # as we route the output of fluidsynth back via our sound driver, and - # as such do not use these audio driver outputs at all. - # The vcpkg variant of fluidsynth depends on ALSA. Similar issue here. - # So instead, we compile fluidsynth ourselves, with as few - # dependencies as possible. This currently means it picks up SDL2, but - # this is fine, as we need SDL2 anyway. - echo "::group::Install fluidsynth" - wget https://github.com/FluidSynth/fluidsynth/archive/v2.1.6.tar.gz - tar xf v2.1.6.tar.gz - ( - cd fluidsynth-2.1.6 - mkdir build - cd build - cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr - cmake --build . -j $(nproc) - cmake --install . - ) - echo "::endgroup::" - - name: Install GCC problem matcher uses: ammaraskar/gcc-problem-matcher@master From c316d9ecb7f59500098b92bb5ae05781d5335548 Mon Sep 17 00:00:00 2001 From: translators Date: Wed, 21 Jun 2023 18:37:58 +0000 Subject: [PATCH 106/123] Update: Translations from eints english (au): 2 changes by krysclarke vietnamese: 3 changes by KhoiCanDev russian: 2 changes by Ln-Wolf dutch: 5 changes by Afoklala french: 2 changes by Lishouuu portuguese: 2 changes by azulcosta esperanto: 51 changes by legoscia polish: 3 changes by pAter-exe --- src/lang/dutch.txt | 5 ++++ src/lang/english_AU.txt | 2 ++ src/lang/esperanto.txt | 53 +++++++++++++++++++++++++++++++++++++++-- src/lang/french.txt | 2 ++ src/lang/polish.txt | 3 +++ src/lang/portuguese.txt | 2 ++ src/lang/russian.txt | 2 ++ src/lang/vietnamese.txt | 3 +++ 8 files changed, 70 insertions(+), 2 deletions(-) diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 1c7e79132d..79a834d0b4 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -3849,6 +3849,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Lijst be STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Stuur instructies naar alle voertuigen in de lijst STR_VEHICLE_LIST_REPLACE_VEHICLES :Vervang voertuigen STR_VEHICLE_LIST_SEND_FOR_SERVICING :Stuur voor onderhoud +STR_VEHICLE_LIST_CREATE_GROUP :Groep maken STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Winst dit jaar: {CURRENCY_LONG} (vorig jaar: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -4571,6 +4572,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Verwacht STR_TIMETABLE_SCHEDULED :{BLACK}Volgens dienstregeling STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Wissel tussen verwacht en volgens dienstregeling +STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY} # Date window (for timetable) @@ -5625,6 +5628,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 4339a61c64..59cb80db89 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -4572,6 +4572,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Expected STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled +STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY} # Date window (for timetable) diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index dedfb6c923..c565bf7d54 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -585,7 +585,7 @@ STR_NEWS_MENU_DELETE_ALL_MESSAGES :Forigu ĉiujn m STR_ABOUT_MENU_LAND_BLOCK_INFO :Landkvadrataj informoj STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Baskuligi Konzolon -STR_ABOUT_MENU_AI_DEBUG :AI/Ludo skripto sencimigo +STR_ABOUT_MENU_AI_DEBUG :AI/Ludoskripta sencimigo STR_ABOUT_MENU_SCREENSHOT :Ekranfoto STR_ABOUT_MENU_SHOW_FRAMERATE :Montru bildrapidon STR_ABOUT_MENU_ABOUT_OPENTTD :Pri 'OpenTTD' @@ -1015,6 +1015,7 @@ STR_GAME_OPTIONS_TAB_SOUND :Sono STR_GAME_OPTIONS_TAB_SOUND_TT :{BLACK}Elektu agordojn pri sono kaj muziko STR_GAME_OPTIONS_VOLUME :Laŭteco +STR_GAME_OPTIONS_SFX_VOLUME :Sonefektoj STR_GAME_OPTIONS_MUSIC_VOLUME :Muziko STR_GAME_OPTIONS_VOLUME_0 :0% @@ -1097,6 +1098,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Aparatar STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Elektu tiun ĉi agordon por ke OpenTTD klopodu uzi aparataran akceladon. Se vi ŝanĝas tiun ĉi agordon, la nova agordo validos nur ekde restartigo de la ludo STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Tiu ĉi agordo ekefikos nur post restartigo de la ludo +STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}Vertikala sinkronigo STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Nuna pelilo: {STRING} @@ -1119,8 +1121,10 @@ STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Montru l STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafiko +STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Montru aktualigoftecon STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}Elektu ekranan aktualigoftecon STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz +STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Aktualigoftecoj pli altaj ol 60Hz povas kaŭzi malrapidiĝon. STR_GAME_OPTIONS_BASE_GRF :{BLACK}Baza grafikaro STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektu la uzendan bazgrafikaron @@ -1311,6 +1315,7 @@ STR_CONFIG_SETTING_RUNNING_COSTS :Irkostoj: {STRI STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Ŝanĝu nivelon de bontenkostoj kaj irkostoj de veturiloj kaj infrastrukturo STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Konstrurapido: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limigu la kvanton de konstruaj agoj por AIoj STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Veturilpaneoj: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Regu kiom ofte povas panei maladekvate prizorgataj veturiloj @@ -1352,6 +1357,7 @@ STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permesu terenŝ STR_CONFIG_SETTING_CATCHMENT :Permesu pli realismajn grandecojn de servataj areoj: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Diversaj tipoj de stacioj kaj flughavenoj havas diversgrandajn servatajn areojn +STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Kompaniaj stacioj povas servi fabrikojn kun alkroĉitaj neŭtralaj stacioj: {STRING} STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Kiam tiu ĉi agordo estas aktiva, fabrikoj kun alkroĉitaj stacioj (ekzemple oleplatformoj) povas ankaŭ esti servataj de apudaj stacioj konstruitaj de kompanioj. Kiam tiu ĉi agordo estas malaktiva, tiaj ĉi fabrikoj serveblas nur per siaj alkroĉitaj stacioj. Apudaj stacioj konstruitaj de kompanioj ne povos servi ilin, kaj la alkroĉita stacio ankaŭ ne servos ion alian ol la fabrikon mem STR_CONFIG_SETTING_EXTRADYNAMITE :Permesu forigon de pli da urbaj stratoj, pontoj ktp: {STRING} @@ -1767,6 +1773,7 @@ STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Malebligu ŝipo STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Se tiu ĉi agordo estas aktiva, komputila ludanto ne povas konstrui ŝipojn STR_CONFIG_SETTING_AI_PROFILE :Defaŭlta agorda profilo: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Elektu kiun agordaron uzi por hazardaj AIoj aŭ por komencaj valoroj dum aldonado de nova AI aŭ ludoskripto ###length 3 STR_CONFIG_SETTING_AI_PROFILE_EASY :Facila STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mezfacila @@ -2391,6 +2398,7 @@ STR_NETWORK_CLIENT_LIST_PLAYER_NAME :{BLACK}Nomo STR_NETWORK_CLIENT_LIST_PLAYER_NAME_TOOLTIP :{BLACK}Via ludantnomo STR_NETWORK_CLIENT_LIST_PLAYER_NAME_EDIT_TOOLTIP :{BLACK}Ŝanĝu vian ludantonomon STR_NETWORK_CLIENT_LIST_PLAYER_NAME_QUERY_CAPTION :Via ludantnomo +STR_NETWORK_CLIENT_LIST_ADMIN_CLIENT_TOOLTIP :{BLACK}Administraj agoj fareblaj por tiu ĉi kliento STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}Administraj agoj fareblaj por tiu ĉi kompanio STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :{BLACK}Aliĝu al tiu ĉi kompanio STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}Sendu mesaĝon al tiu ĉi ludanto @@ -3077,6 +3085,12 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD # Framerate display window STR_FRAMERATE_CAPTION :{WHITE}Bildrapido STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) +STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Rapido de simulado: {STRING} +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Nombro de tempopulsoj simulataj ĉiusekunde. +STR_FRAMERATE_RATE_BLITTER :{BLACK}Grafika bildrapido: {STRING} +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Nombro de bildokadroj montrataj ĉiusekunde. +STR_FRAMERATE_SPEED_FACTOR :{BLACK}Nuna ludrapideca faktoro: {DECIMAL}x +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Kiom rapide la ludo nun iras, kompare al la atendata rapideco je normala simuladrapido. STR_FRAMERATE_CURRENT :{WHITE}Nuna STR_FRAMERATE_AVERAGE :{WHITE}Averaĝa STR_FRAMERATE_MEMORYUSE :{WHITE}Memory @@ -3092,21 +3106,36 @@ STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COM STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s ###length 15 +STR_FRAMERATE_GAMELOOP :{BLACK}Luda iteracio ensume: STR_FRAMERATE_GL_ECONOMY :{BLACK} Traktado de ŝarĝoj: +STR_FRAMERATE_GL_TRAINS :{BLACK} Trajnaj tempopulsoj: +STR_FRAMERATE_GL_ROADVEHS :{BLACK} Stratveturilaj tempopulsoj: +STR_FRAMERATE_GL_SHIPS :{BLACK} Ŝipaj tempopulsoj: +STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Aviadilaj tempopulsoj: +STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Mondaj tempopulsoj: STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Ligografea prokrasto: STR_FRAMERATE_DRAWING :{BLACK}Grafika bildigo: +STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Mondaj vidujoj: STR_FRAMERATE_VIDEO :{BLACK}Videa eligo: STR_FRAMERATE_SOUND :{BLACK}Sonmiksado: +STR_FRAMERATE_ALLSCRIPTS :{BLACK} Ludoskriptoj/AI ensume: STR_FRAMERATE_GAMESCRIPT :{BLACK} Ludoskripto: STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING} ###length 15 STR_FRAMETIME_CAPTION_GAMELOOP :Luda iteracio STR_FRAMETIME_CAPTION_GL_ECONOMY :Traktado de ŝarĝoj +STR_FRAMETIME_CAPTION_GL_TRAINS :Trajnaj tempopulsoj +STR_FRAMETIME_CAPTION_GL_ROADVEHS :Stratveturilaj tempopulsoj +STR_FRAMETIME_CAPTION_GL_SHIPS :Ŝipaj tempopulsoj +STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Aviadilaj tempopulsoj +STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Mondaj tempopulsoj STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Ligografea prokrasto STR_FRAMETIME_CAPTION_DRAWING :Grafika bildigo +STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Bildigo de mondaj vidujoj STR_FRAMETIME_CAPTION_VIDEO :Videa eligo STR_FRAMETIME_CAPTION_SOUND :Sonmiksado +STR_FRAMETIME_CAPTION_ALLSCRIPTS :Ludoskriptoj/AIoj ensume STR_FRAMETIME_CAPTION_GAMESCRIPT :Ludoskripto STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRING} @@ -3333,6 +3362,8 @@ STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Movadi l STR_SPRITE_ALIGNER_CROSSHAIR :{BLACK}Celkruco +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Restarigu la nunajn relativajn deŝovojn +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X-deŝovo: {NUM}, Y-deŝovo: {NUM} (Relativa) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Elektu bildeto STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Elektu bildeton ie el la ekrano @@ -3491,6 +3522,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{Y STR_GOALS_CAPTION :{WHITE}Celoj de {COMPANY} STR_GOALS_COMPANY_BUTTON :{BLACK}Kompanio STR_GOALS_COMPANY_BUTTON.n :{BLACK}Kompanion +STR_GOALS_COMPANY_BUTTON_HELPTEXT :{BLACK}Montru celojn de la kompanio STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nenia - STR_GOALS_PROGRESS :{ORANGE}{STRING} @@ -3564,7 +3596,10 @@ STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Ĉiumona STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Grupigu laŭ +STR_STATION_VIEW_WAITING_STATION :Stacio: Atendanta +STR_STATION_VIEW_WAITING_AMOUNT :Kvanto: Atendanta STR_STATION_VIEW_PLANNED_STATION :Stacio: Planata +STR_STATION_VIEW_PLANNED_AMOUNT :Kvanto: Planita STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} de {STATION} STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} tra {STATION} STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} al {STATION} @@ -4334,6 +4369,7 @@ STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Resta vivo (jar STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Maksimuma fidindeco ###next-name-looks-similar +STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Kiel kompari la veturilajn datumoj al la donita valoro STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :egalas al STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ne egalas al STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :estas malpli ol @@ -4472,6 +4508,7 @@ STR_TIMETABLE_CHANGE_TIME :{BLACK}Ŝanĝu STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ŝanĝu kiom da tempo devus postuli la markita ordono. Stir+Klak ŝanĝas la tempon por ĉiuj ordonoj STR_TIMETABLE_CLEAR_TIME :{BLACK}Vakigi tempon +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Forviŝu la tempokvanton por la markita ordono. Ctrl+Klak forviŝas tempokvantojn por ĉiuj ordonoj STR_TIMETABLE_CHANGE_SPEED :{BLACK}Ŝanĝu rapideclimon STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Ŝanĝu la maksimuman veturrapidecon de la markita ordono. Stir+Klak ŝanĝas la rapidecon por ĉiuj ordonoj @@ -4483,11 +4520,14 @@ STR_TIMETABLE_RESET_LATENESS :{BLACK}Reigu ma STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reigu malfruan kalkulumon, tiel la veturilon estos akuratan STR_TIMETABLE_AUTOFILL :{BLACK}Aŭtomata plenigo +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Aŭtomate plenigu la horaron per la valoroj de la sekva iro. Ctrl+Klak por klopodi konservi atendodaŭrojn STR_TIMETABLE_EXPECTED :{BLACK}Atendite STR_TIMETABLE_SCHEDULED :{BLACK}Planite STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Ŝalti inter atendite kaj planite +STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :E: {COLOUR}{DATE_TINY} # Date window (for timetable) @@ -4500,7 +4540,7 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Elekti j # AI debug window -STR_AI_DEBUG :{WHITE}AI/Ludo Skripto Sencimigo +STR_AI_DEBUG :{WHITE}AI/Ludoskripta Sencimigo STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nomo de la skripto STR_AI_DEBUG_SETTINGS :{BLACK}Agordoj @@ -4518,11 +4558,14 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vidu for STR_AI_GAME_SCRIPT :{BLACK}Ludoskripto STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Kontrolu la ludoskriptan protokolon +STR_ERROR_AI_NO_AI_FOUND :Neniu taŭga AI estas ŝarĝebla.{}Tiu ĉi AI estas lokokupa AI kiu nenion faros.{}Vi povas elŝuti pliajn AIojn per la 'Enreta Enhavo'-sistemo +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Unu el la rulantaj skriptoj paneis. Bonvolu raporti tion ĉi al la aŭtoro de la skripto kun ekrankapto de la fenestro 'AI/Ludoskripta Sencimigo' # AI configuration window STR_AI_CONFIG_CAPTION_AI :{WHITE}AI-agordoj STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}Ludoskriptaj agordoj STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Ludoskripto ŝarĝota en la sekva ludo +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}La AIoj ŝarĝotaj en la sekva ludo STR_AI_CONFIG_HUMAN_PLAYER :Homa ludanto STR_AI_CONFIG_RANDOM_AI :Hazarda AI STR_AI_CONFIG_NONE :(neniu) @@ -4539,12 +4582,14 @@ STR_AI_CONFIG_GAMESCRIPT :{SILVER}Ludoskr STR_AI_CONFIG_GAMESCRIPT_PARAM :{SILVER}Parametroj STR_AI_CONFIG_AI :{SILVER}AIj +STR_AI_CONFIG_CHANGE_AI :{BLACK}Elektu AIon STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Elektu ludoskripton STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Ŝarĝu alian skripton. Stir+Klak por montri ĉiujn haveblajn versiojn STR_AI_CONFIG_CONFIGURE :{BLACK}Agordi STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Agordi parametroj de la skripto # Available AIs window +STR_AI_LIST_CAPTION :{WHITE}Haveblaj {STRING} STR_AI_LIST_CAPTION_AI :AIoj STR_AI_LIST_CAPTION_GAMESCRIPT :Ludoskriptoj STR_AI_LIST_TOOLTIP :{BLACK}Klaki por elekti skripto @@ -5528,6 +5573,10 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING1.n :{STRING.n} +STR_JUST_STRING2 :{STRING} +STR_JUST_STRING2.n :{STRING.n} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} diff --git a/src/lang/french.txt b/src/lang/french.txt index ed2d1f5d72..54d608833a 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -4573,6 +4573,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Attendu STR_TIMETABLE_SCHEDULED :{BLACK}Planifié STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alterner entre attendu et planifié +STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY} # Date window (for timetable) diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 840bd80dd2..3fb93511c2 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -4229,6 +4229,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Zarządz STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Wyślij instrukcje wszystkim pojazdom na tej liście STR_VEHICLE_LIST_REPLACE_VEHICLES :Zastąp pojazdy STR_VEHICLE_LIST_SEND_FOR_SERVICING :Wyślij do serwisu +STR_VEHICLE_LIST_CREATE_GROUP :Stwórz grupę STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Zysk w tym roku: {CURRENCY_LONG} (ostatni rok: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -4957,6 +4958,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Wymagany STR_TIMETABLE_SCHEDULED :{BLACK}Zaplanowany STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Przełącz między spodziewanymi i zaplanowanymi +STR_TIMETABLE_ARRIVAL :P: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :O: {COLOUR}{DATE_TINY} # Date window (for timetable) diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 0d5c4e2db9..6949de46e7 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -4573,6 +4573,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Marcado STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Alternar entre tempo esperado e marcado +STR_TIMETABLE_ARRIVAL :C: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :P: {COLOUR}{DATE_TINY} # Date window (for timetable) diff --git a/src/lang/russian.txt b/src/lang/russian.txt index dd76422e46..f11b36fd21 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -4759,6 +4759,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Ожид STR_TIMETABLE_SCHEDULED :{BLACK}График STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Переключение между графиком движения и ожидаемым временем прибытия/отправления +STR_TIMETABLE_ARRIVAL :Приб: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :Отпр: {COLOUR}{DATE_TINY} # Date window (for timetable) diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index bc436b69f3..977cf50a1e 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -3849,6 +3849,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Quản l STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Gửi chỉ dẫn tới toàn bộ phương tiện trong danh sách STR_VEHICLE_LIST_REPLACE_VEHICLES :Thay phương tiện STR_VEHICLE_LIST_SEND_FOR_SERVICING :Gửi về bảo trì +STR_VEHICLE_LIST_CREATE_GROUP :Tạo nhóm STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Lợi nhuận năm nay: {CURRENCY_LONG} (năm ngoái: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -4571,6 +4572,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Mong mu STR_TIMETABLE_SCHEDULED :{BLACK}Chốt lịch STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Chuyển giữa lịch mong muốn và lịch được chốt +STR_TIMETABLE_ARRIVAL :ĐN: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :KH: {COLOUR}{DATE_TINY} # Date window (for timetable) From 9016d4a5b5fb2b48f46c4092860b614d578a5d70 Mon Sep 17 00:00:00 2001 From: translators Date: Thu, 22 Jun 2023 18:38:02 +0000 Subject: [PATCH 107/123] Update: Translations from eints arabic (egypt): 8 changes by AviationGamerX turkish: 5 changes by densxd danish: 3 changes by bscargo --- src/lang/arabic_egypt.txt | 8 ++++++++ src/lang/danish.txt | 3 +++ src/lang/turkish.txt | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 702f611f1f..91bab02bd5 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -1942,6 +1942,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}أسم STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}ضع كلمة سر STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}احم لعبتك برقم سري حتى لا تصبح لعبتك مفتوحة للجميع +STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}سواء بإمكان الأشخاص الآخرين رؤية خادمك (server) في القائمة العامة أم لا STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM}عميل STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}اقصى عدد للعملاء: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}أختر أقصى عدد للعملاء @@ -1980,6 +1981,7 @@ STR_NETWORK_COMPANY_LIST_SPECTATE :شاهد # Network client list STR_NETWORK_CLIENT_LIST_CAPTION :{WHITE}اللاعبون عبر الإنترنت STR_NETWORK_CLIENT_LIST_SERVER_NAME :{BLACK}الاسم +STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP :{BLACK}سواء ان يمكن الوصول إلى الخادم الخاص بك من قبل الآخرين وكيف سيصلون اليه STR_NETWORK_CLIENT_LIST_PLAYER_NAME :{BLACK}الاسم STR_NETWORK_CLIENT_LIST_SPECTATORS :المشاهدين STR_NETWORK_CLIENT_LIST_NEW_COMPANY :(شركة جديدة) @@ -2112,6 +2114,7 @@ STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK} مسح STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK} ضع علامة على المحتوى التي لن يتم تحميلها STR_CONTENT_SEARCH_EXTERNAL :{BLACK}بحث المواقع الخارجية STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK} محتوى البحث غير متوفر في في خدمة محتوى OpenTTD على مواقع الويب غير التابعة لـ OpenTTD +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}تختلف شروط وأحكام تنزيل المحتوى من مواقع الويب الخارجية.{}يجب عليك الرجوع إلى المواقع الخارجية للحصول على إرشادات حول كيفية تثبيت المحتوى في OpenTTD.{}هل تريد أن تكمل؟ STR_CONTENT_FILTER_TITLE :{BLACK}مُرَشِح: STR_CONTENT_OPEN_URL :{BLACK} زيارة الموقع STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}قم بزيارة الموقع لهذا المحتوى @@ -2615,6 +2618,7 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النس # Framerate display window STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms +STR_FRAMERATE_MS_BAD :{RED}{DECIMAL} ms STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} صورة في الثانية STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} صورة في الثانية STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} ثواني @@ -3110,6 +3114,7 @@ STR_FINANCES_YEAR :{WHITE}{NUM} ###length 3 STR_FINANCES_REVENUE_TITLE :{WHITE}الدخل +STR_FINANCES_OPERATING_EXPENSES_TITLE :{WHITE}مصروفات التشغيل ###length 13 @@ -3211,6 +3216,7 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}وسط STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}نسبة الانتاج: {YELLOW}{COMMA}% STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}ينتج: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :، {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES :{BLACK}:يتطلب STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} تنتظر{STRING} @@ -3954,6 +3960,7 @@ STR_AI_CONFIG_HUMAN_PLAYER :لاعب انس STR_AI_CONFIG_RANDOM_AI :ذكاء صناعي عشوائي STR_AI_CONFIG_NONE :(لا شيء) STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}العدد الاقصى للمتنافسين: {ORANGE}{COMMA} +STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}الفترة بين بدء المنافسين: {ORANGE}{COMMA} دقيقة STR_AI_CONFIG_MOVE_UP :{BLACK}انقل للاعلى STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}انقل الذكاء الاصطناعي المختار للاعلى @@ -4009,6 +4016,7 @@ STR_PERCENT_DOWN :{WHITE}{NUM}%{D STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% +STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}تكلفة: {CURRENCY_LONG} diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 989aa236e1..c305e0506c 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -3849,6 +3849,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Administ STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Send instruktioner til alle køretøjer i denne liste STR_VEHICLE_LIST_REPLACE_VEHICLES :Udskift køretøjer STR_VEHICLE_LIST_SEND_FOR_SERVICING :Send til eftersyn +STR_VEHICLE_LIST_CREATE_GROUP :Opret gruppe STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Afkast i år: {CURRENCY_LONG} (sidste år: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -4571,6 +4572,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Forvente STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skift mellem forventet og tidslagt +STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY} # Date window (for timetable) diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index f56d9edd2f..255aed8633 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -3850,6 +3850,7 @@ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Listeyi STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Listedeki tüm araçlara talimat ver STR_VEHICLE_LIST_REPLACE_VEHICLES :Araçları Değiştir STR_VEHICLE_LIST_SEND_FOR_SERVICING :Bakıma Gönder +STR_VEHICLE_LIST_CREATE_GROUP :Grup kur STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Bu seneki kar: {CURRENCY_LONG} (geçen sene: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} @@ -4572,6 +4573,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Beklenen STR_TIMETABLE_SCHEDULED :{BLACK}Programlanan STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Beklenen ile programlanan arasında geçiş yap +STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY} # Date window (for timetable) @@ -5636,6 +5639,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} From f48baa7d0085d637f7d4c9a78eb066c429105e36 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 22 Jun 2023 20:08:06 +0200 Subject: [PATCH 108/123] Codechange: move sign invisibility check out of loop --- src/viewport.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/viewport.cpp b/src/viewport.cpp index de74ec336d..3360866b4e 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -1417,6 +1417,9 @@ static void ViewportAddKdtreeSigns(DrawPixelInfo *dpi) t->index, t->cache.population); } + /* Do not draw signs nor station names if they are set invisible */ + if (IsInvisibilitySet(TO_SIGNS)) return; + for (const auto *si : signs) { ViewportAddString(dpi, ZOOM_LVL_OUT_16X, &si->sign, STR_WHITE_SIGN, @@ -1701,9 +1704,6 @@ static void ViewportDrawStrings(ZoomLevel zoom, const StringSpriteToDrawVector * SetDParam(1, ss.params[1]); if (ss.colour != INVALID_COLOUR) { - /* Do not draw signs nor station names if they are set invisible */ - if (IsInvisibilitySet(TO_SIGNS) && ss.string != STR_WHITE_SIGN) continue; - if (IsTransparencySet(TO_SIGNS) && ss.string != STR_WHITE_SIGN) { /* Don't draw the rectangle. * Real colours need the TC_IS_PALETTE_COLOUR flag. From 321f01602a929339c13104010b17f7b8d33b058b Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 22 Jun 2023 20:10:02 +0200 Subject: [PATCH 109/123] Codechange: reduce passing around parameters, but formatting strings earlier --- src/texteff.cpp | 4 +++- src/viewport.cpp | 39 +++++++++++++++++++-------------------- src/viewport_func.h | 2 +- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/texteff.cpp b/src/texteff.cpp index 6695d29944..e974160974 100644 --- a/src/texteff.cpp +++ b/src/texteff.cpp @@ -126,7 +126,9 @@ void DrawTextEffects(DrawPixelInfo *dpi) for (TextEffect &te : _text_effects) { if (te.string_id == INVALID_STRING_ID) continue; if (te.mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) { - ViewportAddString(dpi, ZOOM_LVL_OUT_8X, &te, te.string_id, te.string_id - 1, STR_NULL, te.params_1, te.params_2); + SetDParam(0, te.params_1); + SetDParam(1, te.params_2); + ViewportAddString(dpi, ZOOM_LVL_OUT_8X, &te, te.string_id, te.string_id - 1, STR_NULL); } } } diff --git a/src/viewport.cpp b/src/viewport.cpp index 3360866b4e..b7bea78832 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -112,11 +112,11 @@ static const int MAX_TILE_EXTENT_TOP = ZOOM_LVL_BASE * MAX_BUILDING_PIXELS; static const int MAX_TILE_EXTENT_BOTTOM = ZOOM_LVL_BASE * (TILE_PIXELS + 2 * TILE_HEIGHT); ///< Maximum bottom extent of tile relative to north corner (worst case: #SLOPE_STEEP_N). struct StringSpriteToDraw { - StringID string; + std::string string; + StringID string_id; Colours colour; int32 x; int32 y; - uint64 params[2]; uint16 width; }; @@ -849,15 +849,14 @@ void AddChildSpriteScreen(SpriteID image, PaletteID pal, int x, int y, bool tran _vd.last_child = &cs.next; } -static void AddStringToDraw(int x, int y, StringID string, uint64 params_1, uint64 params_2, Colours colour, uint16 width) +static void AddStringToDraw(int x, int y, StringID string, Colours colour, uint16 width) { assert(width != 0); StringSpriteToDraw &ss = _vd.string_sprites_to_draw.emplace_back(); - ss.string = string; + ss.string = GetString(string); + ss.string_id = string; ss.x = x; ss.y = y; - ss.params[0] = params_1; - ss.params[1] = params_2; ss.width = width; ss.colour = colour; } @@ -1297,7 +1296,7 @@ static void ViewportAddLandscape() * @param string_small_shadow Shadow string for 4x and 8x zoom level; or #STR_NULL if no shadow * @param colour colour of the sign background; or INVALID_COLOUR if transparent */ -void ViewportAddString(const DrawPixelInfo *dpi, ZoomLevel small_from, const ViewportSign *sign, StringID string_normal, StringID string_small, StringID string_small_shadow, uint64 params_1, uint64 params_2, Colours colour) +void ViewportAddString(const DrawPixelInfo *dpi, ZoomLevel small_from, const ViewportSign *sign, StringID string_normal, StringID string_small, StringID string_small_shadow, Colours colour) { bool small = dpi->zoom >= small_from; @@ -1317,15 +1316,14 @@ void ViewportAddString(const DrawPixelInfo *dpi, ZoomLevel small_from, const Vie } if (!small) { - AddStringToDraw(sign->center - sign_half_width, sign->top, string_normal, params_1, params_2, colour, sign->width_normal); + AddStringToDraw(sign->center - sign_half_width, sign->top, string_normal, colour, sign->width_normal); } else { int shadow_offset = 0; if (string_small_shadow != STR_NULL) { shadow_offset = 4; - AddStringToDraw(sign->center - sign_half_width + shadow_offset, sign->top, string_small_shadow, params_1, params_2, INVALID_COLOUR, sign->width_small | 0x8000); + AddStringToDraw(sign->center - sign_half_width + shadow_offset, sign->top, string_small_shadow, INVALID_COLOUR, sign->width_small | 0x8000); } - AddStringToDraw(sign->center - sign_half_width, sign->top - shadow_offset, string_small, params_1, params_2, - colour, sign->width_small | 0x8000); + AddStringToDraw(sign->center - sign_half_width, sign->top - shadow_offset, string_small, colour, sign->width_small | 0x8000); } } @@ -1411,33 +1409,37 @@ static void ViewportAddKdtreeSigns(DrawPixelInfo *dpi) /* Layering order (bottom to top): Town names, signs, stations */ for (const auto *t : towns) { + SetDParam(0, t->index); + SetDParam(1, t->cache.population); ViewportAddString(dpi, ZOOM_LVL_OUT_16X, &t->cache.sign, _settings_client.gui.population_in_label ? STR_VIEWPORT_TOWN_POP : STR_VIEWPORT_TOWN, - STR_VIEWPORT_TOWN_TINY_WHITE, STR_VIEWPORT_TOWN_TINY_BLACK, - t->index, t->cache.population); + STR_VIEWPORT_TOWN_TINY_WHITE, STR_VIEWPORT_TOWN_TINY_BLACK); } /* Do not draw signs nor station names if they are set invisible */ if (IsInvisibilitySet(TO_SIGNS)) return; for (const auto *si : signs) { + SetDParam(0, si->index); ViewportAddString(dpi, ZOOM_LVL_OUT_16X, &si->sign, STR_WHITE_SIGN, (IsTransparencySet(TO_SIGNS) || si->owner == OWNER_DEITY) ? STR_VIEWPORT_SIGN_SMALL_WHITE : STR_VIEWPORT_SIGN_SMALL_BLACK, STR_NULL, - si->index, 0, (si->owner == OWNER_NONE) ? COLOUR_GREY : (si->owner == OWNER_DEITY ? INVALID_COLOUR : _company_colours[si->owner])); + (si->owner == OWNER_NONE) ? COLOUR_GREY : (si->owner == OWNER_DEITY ? INVALID_COLOUR : _company_colours[si->owner])); } for (const auto *st : stations) { + SetDParam(0, st->index); + SetDParam(1, st->facilities); if (Station::IsExpected(st)) { /* Station */ ViewportAddString(dpi, ZOOM_LVL_OUT_16X, &st->sign, STR_VIEWPORT_STATION, STR_VIEWPORT_STATION_TINY, STR_NULL, - st->index, st->facilities, (st->owner == OWNER_NONE || !st->IsInUse()) ? COLOUR_GREY : _company_colours[st->owner]); + (st->owner == OWNER_NONE || !st->IsInUse()) ? COLOUR_GREY : _company_colours[st->owner]); } else { /* Waypoint */ ViewportAddString(dpi, ZOOM_LVL_OUT_16X, &st->sign, STR_VIEWPORT_WAYPOINT, STR_VIEWPORT_WAYPOINT_TINY, STR_NULL, - st->index, st->facilities, (st->owner == OWNER_NONE || !st->IsInUse()) ? COLOUR_GREY : _company_colours[st->owner]); + (st->owner == OWNER_NONE || !st->IsInUse()) ? COLOUR_GREY : _company_colours[st->owner]); } } } @@ -1700,11 +1702,8 @@ static void ViewportDrawStrings(ZoomLevel zoom, const StringSpriteToDrawVector * int y = UnScaleByZoom(ss.y, zoom); int h = WidgetDimensions::scaled.fullbevel.top + (small ? FONT_HEIGHT_SMALL : FONT_HEIGHT_NORMAL) + WidgetDimensions::scaled.fullbevel.bottom; - SetDParam(0, ss.params[0]); - SetDParam(1, ss.params[1]); - if (ss.colour != INVALID_COLOUR) { - if (IsTransparencySet(TO_SIGNS) && ss.string != STR_WHITE_SIGN) { + if (IsTransparencySet(TO_SIGNS) && ss.string_id != STR_WHITE_SIGN) { /* Don't draw the rectangle. * Real colours need the TC_IS_PALETTE_COLOUR flag. * Otherwise colours from _string_colourmap are assumed. */ diff --git a/src/viewport_func.h b/src/viewport_func.h index 651fe44573..8b68b55dfe 100644 --- a/src/viewport_func.h +++ b/src/viewport_func.h @@ -53,7 +53,7 @@ void DrawGroundSprite(SpriteID image, PaletteID pal, const SubSprite *sub = null void DrawGroundSpriteAt(SpriteID image, PaletteID pal, int32 x, int32 y, int z, const SubSprite *sub = nullptr, int extra_offs_x = 0, int extra_offs_y = 0); void AddSortableSpriteToDraw(SpriteID image, PaletteID pal, int x, int y, int w, int h, int dz, int z, bool transparent = false, int bb_offset_x = 0, int bb_offset_y = 0, int bb_offset_z = 0, const SubSprite *sub = nullptr); void AddChildSpriteScreen(SpriteID image, PaletteID pal, int x, int y, bool transparent = false, const SubSprite *sub = nullptr, bool scale = true, bool relative = true); -void ViewportAddString(const DrawPixelInfo *dpi, ZoomLevel small_from, const ViewportSign *sign, StringID string_normal, StringID string_small, StringID string_small_shadow, uint64 params_1, uint64 params_2 = 0, Colours colour = INVALID_COLOUR); +void ViewportAddString(const DrawPixelInfo *dpi, ZoomLevel small_from, const ViewportSign *sign, StringID string_normal, StringID string_small, StringID string_small_shadow, Colours colour = INVALID_COLOUR); void StartSpriteCombine(); From d42a78f3e877e385a690f189a37c860ce4d28425 Mon Sep 17 00:00:00 2001 From: PeterN Date: Fri, 23 Jun 2023 09:30:13 +0100 Subject: [PATCH 110/123] Codechange: Make DropDownListStringItem preformat and remove other implementations. (#11063) Having to choose between DropDownListStringItem, DropDownListCharStringItem, and DropDownListParamStringItem depending on whether to draw a StringID, a raw string, or a StringID with extra parameters was needlessly complex. Instead, allow passing a StringID or raw string to DropDownListStringItem. This will preformat the StringID into a raw string, and can therefore accept parameters via the normal SetDParam mechanism. This also means that strings no longer need to be formatted on every draw. --- src/company_gui.cpp | 9 ++------- src/date_gui.cpp | 5 ++--- src/game/game_gui.cpp | 2 +- src/genworld_gui.cpp | 5 ++--- src/newgrf_gui.cpp | 4 ++-- src/rail_gui.cpp | 12 +++++------- src/road_gui.cpp | 14 ++++++-------- src/script/script_gui.cpp | 2 +- src/settings_gui.cpp | 23 ++++++++++------------- src/story_gui.cpp | 11 +++-------- src/toolbar_gui.cpp | 2 +- src/widgets/dropdown.cpp | 24 ++++++++---------------- src/widgets/dropdown_type.h | 35 +++++------------------------------ 13 files changed, 48 insertions(+), 100 deletions(-) diff --git a/src/company_gui.cpp b/src/company_gui.cpp index bdcad56feb..f25b6654cb 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -588,14 +588,9 @@ static const LiveryClass _livery_class[LS_END] = { LC_ROAD, LC_ROAD, }; -class DropDownListColourItem : public DropDownListItem { +class DropDownListColourItem : public DropDownListStringItem { public: - DropDownListColourItem(int result, bool masked) : DropDownListItem(result, masked) {} - - StringID String() const - { - return this->result >= COLOUR_END ? STR_COLOUR_DEFAULT : _colour_dropdown[this->result]; - } + DropDownListColourItem(int result, bool masked) : DropDownListStringItem(result >= COLOUR_END ? STR_COLOUR_DEFAULT : _colour_dropdown[result], result, masked) {} uint Width() const override { diff --git a/src/date_gui.cpp b/src/date_gui.cpp index 3667b2e932..e5481265af 100644 --- a/src/date_gui.cpp +++ b/src/date_gui.cpp @@ -90,9 +90,8 @@ struct SetDateWindow : Window { case WID_SD_YEAR: for (TimerGameCalendar::Year i = this->min_year; i <= this->max_year; i++) { - DropDownListParamStringItem *item = new DropDownListParamStringItem(STR_JUST_INT, i, false); - item->SetParam(0, i); - list.emplace_back(item); + SetDParam(0, i); + list.emplace_back(new DropDownListStringItem(STR_JUST_INT, i, false)); } selected = this->date.year; break; diff --git a/src/game/game_gui.cpp b/src/game/game_gui.cpp index 85e943a287..e3b1f12e0a 100644 --- a/src/game/game_gui.cpp +++ b/src/game/game_gui.cpp @@ -311,7 +311,7 @@ struct GSConfigWindow : public Window { DropDownList list; for (int i = config_item.min_value; i <= config_item.max_value; i++) { - list.emplace_back(new DropDownListCharStringItem(config_item.labels.find(i)->second, i, false)); + list.emplace_back(new DropDownListStringItem(config_item.labels.find(i)->second, i, false)); } ShowDropDownListAt(this, std::move(list), old_val, -1, wi_rect, COLOUR_ORANGE); diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp index 9fd8238356..a17c8e6633 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -355,9 +355,8 @@ static DropDownList BuildMapsizeDropDown() DropDownList list; for (uint i = MIN_MAP_SIZE_BITS; i <= MAX_MAP_SIZE_BITS; i++) { - DropDownListParamStringItem *item = new DropDownListParamStringItem(STR_JUST_INT, i, false); - item->SetParam(0, 1LL << i); - list.emplace_back(item); + SetDParam(0, 1LL << i); + list.emplace_back(new DropDownListStringItem(STR_JUST_INT, i, false)); } return list; diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 93b26b1cad..3bcd2bf30e 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -398,7 +398,7 @@ struct NewGRFParametersWindow : public Window { DropDownList list; for (uint32 i = par_info.min_value; i <= par_info.max_value; i++) { - list.emplace_back(new DropDownListCharStringItem(GetGRFStringFromGRFText(par_info.value_names.find(i)->second), i, false)); + list.emplace_back(new DropDownListStringItem(GetGRFStringFromGRFText(par_info.value_names.find(i)->second), i, false)); } ShowDropDownListAt(this, std::move(list), old_val, -1, wi_rect, COLOUR_ORANGE); @@ -955,7 +955,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { list.emplace_back(new DropDownListStringItem(STR_NONE, -1, false)); for (uint i = 0; i < this->grf_presets.size(); i++) { - list.emplace_back(new DropDownListCharStringItem(this->grf_presets[i], i, false)); + list.emplace_back(new DropDownListStringItem(this->grf_presets[i], i, false)); } this->CloseChildWindows(WC_QUERY_STRING); // Remove the parameter query window diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 0e914b17eb..a784cd1fe6 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -2371,18 +2371,16 @@ DropDownList GetRailTypeDropDownList(bool for_replacement, bool all_option) const RailtypeInfo *rti = GetRailTypeInfo(rt); - StringID str = for_replacement ? rti->strings.replace_text : (rti->max_speed > 0 ? STR_TOOLBAR_RAILTYPE_VELOCITY : STR_JUST_STRING); - DropDownListParamStringItem *item; + SetDParam(0, rti->strings.menu_text); + SetDParam(1, rti->max_speed); if (for_replacement) { - item = new DropDownListParamStringItem(str, rt, !HasBit(avail_railtypes, rt)); + list.emplace_back(new DropDownListStringItem(rti->strings.replace_text, rt, !HasBit(avail_railtypes, rt))); } else { + StringID str = rti->max_speed > 0 ? STR_TOOLBAR_RAILTYPE_VELOCITY : STR_JUST_STRING; DropDownListIconItem *iconitem = new DropDownListIconItem(rti->gui_sprites.build_x_rail, PAL_NONE, str, rt, !HasBit(avail_railtypes, rt)); iconitem->SetDimension(d); - item = iconitem; + list.emplace_back(iconitem); } - item->SetParam(0, rti->strings.menu_text); - item->SetParam(1, rti->max_speed); - list.emplace_back(item); } if (list.size() == 0) { diff --git a/src/road_gui.cpp b/src/road_gui.cpp index aff3d90547..40c55d154a 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -1834,18 +1834,16 @@ DropDownList GetRoadTypeDropDownList(RoadTramTypes rtts, bool for_replacement, b const RoadTypeInfo *rti = GetRoadTypeInfo(rt); - DropDownListParamStringItem *item; + SetDParam(0, rti->strings.menu_text); + SetDParam(1, rti->max_speed); if (for_replacement) { - item = new DropDownListParamStringItem(rti->strings.replace_text, rt, !HasBit(avail_roadtypes, rt)); + list.emplace_back(new DropDownListStringItem(rti->strings.replace_text, rt, !HasBit(avail_roadtypes, rt))); } else { StringID str = rti->max_speed > 0 ? STR_TOOLBAR_RAILTYPE_VELOCITY : STR_JUST_STRING; DropDownListIconItem *iconitem = new DropDownListIconItem(rti->gui_sprites.build_x_road, PAL_NONE, str, rt, !HasBit(avail_roadtypes, rt)); iconitem->SetDimension(d); - item = iconitem; + list.emplace_back(iconitem); } - item->SetParam(0, rti->strings.menu_text); - item->SetParam(1, rti->max_speed / 2); - list.emplace_back(item); } if (list.size() == 0) { @@ -1880,11 +1878,11 @@ DropDownList GetScenRoadTypeDropDownList(RoadTramTypes rtts) const RoadTypeInfo *rti = GetRoadTypeInfo(rt); + SetDParam(0, rti->strings.menu_text); + SetDParam(1, rti->max_speed); StringID str = rti->max_speed > 0 ? STR_TOOLBAR_RAILTYPE_VELOCITY : STR_JUST_STRING; DropDownListIconItem *item = new DropDownListIconItem(rti->gui_sprites.build_x_road, PAL_NONE, str, rt, !HasBit(avail_roadtypes, rt)); item->SetDimension(d); - item->SetParam(0, rti->strings.menu_text); - item->SetParam(1, rti->max_speed / 2); list.emplace_back(item); } diff --git a/src/script/script_gui.cpp b/src/script/script_gui.cpp index eea3140161..e5001a73b0 100644 --- a/src/script/script_gui.cpp +++ b/src/script/script_gui.cpp @@ -469,7 +469,7 @@ struct ScriptSettingsWindow : public Window { DropDownList list; for (int i = config_item.min_value; i <= config_item.max_value; i++) { - list.emplace_back(new DropDownListCharStringItem(config_item.labels.find(i)->second, i, false)); + list.emplace_back(new DropDownListStringItem(config_item.labels.find(i)->second, i, false)); } ShowDropDownListAt(this, std::move(list), old_val, -1, wi_rect, COLOUR_ORANGE); diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 9e4f372175..06fa9d741b 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -82,7 +82,7 @@ static DropDownList BuildSetDropDownList(int *selected_index, bool allow_selecti DropDownList list; for (int i = 0; i < n; i++) { - list.emplace_back(new DropDownListCharStringItem(T::GetSet(i)->name, i, !allow_selection && (*selected_index != i))); + list.emplace_back(new DropDownListStringItem(T::GetSet(i)->name, i, !allow_selection && (*selected_index != i))); } return list; @@ -246,20 +246,19 @@ struct GameOptionsWindow : Window { bool hide_language = IsReleasedVersion() && !_languages[i].IsReasonablyFinished(); if (hide_language) continue; bool hide_percentage = IsReleasedVersion() || _languages[i].missing < _settings_client.gui.missing_strings_threshold; - auto item = new DropDownListParamStringItem(hide_percentage ? STR_JUST_RAW_STRING : STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE, i, false); if (&_languages[i] == _current_language) { *selected_index = i; - item->SetParamStr(0, _languages[i].own_name); + SetDParamStr(0, _languages[i].own_name); } else { /* Especially with sprite-fonts, not all localized * names can be rendered. So instead, we use the * international names for anything but the current * selected language. This avoids showing a few ???? * entries in the dropdown list. */ - item->SetParamStr(0, _languages[i].name); + SetDParamStr(0, _languages[i].name); } - item->SetParam(1, (LANGUAGE_TOTAL_STRINGS - _languages[i].missing) * 100 / LANGUAGE_TOTAL_STRINGS); - list.emplace_back(item); + SetDParam(1, (LANGUAGE_TOTAL_STRINGS - _languages[i].missing) * 100 / LANGUAGE_TOTAL_STRINGS); + list.emplace_back(new DropDownListStringItem(hide_percentage ? STR_JUST_RAW_STRING : STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE, i, false)); } std::sort(list.begin(), list.end(), DropDownListStringItem::NatSortFunc); break; @@ -270,10 +269,9 @@ struct GameOptionsWindow : Window { *selected_index = GetCurrentResolutionIndex(); for (uint i = 0; i < _resolutions.size(); i++) { - auto item = new DropDownListParamStringItem(STR_GAME_OPTIONS_RESOLUTION_ITEM, i, false); - item->SetParam(0, _resolutions[i].width); - item->SetParam(1, _resolutions[i].height); - list.emplace_back(item); + SetDParam(0, _resolutions[i].width); + SetDParam(1, _resolutions[i].height); + list.emplace_back(new DropDownListStringItem(STR_GAME_OPTIONS_RESOLUTION_ITEM, i, false)); } break; @@ -281,9 +279,8 @@ struct GameOptionsWindow : Window { for (auto it = _refresh_rates.begin(); it != _refresh_rates.end(); it++) { auto i = std::distance(_refresh_rates.begin(), it); if (*it == _settings_client.gui.refresh_rate) *selected_index = i; - auto item = new DropDownListParamStringItem(STR_GAME_OPTIONS_REFRESH_RATE_ITEM, i, false); - item->SetParam(0, *it); - list.emplace_back(item); + SetDParam(0, *it); + list.emplace_back(new DropDownListStringItem(STR_GAME_OPTIONS_REFRESH_RATE_ITEM, i, false)); } break; diff --git a/src/story_gui.cpp b/src/story_gui.cpp index b1564e72c9..87369ce148 100644 --- a/src/story_gui.cpp +++ b/src/story_gui.cpp @@ -252,18 +252,13 @@ protected: uint16 page_num = 1; for (const StoryPage *p : this->story_pages) { bool current_page = p->index == this->selected_page_id; - DropDownListStringItem *item = nullptr; if (!p->title.empty()) { - item = new DropDownListCharStringItem(p->title, p->index, current_page); + list.emplace_back(new DropDownListStringItem(p->title, p->index, current_page)); } else { /* No custom title => use a generic page title with page number. */ - DropDownListParamStringItem *str_item = - new DropDownListParamStringItem(STR_STORY_BOOK_GENERIC_PAGE_ITEM, p->index, current_page); - str_item->SetParam(0, page_num); - item = str_item; + SetDParam(0, page_num); + list.emplace_back(new DropDownListStringItem(STR_STORY_BOOK_GENERIC_PAGE_ITEM, p->index, current_page)); } - - list.emplace_back(item); page_num++; } diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 95a480790c..c76240c5f0 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -692,7 +692,7 @@ static const int LTMN_HIGHSCORE = -9; ///< Show highscrore table static void AddDropDownLeagueTableOptions(DropDownList &list) { if (LeagueTable::GetNumItems() > 0) { for (LeagueTable *lt : LeagueTable::Iterate()) { - list.emplace_back(new DropDownListCharStringItem(lt->title, lt->index, false)); + list.emplace_back(new DropDownListStringItem(lt->title, lt->index, false)); } } else { list.emplace_back(new DropDownListStringItem(STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE, LTMN_PERFORMANCE_LEAGUE, false)); diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index 5664c37d30..1709d840f3 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -32,6 +32,10 @@ void DropDownListItem::Draw(const Rect &r, bool sel, Colours bg_colour) const GfxFillRect(r.left, mid, r.right, mid + WidgetDimensions::scaled.bevel.top - 1, c2); } +DropDownListStringItem::DropDownListStringItem(StringID string, int result, bool masked) : DropDownListItem(result, masked), string(GetString(string)) +{ +} + uint DropDownListStringItem::Width() const { return GetStringBoundingBox(this->String()).width + WidgetDimensions::scaled.dropdowntext.Horizontal(); @@ -52,24 +56,12 @@ void DropDownListStringItem::Draw(const Rect &r, bool sel, Colours bg_colour) co */ /* static */ bool DropDownListStringItem::NatSortFunc(std::unique_ptr const &first, std::unique_ptr const &second) { - std::string str1 = GetString(static_cast(first.get())->String()); - std::string str2 = GetString(static_cast(second.get())->String()); + std::string str1 = static_cast(first.get())->String(); + std::string str2 = static_cast(second.get())->String(); return StrNaturalCompare(str1, str2) < 0; } -StringID DropDownListParamStringItem::String() const -{ - for (uint i = 0; i < lengthof(this->decode_params); i++) SetDParam(i, this->decode_params[i]); - return this->string; -} - -StringID DropDownListCharStringItem::String() const -{ - SetDParamStr(0, this->raw_string); - return this->string; -} - -DropDownListIconItem::DropDownListIconItem(SpriteID sprite, PaletteID pal, StringID string, int result, bool masked) : DropDownListParamStringItem(string, result, masked), sprite(sprite), pal(pal) +DropDownListIconItem::DropDownListIconItem(SpriteID sprite, PaletteID pal, StringID string, int result, bool masked) : DropDownListStringItem(string, result, masked), sprite(sprite), pal(pal) { this->dim = GetSpriteSize(sprite); this->sprite_y = dim.height; @@ -82,7 +74,7 @@ uint DropDownListIconItem::Height(uint width) const uint DropDownListIconItem::Width() const { - return DropDownListParamStringItem::Width() + this->dim.width + WidgetDimensions::scaled.hsep_wide; + return DropDownListStringItem::Width() + this->dim.width + WidgetDimensions::scaled.hsep_wide; } void DropDownListIconItem::Draw(const Rect &r, bool sel, Colours bg_colour) const diff --git a/src/widgets/dropdown_type.h b/src/widgets/dropdown_type.h index 56ed0061b5..bfb3f57fec 100644 --- a/src/widgets/dropdown_type.h +++ b/src/widgets/dropdown_type.h @@ -37,48 +37,23 @@ public: */ class DropDownListStringItem : public DropDownListItem { public: - StringID string; ///< String ID of item + const std::string string; ///< String of item - DropDownListStringItem(StringID string, int result, bool masked) : DropDownListItem(result, masked), string(string) {} + DropDownListStringItem(StringID string, int result, bool masked); + DropDownListStringItem(const std::string &string, int result, bool masked) : DropDownListItem(result, masked), string(string) {} bool Selectable() const override { return true; } uint Width() const override; void Draw(const Rect &r, bool sel, Colours bg_colour) const override; - virtual StringID String() const { return this->string; } + virtual const std::string &String() const { return this->string; } static bool NatSortFunc(std::unique_ptr const &first, std::unique_ptr const &second); }; -/** - * String list item with parameters. - */ -class DropDownListParamStringItem : public DropDownListStringItem { -public: - uint64 decode_params[10]; ///< Parameters of the string - - DropDownListParamStringItem(StringID string, int result, bool masked) : DropDownListStringItem(string, result, masked) {} - - StringID String() const override; - void SetParam(uint index, uint64 value) { decode_params[index] = value; } - void SetParamStr(uint index, const char *str) { this->SetParam(index, (uint64)(size_t)str); } -}; - -/** - * List item containing a C char string. - */ -class DropDownListCharStringItem : public DropDownListStringItem { -public: - std::string raw_string; - - DropDownListCharStringItem(const std::string &raw_string, int result, bool masked) : DropDownListStringItem(STR_JUST_RAW_STRING, result, masked), raw_string(raw_string) {} - - StringID String() const override; -}; - /** * List item with icon and string. */ -class DropDownListIconItem : public DropDownListParamStringItem { +class DropDownListIconItem : public DropDownListStringItem { SpriteID sprite; PaletteID pal; Dimension dim; From 9dd9b8ec7415243b098da0a7c04a79bccc75788e Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Fri, 23 Jun 2023 00:11:11 +0100 Subject: [PATCH 111/123] Fix #11054: Prevent translation of currency codes. Most languages stick with the 3-letter latin currency codes in the name string, however some translations are... clever... and use the currency symbol instead. Whilst this may look nice, it can cause issues with fonts as some scripts have a specific limited set of fonts which do not include these symbols. Instead, hard code the currency code list and add it when drawing the currency name. --- src/currency.cpp | 112 ++++++++++++++++++------------------------- src/currency.h | 6 +-- src/lang/english.txt | 84 ++++++++++++++++---------------- src/newgrf.cpp | 1 + src/settings_gui.cpp | 26 ++++++++-- 5 files changed, 114 insertions(+), 115 deletions(-) diff --git a/src/currency.cpp b/src/currency.cpp index c3e18b2ae9..f51ed30261 100644 --- a/src/currency.cpp +++ b/src/currency.cpp @@ -21,54 +21,54 @@ #include "safeguards.h" - /* exchange rate prefix symbol_pos - * | separator | postfix | - * | | Euro year | | | name - * | | | | | | | */ + /* exchange rate prefix code + * | separator | postfix | symbol_pos + * | | Euro year | | | | name + * | | | | | | | | */ /** The original currency specifications. */ static const CurrencySpec origin_currency_specs[CURRENCY_END] = { - { 1, "", CF_NOEURO, u8"\u00a3", "", 0, STR_GAME_OPTIONS_CURRENCY_GBP }, ///< british pound - { 2, "", CF_NOEURO, "$", "", 0, STR_GAME_OPTIONS_CURRENCY_USD }, ///< american dollar - { 2, "", CF_ISEURO, u8"\u20ac", "", 0, STR_GAME_OPTIONS_CURRENCY_EUR }, ///< euro - { 220, "", CF_NOEURO, u8"\u00a5", "", 0, STR_GAME_OPTIONS_CURRENCY_JPY }, ///< japanese yen - { 27, "", 2002, "", NBSP "S.", 1, STR_GAME_OPTIONS_CURRENCY_ATS }, ///< austrian schilling - { 81, "", 2002, "BEF" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_BEF }, ///< belgian franc - { 2, "", CF_NOEURO, "CHF" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_CHF }, ///< swiss franc - { 41, "", CF_NOEURO, "", NBSP u8"K\u010d", 1, STR_GAME_OPTIONS_CURRENCY_CZK }, ///< czech koruna - { 4, "", 2002, "DM" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_DEM }, ///< deutsche mark - { 11, "", CF_NOEURO, "", NBSP "kr", 1, STR_GAME_OPTIONS_CURRENCY_DKK }, ///< danish krone - { 333, "", 2002, "Pts" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_ESP }, ///< spanish peseta - { 12, "", 2002, "", NBSP "mk", 1, STR_GAME_OPTIONS_CURRENCY_FIM }, ///< finnish markka - { 13, "", 2002, "FF" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_FRF }, ///< french franc - { 681, "", 2002, "", "Dr.", 1, STR_GAME_OPTIONS_CURRENCY_GRD }, ///< greek drachma - { 378, "", CF_NOEURO, "", NBSP "Ft", 1, STR_GAME_OPTIONS_CURRENCY_HUF }, ///< hungarian forint - { 130, "", CF_NOEURO, "", NBSP "Kr", 1, STR_GAME_OPTIONS_CURRENCY_ISK }, ///< icelandic krona - { 3873, "", 2002, "", NBSP "L.", 1, STR_GAME_OPTIONS_CURRENCY_ITL }, ///< italian lira - { 4, "", 2002, "NLG" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_NLG }, ///< dutch gulden - { 12, "", CF_NOEURO, "", NBSP "Kr", 1, STR_GAME_OPTIONS_CURRENCY_NOK }, ///< norwegian krone - { 6, "", CF_NOEURO, "", NBSP u8"z\u0142", 1, STR_GAME_OPTIONS_CURRENCY_PLN }, ///< polish zloty - { 5, "", CF_NOEURO, "", NBSP "Lei", 1, STR_GAME_OPTIONS_CURRENCY_RON }, ///< romanian leu - { 50, "", CF_NOEURO, "", NBSP "p", 1, STR_GAME_OPTIONS_CURRENCY_RUR }, ///< russian rouble - { 479, "", 2007, "", NBSP "SIT", 1, STR_GAME_OPTIONS_CURRENCY_SIT }, ///< slovenian tolar - { 13, "", CF_NOEURO, "", NBSP "Kr", 1, STR_GAME_OPTIONS_CURRENCY_SEK }, ///< swedish krona - { 3, "", CF_NOEURO, "", NBSP "TL", 1, STR_GAME_OPTIONS_CURRENCY_TRY }, ///< turkish lira - { 60, "", 2009, "", NBSP "Sk", 1, STR_GAME_OPTIONS_CURRENCY_SKK }, ///< slovak koruna - { 4, "", CF_NOEURO, "R$" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_BRL }, ///< brazil real - { 31, "", 2011, "", NBSP "EEK", 1, STR_GAME_OPTIONS_CURRENCY_EEK }, ///< estonian krooni - { 4, "", 2015, "", NBSP "Lt", 1, STR_GAME_OPTIONS_CURRENCY_LTL }, ///< lithuanian litas - { 1850, "", CF_NOEURO, u8"\u20a9", "", 0, STR_GAME_OPTIONS_CURRENCY_KRW }, ///< south korean won - { 13, "", CF_NOEURO, "R" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_ZAR }, ///< south african rand - { 1, "", CF_NOEURO, "", "", 2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency (add further languages below) - { 3, "", CF_NOEURO, "", NBSP "GEL", 1, STR_GAME_OPTIONS_CURRENCY_GEL }, ///< Georgian Lari - { 4901, "", CF_NOEURO, "", NBSP "Rls", 1, STR_GAME_OPTIONS_CURRENCY_IRR }, ///< Iranian Rial - { 80, "", CF_NOEURO, "", NBSP "rub", 1, STR_GAME_OPTIONS_CURRENCY_RUB }, ///< New Russian Ruble - { 24, "", CF_NOEURO, "$", "", 0, STR_GAME_OPTIONS_CURRENCY_MXN }, ///< Mexican peso - { 40, "", CF_NOEURO, "NTD" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_NTD }, ///< new taiwan dollar - { 8, "", CF_NOEURO, u8"\u00a5", "", 0, STR_GAME_OPTIONS_CURRENCY_CNY }, ///< chinese renminbi - { 10, "", CF_NOEURO, "HKD" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_HKD }, ///< hong kong dollar - { 90, "", CF_NOEURO, u8"\u20b9", "", 0, STR_GAME_OPTIONS_CURRENCY_INR }, ///< Indian Rupee - { 19, "", CF_NOEURO, "Rp", "", 0, STR_GAME_OPTIONS_CURRENCY_IDR }, ///< Indonesian Rupiah - { 5, "", CF_NOEURO, "RM", "", 0, STR_GAME_OPTIONS_CURRENCY_MYR }, ///< Malaysian Ringgit + { 1, "", CF_NOEURO, u8"\u00a3", "", "GBP", 0, STR_GAME_OPTIONS_CURRENCY_GBP }, ///< british pound + { 2, "", CF_NOEURO, "$", "", "USD", 0, STR_GAME_OPTIONS_CURRENCY_USD }, ///< american dollar + { 2, "", CF_ISEURO, u8"\u20ac", "", "EUR", 0, STR_GAME_OPTIONS_CURRENCY_EUR }, ///< euro + { 220, "", CF_NOEURO, u8"\u00a5", "", "JPY", 0, STR_GAME_OPTIONS_CURRENCY_JPY }, ///< japanese yen + { 27, "", 2002, "", NBSP "S.", "ATS", 1, STR_GAME_OPTIONS_CURRENCY_ATS }, ///< austrian schilling + { 81, "", 2002, "BEF" NBSP, "", "BEF", 0, STR_GAME_OPTIONS_CURRENCY_BEF }, ///< belgian franc + { 2, "", CF_NOEURO, "CHF" NBSP, "", "CHF", 0, STR_GAME_OPTIONS_CURRENCY_CHF }, ///< swiss franc + { 41, "", CF_NOEURO, "", NBSP u8"K\u010d", "CZK", 1, STR_GAME_OPTIONS_CURRENCY_CZK }, ///< czech koruna + { 4, "", 2002, "DM" NBSP, "", "DEM", 0, STR_GAME_OPTIONS_CURRENCY_DEM }, ///< deutsche mark + { 11, "", CF_NOEURO, "", NBSP "kr", "DKK", 1, STR_GAME_OPTIONS_CURRENCY_DKK }, ///< danish krone + { 333, "", 2002, "Pts" NBSP, "", "ESP", 0, STR_GAME_OPTIONS_CURRENCY_ESP }, ///< spanish peseta + { 12, "", 2002, "", NBSP "mk", "FIM", 1, STR_GAME_OPTIONS_CURRENCY_FIM }, ///< finnish markka + { 13, "", 2002, "FF" NBSP, "", "FRF", 0, STR_GAME_OPTIONS_CURRENCY_FRF }, ///< french franc + { 681, "", 2002, "", "Dr.", "GRD", 1, STR_GAME_OPTIONS_CURRENCY_GRD }, ///< greek drachma + { 378, "", CF_NOEURO, "", NBSP "Ft", "HUF", 1, STR_GAME_OPTIONS_CURRENCY_HUF }, ///< hungarian forint + { 130, "", CF_NOEURO, "", NBSP "Kr", "ISK", 1, STR_GAME_OPTIONS_CURRENCY_ISK }, ///< icelandic krona + { 3873, "", 2002, "", NBSP "L.", "ITL", 1, STR_GAME_OPTIONS_CURRENCY_ITL }, ///< italian lira + { 4, "", 2002, "NLG" NBSP, "", "NLG", 0, STR_GAME_OPTIONS_CURRENCY_NLG }, ///< dutch gulden + { 12, "", CF_NOEURO, "", NBSP "Kr", "NOK", 1, STR_GAME_OPTIONS_CURRENCY_NOK }, ///< norwegian krone + { 6, "", CF_NOEURO, "", NBSP u8"z\u0142", "PLN", 1, STR_GAME_OPTIONS_CURRENCY_PLN }, ///< polish zloty + { 5, "", CF_NOEURO, "", NBSP "Lei", "RON", 1, STR_GAME_OPTIONS_CURRENCY_RON }, ///< romanian leu + { 50, "", CF_NOEURO, "", NBSP "p", "RUR", 1, STR_GAME_OPTIONS_CURRENCY_RUR }, ///< russian rouble + { 479, "", 2007, "", NBSP "SIT", "SIT", 1, STR_GAME_OPTIONS_CURRENCY_SIT }, ///< slovenian tolar + { 13, "", CF_NOEURO, "", NBSP "Kr", "SEK", 1, STR_GAME_OPTIONS_CURRENCY_SEK }, ///< swedish krona + { 3, "", CF_NOEURO, "", NBSP "TL", "TRY", 1, STR_GAME_OPTIONS_CURRENCY_TRY }, ///< turkish lira + { 60, "", 2009, "", NBSP "Sk", "SKK", 1, STR_GAME_OPTIONS_CURRENCY_SKK }, ///< slovak koruna + { 4, "", CF_NOEURO, "R$" NBSP, "", "BRL", 0, STR_GAME_OPTIONS_CURRENCY_BRL }, ///< brazil real + { 31, "", 2011, "", NBSP "EEK", "EEK", 1, STR_GAME_OPTIONS_CURRENCY_EEK }, ///< estonian krooni + { 4, "", 2015, "", NBSP "Lt", "LTL", 1, STR_GAME_OPTIONS_CURRENCY_LTL }, ///< lithuanian litas + { 1850, "", CF_NOEURO, u8"\u20a9", "", "KRW", 0, STR_GAME_OPTIONS_CURRENCY_KRW }, ///< south korean won + { 13, "", CF_NOEURO, "R" NBSP, "", "ZAR", 0, STR_GAME_OPTIONS_CURRENCY_ZAR }, ///< south african rand + { 1, "", CF_NOEURO, "", "", "", 2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency (add further languages below) + { 3, "", CF_NOEURO, "", NBSP "GEL", "GEL", 1, STR_GAME_OPTIONS_CURRENCY_GEL }, ///< Georgian Lari + { 4901, "", CF_NOEURO, "", NBSP "Rls", "IRR", 1, STR_GAME_OPTIONS_CURRENCY_IRR }, ///< Iranian Rial + { 80, "", CF_NOEURO, "", NBSP "rub", "RUB", 1, STR_GAME_OPTIONS_CURRENCY_RUB }, ///< New Russian Ruble + { 24, "", CF_NOEURO, "$", "", "MXN", 0, STR_GAME_OPTIONS_CURRENCY_MXN }, ///< Mexican peso + { 40, "", CF_NOEURO, "NTD" NBSP, "", "NTD", 0, STR_GAME_OPTIONS_CURRENCY_NTD }, ///< new taiwan dollar + { 8, "", CF_NOEURO, u8"\u00a5", "", "CNY", 0, STR_GAME_OPTIONS_CURRENCY_CNY }, ///< chinese renminbi + { 10, "", CF_NOEURO, "HKD" NBSP, "", "HKD", 0, STR_GAME_OPTIONS_CURRENCY_HKD }, ///< hong kong dollar + { 90, "", CF_NOEURO, u8"\u20b9", "", "INR", 0, STR_GAME_OPTIONS_CURRENCY_INR }, ///< Indian Rupee + { 19, "", CF_NOEURO, "Rp", "", "IDR", 0, STR_GAME_OPTIONS_CURRENCY_IDR }, ///< Indonesian Rupiah + { 5, "", CF_NOEURO, "RM", "", "MYR", 0, STR_GAME_OPTIONS_CURRENCY_MYR }, ///< Malaysian Ringgit }; /** Array of currencies used by the system */ @@ -162,23 +162,3 @@ void ResetCurrencies(bool preserve_custom) _currency_specs[i] = origin_currency_specs[i]; } } - -/** - * Build a list of currency names StringIDs to use in a dropdown list - * @return Pointer to a (static) array of StringIDs - */ -StringID *BuildCurrencyDropdown() -{ - /* Allow room for all currencies, plus a terminator entry */ - static StringID names[CURRENCY_END + 1]; - uint i; - - /* Add each name */ - for (i = 0; i < CURRENCY_END; i++) { - names[i] = _currency_specs[i].name; - } - /* Terminate the list */ - names[i] = INVALID_STRING_ID; - - return names; -} diff --git a/src/currency.h b/src/currency.h index 98ccbb2fca..098f3caca2 100644 --- a/src/currency.h +++ b/src/currency.h @@ -75,6 +75,7 @@ struct CurrencySpec { TimerGameCalendar::Year to_euro; ///< Year of switching to the Euro. May also be #CF_NOEURO or #CF_ISEURO. std::string prefix; ///< Prefix to apply when formatting money in this currency. std::string suffix; ///< Suffix to apply when formatting money in this currency. + std::string code; ///< 3 letter untranslated code to identify the currency. /** * The currency symbol is represented by two possible values, prefix and suffix * Usage of one or the other is determined by #symbol_pos. @@ -89,8 +90,8 @@ struct CurrencySpec { CurrencySpec() = default; - CurrencySpec(uint16 rate, const char *separator, TimerGameCalendar::Year to_euro, const char *prefix, const char *suffix, byte symbol_pos, StringID name) : - rate(rate), separator(separator), to_euro(to_euro), prefix(prefix), suffix(suffix), symbol_pos(symbol_pos), name(name) + CurrencySpec(uint16 rate, const char *separator, TimerGameCalendar::Year to_euro, const char *prefix, const char *suffix, const char *code, byte symbol_pos, StringID name) : + rate(rate), separator(separator), to_euro(to_euro), prefix(prefix), suffix(suffix), code(code), symbol_pos(symbol_pos), name(name) { } }; @@ -103,7 +104,6 @@ extern CurrencySpec _currency_specs[CURRENCY_END]; uint64 GetMaskOfAllowedCurrencies(); void ResetCurrencies(bool preserve_custom = true); -StringID *BuildCurrencyDropdown(); byte GetNewgrfCurrencyIdConverted(byte grfcurr_id); #endif /* CURRENCY_H */ diff --git a/src/lang/english.txt b/src/lang/english.txt index 90668a13cf..8ef9cca353 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -951,49 +951,51 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency units STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({RAW_STRING}) + ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :British Pound (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :American Dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spanish Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :French Franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polish Złoty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russian Rubles (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :British Pound +STR_GAME_OPTIONS_CURRENCY_USD :American Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc +STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc +STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark +STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone +STR_GAME_OPTIONS_CURRENCY_ESP :Spanish Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka +STR_GAME_OPTIONS_CURRENCY_FRF :French Franc +STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma +STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona +STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira +STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder +STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone +STR_GAME_OPTIONS_CURRENCY_PLN :Polish Złoty +STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russian Rubles +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona +STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real +STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni +STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas +STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won +STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Custom... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :New Russian Ruble (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexican Peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial +STR_GAME_OPTIONS_CURRENCY_RUB :New Russian Ruble +STR_GAME_OPTIONS_CURRENCY_MXN :Mexican Peso +STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar +STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 13511b72ae..d17999e2ff 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -2710,6 +2710,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By if ((newone != STR_UNDEFINED) && (curidx < CURRENCY_END)) { _currency_specs[curidx].name = newone; + _currency_specs[curidx].code.clear(); } break; } diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 06fa9d741b..48b5e52518 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -216,13 +216,19 @@ struct GameOptionsWindow : Window { switch (widget) { case WID_GO_CURRENCY_DROPDOWN: { // Setup currencies dropdown *selected_index = this->opt->locale.currency; - StringID *items = BuildCurrencyDropdown(); uint64 disabled = _game_mode == GM_MENU ? 0LL : ~GetMaskOfAllowedCurrencies(); /* Add non-custom currencies; sorted naturally */ - for (uint i = 0; i < CURRENCY_END; items++, i++) { + for (const CurrencySpec ¤cy : _currency_specs) { + int i = ¤cy - _currency_specs; if (i == CURRENCY_CUSTOM) continue; - list.emplace_back(new DropDownListStringItem(*items, i, HasBit(disabled, i))); + if (currency.code.empty()) { + list.emplace_back(new DropDownListStringItem(currency.name, i, HasBit(disabled, i))); + } else { + SetDParam(0, currency.name); + SetDParamStr(1, currency.code); + list.emplace_back(new DropDownListStringItem(STR_GAME_OPTIONS_CURRENCY_CODE, i, HasBit(disabled, i))); + } } std::sort(list.begin(), list.end(), DropDownListStringItem::NatSortFunc); @@ -303,7 +309,17 @@ struct GameOptionsWindow : Window { void SetStringParameters(int widget) const override { switch (widget) { - case WID_GO_CURRENCY_DROPDOWN: SetDParam(0, _currency_specs[this->opt->locale.currency].name); break; + case WID_GO_CURRENCY_DROPDOWN: { + const CurrencySpec ¤cy = _currency_specs[this->opt->locale.currency]; + if (currency.code.empty()) { + SetDParam(0, currency.name); + } else { + SetDParam(0, STR_GAME_OPTIONS_CURRENCY_CODE); + SetDParam(1, currency.name); + SetDParamStr(2, currency.code); + } + break; + } case WID_GO_AUTOSAVE_DROPDOWN: SetDParam(0, _autosave_dropdown[_settings_client.gui.autosave]); break; case WID_GO_LANG_DROPDOWN: SetDParamStr(0, _current_language->own_name); break; case WID_GO_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->name); break; @@ -763,7 +779,7 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_STRING, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_STRING2, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GO_SURVEY_SEL), From 6f36f1d9126a7a71b2db964b48144d51e9981fe8 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Fri, 23 Jun 2023 00:11:54 +0100 Subject: [PATCH 112/123] Change: Remove currency code/symbol suffix from language files. --- src/lang/afrikaans.txt | 76 ++++++++++++++-------------- src/lang/arabic_egypt.txt | 70 +++++++++++++------------- src/lang/basque.txt | 66 ++++++++++++------------- src/lang/belarusian.txt | 76 ++++++++++++++-------------- src/lang/brazilian_portuguese.txt | 82 +++++++++++++++---------------- src/lang/bulgarian.txt | 68 ++++++++++++------------- src/lang/catalan.txt | 82 +++++++++++++++---------------- src/lang/croatian.txt | 78 ++++++++++++++--------------- src/lang/czech.txt | 82 +++++++++++++++---------------- src/lang/danish.txt | 82 +++++++++++++++---------------- src/lang/dutch.txt | 82 +++++++++++++++---------------- src/lang/english_AU.txt | 82 +++++++++++++++---------------- src/lang/english_US.txt | 82 +++++++++++++++---------------- src/lang/esperanto.txt | 82 +++++++++++++++---------------- src/lang/estonian.txt | 82 +++++++++++++++---------------- src/lang/faroese.txt | 62 +++++++++++------------ src/lang/finnish.txt | 82 +++++++++++++++---------------- src/lang/french.txt | 82 +++++++++++++++---------------- src/lang/frisian.txt | 82 +++++++++++++++---------------- src/lang/gaelic.txt | 66 ++++++++++++------------- src/lang/galician.txt | 82 +++++++++++++++---------------- src/lang/german.txt | 82 +++++++++++++++---------------- src/lang/greek.txt | 82 +++++++++++++++---------------- src/lang/hebrew.txt | 70 +++++++++++++------------- src/lang/hungarian.txt | 82 +++++++++++++++---------------- src/lang/icelandic.txt | 64 ++++++++++++------------ src/lang/indonesian.txt | 82 +++++++++++++++---------------- src/lang/irish.txt | 82 +++++++++++++++---------------- src/lang/italian.txt | 82 +++++++++++++++---------------- src/lang/japanese.txt | 82 +++++++++++++++---------------- src/lang/korean.txt | 82 +++++++++++++++---------------- src/lang/latin.txt | 68 ++++++++++++------------- src/lang/latvian.txt | 82 +++++++++++++++---------------- src/lang/lithuanian.txt | 82 +++++++++++++++---------------- src/lang/luxembourgish.txt | 82 +++++++++++++++---------------- src/lang/malay.txt | 64 ++++++++++++------------ src/lang/marathi.txt | 50 +++++++++---------- src/lang/norwegian_bokmal.txt | 82 +++++++++++++++---------------- src/lang/norwegian_nynorsk.txt | 66 ++++++++++++------------- src/lang/persian.txt | 66 ++++++++++++------------- src/lang/polish.txt | 82 +++++++++++++++---------------- src/lang/portuguese.txt | 82 +++++++++++++++---------------- src/lang/romanian.txt | 82 +++++++++++++++---------------- src/lang/russian.txt | 82 +++++++++++++++---------------- src/lang/serbian.txt | 82 +++++++++++++++---------------- src/lang/simplified_chinese.txt | 82 +++++++++++++++---------------- src/lang/slovak.txt | 82 +++++++++++++++---------------- src/lang/slovenian.txt | 68 ++++++++++++------------- src/lang/spanish.txt | 80 +++++++++++++++--------------- src/lang/spanish_MX.txt | 82 +++++++++++++++---------------- src/lang/swedish.txt | 82 +++++++++++++++---------------- src/lang/tamil.txt | 82 +++++++++++++++---------------- src/lang/thai.txt | 68 ++++++++++++------------- src/lang/traditional_chinese.txt | 82 +++++++++++++++---------------- src/lang/turkish.txt | 82 +++++++++++++++---------------- src/lang/ukrainian.txt | 82 +++++++++++++++---------------- src/lang/urdu.txt | 60 +++++++++++----------- src/lang/vietnamese.txt | 82 +++++++++++++++---------------- src/lang/welsh.txt | 70 +++++++++++++------------- 59 files changed, 2277 insertions(+), 2277 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index f9b67870c8..910a58d214 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -909,45 +909,45 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Geldeenh STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Geld eendheid keuse ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Britse Pond (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Amerikaanse Dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japannese Jen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Oostenrykse Schilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgiese Frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Switserse Frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tsjeggiese Kroon (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Duitse Mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Deense Krone (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spaanse Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finse Markka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franse Frank (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Griekse Dragma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarse Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Yslandse Kroon (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italiaanse Lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Nederlandse Gulde (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Noorweegse Kroon (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Poolse Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Roemeense Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russiese Roebel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Sloweense Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Sweedse Kroon (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkse Lire (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakse Kroon (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliaanse Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estniese Kroon (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litause Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Suid Koreanse Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Suid Afrikaanse Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Britse Pond +STR_GAME_OPTIONS_CURRENCY_USD :Amerikaanse Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japannese Jen +STR_GAME_OPTIONS_CURRENCY_ATS :Oostenrykse Schilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgiese Frank +STR_GAME_OPTIONS_CURRENCY_CHF :Switserse Frank +STR_GAME_OPTIONS_CURRENCY_CZK :Tsjeggiese Kroon +STR_GAME_OPTIONS_CURRENCY_DEM :Duitse Mark +STR_GAME_OPTIONS_CURRENCY_DKK :Deense Krone +STR_GAME_OPTIONS_CURRENCY_ESP :Spaanse Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finse Markka +STR_GAME_OPTIONS_CURRENCY_FRF :Franse Frank +STR_GAME_OPTIONS_CURRENCY_GRD :Griekse Dragma +STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarse Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Yslandse Kroon +STR_GAME_OPTIONS_CURRENCY_ITL :Italiaanse Lire +STR_GAME_OPTIONS_CURRENCY_NLG :Nederlandse Gulde +STR_GAME_OPTIONS_CURRENCY_NOK :Noorweegse Kroon +STR_GAME_OPTIONS_CURRENCY_PLN :Poolse Zloty +STR_GAME_OPTIONS_CURRENCY_RON :Roemeense Leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russiese Roebel +STR_GAME_OPTIONS_CURRENCY_SIT :Sloweense Tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Sweedse Kroon +STR_GAME_OPTIONS_CURRENCY_TRY :Turkse Lire +STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakse Kroon +STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliaanse Real +STR_GAME_OPTIONS_CURRENCY_EEK :Estniese Kroon +STR_GAME_OPTIONS_CURRENCY_LTL :Litause Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Suid Koreanse Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Suid Afrikaanse Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Pasmaak... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgiaanse Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iraanse Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nuwe Russiese Ruble (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexikaanse peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nuwe Taiwan dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgiaanse Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iraanse Rial +STR_GAME_OPTIONS_CURRENCY_RUB :Nuwe Russiese Ruble +STR_GAME_OPTIONS_CURRENCY_MXN :Mexikaanse peso +STR_GAME_OPTIONS_CURRENCY_NTD :Nuwe Taiwan dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Outostoor STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Kies interval tussen outomatiese store diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 91bab02bd5..20401ca326 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -903,42 +903,42 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}وحدة STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}اختيار وحدة العملة ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :جنية(£) -STR_GAME_OPTIONS_CURRENCY_USD :دولار ($) -STR_GAME_OPTIONS_CURRENCY_EUR :يورو (€) -STR_GAME_OPTIONS_CURRENCY_JPY :ين (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :شلنق استرالي (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :فرنك بلجيكي (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :فرنك سويسري (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :كرونا تشيكية (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :مارك الماني (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :كرونا دنمركي -STR_GAME_OPTIONS_CURRENCY_ESP :بيستا (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :ماركا فنلندي(FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :فرنك (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :دراخما يونانية (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :فورنت هنغاري (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :كرونا ايسلاندية (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :ليرة ايطالية (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :غلدر هولندي (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :كرونا نرويجية (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :زلوتي بولندي (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :لور يوناني (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :روبل روسي (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :تولار سوفاني (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :كرونا سويدية (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :ليرة تركية (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :كرونا سلوفاكية (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :ريال برازيلي (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :كرونا استونية (EEK) -STR_GAME_OPTIONS_CURRENCY_KRW :وون كوريا الجنوبية (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :راند جنوب أفريقيا (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :جنية +STR_GAME_OPTIONS_CURRENCY_USD :دولار +STR_GAME_OPTIONS_CURRENCY_EUR :يورو +STR_GAME_OPTIONS_CURRENCY_JPY :ين +STR_GAME_OPTIONS_CURRENCY_ATS :شلنق استرالي +STR_GAME_OPTIONS_CURRENCY_BEF :فرنك بلجيكي +STR_GAME_OPTIONS_CURRENCY_CHF :فرنك سويسري +STR_GAME_OPTIONS_CURRENCY_CZK :كرونا تشيكية +STR_GAME_OPTIONS_CURRENCY_DEM :مارك الماني +STR_GAME_OPTIONS_CURRENCY_DKK :كرونا د +STR_GAME_OPTIONS_CURRENCY_ESP :بيستا +STR_GAME_OPTIONS_CURRENCY_FIM :ماركا فنلندي +STR_GAME_OPTIONS_CURRENCY_FRF :فرنك +STR_GAME_OPTIONS_CURRENCY_GRD :دراخما يونانية +STR_GAME_OPTIONS_CURRENCY_HUF :فورنت هنغاري +STR_GAME_OPTIONS_CURRENCY_ISK :كرونا ايسلاندية +STR_GAME_OPTIONS_CURRENCY_ITL :ليرة ايطالية +STR_GAME_OPTIONS_CURRENCY_NLG :غلدر هولندي +STR_GAME_OPTIONS_CURRENCY_NOK :كرونا نرويجية +STR_GAME_OPTIONS_CURRENCY_PLN :زلوتي بولندي +STR_GAME_OPTIONS_CURRENCY_RON :لور يوناني +STR_GAME_OPTIONS_CURRENCY_RUR :روبل روسي +STR_GAME_OPTIONS_CURRENCY_SIT :تولار سوفاني +STR_GAME_OPTIONS_CURRENCY_SEK :كرونا سويدية +STR_GAME_OPTIONS_CURRENCY_TRY :ليرة تركية +STR_GAME_OPTIONS_CURRENCY_SKK :كرونا سلوفاكية +STR_GAME_OPTIONS_CURRENCY_BRL :ريال برازيلي +STR_GAME_OPTIONS_CURRENCY_EEK :كرونا استونية +STR_GAME_OPTIONS_CURRENCY_KRW :وون كوريا الجنوبية +STR_GAME_OPTIONS_CURRENCY_ZAR :راند جنوب أفريقيا STR_GAME_OPTIONS_CURRENCY_CUSTOM :مخصص ... -STR_GAME_OPTIONS_CURRENCY_GEL :(GEL) لاري جورجي -STR_GAME_OPTIONS_CURRENCY_NTD :الدولار التايواني الجديد (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :(CNY) الرنمينبي الصيني -STR_GAME_OPTIONS_CURRENCY_HKD :(HKD) دولار هونج كونج -STR_GAME_OPTIONS_CURRENCY_INR :الروبية الهندية (INR) +STR_GAME_OPTIONS_CURRENCY_GEL :لاري جورجي +STR_GAME_OPTIONS_CURRENCY_NTD :الدولار التايواني الجديد +STR_GAME_OPTIONS_CURRENCY_CNY :الرنمينبي الصيني +STR_GAME_OPTIONS_CURRENCY_HKD :دولار هونج كونج +STR_GAME_OPTIONS_CURRENCY_INR :الروبية الهندية STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}حفظ آلي STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}اختار مدة الحفظ الآلي diff --git a/src/lang/basque.txt b/src/lang/basque.txt index ac83fd63ab..2cc5b181eb 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -885,40 +885,40 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Diru uni STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Diru unitatearen aukeraketa ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Libra (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dolar Amerikarrak (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euroa (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yena (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Txelin Austriarra (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franko Belgikarra (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Suitzar Frankoa (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Koroa Txekoa (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marko Alemaniarra (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danierar Koroa (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Pezeta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marko Finlandiarra (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Frankoa (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Grekoa (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florin Hungariarra (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Koro Islandiarra (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italiarra (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Herbeheretako Florina (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norvegiar Koroa (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Poloniarra (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Errumaniarra (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Errusiar Rubloa (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Esloveniarra (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Suediar Koroa (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turkiarra (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Eslovakiar Koroa (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Erreal Brasildarra (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estoniar Koroa (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lituaniako Litas-ak (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Hego koreako Won-a (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Hego Afrikako Rand-a (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Libra +STR_GAME_OPTIONS_CURRENCY_USD :Dolar Amerikarrak +STR_GAME_OPTIONS_CURRENCY_EUR :Euroa +STR_GAME_OPTIONS_CURRENCY_JPY :Yena +STR_GAME_OPTIONS_CURRENCY_ATS :Txelin Austriarra +STR_GAME_OPTIONS_CURRENCY_BEF :Franko Belgikarra +STR_GAME_OPTIONS_CURRENCY_CHF :Suitzar Frankoa +STR_GAME_OPTIONS_CURRENCY_CZK :Koroa Txekoa +STR_GAME_OPTIONS_CURRENCY_DEM :Marko Alemaniarra +STR_GAME_OPTIONS_CURRENCY_DKK :Danierar Koroa +STR_GAME_OPTIONS_CURRENCY_ESP :Pezeta +STR_GAME_OPTIONS_CURRENCY_FIM :Marko Finlandiarra +STR_GAME_OPTIONS_CURRENCY_FRF :Frankoa +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Grekoa +STR_GAME_OPTIONS_CURRENCY_HUF :Florin Hungariarra +STR_GAME_OPTIONS_CURRENCY_ISK :Koro Islandiarra +STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italiarra +STR_GAME_OPTIONS_CURRENCY_NLG :Herbeheretako Florina +STR_GAME_OPTIONS_CURRENCY_NOK :Norvegiar Koroa +STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Poloniarra +STR_GAME_OPTIONS_CURRENCY_RON :Leu Errumaniarra +STR_GAME_OPTIONS_CURRENCY_RUR :Errusiar Rubloa +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Esloveniarra +STR_GAME_OPTIONS_CURRENCY_SEK :Suediar Koroa +STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turkiarra +STR_GAME_OPTIONS_CURRENCY_SKK :Eslovakiar Koroa +STR_GAME_OPTIONS_CURRENCY_BRL :Erreal Brasildarra +STR_GAME_OPTIONS_CURRENCY_EEK :Estoniar Koroa +STR_GAME_OPTIONS_CURRENCY_LTL :Lituaniako Litas-ak +STR_GAME_OPTIONS_CURRENCY_KRW :Hego koreako Won-a +STR_GAME_OPTIONS_CURRENCY_ZAR :Hego Afrikako Rand-a STR_GAME_OPTIONS_CURRENCY_CUSTOM :Pertsonalizatua... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiarra (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniarra (IRR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiarra +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniarra STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Auto-gordea STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Aukeratu jokoa automatikoki gordetzeko denbora diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 60b25eacc5..05dc0a51c1 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -1218,45 +1218,45 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Валю STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Выбар валюты ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Брытанскі фунт (£) -STR_GAME_OPTIONS_CURRENCY_USD :Даляр ЗША ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Эўра (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Японская ена (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Аўстралійскі шылінг (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Бэльґійскі франк (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Швайцарскі франк (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Чэская крона (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Нямецкая марка (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Дацкая крона (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Гішпанская пэсэта (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Фінская марка (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Францускі франк (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Грэцкая драхма (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Вугорскі форынт (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Ісьляндзкая крона (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Італьянская ліра (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Нідэрляндзкі гульдэн (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Нарвэская крона (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Польскі злоты (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Румынскі лей (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Расейскі рубель (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Славенскі толар (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Швэдзкая крона (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Турэцкая ліра (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Славацкая каруна (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Бразыльскі рэал (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Эстонская крона (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Летувiскi лiт (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Паўднёвакарэйская вона (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Паўднёваафрыканскі рэнд (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Брытанскі фунт +STR_GAME_OPTIONS_CURRENCY_USD :Даляр ЗША +STR_GAME_OPTIONS_CURRENCY_EUR :Эўра +STR_GAME_OPTIONS_CURRENCY_JPY :Японская ена +STR_GAME_OPTIONS_CURRENCY_ATS :Аўстралійскі шылінг +STR_GAME_OPTIONS_CURRENCY_BEF :Бэльґійскі франк +STR_GAME_OPTIONS_CURRENCY_CHF :Швайцарскі франк +STR_GAME_OPTIONS_CURRENCY_CZK :Чэская крона +STR_GAME_OPTIONS_CURRENCY_DEM :Нямецкая марка +STR_GAME_OPTIONS_CURRENCY_DKK :Дацкая крона +STR_GAME_OPTIONS_CURRENCY_ESP :Гішпанская пэсэта +STR_GAME_OPTIONS_CURRENCY_FIM :Фінская марка +STR_GAME_OPTIONS_CURRENCY_FRF :Францускі франк +STR_GAME_OPTIONS_CURRENCY_GRD :Грэцкая драхма +STR_GAME_OPTIONS_CURRENCY_HUF :Вугорскі форынт +STR_GAME_OPTIONS_CURRENCY_ISK :Ісьляндзкая крона +STR_GAME_OPTIONS_CURRENCY_ITL :Італьянская ліра +STR_GAME_OPTIONS_CURRENCY_NLG :Нідэрляндзкі гульдэн +STR_GAME_OPTIONS_CURRENCY_NOK :Нарвэская крона +STR_GAME_OPTIONS_CURRENCY_PLN :Польскі злоты +STR_GAME_OPTIONS_CURRENCY_RON :Румынскі лей +STR_GAME_OPTIONS_CURRENCY_RUR :Расейскі рубель +STR_GAME_OPTIONS_CURRENCY_SIT :Славенскі толар +STR_GAME_OPTIONS_CURRENCY_SEK :Швэдзкая крона +STR_GAME_OPTIONS_CURRENCY_TRY :Турэцкая ліра +STR_GAME_OPTIONS_CURRENCY_SKK :Славацкая каруна +STR_GAME_OPTIONS_CURRENCY_BRL :Бразыльскі рэал +STR_GAME_OPTIONS_CURRENCY_EEK :Эстонская крона +STR_GAME_OPTIONS_CURRENCY_LTL :Летувiскi лiт +STR_GAME_OPTIONS_CURRENCY_KRW :Паўднёвакарэйская вона +STR_GAME_OPTIONS_CURRENCY_ZAR :Паўднёваафрыканскі рэнд STR_GAME_OPTIONS_CURRENCY_CUSTOM :Уласная... -STR_GAME_OPTIONS_CURRENCY_GEL :Грузінскі лары (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Іранскі рыал (IRR) -STR_GAME_OPTIONS_CURRENCY_MXN :Мексіканскі песа (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Новы тайваньскі даляр (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Кітайскі юань (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Ганконскі даляр (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Індыйская рупія (INR) +STR_GAME_OPTIONS_CURRENCY_GEL :Грузінскі лары +STR_GAME_OPTIONS_CURRENCY_IRR :Іранскі рыал +STR_GAME_OPTIONS_CURRENCY_MXN :Мексіканскі песа +STR_GAME_OPTIONS_CURRENCY_NTD :Новы тайваньскі даляр +STR_GAME_OPTIONS_CURRENCY_CNY :Кітайскі юань +STR_GAME_OPTIONS_CURRENCY_HKD :Ганконскі даляр +STR_GAME_OPTIONS_CURRENCY_INR :Індыйская рупія STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Аўтазахаваньне STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Інтэрвал паміж аўтаматычнымі захаваньнямі гульні diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index ff545c60bd..ee85590ee1 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -953,48 +953,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Seleção de unidades monetárias ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Libras Britânicas (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dólares Norte Americanos (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Iene Japonês (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Xelim Austríaco (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franco Belga (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franco Suíço (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Coroa Checa (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marco Alemão (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Coroa Dinamarquesa (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Espanhola (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marco Finlandês (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franco Francês (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Dracma Grego (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint Húngaro (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Coroa Islandesa (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italiana (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Guilda Holandesa (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Coroa Norueguesa (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Polonês (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Lei Romeno (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rublo Russo (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Eslovênio (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Coroa Sueca (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turca (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Coroa Eslovaca (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real Brasileiro (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Coroa Estoniana (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lituano (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul-Coreano (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul-Africano (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Libras Britânicas +STR_GAME_OPTIONS_CURRENCY_USD :Dólares Norte Americanos +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Iene Japonês +STR_GAME_OPTIONS_CURRENCY_ATS :Xelim Austríaco +STR_GAME_OPTIONS_CURRENCY_BEF :Franco Belga +STR_GAME_OPTIONS_CURRENCY_CHF :Franco Suíço +STR_GAME_OPTIONS_CURRENCY_CZK :Coroa Checa +STR_GAME_OPTIONS_CURRENCY_DEM :Marco Alemão +STR_GAME_OPTIONS_CURRENCY_DKK :Coroa Dinamarquesa +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Espanhola +STR_GAME_OPTIONS_CURRENCY_FIM :Marco Finlandês +STR_GAME_OPTIONS_CURRENCY_FRF :Franco Francês +STR_GAME_OPTIONS_CURRENCY_GRD :Dracma Grego +STR_GAME_OPTIONS_CURRENCY_HUF :Forint Húngaro +STR_GAME_OPTIONS_CURRENCY_ISK :Coroa Islandesa +STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italiana +STR_GAME_OPTIONS_CURRENCY_NLG :Guilda Holandesa +STR_GAME_OPTIONS_CURRENCY_NOK :Coroa Norueguesa +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Polonês +STR_GAME_OPTIONS_CURRENCY_RON :Lei Romeno +STR_GAME_OPTIONS_CURRENCY_RUR :Rublo Russo +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Eslovênio +STR_GAME_OPTIONS_CURRENCY_SEK :Coroa Sueca +STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turca +STR_GAME_OPTIONS_CURRENCY_SKK :Coroa Eslovaca +STR_GAME_OPTIONS_CURRENCY_BRL :Real Brasileiro +STR_GAME_OPTIONS_CURRENCY_EEK :Coroa Estoniana +STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lituano +STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul-Coreano +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul-Africano STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizado... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Georgia (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Novo Rublo Russo (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexicano (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Novo dólar de Taiwan (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chinês (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rúpia Indiana (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonésia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaio (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Georgia +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano +STR_GAME_OPTIONS_CURRENCY_RUB :Novo Rublo Russo +STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexicano +STR_GAME_OPTIONS_CURRENCY_NTD :Novo dólar de Taiwan +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chinês +STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong +STR_GAME_OPTIONS_CURRENCY_INR :Rúpia Indiana +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonésia +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaio STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvar automaticamente STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecionar o intervalo entre jogos salvos automaticos diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 299448e2d5..cc9aaf698d 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -891,42 +891,42 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Пари STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Избор на парична единица ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Британска лира (£) -STR_GAME_OPTIONS_CURRENCY_USD :Американски долар ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Евро (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Японска йена (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :австрийски шилинг (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :белгийски франк (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :швейцарски франк (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :чешка крона (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :германска марка (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :датска крона (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Испанска песета (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :финландска марка (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Френски франк (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :гръцка драхма (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :унгарски форинт (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :исландска крона (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :италианска лира (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :холандски гулден (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :норвежка крона (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Полска злота (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :румънска лея (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :руска рубла (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :словенски толар (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :шведска крона (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :турска лира (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :словашка крона (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :бразилски реал (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Естонски крони (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Литовски Литас (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Южнокорейски Вон (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Южноафрикански Ранд (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Британска лира +STR_GAME_OPTIONS_CURRENCY_USD :Американски долар +STR_GAME_OPTIONS_CURRENCY_EUR :Евро +STR_GAME_OPTIONS_CURRENCY_JPY :Японска йена +STR_GAME_OPTIONS_CURRENCY_ATS :австрийски шилинг +STR_GAME_OPTIONS_CURRENCY_BEF :белгийски франк +STR_GAME_OPTIONS_CURRENCY_CHF :швейцарски франк +STR_GAME_OPTIONS_CURRENCY_CZK :чешка крона +STR_GAME_OPTIONS_CURRENCY_DEM :германска марка +STR_GAME_OPTIONS_CURRENCY_DKK :датска крона +STR_GAME_OPTIONS_CURRENCY_ESP :Испанска песета +STR_GAME_OPTIONS_CURRENCY_FIM :финландска марка +STR_GAME_OPTIONS_CURRENCY_FRF :Френски франк +STR_GAME_OPTIONS_CURRENCY_GRD :гръцка драхма +STR_GAME_OPTIONS_CURRENCY_HUF :унгарски форинт +STR_GAME_OPTIONS_CURRENCY_ISK :исландска крона +STR_GAME_OPTIONS_CURRENCY_ITL :италианска лира +STR_GAME_OPTIONS_CURRENCY_NLG :холандски гулден +STR_GAME_OPTIONS_CURRENCY_NOK :норвежка крона +STR_GAME_OPTIONS_CURRENCY_PLN :Полска злота +STR_GAME_OPTIONS_CURRENCY_RON :румънска лея +STR_GAME_OPTIONS_CURRENCY_RUR :руска рубла +STR_GAME_OPTIONS_CURRENCY_SIT :словенски толар +STR_GAME_OPTIONS_CURRENCY_SEK :шведска крона +STR_GAME_OPTIONS_CURRENCY_TRY :турска лира +STR_GAME_OPTIONS_CURRENCY_SKK :словашка крона +STR_GAME_OPTIONS_CURRENCY_BRL :бразилски реал +STR_GAME_OPTIONS_CURRENCY_EEK :Естонски крони +STR_GAME_OPTIONS_CURRENCY_LTL :Литовски Литас +STR_GAME_OPTIONS_CURRENCY_KRW :Южнокорейски Вон +STR_GAME_OPTIONS_CURRENCY_ZAR :Южноафрикански Ранд STR_GAME_OPTIONS_CURRENCY_CUSTOM :друга... -STR_GAME_OPTIONS_CURRENCY_GEL :Грузинско лари (ГЕЛ) -STR_GAME_OPTIONS_CURRENCY_IRR :Ирански Риал (ИРР) +STR_GAME_OPTIONS_CURRENCY_GEL :Грузинско лари +STR_GAME_OPTIONS_CURRENCY_IRR :Ирански Риал STR_GAME_OPTIONS_CURRENCY_NTD :Нов тайвански долар -STR_GAME_OPTIONS_CURRENCY_HKD :Хонгконгски долар (HKD) +STR_GAME_OPTIONS_CURRENCY_HKD :Хонгконгски долар STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автозаписване STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Интервала между две автозаписваня diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index f292ae36c0..e05627599d 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -953,48 +953,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Moneda STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecció de la unitat monetària ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Lliura esterlina (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dòlar americà (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Ien japonès (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Xíling austríac (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franc belga (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franc suís (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Corona txeca (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marc alemany (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Corona danesa (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Pesseta espanyola (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marc finlandès (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc francès (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Dracma grega (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florí hongarès (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Corona islandesa (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Florí neerlandès (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Corona noruega (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zloty polonès (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu romanès (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Ruble rus (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar eslovè (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Corona sueca (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Corona eslovaca (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real brasiler (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Corona estoniana (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituà (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-coreà (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-africà (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Lliura esterlina +STR_GAME_OPTIONS_CURRENCY_USD :Dòlar americà +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Ien japonès +STR_GAME_OPTIONS_CURRENCY_ATS :Xíling austríac +STR_GAME_OPTIONS_CURRENCY_BEF :Franc belga +STR_GAME_OPTIONS_CURRENCY_CHF :Franc suís +STR_GAME_OPTIONS_CURRENCY_CZK :Corona txeca +STR_GAME_OPTIONS_CURRENCY_DEM :Marc alemany +STR_GAME_OPTIONS_CURRENCY_DKK :Corona danesa +STR_GAME_OPTIONS_CURRENCY_ESP :Pesseta espanyola +STR_GAME_OPTIONS_CURRENCY_FIM :Marc finlandès +STR_GAME_OPTIONS_CURRENCY_FRF :Franc francès +STR_GAME_OPTIONS_CURRENCY_GRD :Dracma grega +STR_GAME_OPTIONS_CURRENCY_HUF :Florí hongarès +STR_GAME_OPTIONS_CURRENCY_ISK :Corona islandesa +STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana +STR_GAME_OPTIONS_CURRENCY_NLG :Florí neerlandès +STR_GAME_OPTIONS_CURRENCY_NOK :Corona noruega +STR_GAME_OPTIONS_CURRENCY_PLN :Zloty polonès +STR_GAME_OPTIONS_CURRENCY_RON :Leu romanès +STR_GAME_OPTIONS_CURRENCY_RUR :Ruble rus +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar eslovè +STR_GAME_OPTIONS_CURRENCY_SEK :Corona sueca +STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca +STR_GAME_OPTIONS_CURRENCY_SKK :Corona eslovaca +STR_GAME_OPTIONS_CURRENCY_BRL :Real brasiler +STR_GAME_OPTIONS_CURRENCY_EEK :Corona estoniana +STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituà +STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-coreà +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-africà STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalitzada -STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgià (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial iranià (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Ruble rus modern (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicà (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nou dòlar taiwanès (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi xinès (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dòlar de Hong Kong (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rúpia índia (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonèsia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgià +STR_GAME_OPTIONS_CURRENCY_IRR :Rial iranià +STR_GAME_OPTIONS_CURRENCY_RUB :Ruble rus modern +STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicà +STR_GAME_OPTIONS_CURRENCY_NTD :Nou dòlar taiwanès +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi xinès +STR_GAME_OPTIONS_CURRENCY_HKD :Dòlar de Hong Kong +STR_GAME_OPTIONS_CURRENCY_INR :Rúpia índia +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonèsia +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Desa automàticament STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecciona l'interval de desada automàtica de la partida diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index cd3ed98e2c..7a2ae80bc8 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -1008,46 +1008,46 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Novčane STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor novčanih jedinica ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Funte (£) -STR_GAME_OPTIONS_CURRENCY_USD :Američki Dolar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanski Jen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Austrijski šiling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgijski franak (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Švicarski franak (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Češka kruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Njemačka marka (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danska kruna (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Španjolska Pezeta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finska marka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Francuski Franak (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grčka drahma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Mađarski forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandska kruna (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Talijanska lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Nizozemski gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norveška kruna (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Poljski Zloti (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumunjski lev (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Ruske rublje (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenski tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Švedska kruna (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turska lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovačka kruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilski real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estonska kruna (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litvanski Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafrički Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Funte +STR_GAME_OPTIONS_CURRENCY_USD :Američki Dolar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanski Jen +STR_GAME_OPTIONS_CURRENCY_ATS :Austrijski šiling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgijski franak +STR_GAME_OPTIONS_CURRENCY_CHF :Švicarski franak +STR_GAME_OPTIONS_CURRENCY_CZK :Češka kruna +STR_GAME_OPTIONS_CURRENCY_DEM :Njemačka marka +STR_GAME_OPTIONS_CURRENCY_DKK :Danska kruna +STR_GAME_OPTIONS_CURRENCY_ESP :Španjolska Pezeta +STR_GAME_OPTIONS_CURRENCY_FIM :Finska marka +STR_GAME_OPTIONS_CURRENCY_FRF :Francuski Franak +STR_GAME_OPTIONS_CURRENCY_GRD :Grčka drahma +STR_GAME_OPTIONS_CURRENCY_HUF :Mađarski forint +STR_GAME_OPTIONS_CURRENCY_ISK :Islandska kruna +STR_GAME_OPTIONS_CURRENCY_ITL :Talijanska lira +STR_GAME_OPTIONS_CURRENCY_NLG :Nizozemski gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Norveška kruna +STR_GAME_OPTIONS_CURRENCY_PLN :Poljski Zloti +STR_GAME_OPTIONS_CURRENCY_RON :Rumunjski lev +STR_GAME_OPTIONS_CURRENCY_RUR :Ruske rublje +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenski tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Švedska kruna +STR_GAME_OPTIONS_CURRENCY_TRY :Turska lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovačka kruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brazilski real +STR_GAME_OPTIONS_CURRENCY_EEK :Estonska kruna +STR_GAME_OPTIONS_CURRENCY_LTL :Litvanski Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafrički Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Proizvoljno... -STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranski Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nove ruske rublje (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksički Pesos (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Novi Tajvanski Dolar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Kineski Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hongkonški Dolar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indijska Rupija (INR) +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranski Rial +STR_GAME_OPTIONS_CURRENCY_RUB :Nove ruske rublje +STR_GAME_OPTIONS_CURRENCY_MXN :Meksički Pesos +STR_GAME_OPTIONS_CURRENCY_NTD :Novi Tajvanski Dolar +STR_GAME_OPTIONS_CURRENCY_CNY :Kineski Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hongkonški Dolar +STR_GAME_OPTIONS_CURRENCY_INR :Indijska Rupija STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatsko spremanje STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Odaberi interval između automatskih spremanja igre diff --git a/src/lang/czech.txt b/src/lang/czech.txt index c5847d1270..d2f44f019b 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -1024,48 +1024,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Měna STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výběr jednotek měny ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Libra (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dolar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japonský jen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Rakouský šilink (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgický frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Švýcarský frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Česká koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Německá marka (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dánská koruna (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Španělská peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finská marka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Francouzský frank (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Řecká drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Maďarský forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandská koruna (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italská lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Holandský gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norská koruna (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polský zlotý (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumunský lei (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Ruský rubl (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovinský tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Švédská koruna (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turecká lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovenská koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilský real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estonská koruna (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litevský litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Jihokorejský won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Jihoafrický rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Libra +STR_GAME_OPTIONS_CURRENCY_USD :Dolar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japonský jen +STR_GAME_OPTIONS_CURRENCY_ATS :Rakouský šilink +STR_GAME_OPTIONS_CURRENCY_BEF :Belgický frank +STR_GAME_OPTIONS_CURRENCY_CHF :Švýcarský frank +STR_GAME_OPTIONS_CURRENCY_CZK :Česká koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Německá marka +STR_GAME_OPTIONS_CURRENCY_DKK :Dánská koruna +STR_GAME_OPTIONS_CURRENCY_ESP :Španělská peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finská marka +STR_GAME_OPTIONS_CURRENCY_FRF :Francouzský frank +STR_GAME_OPTIONS_CURRENCY_GRD :Řecká drachma +STR_GAME_OPTIONS_CURRENCY_HUF :Maďarský forint +STR_GAME_OPTIONS_CURRENCY_ISK :Islandská koruna +STR_GAME_OPTIONS_CURRENCY_ITL :Italská lira +STR_GAME_OPTIONS_CURRENCY_NLG :Holandský gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Norská koruna +STR_GAME_OPTIONS_CURRENCY_PLN :Polský zlotý +STR_GAME_OPTIONS_CURRENCY_RON :Rumunský lei +STR_GAME_OPTIONS_CURRENCY_RUR :Ruský rubl +STR_GAME_OPTIONS_CURRENCY_SIT :Slovinský tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Švédská koruna +STR_GAME_OPTIONS_CURRENCY_TRY :Turecká lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovenská koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brazilský real +STR_GAME_OPTIONS_CURRENCY_EEK :Estonská koruna +STR_GAME_OPTIONS_CURRENCY_LTL :Litevský litas +STR_GAME_OPTIONS_CURRENCY_KRW :Jihokorejský won +STR_GAME_OPTIONS_CURRENCY_ZAR :Jihoafrický rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Vlastní... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgijské Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Íránský Riál (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Ruský rubl (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexické peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nový taiwanský dolar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Čínský renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský dolar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indická rupie (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonéská rupie (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malajsijský Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgijské Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Íránský Riál +STR_GAME_OPTIONS_CURRENCY_RUB :Ruský rubl +STR_GAME_OPTIONS_CURRENCY_MXN :Mexické peso +STR_GAME_OPTIONS_CURRENCY_NTD :Nový taiwanský dolar +STR_GAME_OPTIONS_CURRENCY_CNY :Čínský renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský dolar +STR_GAME_OPTIONS_CURRENCY_INR :Indická rupie +STR_GAME_OPTIONS_CURRENCY_IDR :Indonéská rupie +STR_GAME_OPTIONS_CURRENCY_MYR :Malajsijský Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatické ukládání STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Volba intervalu mezi automatickým ukládáním hry diff --git a/src/lang/danish.txt b/src/lang/danish.txt index c305e0506c..eba4cadc20 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -952,48 +952,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaen STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valg af valutaenhed ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Britiske Pund (£) -STR_GAME_OPTIONS_CURRENCY_USD :Amerikanske dollars ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanske Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Østrisk Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgiske Franc (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Sweiziske Franc (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tjekkiske Koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danske Kroner (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spanske Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finske Markka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franske Franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Græske Drachmer (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungarnske Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandske Kroner (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italienske Lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Hollandske Guilder (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norske Kroner (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polske Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumænske Lei (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russiske Rubel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenske Tolare (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Svenske Kroner (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkiske Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakiske Koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianske Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estiske Kroon (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Sydkoreansk Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Sydafrikansk Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Britiske Pund +STR_GAME_OPTIONS_CURRENCY_USD :Amerikanske dollars +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanske Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Østrisk Shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgiske Franc +STR_GAME_OPTIONS_CURRENCY_CHF :Sweiziske Franc +STR_GAME_OPTIONS_CURRENCY_CZK :Tjekkiske Koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark +STR_GAME_OPTIONS_CURRENCY_DKK :Danske Kroner +STR_GAME_OPTIONS_CURRENCY_ESP :Spanske Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finske Markka +STR_GAME_OPTIONS_CURRENCY_FRF :Franske Franc +STR_GAME_OPTIONS_CURRENCY_GRD :Græske Drachmer +STR_GAME_OPTIONS_CURRENCY_HUF :Ungarnske Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Islandske Kroner +STR_GAME_OPTIONS_CURRENCY_ITL :Italienske Lire +STR_GAME_OPTIONS_CURRENCY_NLG :Hollandske Guilder +STR_GAME_OPTIONS_CURRENCY_NOK :Norske Kroner +STR_GAME_OPTIONS_CURRENCY_PLN :Polske Zloty +STR_GAME_OPTIONS_CURRENCY_RON :Rumænske Lei +STR_GAME_OPTIONS_CURRENCY_RUR :Russiske Rubel +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenske Tolare +STR_GAME_OPTIONS_CURRENCY_SEK :Svenske Kroner +STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkiske Lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakiske Koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianske Real +STR_GAME_OPTIONS_CURRENCY_EEK :Estiske Kroon +STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Sydkoreansk Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Sydafrikansk Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Brugerdefineret... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rialer (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Ny Russisk Rubel (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksikansk Peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Ny Taiwan dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Kinesisk Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupiah (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rialer +STR_GAME_OPTIONS_CURRENCY_RUB :Ny Russisk Rubel +STR_GAME_OPTIONS_CURRENCY_MXN :Meksikansk Peso +STR_GAME_OPTIONS_CURRENCY_NTD :Ny Taiwan dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Kinesisk Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar +STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupiah +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk gemning STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vælg interval imellem automatisk gemning diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 79a834d0b4..626bd9fd6a 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -952,48 +952,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valuta kiezen ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Britse Pond (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanse Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Oostenrijkse Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgische Frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Zwitserse Frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tsjechische Kroon (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Duitse Mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Deense Kroon (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spaanse Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finse Mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franse Frank (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Griekse Drachme (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarse Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :IJslandse Kroon (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italiaanse Lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Nederlandse Gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Noorse Kroon (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Poolse Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Roemeense Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russische Roebel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Sloveense Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Zweedse Kroon (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkse Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakse Kroon (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Braziliaanse Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estse Kroon (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litouwse Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Zuid-Koreaanse Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Zuid-Afrikaanse Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Britse Pond +STR_GAME_OPTIONS_CURRENCY_USD :Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanse Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Oostenrijkse Shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgische Frank +STR_GAME_OPTIONS_CURRENCY_CHF :Zwitserse Frank +STR_GAME_OPTIONS_CURRENCY_CZK :Tsjechische Kroon +STR_GAME_OPTIONS_CURRENCY_DEM :Duitse Mark +STR_GAME_OPTIONS_CURRENCY_DKK :Deense Kroon +STR_GAME_OPTIONS_CURRENCY_ESP :Spaanse Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finse Mark +STR_GAME_OPTIONS_CURRENCY_FRF :Franse Frank +STR_GAME_OPTIONS_CURRENCY_GRD :Griekse Drachme +STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarse Forint +STR_GAME_OPTIONS_CURRENCY_ISK :IJslandse Kroon +STR_GAME_OPTIONS_CURRENCY_ITL :Italiaanse Lire +STR_GAME_OPTIONS_CURRENCY_NLG :Nederlandse Gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Noorse Kroon +STR_GAME_OPTIONS_CURRENCY_PLN :Poolse Zloty +STR_GAME_OPTIONS_CURRENCY_RON :Roemeense Leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russische Roebel +STR_GAME_OPTIONS_CURRENCY_SIT :Sloveense Tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Zweedse Kroon +STR_GAME_OPTIONS_CURRENCY_TRY :Turkse Lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakse Kroon +STR_GAME_OPTIONS_CURRENCY_BRL :Braziliaanse Real +STR_GAME_OPTIONS_CURRENCY_EEK :Estse Kroon +STR_GAME_OPTIONS_CURRENCY_LTL :Litouwse Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Zuid-Koreaanse Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Zuid-Afrikaanse Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Aangepast... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgische Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iraanse Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nieuwe Russische Roebel (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexicaanse peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nieuwe Taiwanse dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indiase rupee (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesische roepia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Maleisische Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgische Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iraanse Rial +STR_GAME_OPTIONS_CURRENCY_RUB :Nieuwe Russische Roebel +STR_GAME_OPTIONS_CURRENCY_MXN :Mexicaanse peso +STR_GAME_OPTIONS_CURRENCY_NTD :Nieuwe Taiwanse dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar +STR_GAME_OPTIONS_CURRENCY_INR :Indiase rupee +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesische roepia +STR_GAME_OPTIONS_CURRENCY_MYR :Maleisische Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisch opslaan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tijdsduur kiezen tussen automatisch opgeslagen spellen diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 59cb80db89..8acc7c5281 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -952,48 +952,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :British Pound (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :American Dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spanish Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :French Franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polish Złoty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russian Rubles (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :British Pound +STR_GAME_OPTIONS_CURRENCY_USD :American Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc +STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc +STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark +STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone +STR_GAME_OPTIONS_CURRENCY_ESP :Spanish Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka +STR_GAME_OPTIONS_CURRENCY_FRF :French Franc +STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma +STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona +STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira +STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder +STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone +STR_GAME_OPTIONS_CURRENCY_PLN :Polish Złoty +STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russian Rubles +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona +STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real +STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni +STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas +STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won +STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Custom... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :New Russian Ruble (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexican Peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial +STR_GAME_OPTIONS_CURRENCY_RUB :New Russian Ruble +STR_GAME_OPTIONS_CURRENCY_MXN :Mexican Peso +STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar +STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index e4a53193e6..c622ee91e1 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -952,48 +952,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :British Pound (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :American Dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spanish Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :French Franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polish Złoty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russian Ruble (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :British Pound +STR_GAME_OPTIONS_CURRENCY_USD :American Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc +STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc +STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark +STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone +STR_GAME_OPTIONS_CURRENCY_ESP :Spanish Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka +STR_GAME_OPTIONS_CURRENCY_FRF :French Franc +STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma +STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona +STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira +STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder +STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone +STR_GAME_OPTIONS_CURRENCY_PLN :Polish Złoty +STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russian Ruble +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona +STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real +STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni +STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas +STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won +STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Custom... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :New Russian Ruble (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexican Peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial +STR_GAME_OPTIONS_CURRENCY_RUB :New Russian Ruble +STR_GAME_OPTIONS_CURRENCY_MXN :Mexican Peso +STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar +STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index c565bf7d54..b34f69ebe7 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -1028,48 +1028,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Monunuoj STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Elekto de monunuoj ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Brita Pundo (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Usona Dolaro (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Eŭro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Enoj (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Aŭstriaj Ŝilingoj (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgaj Frankoj (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Svisaj Frankoj (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Ĉeĥaj Korunoj (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Germanaj Markoj (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danaj Kronoj (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Pesetoj (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finnaj Markoj (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Frankoj (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grekaj Draĥmoj (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Hungaraj Forintoj (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandaj Kronoj (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italaj Liroj (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Nederlandaj Guldenoj (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norvegaj Kronoj (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polaj Zlotoj (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumanaj Leŭoj (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rusaj Rubloj (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenaj Tolaroj (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Svedaj Kronoj (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkaj Liroj (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakaj Korunoj (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilaj Realoj (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estona Krono (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litova lido (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Sud-korea ŭono (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Sudafrika rando (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Brita Pundo +STR_GAME_OPTIONS_CURRENCY_USD :Usona Dolaro +STR_GAME_OPTIONS_CURRENCY_EUR :Eŭro +STR_GAME_OPTIONS_CURRENCY_JPY :Enoj +STR_GAME_OPTIONS_CURRENCY_ATS :Aŭstriaj Ŝilingoj +STR_GAME_OPTIONS_CURRENCY_BEF :Belgaj Frankoj +STR_GAME_OPTIONS_CURRENCY_CHF :Svisaj Frankoj +STR_GAME_OPTIONS_CURRENCY_CZK :Ĉeĥaj Korunoj +STR_GAME_OPTIONS_CURRENCY_DEM :Germanaj Markoj +STR_GAME_OPTIONS_CURRENCY_DKK :Danaj Kronoj +STR_GAME_OPTIONS_CURRENCY_ESP :Pesetoj +STR_GAME_OPTIONS_CURRENCY_FIM :Finnaj Markoj +STR_GAME_OPTIONS_CURRENCY_FRF :Frankoj +STR_GAME_OPTIONS_CURRENCY_GRD :Grekaj Draĥmoj +STR_GAME_OPTIONS_CURRENCY_HUF :Hungaraj Forintoj +STR_GAME_OPTIONS_CURRENCY_ISK :Islandaj Kronoj +STR_GAME_OPTIONS_CURRENCY_ITL :Italaj Liroj +STR_GAME_OPTIONS_CURRENCY_NLG :Nederlandaj Guldenoj +STR_GAME_OPTIONS_CURRENCY_NOK :Norvegaj Kronoj +STR_GAME_OPTIONS_CURRENCY_PLN :Polaj Zlotoj +STR_GAME_OPTIONS_CURRENCY_RON :Rumanaj Leŭoj +STR_GAME_OPTIONS_CURRENCY_RUR :Rusaj Rubloj +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenaj Tolaroj +STR_GAME_OPTIONS_CURRENCY_SEK :Svedaj Kronoj +STR_GAME_OPTIONS_CURRENCY_TRY :Turkaj Liroj +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakaj Korunoj +STR_GAME_OPTIONS_CURRENCY_BRL :Brazilaj Realoj +STR_GAME_OPTIONS_CURRENCY_EEK :Estona Krono +STR_GAME_OPTIONS_CURRENCY_LTL :Litova lido +STR_GAME_OPTIONS_CURRENCY_KRW :Sud-korea ŭono +STR_GAME_OPTIONS_CURRENCY_ZAR :Sudafrika rando STR_GAME_OPTIONS_CURRENCY_CUSTOM :Alia... -STR_GAME_OPTIONS_CURRENCY_GEL :Kartvela Lario (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Irana Rialo (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nova rusia rublo (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksika peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nova tajvana dolaro (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Ĉina juano (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Honkonga dolaro (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Barata rupio (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonezia rupio (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malajzia ringito (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Kartvela Lario +STR_GAME_OPTIONS_CURRENCY_IRR :Irana Rialo +STR_GAME_OPTIONS_CURRENCY_RUB :Nova rusia rublo +STR_GAME_OPTIONS_CURRENCY_MXN :Meksika peso +STR_GAME_OPTIONS_CURRENCY_NTD :Nova tajvana dolaro +STR_GAME_OPTIONS_CURRENCY_CNY :Ĉina juano +STR_GAME_OPTIONS_CURRENCY_HKD :Honkonga dolaro +STR_GAME_OPTIONS_CURRENCY_INR :Barata rupio +STR_GAME_OPTIONS_CURRENCY_IDR :Indonezia rupio +STR_GAME_OPTIONS_CURRENCY_MYR :Malajzia ringito STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Aŭtomata konservado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Elektu intervalon inter aŭtomataj konservadoj de la ludo diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 85d22df3be..52d7c50b59 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -994,48 +994,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valuuta valimine ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Suurbritannia nael (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :USA dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Jaapani jeen (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Austria ðilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgia frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Sveitði frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tðehhi kroon (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Saksamargad (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Taani kroon (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Hispaania peseeta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Soome mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Prantsuse frank (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Kreeka drahm (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungari Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandi kroon (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Itaalia liir (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Hollandi kulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norra kroon (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Poola Zlott (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumeenia Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Vene rubla (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Sloveenia Talaar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Rootsi kroon (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Türgi Liir (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakkia Kroon (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasiilia Reaal (BRL -STR_GAME_OPTIONS_CURRENCY_EEK :Eesti Kroon (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Leedu litt (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Lõuna-Korea vonn (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Lõuna-Aafrika rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Suurbritannia nael +STR_GAME_OPTIONS_CURRENCY_USD :USA dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Jaapani jeen +STR_GAME_OPTIONS_CURRENCY_ATS :Austria ðilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgia frank +STR_GAME_OPTIONS_CURRENCY_CHF :Sveitði frank +STR_GAME_OPTIONS_CURRENCY_CZK :Tðehhi kroon +STR_GAME_OPTIONS_CURRENCY_DEM :Saksamargad +STR_GAME_OPTIONS_CURRENCY_DKK :Taani kroon +STR_GAME_OPTIONS_CURRENCY_ESP :Hispaania peseeta +STR_GAME_OPTIONS_CURRENCY_FIM :Soome mark +STR_GAME_OPTIONS_CURRENCY_FRF :Prantsuse frank +STR_GAME_OPTIONS_CURRENCY_GRD :Kreeka drahm +STR_GAME_OPTIONS_CURRENCY_HUF :Ungari Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Islandi kroon +STR_GAME_OPTIONS_CURRENCY_ITL :Itaalia liir +STR_GAME_OPTIONS_CURRENCY_NLG :Hollandi kulden +STR_GAME_OPTIONS_CURRENCY_NOK :Norra kroon +STR_GAME_OPTIONS_CURRENCY_PLN :Poola Zlott +STR_GAME_OPTIONS_CURRENCY_RON :Rumeenia Leu +STR_GAME_OPTIONS_CURRENCY_RUR :Vene rubla +STR_GAME_OPTIONS_CURRENCY_SIT :Sloveenia Talaar +STR_GAME_OPTIONS_CURRENCY_SEK :Rootsi kroon +STR_GAME_OPTIONS_CURRENCY_TRY :Türgi Liir +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakkia Kroon +STR_GAME_OPTIONS_CURRENCY_BRL :Brasiilia Reaal +STR_GAME_OPTIONS_CURRENCY_EEK :Eesti Kroon +STR_GAME_OPTIONS_CURRENCY_LTL :Leedu litt +STR_GAME_OPTIONS_CURRENCY_KRW :Lõuna-Korea vonn +STR_GAME_OPTIONS_CURRENCY_ZAR :Lõuna-Aafrika rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Omatehtud... -STR_GAME_OPTIONS_CURRENCY_GEL :Gruusia lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iraani rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Uus Vene rubla (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mehhiko Peeso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Uus Taiwani dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Hiina renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kongi dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :India ruupia (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indoneesia ruupia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaisia ringit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Gruusia lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iraani rial +STR_GAME_OPTIONS_CURRENCY_RUB :Uus Vene rubla +STR_GAME_OPTIONS_CURRENCY_MXN :Mehhiko Peeso +STR_GAME_OPTIONS_CURRENCY_NTD :Uus Taiwani dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Hiina renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kongi dollar +STR_GAME_OPTIONS_CURRENCY_INR :India ruupia +STR_GAME_OPTIONS_CURRENCY_IDR :Indoneesia ruupia +STR_GAME_OPTIONS_CURRENCY_MYR :Malaisia ringit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvestusvälp STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vali salvestamise välp diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index e9e664572f..fd3339ed67 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -865,37 +865,37 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldsoy STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Úrval av gjaldsoyra eindum ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Bretsk Pund (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dollarar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Evrir (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Eysturríkskan Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgiskan Frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Sveisiskan Frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tjekkisk Koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danskar Krónir (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spanskir Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finskan Mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franskan Frank (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grikkskan Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungarskan Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Íslenska Krónu (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italskan Lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Niðurlendskan Gillin (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norskar Krónur (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polskan Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumeniskan Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russiskar Rublar (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenskar Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Svenskar Krónur (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkiskan Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakiska Koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasilskan Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estoniska Krooni (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litauiskir Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Suður Koreanskar Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Suður Afrikanskir Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Bretsk Pund +STR_GAME_OPTIONS_CURRENCY_USD :Dollarar +STR_GAME_OPTIONS_CURRENCY_EUR :Evrir +STR_GAME_OPTIONS_CURRENCY_JPY :Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Eysturríkskan Shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgiskan Frank +STR_GAME_OPTIONS_CURRENCY_CHF :Sveisiskan Frank +STR_GAME_OPTIONS_CURRENCY_CZK :Tjekkisk Koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark +STR_GAME_OPTIONS_CURRENCY_DKK :Danskar Krónir +STR_GAME_OPTIONS_CURRENCY_ESP :Spanskir Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finskan Mark +STR_GAME_OPTIONS_CURRENCY_FRF :Franskan Frank +STR_GAME_OPTIONS_CURRENCY_GRD :Grikkskan Drachma +STR_GAME_OPTIONS_CURRENCY_HUF :Ungarskan Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Íslenska Krónu +STR_GAME_OPTIONS_CURRENCY_ITL :Italskan Lira +STR_GAME_OPTIONS_CURRENCY_NLG :Niðurlendskan Gillin +STR_GAME_OPTIONS_CURRENCY_NOK :Norskar Krónur +STR_GAME_OPTIONS_CURRENCY_PLN :Polskan Zloty +STR_GAME_OPTIONS_CURRENCY_RON :Rumeniskan Leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russiskar Rublar +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenskar Tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Svenskar Krónur +STR_GAME_OPTIONS_CURRENCY_TRY :Turkiskan Lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakiska Koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brasilskan Real +STR_GAME_OPTIONS_CURRENCY_EEK :Estoniska Krooni +STR_GAME_OPTIONS_CURRENCY_LTL :Litauiskir Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Suður Koreanskar Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Suður Afrikanskir Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sjálvgjørt... STR_GAME_OPTIONS_CURRENCY_GEL :Georgiskur Lari STR_GAME_OPTIONS_CURRENCY_IRR :Iranskur Rial diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 1ef4a485a7..ec07e69819 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -952,48 +952,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Rahayksi STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Rahayksikön valinta ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Englannin punta (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Yhdysvaltain dollari (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanin jeni (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Itävallan šillinki (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgian frangi (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Sveitsin frangi (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tšekin koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Saksan markka (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Tanskan kruunu (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Espanjan peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Suomen markka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Ranskan frangi (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Kreikan drakma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Unkarin forintti (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islannin kruunu (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italian liira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Hollannin guldeni (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norjan kruunu (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Puolan złoty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Romanian leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Venäjän rupla (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian tolari (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Ruotsin kruunu (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkin liira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakian koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasilian reali (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Viron kruunu (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Liettuan liti (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Etelä-Korean won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Etelä-Afrikan randi (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Englannin punta +STR_GAME_OPTIONS_CURRENCY_USD :Yhdysvaltain dollari +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanin jeni +STR_GAME_OPTIONS_CURRENCY_ATS :Itävallan šillinki +STR_GAME_OPTIONS_CURRENCY_BEF :Belgian frangi +STR_GAME_OPTIONS_CURRENCY_CHF :Sveitsin frangi +STR_GAME_OPTIONS_CURRENCY_CZK :Tšekin koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Saksan markka +STR_GAME_OPTIONS_CURRENCY_DKK :Tanskan kruunu +STR_GAME_OPTIONS_CURRENCY_ESP :Espanjan peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Suomen markka +STR_GAME_OPTIONS_CURRENCY_FRF :Ranskan frangi +STR_GAME_OPTIONS_CURRENCY_GRD :Kreikan drakma +STR_GAME_OPTIONS_CURRENCY_HUF :Unkarin forintti +STR_GAME_OPTIONS_CURRENCY_ISK :Islannin kruunu +STR_GAME_OPTIONS_CURRENCY_ITL :Italian liira +STR_GAME_OPTIONS_CURRENCY_NLG :Hollannin guldeni +STR_GAME_OPTIONS_CURRENCY_NOK :Norjan kruunu +STR_GAME_OPTIONS_CURRENCY_PLN :Puolan złoty +STR_GAME_OPTIONS_CURRENCY_RON :Romanian leu +STR_GAME_OPTIONS_CURRENCY_RUR :Venäjän rupla +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian tolari +STR_GAME_OPTIONS_CURRENCY_SEK :Ruotsin kruunu +STR_GAME_OPTIONS_CURRENCY_TRY :Turkin liira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakian koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brasilian reali +STR_GAME_OPTIONS_CURRENCY_EEK :Viron kruunu +STR_GAME_OPTIONS_CURRENCY_LTL :Liettuan liti +STR_GAME_OPTIONS_CURRENCY_KRW :Etelä-Korean won +STR_GAME_OPTIONS_CURRENCY_ZAR :Etelä-Afrikan randi STR_GAME_OPTIONS_CURRENCY_CUSTOM :Oma... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgian lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranin rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Uusi Venäjän rupla (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksikon peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Uusi Taiwanin dollari (TWD) -STR_GAME_OPTIONS_CURRENCY_CNY :Kiinan renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongin dollari (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Intian rupia (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian rupia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malesian ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranin rial +STR_GAME_OPTIONS_CURRENCY_RUB :Uusi Venäjän rupla +STR_GAME_OPTIONS_CURRENCY_MXN :Meksikon peso +STR_GAME_OPTIONS_CURRENCY_NTD :Uusi Taiwanin dollari +STR_GAME_OPTIONS_CURRENCY_CNY :Kiinan renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongin dollari +STR_GAME_OPTIONS_CURRENCY_INR :Intian rupia +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian rupia +STR_GAME_OPTIONS_CURRENCY_MYR :Malesian ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automaattitallennus STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Valitse aikaväli automaattisille pelitallennuksille diff --git a/src/lang/french.txt b/src/lang/french.txt index 54d608833a..65c4584ec8 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -953,48 +953,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Devise STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Sélectionner l'unité monétaire ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Livre (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dollar ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Shiling australien (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franc belge (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franc suisse (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Couronne tchèque (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Mark allemand (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Couronne danoise (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Mark finlandais (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc français (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachme grecque (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florin hongrois (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Couronne islandaise (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lire italienne (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Florin hollandais (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Couronne norvégienne (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Nouv. Zloty polonais (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu roumain (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rouble russe (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar slovénien (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Couronne suédoise (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lire turque (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Couronne slovaque (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Réal brésilien (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Couronne estonienne (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituanien (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-coréen (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-africain (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Livre +STR_GAME_OPTIONS_CURRENCY_USD :Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Shiling australien +STR_GAME_OPTIONS_CURRENCY_BEF :Franc belge +STR_GAME_OPTIONS_CURRENCY_CHF :Franc suisse +STR_GAME_OPTIONS_CURRENCY_CZK :Couronne tchèque +STR_GAME_OPTIONS_CURRENCY_DEM :Mark allemand +STR_GAME_OPTIONS_CURRENCY_DKK :Couronne danoise +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Mark finlandais +STR_GAME_OPTIONS_CURRENCY_FRF :Franc français +STR_GAME_OPTIONS_CURRENCY_GRD :Drachme grecque +STR_GAME_OPTIONS_CURRENCY_HUF :Florin hongrois +STR_GAME_OPTIONS_CURRENCY_ISK :Couronne islandaise +STR_GAME_OPTIONS_CURRENCY_ITL :Lire italienne +STR_GAME_OPTIONS_CURRENCY_NLG :Florin hollandais +STR_GAME_OPTIONS_CURRENCY_NOK :Couronne norvégienne +STR_GAME_OPTIONS_CURRENCY_PLN :Nouv. Zloty polonais +STR_GAME_OPTIONS_CURRENCY_RON :Leu roumain +STR_GAME_OPTIONS_CURRENCY_RUR :Rouble russe +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar slovénien +STR_GAME_OPTIONS_CURRENCY_SEK :Couronne suédoise +STR_GAME_OPTIONS_CURRENCY_TRY :Lire turque +STR_GAME_OPTIONS_CURRENCY_SKK :Couronne slovaque +STR_GAME_OPTIONS_CURRENCY_BRL :Réal brésilien +STR_GAME_OPTIONS_CURRENCY_EEK :Couronne estonienne +STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituanien +STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-coréen +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-africain STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personnalisée... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Géorgien (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranien (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nouveau rouble russe (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso méxicain (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nouveau Dollar de Taïwan (TWD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Chinois (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dollar de Hong Kong (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Roupie indienne (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Roupie indonésienne (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Géorgien +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranien +STR_GAME_OPTIONS_CURRENCY_RUB :Nouveau rouble russe +STR_GAME_OPTIONS_CURRENCY_MXN :Peso méxicain +STR_GAME_OPTIONS_CURRENCY_NTD :Nouveau Dollar de Taïwan +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Chinois +STR_GAME_OPTIONS_CURRENCY_HKD :Dollar de Hong Kong +STR_GAME_OPTIONS_CURRENCY_INR :Roupie indienne +STR_GAME_OPTIONS_CURRENCY_IDR :Roupie indonésienne +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Sauvegarde automatique STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Sélectionner l'intervalle de temps entre les sauvegardes automatiques diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index 0fc08c44bf..35dd0a018e 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -902,48 +902,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Muntienh STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Muntienheidseleksje ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Britske Pûn (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Amerikaanske Dollars (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanske Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Eastenrykske Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgyske Frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Switserske Frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tsjechyske Koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Dútske mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Deenske Kroan (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spaanske Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finske Markka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Frânske Franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grykske Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarske Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Yslânske Kroan (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italjaanske Lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Nederlânske Gûne (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Noorske Kroan (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Poalske Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Roemeenske Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russyske Rubels (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Sloveenske Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Sweedske Kroan (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkse Lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakske Kroan (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Braziljaanse Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estlânske Kroan (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litouwske Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Súd-Koreaanske Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Súd-Afrikaanske Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Britske Pûn +STR_GAME_OPTIONS_CURRENCY_USD :Amerikaanske Dollars +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanske Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Eastenrykske Shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgyske Frank +STR_GAME_OPTIONS_CURRENCY_CHF :Switserske Frank +STR_GAME_OPTIONS_CURRENCY_CZK :Tsjechyske Koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Dútske mark +STR_GAME_OPTIONS_CURRENCY_DKK :Deenske Kroan +STR_GAME_OPTIONS_CURRENCY_ESP :Spaanske Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finske Markka +STR_GAME_OPTIONS_CURRENCY_FRF :Frânske Franc +STR_GAME_OPTIONS_CURRENCY_GRD :Grykske Drachma +STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarske Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Yslânske Kroan +STR_GAME_OPTIONS_CURRENCY_ITL :Italjaanske Lire +STR_GAME_OPTIONS_CURRENCY_NLG :Nederlânske Gûne +STR_GAME_OPTIONS_CURRENCY_NOK :Noorske Kroan +STR_GAME_OPTIONS_CURRENCY_PLN :Poalske Zloty +STR_GAME_OPTIONS_CURRENCY_RON :Roemeenske Leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russyske Rubels +STR_GAME_OPTIONS_CURRENCY_SIT :Sloveenske Tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Sweedske Kroan +STR_GAME_OPTIONS_CURRENCY_TRY :Turkse Lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakske Kroan +STR_GAME_OPTIONS_CURRENCY_BRL :Braziljaanse Real +STR_GAME_OPTIONS_CURRENCY_EEK :Estlânske Kroan +STR_GAME_OPTIONS_CURRENCY_LTL :Litouwske Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Súd-Koreaanske Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Súd-Afrikaanske Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Oanpasse... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgyske Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iraanske Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Neie Russyske Rubels (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksikaanse Peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Neie Taiwanesyske Dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Sineeske Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongske Dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Yndyske rupee (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Yndonezyske Roepia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Maleizyske Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgyske Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iraanske Rial +STR_GAME_OPTIONS_CURRENCY_RUB :Neie Russyske Rubels +STR_GAME_OPTIONS_CURRENCY_MXN :Meksikaanse Peso +STR_GAME_OPTIONS_CURRENCY_NTD :Neie Taiwanesyske Dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Sineeske Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongske Dollar +STR_GAME_OPTIONS_CURRENCY_INR :Yndyske rupee +STR_GAME_OPTIONS_CURRENCY_IDR :Yndonezyske Roepia +STR_GAME_OPTIONS_CURRENCY_MYR :Maleizyske Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatysk opslaan STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selektearje de interval foar automatysk opslaan diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index bd09902308..c0966f8d9b 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -1098,40 +1098,40 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Aonadan STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Tagh aonadan airgeadra ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Not Breatannach (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dolar Aimeireaganach (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Eòro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen Seapanach (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Sgillin Ostaireach (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franc Beilgeach (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franc Eilbheiseach (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Seiceach (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Mark Gearmailteach (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Crùn Danmhairgeach (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Spàinnteach (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Markka Fionnlannach (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc Frangach (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Greugach (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint Ungaireach (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Krona Tìleach (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira Eadailteach (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Guilder Duitseach (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Krone Nirribheach (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Pòlainneach (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Romàineach (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rùbal Ruiseach (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slòbhaineach (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Krona Suaineach (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turcach (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slòbhacach (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real Braisileach (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Eastoineach (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas Liotuaineach (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won Choirèa a Deas (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Afraga a Deas (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Not Breatannach +STR_GAME_OPTIONS_CURRENCY_USD :Dolar Aimeireaganach +STR_GAME_OPTIONS_CURRENCY_EUR :Eòro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen Seapanach +STR_GAME_OPTIONS_CURRENCY_ATS :Sgillin Ostaireach +STR_GAME_OPTIONS_CURRENCY_BEF :Franc Beilgeach +STR_GAME_OPTIONS_CURRENCY_CHF :Franc Eilbheiseach +STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Seiceach +STR_GAME_OPTIONS_CURRENCY_DEM :Mark Gearmailteach +STR_GAME_OPTIONS_CURRENCY_DKK :Crùn Danmhairgeach +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Spàinnteach +STR_GAME_OPTIONS_CURRENCY_FIM :Markka Fionnlannach +STR_GAME_OPTIONS_CURRENCY_FRF :Franc Frangach +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Greugach +STR_GAME_OPTIONS_CURRENCY_HUF :Forint Ungaireach +STR_GAME_OPTIONS_CURRENCY_ISK :Krona Tìleach +STR_GAME_OPTIONS_CURRENCY_ITL :Lira Eadailteach +STR_GAME_OPTIONS_CURRENCY_NLG :Guilder Duitseach +STR_GAME_OPTIONS_CURRENCY_NOK :Krone Nirribheach +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Pòlainneach +STR_GAME_OPTIONS_CURRENCY_RON :Leu Romàineach +STR_GAME_OPTIONS_CURRENCY_RUR :Rùbal Ruiseach +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slòbhaineach +STR_GAME_OPTIONS_CURRENCY_SEK :Krona Suaineach +STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turcach +STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slòbhacach +STR_GAME_OPTIONS_CURRENCY_BRL :Real Braisileach +STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Eastoineach +STR_GAME_OPTIONS_CURRENCY_LTL :Litas Liotuaineach +STR_GAME_OPTIONS_CURRENCY_KRW :Won Choirèa a Deas +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Afraga a Deas STR_GAME_OPTIONS_CURRENCY_CUSTOM :Gnàthaichte... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Cairtbheileach (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iorànach (IRR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Cairtbheileach +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iorànach STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Fèin-shàbhaladh STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tagh dè cho tric ’s a thèid an geama fèin-shàbhaladh diff --git a/src/lang/galician.txt b/src/lang/galician.txt index a79aea2532..15e89e936e 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -953,48 +953,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selección de unidades monetarias ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Libra esterlina (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dólar americano ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Ien xaponés (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Chelín austríaco (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franco belga (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franco suízo (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Coroa checa (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marco alemán (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Coroa danesa (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta española (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marco finés (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franco francés (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Dracma grego (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florín húngaro (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Coroa islandesa (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Florín neerlandés (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Coroa norueguesa (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Złoty polaco (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu rumano (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rublo ruso (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar esloveno (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Coroa sueca (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Coroa eslovaca (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real brasileiro (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Coroa estona (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituana (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Wŏn surcoreano (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Libra esterlina +STR_GAME_OPTIONS_CURRENCY_USD :Dólar americano +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Ien xaponés +STR_GAME_OPTIONS_CURRENCY_ATS :Chelín austríaco +STR_GAME_OPTIONS_CURRENCY_BEF :Franco belga +STR_GAME_OPTIONS_CURRENCY_CHF :Franco suízo +STR_GAME_OPTIONS_CURRENCY_CZK :Coroa checa +STR_GAME_OPTIONS_CURRENCY_DEM :Marco alemán +STR_GAME_OPTIONS_CURRENCY_DKK :Coroa danesa +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta española +STR_GAME_OPTIONS_CURRENCY_FIM :Marco finés +STR_GAME_OPTIONS_CURRENCY_FRF :Franco francés +STR_GAME_OPTIONS_CURRENCY_GRD :Dracma grego +STR_GAME_OPTIONS_CURRENCY_HUF :Florín húngaro +STR_GAME_OPTIONS_CURRENCY_ISK :Coroa islandesa +STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana +STR_GAME_OPTIONS_CURRENCY_NLG :Florín neerlandés +STR_GAME_OPTIONS_CURRENCY_NOK :Coroa norueguesa +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty polaco +STR_GAME_OPTIONS_CURRENCY_RON :Leu rumano +STR_GAME_OPTIONS_CURRENCY_RUR :Rublo ruso +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar esloveno +STR_GAME_OPTIONS_CURRENCY_SEK :Coroa sueca +STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca +STR_GAME_OPTIONS_CURRENCY_SKK :Coroa eslovaca +STR_GAME_OPTIONS_CURRENCY_BRL :Real brasileiro +STR_GAME_OPTIONS_CURRENCY_EEK :Coroa estona +STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituana +STR_GAME_OPTIONS_CURRENCY_KRW :Wŏn surcoreano +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano STR_GAME_OPTIONS_CURRENCY_CUSTOM :Persoal... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari xeorxiano (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Real iraniano (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Novo rublo ruso (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicano (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Novo dólar taiwanés (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chinés (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rupia India (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonesia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malaio(MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari xeorxiano +STR_GAME_OPTIONS_CURRENCY_IRR :Real iraniano +STR_GAME_OPTIONS_CURRENCY_RUB :Novo rublo ruso +STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicano +STR_GAME_OPTIONS_CURRENCY_NTD :Novo dólar taiwanés +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chinés +STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong +STR_GAME_OPTIONS_CURRENCY_INR :Rupia India +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonesia +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malaio STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autogravado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selecciona o intervalo entre autogravados diff --git a/src/lang/german.txt b/src/lang/german.txt index 544cc74af7..17fc8fec19 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -950,48 +950,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Währung STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Währung auswählen ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Britische Pfund (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :US-Dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanische Yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Österreichische Schilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgische Franken (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Schweizer Franken (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tschechische Kronen (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutsche Mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dänische Kronen (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spanische Peseten (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finnische Mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Französische Franken (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Griechische Drachmen (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungarische Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Isländische Kronen (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italienische Lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Niederländische Gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norwegische Kronen (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polnische Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumänische Lei (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Alte Russische Rubel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenische Taler (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Schwedische Kronen (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Türkische Lire (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slowakische Kronen (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianische Reais (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estnische Kronen (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litauische Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanische Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanische Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Britische Pfund +STR_GAME_OPTIONS_CURRENCY_USD :US-Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanische Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Österreichische Schilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgische Franken +STR_GAME_OPTIONS_CURRENCY_CHF :Schweizer Franken +STR_GAME_OPTIONS_CURRENCY_CZK :Tschechische Kronen +STR_GAME_OPTIONS_CURRENCY_DEM :Deutsche Mark +STR_GAME_OPTIONS_CURRENCY_DKK :Dänische Kronen +STR_GAME_OPTIONS_CURRENCY_ESP :Spanische Peseten +STR_GAME_OPTIONS_CURRENCY_FIM :Finnische Mark +STR_GAME_OPTIONS_CURRENCY_FRF :Französische Franken +STR_GAME_OPTIONS_CURRENCY_GRD :Griechische Drachmen +STR_GAME_OPTIONS_CURRENCY_HUF :Ungarische Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Isländische Kronen +STR_GAME_OPTIONS_CURRENCY_ITL :Italienische Lire +STR_GAME_OPTIONS_CURRENCY_NLG :Niederländische Gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Norwegische Kronen +STR_GAME_OPTIONS_CURRENCY_PLN :Polnische Zloty +STR_GAME_OPTIONS_CURRENCY_RON :Rumänische Lei +STR_GAME_OPTIONS_CURRENCY_RUR :Alte Russische Rubel +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenische Taler +STR_GAME_OPTIONS_CURRENCY_SEK :Schwedische Kronen +STR_GAME_OPTIONS_CURRENCY_TRY :Türkische Lire +STR_GAME_OPTIONS_CURRENCY_SKK :Slowakische Kronen +STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianische Reais +STR_GAME_OPTIONS_CURRENCY_EEK :Estnische Kronen +STR_GAME_OPTIONS_CURRENCY_LTL :Litauische Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanische Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanische Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigene ... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgische Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranische Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Neue Russische Rubel (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanische Pesos (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Neuer Taiwan-Dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Chinesische Yuan (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hongkong-Dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indische Rupie (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesische Rupiah (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysische Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgische Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranische Rial +STR_GAME_OPTIONS_CURRENCY_RUB :Neue Russische Rubel +STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanische Pesos +STR_GAME_OPTIONS_CURRENCY_NTD :Neuer Taiwan-Dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Chinesische Yuan +STR_GAME_OPTIONS_CURRENCY_HKD :Hongkong-Dollar +STR_GAME_OPTIONS_CURRENCY_INR :Indische Rupie +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesische Rupiah +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysische Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosicherung STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Abstand zwischen den automatischen Spielesicherungen wählen diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 3eb6158350..c32f7ebb91 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -1043,48 +1043,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Νομι STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Επιλογή νομισματικών μονάδων ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Στερλίνα Ηνωμένου Βασιλείου (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Δολλάριο Η.Π.Α. (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Ευρώ (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Ιαπωνικό Γιεν (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Αυστριακό Σελίνι (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Βελγικό Φράγκο (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Ελβετικό Φράγκο (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Τσέχικη Κορώνα (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Γερμανικό Μάρκο (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Δανέζικη Κορώνα (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Ισπανική Πεσέτα (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Φινλανδικό Μάρκο (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Γαλλικό Φράγκο (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Ελληνική Δραχμή (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ουγγρικό Φλουρί (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Ισλανδική Κορώνα (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Ιταλική Λίρα (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Ολλανδικό Φιορίνι (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Νορβηγική Κορώνα (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Πολωνικό Ζλότυ (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Ρουμάνικο Λευ (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Ρωσικό Ρούβλι (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Σλοβένικο Τολάρ (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Σουηδική Κορώνα (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Τούρκικη Λίρα (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Σλοβάκικη Κορώνα (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Βραζιλιάνικο Ρεάλ (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Εσθονική Κορώνα (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Λιθουανική Λίτα (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Νοτιοκορεάτικο Γουόν (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Νοτιοαφρικάνικο Ραντ (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Στερλίνα Ηνωμένου Βασιλείου +STR_GAME_OPTIONS_CURRENCY_USD :Δολλάριο Η.Π.Α. +STR_GAME_OPTIONS_CURRENCY_EUR :Ευρώ +STR_GAME_OPTIONS_CURRENCY_JPY :Ιαπωνικό Γιεν +STR_GAME_OPTIONS_CURRENCY_ATS :Αυστριακό Σελίνι +STR_GAME_OPTIONS_CURRENCY_BEF :Βελγικό Φράγκο +STR_GAME_OPTIONS_CURRENCY_CHF :Ελβετικό Φράγκο +STR_GAME_OPTIONS_CURRENCY_CZK :Τσέχικη Κορώνα +STR_GAME_OPTIONS_CURRENCY_DEM :Γερμανικό Μάρκο +STR_GAME_OPTIONS_CURRENCY_DKK :Δανέζικη Κορώνα +STR_GAME_OPTIONS_CURRENCY_ESP :Ισπανική Πεσέτα +STR_GAME_OPTIONS_CURRENCY_FIM :Φινλανδικό Μάρκο +STR_GAME_OPTIONS_CURRENCY_FRF :Γαλλικό Φράγκο +STR_GAME_OPTIONS_CURRENCY_GRD :Ελληνική Δραχμή +STR_GAME_OPTIONS_CURRENCY_HUF :Ουγγρικό Φλουρί +STR_GAME_OPTIONS_CURRENCY_ISK :Ισλανδική Κορώνα +STR_GAME_OPTIONS_CURRENCY_ITL :Ιταλική Λίρα +STR_GAME_OPTIONS_CURRENCY_NLG :Ολλανδικό Φιορίνι +STR_GAME_OPTIONS_CURRENCY_NOK :Νορβηγική Κορώνα +STR_GAME_OPTIONS_CURRENCY_PLN :Πολωνικό Ζλότυ +STR_GAME_OPTIONS_CURRENCY_RON :Ρουμάνικο Λευ +STR_GAME_OPTIONS_CURRENCY_RUR :Ρωσικό Ρούβλι +STR_GAME_OPTIONS_CURRENCY_SIT :Σλοβένικο Τολάρ +STR_GAME_OPTIONS_CURRENCY_SEK :Σουηδική Κορώνα +STR_GAME_OPTIONS_CURRENCY_TRY :Τούρκικη Λίρα +STR_GAME_OPTIONS_CURRENCY_SKK :Σλοβάκικη Κορώνα +STR_GAME_OPTIONS_CURRENCY_BRL :Βραζιλιάνικο Ρεάλ +STR_GAME_OPTIONS_CURRENCY_EEK :Εσθονική Κορώνα +STR_GAME_OPTIONS_CURRENCY_LTL :Λιθουανική Λίτα +STR_GAME_OPTIONS_CURRENCY_KRW :Νοτιοκορεάτικο Γουόν +STR_GAME_OPTIONS_CURRENCY_ZAR :Νοτιοαφρικάνικο Ραντ STR_GAME_OPTIONS_CURRENCY_CUSTOM :Άλλο... -STR_GAME_OPTIONS_CURRENCY_GEL :Γεοργιανό Λάρι (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Ιρανικό Ριάλ (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Νεο Ρώσικο Ρούβλι (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Πεσος Μεξικου (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Δολλάριο Νέας Ταϊβάν (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Ρενμίνμπι Κίνας (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Δολάριο Χονγκ Κονγκ (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Ρουπία Ινδίας (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Ινδονησιακή Ρουπία (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ρινγκίτ Μαλαισίας (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Γεοργιανό Λάρι +STR_GAME_OPTIONS_CURRENCY_IRR :Ιρανικό Ριάλ +STR_GAME_OPTIONS_CURRENCY_RUB :Νεο Ρώσικο Ρούβλι +STR_GAME_OPTIONS_CURRENCY_MXN :Πεσος Μεξικου +STR_GAME_OPTIONS_CURRENCY_NTD :Δολλάριο Νέας Ταϊβάν +STR_GAME_OPTIONS_CURRENCY_CNY :Ρενμίνμπι Κίνας +STR_GAME_OPTIONS_CURRENCY_HKD :Δολάριο Χονγκ Κονγκ +STR_GAME_OPTIONS_CURRENCY_INR :Ρουπία Ινδίας +STR_GAME_OPTIONS_CURRENCY_IDR :Ινδονησιακή Ρουπία +STR_GAME_OPTIONS_CURRENCY_MYR :Ρινγκίτ Μαλαισίας STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Αυτόματη αποθήκευση STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Επιλογή διάκενου ανάμεσα στις αυτόματες αποθηκεύσεις diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index d575d755cb..85e7cb9eb0 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -914,42 +914,42 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}מטבע STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}בחירת מטבע ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :(GBP) לירה שטרלינג -STR_GAME_OPTIONS_CURRENCY_USD :(USD) דולר אמריקאי -STR_GAME_OPTIONS_CURRENCY_EUR :(EUR) יורו -STR_GAME_OPTIONS_CURRENCY_JPY :(JPY) ין יפני -STR_GAME_OPTIONS_CURRENCY_ATS :(ATS) שילינג אוסטרלי -STR_GAME_OPTIONS_CURRENCY_BEF :(BEF) פרנק בולגרי -STR_GAME_OPTIONS_CURRENCY_CHF :(CHF) פרנק שוודי -STR_GAME_OPTIONS_CURRENCY_CZK :(CZK) קרונה צ'כית -STR_GAME_OPTIONS_CURRENCY_DEM :(DEM) מרק גרמני -STR_GAME_OPTIONS_CURRENCY_DKK :(DKK) קרונה דנית -STR_GAME_OPTIONS_CURRENCY_ESP :(ESP) פזטה ספרדית -STR_GAME_OPTIONS_CURRENCY_FIM :(FIM) מרק פיני -STR_GAME_OPTIONS_CURRENCY_FRF :(FRF) פרנק צרפתי -STR_GAME_OPTIONS_CURRENCY_GRD :(GRD) דרכמה יוונית -STR_GAME_OPTIONS_CURRENCY_HUF :(HUF) פורינט הונגרי -STR_GAME_OPTIONS_CURRENCY_ISK :(ISK) קרונה איסלנדית -STR_GAME_OPTIONS_CURRENCY_ITL :(ITL) לירה איטלקית -STR_GAME_OPTIONS_CURRENCY_NLG :(NLG) גילדן הולנדי -STR_GAME_OPTIONS_CURRENCY_NOK :(NOK) קרונה נורווגית -STR_GAME_OPTIONS_CURRENCY_PLN :(PLN) זלוטי פולני -STR_GAME_OPTIONS_CURRENCY_RON :(RON) ליו רומני -STR_GAME_OPTIONS_CURRENCY_RUR :(RUR) רובל רוסי -STR_GAME_OPTIONS_CURRENCY_SIT :(SIT) טולר סלובני -STR_GAME_OPTIONS_CURRENCY_SEK :(SEK) קרונה שוודית -STR_GAME_OPTIONS_CURRENCY_TRY :(TRY) לירה טורקית -STR_GAME_OPTIONS_CURRENCY_SKK :(SKK) קורונה סלובקית -STR_GAME_OPTIONS_CURRENCY_BRL :(BRL) ריל ברזילאי -STR_GAME_OPTIONS_CURRENCY_EEK :(EEK) קרוני אסטוני -STR_GAME_OPTIONS_CURRENCY_LTL :(LTL) ליטאס ליטאי -STR_GAME_OPTIONS_CURRENCY_KRW :(KRW) וון דרום קוריאני -STR_GAME_OPTIONS_CURRENCY_ZAR :(ZAR) ראנד דרום אפריקאי +STR_GAME_OPTIONS_CURRENCY_GBP :לירה שטרלינג +STR_GAME_OPTIONS_CURRENCY_USD :דולר אמריקאי +STR_GAME_OPTIONS_CURRENCY_EUR :יורו +STR_GAME_OPTIONS_CURRENCY_JPY :ין יפני +STR_GAME_OPTIONS_CURRENCY_ATS :שילינג אוסטרלי +STR_GAME_OPTIONS_CURRENCY_BEF :פרנק בולגרי +STR_GAME_OPTIONS_CURRENCY_CHF :פרנק שוודי +STR_GAME_OPTIONS_CURRENCY_CZK :קרונה צ'כית +STR_GAME_OPTIONS_CURRENCY_DEM :מרק גרמני +STR_GAME_OPTIONS_CURRENCY_DKK :קרונה דנית +STR_GAME_OPTIONS_CURRENCY_ESP :פזטה ספרדית +STR_GAME_OPTIONS_CURRENCY_FIM :מרק פיני +STR_GAME_OPTIONS_CURRENCY_FRF :פרנק צרפתי +STR_GAME_OPTIONS_CURRENCY_GRD :דרכמה יוונית +STR_GAME_OPTIONS_CURRENCY_HUF :פורינט הונגרי +STR_GAME_OPTIONS_CURRENCY_ISK :קרונה איסלנדית +STR_GAME_OPTIONS_CURRENCY_ITL :לירה איטלקית +STR_GAME_OPTIONS_CURRENCY_NLG :גילדן הולנדי +STR_GAME_OPTIONS_CURRENCY_NOK :קרונה נורווגית +STR_GAME_OPTIONS_CURRENCY_PLN :זלוטי פולני +STR_GAME_OPTIONS_CURRENCY_RON :ליו רומני +STR_GAME_OPTIONS_CURRENCY_RUR :רובל רוסי +STR_GAME_OPTIONS_CURRENCY_SIT :טולר סלובני +STR_GAME_OPTIONS_CURRENCY_SEK :קרונה שוודית +STR_GAME_OPTIONS_CURRENCY_TRY :לירה טורקית +STR_GAME_OPTIONS_CURRENCY_SKK :קורונה סלובקית +STR_GAME_OPTIONS_CURRENCY_BRL :ריל ברזילאי +STR_GAME_OPTIONS_CURRENCY_EEK :קרוני אסטוני +STR_GAME_OPTIONS_CURRENCY_LTL :ליטאס ליטאי +STR_GAME_OPTIONS_CURRENCY_KRW :וון דרום קוריאני +STR_GAME_OPTIONS_CURRENCY_ZAR :ראנד דרום אפריקאי STR_GAME_OPTIONS_CURRENCY_CUSTOM :אחר... -STR_GAME_OPTIONS_CURRENCY_GEL :לארי גאורגי (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :ריאל איראני (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :רובל רוסי (RUB) -STR_GAME_OPTIONS_CURRENCY_INR :רופי הודי (INR) +STR_GAME_OPTIONS_CURRENCY_GEL :לארי גאורגי +STR_GAME_OPTIONS_CURRENCY_IRR :ריאל איראני +STR_GAME_OPTIONS_CURRENCY_RUB :רובל רוסי +STR_GAME_OPTIONS_CURRENCY_INR :רופי הודי STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}שמירה אוטומטית STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}בחר פרק זמן בין שמירות אוטומטיות diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 7fe4b7a8c5..f07d4c504c 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -1016,48 +1016,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Pénznem STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}A használt pénznem kiválasztása ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Angol Font (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Amerikai Dollár (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euró (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japán Jen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Osztrák Shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belga Frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Svájci Frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Cseh Korona (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Német Márka (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dán Korona (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spanyol Pezeta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finn Márka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Svájci Frank (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Görög Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Magyar Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Izlandi Korona (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Olasz Líra (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Holland Gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norvég Korona (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Lengyel Zlotyi (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Román Lej (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Orosz Rubel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Szlovén Tolár (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Svéd Korona (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Török Líra (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Szlovák Korona (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazil Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Észt Korona (EKK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litván Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Dél-koreai Von (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Dél-afrikai Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Angol Font +STR_GAME_OPTIONS_CURRENCY_USD :Amerikai Dollár +STR_GAME_OPTIONS_CURRENCY_EUR :Euró +STR_GAME_OPTIONS_CURRENCY_JPY :Japán Jen +STR_GAME_OPTIONS_CURRENCY_ATS :Osztrák Shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belga Frank +STR_GAME_OPTIONS_CURRENCY_CHF :Svájci Frank +STR_GAME_OPTIONS_CURRENCY_CZK :Cseh Korona +STR_GAME_OPTIONS_CURRENCY_DEM :Német Márka +STR_GAME_OPTIONS_CURRENCY_DKK :Dán Korona +STR_GAME_OPTIONS_CURRENCY_ESP :Spanyol Pezeta +STR_GAME_OPTIONS_CURRENCY_FIM :Finn Márka +STR_GAME_OPTIONS_CURRENCY_FRF :Svájci Frank +STR_GAME_OPTIONS_CURRENCY_GRD :Görög Drachma +STR_GAME_OPTIONS_CURRENCY_HUF :Magyar Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Izlandi Korona +STR_GAME_OPTIONS_CURRENCY_ITL :Olasz Líra +STR_GAME_OPTIONS_CURRENCY_NLG :Holland Gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Norvég Korona +STR_GAME_OPTIONS_CURRENCY_PLN :Lengyel Zlotyi +STR_GAME_OPTIONS_CURRENCY_RON :Román Lej +STR_GAME_OPTIONS_CURRENCY_RUR :Orosz Rubel +STR_GAME_OPTIONS_CURRENCY_SIT :Szlovén Tolár +STR_GAME_OPTIONS_CURRENCY_SEK :Svéd Korona +STR_GAME_OPTIONS_CURRENCY_TRY :Török Líra +STR_GAME_OPTIONS_CURRENCY_SKK :Szlovák Korona +STR_GAME_OPTIONS_CURRENCY_BRL :Brazil Real +STR_GAME_OPTIONS_CURRENCY_EEK :Észt Korona +STR_GAME_OPTIONS_CURRENCY_LTL :Litván Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Dél-koreai Von +STR_GAME_OPTIONS_CURRENCY_ZAR :Dél-afrikai Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Saját... -STR_GAME_OPTIONS_CURRENCY_GEL :Grúz Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iráni Riál (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Új Orosz Rubel (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexikói Peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Új Tajvani Dollár (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Kínai Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongi Dollár (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indiai Rúpia (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonéz rúpia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Maláj ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Grúz Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iráni Riál +STR_GAME_OPTIONS_CURRENCY_RUB :Új Orosz Rubel +STR_GAME_OPTIONS_CURRENCY_MXN :Mexikói Peso +STR_GAME_OPTIONS_CURRENCY_NTD :Új Tajvani Dollár +STR_GAME_OPTIONS_CURRENCY_CNY :Kínai Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongi Dollár +STR_GAME_OPTIONS_CURRENCY_INR :Indiai Rúpia +STR_GAME_OPTIONS_CURRENCY_IDR :Indonéz rúpia +STR_GAME_OPTIONS_CURRENCY_MYR :Maláj ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatikus mentés STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Az automatikus mentések közötti időtartam kiválasztása diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index c9c56ed5e7..f7881e1fda 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -864,40 +864,40 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldmi STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Val á gjaldmiðli ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Sterlingspund (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Bandaríkjadalur (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Evra (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanskt jen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Austurrískur skildingur (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgískur franki (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Svissneskur franki (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tékknesk kóróna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Þýskt mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dönsk króna (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spænskir pesetar (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finnskt mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franskur franki (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grísk drakma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungversk forinta (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Íslensk króna (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Ítölsk líra (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Hollensk gyllini (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norsk króna (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Pólskt slot (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rúmensk leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rússnesk rúbla (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slóvensk tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Sænsk króna (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Tyrknesk líra (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slóvakísk kórúna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasilísk ríla (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Eistnesk Króna (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litháenskt litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Suðurkóreskt vonn (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Suður-Afrískt rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Sterlingspund +STR_GAME_OPTIONS_CURRENCY_USD :Bandaríkjadalur +STR_GAME_OPTIONS_CURRENCY_EUR :Evra +STR_GAME_OPTIONS_CURRENCY_JPY :Japanskt jen +STR_GAME_OPTIONS_CURRENCY_ATS :Austurrískur skildingur +STR_GAME_OPTIONS_CURRENCY_BEF :Belgískur franki +STR_GAME_OPTIONS_CURRENCY_CHF :Svissneskur franki +STR_GAME_OPTIONS_CURRENCY_CZK :Tékknesk kóróna +STR_GAME_OPTIONS_CURRENCY_DEM :Þýskt mark +STR_GAME_OPTIONS_CURRENCY_DKK :Dönsk króna +STR_GAME_OPTIONS_CURRENCY_ESP :Spænskir pesetar +STR_GAME_OPTIONS_CURRENCY_FIM :Finnskt mark +STR_GAME_OPTIONS_CURRENCY_FRF :Franskur franki +STR_GAME_OPTIONS_CURRENCY_GRD :Grísk drakma +STR_GAME_OPTIONS_CURRENCY_HUF :Ungversk forinta +STR_GAME_OPTIONS_CURRENCY_ISK :Íslensk króna +STR_GAME_OPTIONS_CURRENCY_ITL :Ítölsk líra +STR_GAME_OPTIONS_CURRENCY_NLG :Hollensk gyllini +STR_GAME_OPTIONS_CURRENCY_NOK :Norsk króna +STR_GAME_OPTIONS_CURRENCY_PLN :Pólskt slot +STR_GAME_OPTIONS_CURRENCY_RON :Rúmensk leu +STR_GAME_OPTIONS_CURRENCY_RUR :Rússnesk rúbla +STR_GAME_OPTIONS_CURRENCY_SIT :Slóvensk tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Sænsk króna +STR_GAME_OPTIONS_CURRENCY_TRY :Tyrknesk líra +STR_GAME_OPTIONS_CURRENCY_SKK :Slóvakísk kórúna +STR_GAME_OPTIONS_CURRENCY_BRL :Brasilísk ríla +STR_GAME_OPTIONS_CURRENCY_EEK :Eistnesk Króna +STR_GAME_OPTIONS_CURRENCY_LTL :Litháenskt litas +STR_GAME_OPTIONS_CURRENCY_KRW :Suðurkóreskt vonn +STR_GAME_OPTIONS_CURRENCY_ZAR :Suður-Afrískt rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sérsniðinn... STR_GAME_OPTIONS_CURRENCY_GEL :Lari (Gel) -STR_GAME_OPTIONS_CURRENCY_IRR :Íranskt ríal (IRR) +STR_GAME_OPTIONS_CURRENCY_IRR :Íranskt ríal STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Sjálfvirk vistun STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tíðni sjálfvirkra vistana diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 2eb194b43f..56f56e5864 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -937,48 +937,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Mata uan STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Pilih mata uang ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Poundsterling (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen Jepang (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Shilling Austria (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franc Belgia (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franc Swiss (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Ceko (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Krone Denmark (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Spanyol (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Markka Finlandia (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc Prancis (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Yunani (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint Hungaria (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Krona Islandia (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italian (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Krone Norwegia (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Polandia (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Romania (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rubel Rusia (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slovenia (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Krona Swedia (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turki (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slovakia (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real Brazilia (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Estonia (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lithuania (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won Korea Selatan (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Afrika Selatan (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Poundsterling +STR_GAME_OPTIONS_CURRENCY_USD :Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen Jepang +STR_GAME_OPTIONS_CURRENCY_ATS :Shilling Austria +STR_GAME_OPTIONS_CURRENCY_BEF :Franc Belgia +STR_GAME_OPTIONS_CURRENCY_CHF :Franc Swiss +STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Ceko +STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark +STR_GAME_OPTIONS_CURRENCY_DKK :Krone Denmark +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Spanyol +STR_GAME_OPTIONS_CURRENCY_FIM :Markka Finlandia +STR_GAME_OPTIONS_CURRENCY_FRF :Franc Prancis +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Yunani +STR_GAME_OPTIONS_CURRENCY_HUF :Forint Hungaria +STR_GAME_OPTIONS_CURRENCY_ISK :Krona Islandia +STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italian +STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder +STR_GAME_OPTIONS_CURRENCY_NOK :Krone Norwegia +STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Polandia +STR_GAME_OPTIONS_CURRENCY_RON :Leu Romania +STR_GAME_OPTIONS_CURRENCY_RUR :Rubel Rusia +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slovenia +STR_GAME_OPTIONS_CURRENCY_SEK :Krona Swedia +STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turki +STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slovakia +STR_GAME_OPTIONS_CURRENCY_BRL :Real Brazilia +STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Estonia +STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lithuania +STR_GAME_OPTIONS_CURRENCY_KRW :Won Korea Selatan +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Afrika Selatan STR_GAME_OPTIONS_CURRENCY_CUSTOM :Atur sendiri... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Rubel Rusia Baru (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexiko(MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Dollar Taiwan Baru (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Cina (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dollar Hong Kong (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :India Rupee (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupiah Indonesia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysia (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran +STR_GAME_OPTIONS_CURRENCY_RUB :Rubel Rusia Baru +STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexiko +STR_GAME_OPTIONS_CURRENCY_NTD :Dollar Taiwan Baru +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Cina +STR_GAME_OPTIONS_CURRENCY_HKD :Dollar Hong Kong +STR_GAME_OPTIONS_CURRENCY_INR :India Rupee +STR_GAME_OPTIONS_CURRENCY_IDR :Rupiah Indonesia +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysia STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Simpan Otomatis STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pilih selang waktu permainan otomatis disimpan diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 9a682e241a..bcc07c5d71 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -926,48 +926,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Aonaid a STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Aonaid airgeadra a roghnú ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Punt na Breataine (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dollar Mheiriceá (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen na Seapáine (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Scilling na hOstaire (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franc na Beilge (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franc na hEilbhéise (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Phoblacht na Seice (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Krone na Danmhairge (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta na Spáinne (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Markka na Fionlainne (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc na Fraince (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachma na Gréige (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint na hUngáire (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Krona na hÍoslainne (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira na hIodáile (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Guilder na hÍsiltíre (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Krone na hIorua (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Złoty na Polainne (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu na Rómáine (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rúbal na Rúise (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar na Slóivéine (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Krona na Sualainne (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira na Tuirce (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Koruna na Slováice (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real na Brasaíle (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Krooni na hEastóine (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas na Liotuáine (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won na Cóiré Theas (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand na hAfraice Theas (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Punt na Breataine +STR_GAME_OPTIONS_CURRENCY_USD :Dollar Mheiriceá +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen na Seapáine +STR_GAME_OPTIONS_CURRENCY_ATS :Scilling na hOstaire +STR_GAME_OPTIONS_CURRENCY_BEF :Franc na Beilge +STR_GAME_OPTIONS_CURRENCY_CHF :Franc na hEilbhéise +STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Phoblacht na Seice +STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark +STR_GAME_OPTIONS_CURRENCY_DKK :Krone na Danmhairge +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta na Spáinne +STR_GAME_OPTIONS_CURRENCY_FIM :Markka na Fionlainne +STR_GAME_OPTIONS_CURRENCY_FRF :Franc na Fraince +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma na Gréige +STR_GAME_OPTIONS_CURRENCY_HUF :Forint na hUngáire +STR_GAME_OPTIONS_CURRENCY_ISK :Krona na hÍoslainne +STR_GAME_OPTIONS_CURRENCY_ITL :Lira na hIodáile +STR_GAME_OPTIONS_CURRENCY_NLG :Guilder na hÍsiltíre +STR_GAME_OPTIONS_CURRENCY_NOK :Krone na hIorua +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty na Polainne +STR_GAME_OPTIONS_CURRENCY_RON :Leu na Rómáine +STR_GAME_OPTIONS_CURRENCY_RUR :Rúbal na Rúise +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar na Slóivéine +STR_GAME_OPTIONS_CURRENCY_SEK :Krona na Sualainne +STR_GAME_OPTIONS_CURRENCY_TRY :Lira na Tuirce +STR_GAME_OPTIONS_CURRENCY_SKK :Koruna na Slováice +STR_GAME_OPTIONS_CURRENCY_BRL :Real na Brasaíle +STR_GAME_OPTIONS_CURRENCY_EEK :Krooni na hEastóine +STR_GAME_OPTIONS_CURRENCY_LTL :Litas na Liotuáine +STR_GAME_OPTIONS_CURRENCY_KRW :Won na Cóiré Theas +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand na hAfraice Theas STR_GAME_OPTIONS_CURRENCY_CUSTOM :Saincheaptha... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari na Seoirsia (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial na hIaráine (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Rúbal Nua na Rúise (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mheicsiceo (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Dollar Nua na Téaváine (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi na Síne (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dollar Hong Cong (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rúipí na hIndia (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupiah na hIndinéise (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit na Malaeisia (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari na Seoirsia +STR_GAME_OPTIONS_CURRENCY_IRR :Rial na hIaráine +STR_GAME_OPTIONS_CURRENCY_RUB :Rúbal Nua na Rúise +STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mheicsiceo +STR_GAME_OPTIONS_CURRENCY_NTD :Dollar Nua na Téaváine +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi na Síne +STR_GAME_OPTIONS_CURRENCY_HKD :Dollar Hong Cong +STR_GAME_OPTIONS_CURRENCY_INR :Rúipí na hIndia +STR_GAME_OPTIONS_CURRENCY_IDR :Rupiah na hIndinéise +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit na Malaeisia STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Uathshábháil STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Roghnaigh eatramh idir uathshábhálacha an chluiche diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 0fc5c1c032..393ec717be 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -954,48 +954,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selezione della valuta ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Sterlina britannica (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dollaro americano (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen giapponese (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Scellino austriaco (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franco belga (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franco svizzero (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Corona ceca (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marco tedesco (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Corona danese (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta spagnola (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marco finlandese (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franco francese (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Dracma greca (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint ungherese (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Corona islandese (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Fiorino olandese (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Corona norvegese (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zloty polacco (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu rumeno (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rublo russo (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar sloveno (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Corona svedese (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Corona slovacca (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real brasiliano (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Corona éstone (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituano (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won sudcoreano (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Sterlina britannica +STR_GAME_OPTIONS_CURRENCY_USD :Dollaro americano +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen giapponese +STR_GAME_OPTIONS_CURRENCY_ATS :Scellino austriaco +STR_GAME_OPTIONS_CURRENCY_BEF :Franco belga +STR_GAME_OPTIONS_CURRENCY_CHF :Franco svizzero +STR_GAME_OPTIONS_CURRENCY_CZK :Corona ceca +STR_GAME_OPTIONS_CURRENCY_DEM :Marco tedesco +STR_GAME_OPTIONS_CURRENCY_DKK :Corona danese +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta spagnola +STR_GAME_OPTIONS_CURRENCY_FIM :Marco finlandese +STR_GAME_OPTIONS_CURRENCY_FRF :Franco francese +STR_GAME_OPTIONS_CURRENCY_GRD :Dracma greca +STR_GAME_OPTIONS_CURRENCY_HUF :Forint ungherese +STR_GAME_OPTIONS_CURRENCY_ISK :Corona islandese +STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana +STR_GAME_OPTIONS_CURRENCY_NLG :Fiorino olandese +STR_GAME_OPTIONS_CURRENCY_NOK :Corona norvegese +STR_GAME_OPTIONS_CURRENCY_PLN :Zloty polacco +STR_GAME_OPTIONS_CURRENCY_RON :Leu rumeno +STR_GAME_OPTIONS_CURRENCY_RUR :Rublo russo +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar sloveno +STR_GAME_OPTIONS_CURRENCY_SEK :Corona svedese +STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca +STR_GAME_OPTIONS_CURRENCY_SKK :Corona slovacca +STR_GAME_OPTIONS_CURRENCY_BRL :Real brasiliano +STR_GAME_OPTIONS_CURRENCY_EEK :Corona éstone +STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituano +STR_GAME_OPTIONS_CURRENCY_KRW :Won sudcoreano +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizzata... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgiano (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial iraniano (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nuovo rublo russo (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso messicano (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nuovo dollaro taiwanese (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi cinese (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dollaro di Hong Kong (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rupia indiana (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesiana (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malaysiano (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgiano +STR_GAME_OPTIONS_CURRENCY_IRR :Rial iraniano +STR_GAME_OPTIONS_CURRENCY_RUB :Nuovo rublo russo +STR_GAME_OPTIONS_CURRENCY_MXN :Peso messicano +STR_GAME_OPTIONS_CURRENCY_NTD :Nuovo dollaro taiwanese +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi cinese +STR_GAME_OPTIONS_CURRENCY_HKD :Dollaro di Hong Kong +STR_GAME_OPTIONS_CURRENCY_INR :Rupia indiana +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesiana +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malaysiano STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvataggi automatici STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Seleziona l'intervallo fra i salvataggi automatici della partita diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 83682f399f..119922f431 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -952,48 +952,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}通貨 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}通貨単位の選択 ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :英ポンド(£) -STR_GAME_OPTIONS_CURRENCY_USD :米ドル($) -STR_GAME_OPTIONS_CURRENCY_EUR :欧州連合・ユーロ(€) -STR_GAME_OPTIONS_CURRENCY_JPY :日本円(¥) -STR_GAME_OPTIONS_CURRENCY_ATS :オーストリア・シリング(ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :ベルギー・フラン(BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :スイス・フラン(CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :チェコ・コルナ(CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :ドイツ・マルク(DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :デンマーク・クローネ(DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :スペイン・ペセタ(₧) -STR_GAME_OPTIONS_CURRENCY_FIM :フィンランド・マーカ(FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :フランス・フラン(₣) -STR_GAME_OPTIONS_CURRENCY_GRD :ギリシャ・ドラクマ(₯) -STR_GAME_OPTIONS_CURRENCY_HUF :ハンガリー・フォリント(HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :アイスランド・クローナ(ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :イタリア・リラ(ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :オランダ・ギルダー(ƒ) -STR_GAME_OPTIONS_CURRENCY_NOK :ノルウェー・クローネ(NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :ポーランド・ズウォティ(PLN) -STR_GAME_OPTIONS_CURRENCY_RON :ルーマニア・レウ(RON) -STR_GAME_OPTIONS_CURRENCY_RUR :ロシア・ルーブル(₽) -STR_GAME_OPTIONS_CURRENCY_SIT :スロベニア・トラール(SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :スウェーデン・クローナ(SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :トルコ・リラ(₺) -STR_GAME_OPTIONS_CURRENCY_SKK :スロバキア・コルナ(SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :ブラジル・レアル(R$) -STR_GAME_OPTIONS_CURRENCY_EEK :エストニア・クローン(EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :リトアニア・リタス(LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :韓国・ウォン(₩) -STR_GAME_OPTIONS_CURRENCY_ZAR :南アフリカランド (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :英ポンド +STR_GAME_OPTIONS_CURRENCY_USD :米ドル +STR_GAME_OPTIONS_CURRENCY_EUR :欧州連合・ユーロ +STR_GAME_OPTIONS_CURRENCY_JPY :日本円 +STR_GAME_OPTIONS_CURRENCY_ATS :オーストリア・シリング +STR_GAME_OPTIONS_CURRENCY_BEF :ベルギー・フラン +STR_GAME_OPTIONS_CURRENCY_CHF :スイス・フラン +STR_GAME_OPTIONS_CURRENCY_CZK :チェコ・コルナ +STR_GAME_OPTIONS_CURRENCY_DEM :ドイツ・マルク +STR_GAME_OPTIONS_CURRENCY_DKK :デンマーク・クローネ +STR_GAME_OPTIONS_CURRENCY_ESP :スペイン・ペセタ +STR_GAME_OPTIONS_CURRENCY_FIM :フィンランド・マーカ +STR_GAME_OPTIONS_CURRENCY_FRF :フランス・フラン +STR_GAME_OPTIONS_CURRENCY_GRD :ギリシャ・ドラクマ +STR_GAME_OPTIONS_CURRENCY_HUF :ハンガリー・フォリント +STR_GAME_OPTIONS_CURRENCY_ISK :アイスランド・クローナ +STR_GAME_OPTIONS_CURRENCY_ITL :イタリア・リラ +STR_GAME_OPTIONS_CURRENCY_NLG :オランダ・ギルダー +STR_GAME_OPTIONS_CURRENCY_NOK :ノルウェー・クローネ +STR_GAME_OPTIONS_CURRENCY_PLN :ポーランド・ズウォティ +STR_GAME_OPTIONS_CURRENCY_RON :ルーマニア・レウ +STR_GAME_OPTIONS_CURRENCY_RUR :ロシア・ルーブル +STR_GAME_OPTIONS_CURRENCY_SIT :スロベニア・トラール +STR_GAME_OPTIONS_CURRENCY_SEK :スウェーデン・クローナ +STR_GAME_OPTIONS_CURRENCY_TRY :トルコ・リラ +STR_GAME_OPTIONS_CURRENCY_SKK :スロバキア・コルナ +STR_GAME_OPTIONS_CURRENCY_BRL :ブラジル・レアル +STR_GAME_OPTIONS_CURRENCY_EEK :エストニア・クローン +STR_GAME_OPTIONS_CURRENCY_LTL :リトアニア・リタス +STR_GAME_OPTIONS_CURRENCY_KRW :韓国・ウォン +STR_GAME_OPTIONS_CURRENCY_ZAR :南アフリカランド STR_GAME_OPTIONS_CURRENCY_CUSTOM :カスタム… -STR_GAME_OPTIONS_CURRENCY_GEL :グルジア・ラリー(GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :イラン・リアル(IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :新ロシア・ルーブル(₽) -STR_GAME_OPTIONS_CURRENCY_MXN :メキシコ・ペソ(MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :新台湾ドル(NT$) -STR_GAME_OPTIONS_CURRENCY_CNY :中国・人民元(CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :香港ドル(HK$) -STR_GAME_OPTIONS_CURRENCY_INR :インド・ルピー(₹) -STR_GAME_OPTIONS_CURRENCY_IDR :インドネシア・ルピア(IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :マレーシア・リンギット(MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :グルジア・ラリー +STR_GAME_OPTIONS_CURRENCY_IRR :イラン・リアル +STR_GAME_OPTIONS_CURRENCY_RUB :新ロシア・ルーブル +STR_GAME_OPTIONS_CURRENCY_MXN :メキシコ・ペソ +STR_GAME_OPTIONS_CURRENCY_NTD :新台湾ドル +STR_GAME_OPTIONS_CURRENCY_CNY :中国・人民元 +STR_GAME_OPTIONS_CURRENCY_HKD :香港ドル +STR_GAME_OPTIONS_CURRENCY_INR :インド・ルピー +STR_GAME_OPTIONS_CURRENCY_IDR :インドネシア・ルピア +STR_GAME_OPTIONS_CURRENCY_MYR :マレーシア・リンギット STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}オートセーブ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}自動保存の間隔を選択します diff --git a/src/lang/korean.txt b/src/lang/korean.txt index d6d01ff1cc..121a645e98 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -953,48 +953,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}화폐 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}화폐 단위 선택 ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :영국 파운드 (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :미국 달러 (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :유로 (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :일본 엔 (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :오스트리아 실링 (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :벨기에 프랑크 (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :스위스 프랑크 (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :체코 코루나 (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :독일 마르크 (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :덴마크 크로네 (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :스페인 페세타 (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :핀란드 마르카 (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :프랑스 프랑크 (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :그리스 드라크마 (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :헝가리 프로인트 (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :아이슬란드 크로나 (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :이탈리아 리라 (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :네덜란드 길더 (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :노르웨이 크로네 (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :폴란드 즈워티 (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :루마니아 레우 (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :러시아 루블 (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :슬로바키아 톨라 (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :스웨덴 크로나 (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :터키 리라 (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :슬로바키아 코루나 (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :브라질 레알 (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :에스토니아 크룬 (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :리투아니아 리타스 (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :대한민국 원 (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :남아프리카공화국 자르 (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :영국 파운드 +STR_GAME_OPTIONS_CURRENCY_USD :미국 달러 +STR_GAME_OPTIONS_CURRENCY_EUR :유로 +STR_GAME_OPTIONS_CURRENCY_JPY :일본 엔 +STR_GAME_OPTIONS_CURRENCY_ATS :오스트리아 실링 +STR_GAME_OPTIONS_CURRENCY_BEF :벨기에 프랑크 +STR_GAME_OPTIONS_CURRENCY_CHF :스위스 프랑크 +STR_GAME_OPTIONS_CURRENCY_CZK :체코 코루나 +STR_GAME_OPTIONS_CURRENCY_DEM :독일 마르크 +STR_GAME_OPTIONS_CURRENCY_DKK :덴마크 크로네 +STR_GAME_OPTIONS_CURRENCY_ESP :스페인 페세타 +STR_GAME_OPTIONS_CURRENCY_FIM :핀란드 마르카 +STR_GAME_OPTIONS_CURRENCY_FRF :프랑스 프랑크 +STR_GAME_OPTIONS_CURRENCY_GRD :그리스 드라크마 +STR_GAME_OPTIONS_CURRENCY_HUF :헝가리 프로인트 +STR_GAME_OPTIONS_CURRENCY_ISK :아이슬란드 크로나 +STR_GAME_OPTIONS_CURRENCY_ITL :이탈리아 리라 +STR_GAME_OPTIONS_CURRENCY_NLG :네덜란드 길더 +STR_GAME_OPTIONS_CURRENCY_NOK :노르웨이 크로네 +STR_GAME_OPTIONS_CURRENCY_PLN :폴란드 즈워티 +STR_GAME_OPTIONS_CURRENCY_RON :루마니아 레우 +STR_GAME_OPTIONS_CURRENCY_RUR :러시아 루블 +STR_GAME_OPTIONS_CURRENCY_SIT :슬로바키아 톨라 +STR_GAME_OPTIONS_CURRENCY_SEK :스웨덴 크로나 +STR_GAME_OPTIONS_CURRENCY_TRY :터키 리라 +STR_GAME_OPTIONS_CURRENCY_SKK :슬로바키아 코루나 +STR_GAME_OPTIONS_CURRENCY_BRL :브라질 레알 +STR_GAME_OPTIONS_CURRENCY_EEK :에스토니아 크룬 +STR_GAME_OPTIONS_CURRENCY_LTL :리투아니아 리타스 +STR_GAME_OPTIONS_CURRENCY_KRW :대한민국 원 +STR_GAME_OPTIONS_CURRENCY_ZAR :남아프리카공화국 자르 STR_GAME_OPTIONS_CURRENCY_CUSTOM :사용자 설정... -STR_GAME_OPTIONS_CURRENCY_GEL :그루지야 라리 (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :이란 리알 (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :신 러시아 루블 (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :멕시코 페소 (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :신 타이완 달러 (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :중국 위안 (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :홍콩 달러 (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :인도 루피 (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :인도네시아 루피아 (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :말레이시아 링깃 (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :그루지야 라리 +STR_GAME_OPTIONS_CURRENCY_IRR :이란 리알 +STR_GAME_OPTIONS_CURRENCY_RUB :신 러시아 루블 +STR_GAME_OPTIONS_CURRENCY_MXN :멕시코 페소 +STR_GAME_OPTIONS_CURRENCY_NTD :신 타이완 달러 +STR_GAME_OPTIONS_CURRENCY_CNY :중국 위안 +STR_GAME_OPTIONS_CURRENCY_HKD :홍콩 달러 +STR_GAME_OPTIONS_CURRENCY_INR :인도 루피 +STR_GAME_OPTIONS_CURRENCY_IDR :인도네시아 루피아 +STR_GAME_OPTIONS_CURRENCY_MYR :말레이시아 링깃 STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}자동 저장 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}게임 자동 저장 간격을 선택 diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 33bee818cf..d50d731f9d 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -1089,41 +1089,41 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unitates STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Electio unitatum nummi ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britannica (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dollarium CFA (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Ien Iaponicus (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Scellinus Austriacus (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Francus Belgicus (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Francus Helveticus (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Corona Cecha (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marca Germanica (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Corona Danica (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Hispanica (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marca Finnica (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Francus Francogallicus (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Graeca (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florenus Hungaricus (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Corona Islandica (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Libra Italiana (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Florenus Batavicus (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Corona Norvegica (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Polonica (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Romanicus (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rubelus Russicus (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Dollarium Slovenicum (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Corona Suecica (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Libra Turcica (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Corona Slovaca (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Regalis Brasilica (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Corona Estonica (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lithuanica (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Von Coreanus (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Randum Africae Australis (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britannica +STR_GAME_OPTIONS_CURRENCY_USD :Dollarium CFA +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Ien Iaponicus +STR_GAME_OPTIONS_CURRENCY_ATS :Scellinus Austriacus +STR_GAME_OPTIONS_CURRENCY_BEF :Francus Belgicus +STR_GAME_OPTIONS_CURRENCY_CHF :Francus Helveticus +STR_GAME_OPTIONS_CURRENCY_CZK :Corona Cecha +STR_GAME_OPTIONS_CURRENCY_DEM :Marca Germanica +STR_GAME_OPTIONS_CURRENCY_DKK :Corona Danica +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Hispanica +STR_GAME_OPTIONS_CURRENCY_FIM :Marca Finnica +STR_GAME_OPTIONS_CURRENCY_FRF :Francus Francogallicus +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Graeca +STR_GAME_OPTIONS_CURRENCY_HUF :Florenus Hungaricus +STR_GAME_OPTIONS_CURRENCY_ISK :Corona Islandica +STR_GAME_OPTIONS_CURRENCY_ITL :Libra Italiana +STR_GAME_OPTIONS_CURRENCY_NLG :Florenus Batavicus +STR_GAME_OPTIONS_CURRENCY_NOK :Corona Norvegica +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Polonica +STR_GAME_OPTIONS_CURRENCY_RON :Leu Romanicus +STR_GAME_OPTIONS_CURRENCY_RUR :Rubelus Russicus +STR_GAME_OPTIONS_CURRENCY_SIT :Dollarium Slovenicum +STR_GAME_OPTIONS_CURRENCY_SEK :Corona Suecica +STR_GAME_OPTIONS_CURRENCY_TRY :Libra Turcica +STR_GAME_OPTIONS_CURRENCY_SKK :Corona Slovaca +STR_GAME_OPTIONS_CURRENCY_BRL :Regalis Brasilica +STR_GAME_OPTIONS_CURRENCY_EEK :Corona Estonica +STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lithuanica +STR_GAME_OPTIONS_CURRENCY_KRW :Von Coreanus +STR_GAME_OPTIONS_CURRENCY_ZAR :Randum Africae Australis STR_GAME_OPTIONS_CURRENCY_CUSTOM :Propria... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiana (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Regalis Iranica (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Novus Rubelus Russicus (RUB) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiana +STR_GAME_OPTIONS_CURRENCY_IRR :Regalis Iranica +STR_GAME_OPTIONS_CURRENCY_RUB :Novus Rubelus Russicus STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Servare automatice STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Eligere crebritatem automatice ludum servandi diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index bc521dba6d..e029ffbed2 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -939,48 +939,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Naudas v STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Naudas vienību izvēle ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Lielbritānijas sterliņu mārciņas (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :ASV dolāri (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Eiro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japānas jenas (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Austrijas šiliņi (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Beļģijas franki (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Šveices franki (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Čehijas kronas (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Vācijas markas (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dānijas kronas (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spānijas pesetas (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Somijas markas (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Francijas franki (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grieķijas drahmas (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungārijas forinti (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Īslandes kronas (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Itālijas liras (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Nīderlandes guldeņi (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norvēģijas kronas (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polijas zloti (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumānijas lejas (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Krievijas rubļi (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovēnijas tolāri (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Zviedrijas kronas (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turcijas liras (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovākijas kronas (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazīlijas reāli (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Igaunijas kronas (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lietuvas liti (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Dienvidkorejas vonas (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Dienvidāfrikas rendi (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Lielbritānijas sterliņu mārciņas +STR_GAME_OPTIONS_CURRENCY_USD :ASV dolāri +STR_GAME_OPTIONS_CURRENCY_EUR :Eiro +STR_GAME_OPTIONS_CURRENCY_JPY :Japānas jenas +STR_GAME_OPTIONS_CURRENCY_ATS :Austrijas šiliņi +STR_GAME_OPTIONS_CURRENCY_BEF :Beļģijas franki +STR_GAME_OPTIONS_CURRENCY_CHF :Šveices franki +STR_GAME_OPTIONS_CURRENCY_CZK :Čehijas kronas +STR_GAME_OPTIONS_CURRENCY_DEM :Vācijas markas +STR_GAME_OPTIONS_CURRENCY_DKK :Dānijas kronas +STR_GAME_OPTIONS_CURRENCY_ESP :Spānijas pesetas +STR_GAME_OPTIONS_CURRENCY_FIM :Somijas markas +STR_GAME_OPTIONS_CURRENCY_FRF :Francijas franki +STR_GAME_OPTIONS_CURRENCY_GRD :Grieķijas drahmas +STR_GAME_OPTIONS_CURRENCY_HUF :Ungārijas forinti +STR_GAME_OPTIONS_CURRENCY_ISK :Īslandes kronas +STR_GAME_OPTIONS_CURRENCY_ITL :Itālijas liras +STR_GAME_OPTIONS_CURRENCY_NLG :Nīderlandes guldeņi +STR_GAME_OPTIONS_CURRENCY_NOK :Norvēģijas kronas +STR_GAME_OPTIONS_CURRENCY_PLN :Polijas zloti +STR_GAME_OPTIONS_CURRENCY_RON :Rumānijas lejas +STR_GAME_OPTIONS_CURRENCY_RUR :Krievijas rubļi +STR_GAME_OPTIONS_CURRENCY_SIT :Slovēnijas tolāri +STR_GAME_OPTIONS_CURRENCY_SEK :Zviedrijas kronas +STR_GAME_OPTIONS_CURRENCY_TRY :Turcijas liras +STR_GAME_OPTIONS_CURRENCY_SKK :Slovākijas kronas +STR_GAME_OPTIONS_CURRENCY_BRL :Brazīlijas reāli +STR_GAME_OPTIONS_CURRENCY_EEK :Igaunijas kronas +STR_GAME_OPTIONS_CURRENCY_LTL :Lietuvas liti +STR_GAME_OPTIONS_CURRENCY_KRW :Dienvidkorejas vonas +STR_GAME_OPTIONS_CURRENCY_ZAR :Dienvidāfrikas rendi STR_GAME_OPTIONS_CURRENCY_CUSTOM :Cita... -STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijas lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Irānas riāli (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Jaunais Krievijas rublis (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksikas peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Jaunais Taivānas dolārs (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Ķīnas juaņa (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Honkongas dolārs (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indijas rūpija (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonēzijas rūpija (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaizijas Ringits (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijas lari +STR_GAME_OPTIONS_CURRENCY_IRR :Irānas riāli +STR_GAME_OPTIONS_CURRENCY_RUB :Jaunais Krievijas rublis +STR_GAME_OPTIONS_CURRENCY_MXN :Meksikas peso +STR_GAME_OPTIONS_CURRENCY_NTD :Jaunais Taivānas dolārs +STR_GAME_OPTIONS_CURRENCY_CNY :Ķīnas juaņa +STR_GAME_OPTIONS_CURRENCY_HKD :Honkongas dolārs +STR_GAME_OPTIONS_CURRENCY_INR :Indijas rūpija +STR_GAME_OPTIONS_CURRENCY_IDR :Indonēzijas rūpija +STR_GAME_OPTIONS_CURRENCY_MYR :Malaizijas Ringits STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automātiskā saglabāšana STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izvēlēties spēles automātiskās saglabāšanas starplaikus diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index ea5a2b4aa2..682c988f2d 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -1137,48 +1137,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valiuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valiutos pasirinkimas ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Svarai sterlingų (£) -STR_GAME_OPTIONS_CURRENCY_USD :Amerikos Doleris ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Eurai (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Japonijos jenos (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Austrijos šilingai (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgijos frankai (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Šveicarijos frankai (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Čekijos kronos (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Vokietijos markės (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danijos kronos (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Ispanijos pesetos (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Suomijos markės (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Prancūzijos frankai (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Graikijos drachmos (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Vengrijos forintai (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandijos kronos (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italijos liros (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Olandijos guldenai (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norvegijos kronos (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Lenkijos zlotai (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumunijos lėjos (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rusijos rubliai (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovėnijos tolarai (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Švedijos kronos (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkijos liros (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakijos kronos (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilijos realai (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estijos kronos (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lietuvos Respublikos litai (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Pietų Korėjos vonai (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Pietų Afrikos Respublikos randas (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Svarai sterlingų +STR_GAME_OPTIONS_CURRENCY_USD :Amerikos Doleris +STR_GAME_OPTIONS_CURRENCY_EUR :Eurai +STR_GAME_OPTIONS_CURRENCY_JPY :Japonijos jenos +STR_GAME_OPTIONS_CURRENCY_ATS :Austrijos šilingai +STR_GAME_OPTIONS_CURRENCY_BEF :Belgijos frankai +STR_GAME_OPTIONS_CURRENCY_CHF :Šveicarijos frankai +STR_GAME_OPTIONS_CURRENCY_CZK :Čekijos kronos +STR_GAME_OPTIONS_CURRENCY_DEM :Vokietijos markės +STR_GAME_OPTIONS_CURRENCY_DKK :Danijos kronos +STR_GAME_OPTIONS_CURRENCY_ESP :Ispanijos pesetos +STR_GAME_OPTIONS_CURRENCY_FIM :Suomijos markės +STR_GAME_OPTIONS_CURRENCY_FRF :Prancūzijos frankai +STR_GAME_OPTIONS_CURRENCY_GRD :Graikijos drachmos +STR_GAME_OPTIONS_CURRENCY_HUF :Vengrijos forintai +STR_GAME_OPTIONS_CURRENCY_ISK :Islandijos kronos +STR_GAME_OPTIONS_CURRENCY_ITL :Italijos liros +STR_GAME_OPTIONS_CURRENCY_NLG :Olandijos guldenai +STR_GAME_OPTIONS_CURRENCY_NOK :Norvegijos kronos +STR_GAME_OPTIONS_CURRENCY_PLN :Lenkijos zlotai +STR_GAME_OPTIONS_CURRENCY_RON :Rumunijos lėjos +STR_GAME_OPTIONS_CURRENCY_RUR :Rusijos rubliai +STR_GAME_OPTIONS_CURRENCY_SIT :Slovėnijos tolarai +STR_GAME_OPTIONS_CURRENCY_SEK :Švedijos kronos +STR_GAME_OPTIONS_CURRENCY_TRY :Turkijos liros +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakijos kronos +STR_GAME_OPTIONS_CURRENCY_BRL :Brazilijos realai +STR_GAME_OPTIONS_CURRENCY_EEK :Estijos kronos +STR_GAME_OPTIONS_CURRENCY_LTL :Lietuvos Respublikos litai +STR_GAME_OPTIONS_CURRENCY_KRW :Pietų Korėjos vonai +STR_GAME_OPTIONS_CURRENCY_ZAR :Pietų Afrikos Respublikos randas STR_GAME_OPTIONS_CURRENCY_CUSTOM :Kita... -STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijos lariai (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Irano rialai (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Naujieji Rusijos rubliai (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksikos pesai (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Naujieji Taivano doleriai (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Kinijos ženminbi juaniai (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Honkongo doleriai (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indijos rupijos (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonezijos rupijos (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaizijos ringitai (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijos lariai +STR_GAME_OPTIONS_CURRENCY_IRR :Irano rialai +STR_GAME_OPTIONS_CURRENCY_RUB :Naujieji Rusijos rubliai +STR_GAME_OPTIONS_CURRENCY_MXN :Meksikos pesai +STR_GAME_OPTIONS_CURRENCY_NTD :Naujieji Taivano doleriai +STR_GAME_OPTIONS_CURRENCY_CNY :Kinijos ženminbi juaniai +STR_GAME_OPTIONS_CURRENCY_HKD :Honkongo doleriai +STR_GAME_OPTIONS_CURRENCY_INR :Indijos rupijos +STR_GAME_OPTIONS_CURRENCY_IDR :Indonezijos rupijos +STR_GAME_OPTIONS_CURRENCY_MYR :Malaizijos ringitai STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatinis išsaugojimas STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pasirink, kaip dažnai išsaugoti žaidimą diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 0bfc7c596b..848d069018 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -937,48 +937,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Währung STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Währungseenheet wielen ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Pond (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dollar ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Eisträichesche Schilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belsch Frang (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Schwäizer Frang (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tschechesch Kroun (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Däitsch Mark (DM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dänesch Kroun (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseten (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finnesch Mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franséische Frang (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Griechësch Drachme (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungaresche Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Isländesch Kroun (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italienesch Lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Holländesche Gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norwegesch Kroun (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polnesch Zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumänesch Leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russesche Rubel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Sloweneschen Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Schwedesch Kroun (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Türkesch Lire (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakesch Kroun (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianesche Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estnesch Kroun (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litauesch Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanesche Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanesche Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Pond +STR_GAME_OPTIONS_CURRENCY_USD :Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Eisträichesche Schilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belsch Frang +STR_GAME_OPTIONS_CURRENCY_CHF :Schwäizer Frang +STR_GAME_OPTIONS_CURRENCY_CZK :Tschechesch Kroun +STR_GAME_OPTIONS_CURRENCY_DEM :Däitsch Mark +STR_GAME_OPTIONS_CURRENCY_DKK :Dänesch Kroun +STR_GAME_OPTIONS_CURRENCY_ESP :Peseten +STR_GAME_OPTIONS_CURRENCY_FIM :Finnesch Mark +STR_GAME_OPTIONS_CURRENCY_FRF :Franséische Frang +STR_GAME_OPTIONS_CURRENCY_GRD :Griechësch Drachme +STR_GAME_OPTIONS_CURRENCY_HUF :Ungaresche Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Isländesch Kroun +STR_GAME_OPTIONS_CURRENCY_ITL :Italienesch Lire +STR_GAME_OPTIONS_CURRENCY_NLG :Holländesche Gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Norwegesch Kroun +STR_GAME_OPTIONS_CURRENCY_PLN :Polnesch Zloty +STR_GAME_OPTIONS_CURRENCY_RON :Rumänesch Leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russesche Rubel +STR_GAME_OPTIONS_CURRENCY_SIT :Sloweneschen Tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Schwedesch Kroun +STR_GAME_OPTIONS_CURRENCY_TRY :Türkesch Lire +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakesch Kroun +STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianesche Real +STR_GAME_OPTIONS_CURRENCY_EEK :Estnesch Kroun +STR_GAME_OPTIONS_CURRENCY_LTL :Litauesch Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanesche Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanesche Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eegen... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgesche Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranësche Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Neie Russesche Rubel (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanesche Peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Chinesesch Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indiesch Rupee (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesesch Rupiah (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysesche Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgesche Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranësche Rial +STR_GAME_OPTIONS_CURRENCY_RUB :Neie Russesche Rubel +STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanesche Peso +STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Chinesesch Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar +STR_GAME_OPTIONS_CURRENCY_INR :Indiesch Rupee +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesesch Rupiah +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysesche Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autospäicheren STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Wiel den Intervall aus fir d'Autospäicherung diff --git a/src/lang/malay.txt b/src/lang/malay.txt index 7bf1a08c4a..94ffa68dba 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -869,39 +869,39 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unit kew STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Pilihan unit kewangan ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Paun British (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dolar Amerika (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen Jepun (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Syiling Austria (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Frank Belgium (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Frank Swiss (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Czech (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Mark Jerman (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Krone Denmark (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Sepanyol (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Markka Finland (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc Perancis (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Yunani (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint Hungary (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Krona Iceland (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira Itali (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Guilder Belanda (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Krone Norway (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Poland (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Romania (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Ruble Rusia (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slovenia (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Krona Sweden (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turki (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slovak (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real Brazil (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Estonia (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Paun British +STR_GAME_OPTIONS_CURRENCY_USD :Dolar Amerika +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen Jepun +STR_GAME_OPTIONS_CURRENCY_ATS :Syiling Austria +STR_GAME_OPTIONS_CURRENCY_BEF :Frank Belgium +STR_GAME_OPTIONS_CURRENCY_CHF :Frank Swiss +STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Czech +STR_GAME_OPTIONS_CURRENCY_DEM :Mark Jerman +STR_GAME_OPTIONS_CURRENCY_DKK :Krone Denmark +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Sepanyol +STR_GAME_OPTIONS_CURRENCY_FIM :Markka Finland +STR_GAME_OPTIONS_CURRENCY_FRF :Franc Perancis +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Yunani +STR_GAME_OPTIONS_CURRENCY_HUF :Forint Hungary +STR_GAME_OPTIONS_CURRENCY_ISK :Krona Iceland +STR_GAME_OPTIONS_CURRENCY_ITL :Lira Itali +STR_GAME_OPTIONS_CURRENCY_NLG :Guilder Belanda +STR_GAME_OPTIONS_CURRENCY_NOK :Krone Norway +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Poland +STR_GAME_OPTIONS_CURRENCY_RON :Leu Romania +STR_GAME_OPTIONS_CURRENCY_RUR :Ruble Rusia +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slovenia +STR_GAME_OPTIONS_CURRENCY_SEK :Krona Sweden +STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turki +STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slovak +STR_GAME_OPTIONS_CURRENCY_BRL :Real Brazil +STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Estonia +STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas +STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won +STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sesuaikan... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Simpanan automatik STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Pilih tempoh untuk simpanan permainan automatik diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 43f6a74359..95ccd85ff4 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -702,31 +702,31 @@ STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLAC ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :पौंड (£) -STR_GAME_OPTIONS_CURRENCY_USD :डोल्लर ($) -STR_GAME_OPTIONS_CURRENCY_EUR :युरो (€) -STR_GAME_OPTIONS_CURRENCY_JPY :येन (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :ओस्त्रिअन शिल्लिंग (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :बेल्गीअन फ्रांक (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :स्विस फ्रांक (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :झेख कोरुना (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :दोइश्मार्क (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :डेनिष क्रोन (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :पेसेटा (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :फिन्निश मार्क्का (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :फ्रांक (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :ग्रीक द्रक्मा (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :हंगेरियन फोरिन्त (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :आईसलेंडीक क्रोना (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :ईटेलिअन लिरा (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :डच गिल्डर (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :नोर्वेगीअन क्रोन (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :पोलिश झ्लोटी (PLN) -STR_GAME_OPTIONS_CURRENCY_RUR :रशिअन रुबल्स (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :स्लोवेनिअन तोलार (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :स्वीडीश क्रोना (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :तुर्की लिरा (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :स्लोवाक कोरुना (SKK) +STR_GAME_OPTIONS_CURRENCY_GBP :पौंड +STR_GAME_OPTIONS_CURRENCY_USD :डोल्लर +STR_GAME_OPTIONS_CURRENCY_EUR :युरो +STR_GAME_OPTIONS_CURRENCY_JPY :येन +STR_GAME_OPTIONS_CURRENCY_ATS :ओस्त्रिअन शिल्लिंग +STR_GAME_OPTIONS_CURRENCY_BEF :बेल्गीअन फ्रांक +STR_GAME_OPTIONS_CURRENCY_CHF :स्विस फ्रांक +STR_GAME_OPTIONS_CURRENCY_CZK :झेख कोरुना +STR_GAME_OPTIONS_CURRENCY_DEM :दोइश्मार्क +STR_GAME_OPTIONS_CURRENCY_DKK :डेनिष क्रोन +STR_GAME_OPTIONS_CURRENCY_ESP :पेसेटा +STR_GAME_OPTIONS_CURRENCY_FIM :फिन्निश मार्क्का +STR_GAME_OPTIONS_CURRENCY_FRF :फ्रांक +STR_GAME_OPTIONS_CURRENCY_GRD :ग्रीक द्रक्मा +STR_GAME_OPTIONS_CURRENCY_HUF :हंगेरियन फोरिन्त +STR_GAME_OPTIONS_CURRENCY_ISK :आईसलेंडीक क्रोना +STR_GAME_OPTIONS_CURRENCY_ITL :ईटेलिअन लिरा +STR_GAME_OPTIONS_CURRENCY_NLG :डच गिल्डर +STR_GAME_OPTIONS_CURRENCY_NOK :नोर्वेगीअन क्रोन +STR_GAME_OPTIONS_CURRENCY_PLN :पोलिश झ्लोटी +STR_GAME_OPTIONS_CURRENCY_RUR :रशिअन रुबल्स +STR_GAME_OPTIONS_CURRENCY_SIT :स्लोवेनिअन तोलार +STR_GAME_OPTIONS_CURRENCY_SEK :स्वीडीश क्रोना +STR_GAME_OPTIONS_CURRENCY_TRY :तुर्की लिरा +STR_GAME_OPTIONS_CURRENCY_SKK :स्लोवाक कोरुना # Autosave dropdown diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 6c709957b0..b96a6e2609 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -930,48 +930,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaen STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Velg valutaenhet som skal brukes ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Britisk pund (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japansk yen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Østerriksk shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Sveitsisk franc (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tsjekkisk koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Tysk mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krone (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spansk pesetas (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finsk mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Fransk franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Gresk drakme (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungarsk forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandsk krone (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Hollandsk guilder (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krone (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polsk złoty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumensk leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russisk rubel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krone (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkisk lire (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estlandsk krone (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litauisk litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Sørkoreansk won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Sørafrikanske rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Britisk pund +STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japansk yen +STR_GAME_OPTIONS_CURRENCY_ATS :Østerriksk shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc +STR_GAME_OPTIONS_CURRENCY_CHF :Sveitsisk franc +STR_GAME_OPTIONS_CURRENCY_CZK :Tsjekkisk koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Tysk mark +STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krone +STR_GAME_OPTIONS_CURRENCY_ESP :Spansk pesetas +STR_GAME_OPTIONS_CURRENCY_FIM :Finsk mark +STR_GAME_OPTIONS_CURRENCY_FRF :Fransk franc +STR_GAME_OPTIONS_CURRENCY_GRD :Gresk drakme +STR_GAME_OPTIONS_CURRENCY_HUF :Ungarsk forint +STR_GAME_OPTIONS_CURRENCY_ISK :Islandsk krone +STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lire +STR_GAME_OPTIONS_CURRENCY_NLG :Hollandsk guilder +STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krone +STR_GAME_OPTIONS_CURRENCY_PLN :Polsk złoty +STR_GAME_OPTIONS_CURRENCY_RON :Rumensk leu +STR_GAME_OPTIONS_CURRENCY_RUR :Russisk rubel +STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krone +STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkisk lire +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real +STR_GAME_OPTIONS_CURRENCY_EEK :Estlandsk krone +STR_GAME_OPTIONS_CURRENCY_LTL :Litauisk litas +STR_GAME_OPTIONS_CURRENCY_KRW :Sørkoreansk won +STR_GAME_OPTIONS_CURRENCY_ZAR :Sørafrikanske rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Egendefinert... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgisk lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iransk rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Ny russisk rubel (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksikansk peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Ny Taiwan Dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupi (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk Ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgisk lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iransk rial +STR_GAME_OPTIONS_CURRENCY_RUB :Ny russisk rubel +STR_GAME_OPTIONS_CURRENCY_MXN :Meksikansk peso +STR_GAME_OPTIONS_CURRENCY_NTD :Ny Taiwan Dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar +STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupi +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk Ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk lagring STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Velg intervall for automatisk lagring diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 056b7a6d98..a33ddaa9b3 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -895,40 +895,40 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaei STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Vel valutaeining ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Pund (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dollar ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Østerriksk shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Sveitsisk franc (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tsjekkisk koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Tyske mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krone (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Pesetas (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finske mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Gresk drakme (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungarsk forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandsk krone (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lire (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Hollandsk gylden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krone (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polsk zloty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumensk lei (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russisk rubel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krone (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkiske lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estiske kroner (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Sør-Koreanske Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Sør-Afrikanske Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Pund +STR_GAME_OPTIONS_CURRENCY_USD :Dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen +STR_GAME_OPTIONS_CURRENCY_ATS :Østerriksk shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc +STR_GAME_OPTIONS_CURRENCY_CHF :Sveitsisk franc +STR_GAME_OPTIONS_CURRENCY_CZK :Tsjekkisk koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Tyske mark +STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krone +STR_GAME_OPTIONS_CURRENCY_ESP :Pesetas +STR_GAME_OPTIONS_CURRENCY_FIM :Finske mark +STR_GAME_OPTIONS_CURRENCY_FRF :Franc +STR_GAME_OPTIONS_CURRENCY_GRD :Gresk drakme +STR_GAME_OPTIONS_CURRENCY_HUF :Ungarsk forint +STR_GAME_OPTIONS_CURRENCY_ISK :Islandsk krone +STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lire +STR_GAME_OPTIONS_CURRENCY_NLG :Hollandsk gylden +STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krone +STR_GAME_OPTIONS_CURRENCY_PLN :Polsk zloty +STR_GAME_OPTIONS_CURRENCY_RON :Rumensk lei +STR_GAME_OPTIONS_CURRENCY_RUR :Russisk rubel +STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krone +STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkiske lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real +STR_GAME_OPTIONS_CURRENCY_EEK :Estiske kroner +STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske Litas +STR_GAME_OPTIONS_CURRENCY_KRW :Sør-Koreanske Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Sør-Afrikanske Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigendefinert... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rial (IRR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rial STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk lagring STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vel intervall for automatisk lagring diff --git a/src/lang/persian.txt b/src/lang/persian.txt index 3b9f8818f2..de68b47603 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -885,40 +885,40 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}واحد STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}انتخب واحد پول ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :پوند (£) -STR_GAME_OPTIONS_CURRENCY_USD :دلار ($) -STR_GAME_OPTIONS_CURRENCY_EUR :یورو (€) -STR_GAME_OPTIONS_CURRENCY_JPY :ین (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :شیلینگ استرالیا (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :فرانک بلژیک (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :فرانک سوییس (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :کرونای چک (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :مارک آلمان (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :کرون دانمارک (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :پزوتا (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :مارک فنلاند (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :فرانک (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :دراخمای یونان (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :فورینت مجارستان (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :کرون ایسلندی (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :لیره ایتالیا (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :گیلدر هلندی (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :کرون نروژ (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :زلتای لهستانی (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :لئو رومانیایی (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :روبل روسیه (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :تولار اسلونی (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :کرون سوییس (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :لیره ترکیه (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :کرونای اسلواکی (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :رئال برزیل (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :کرونی استونی (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :لیتاس لیتوانی (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :وان کره جنوبی (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :رند آفریقای جنوبی (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :پوند +STR_GAME_OPTIONS_CURRENCY_USD :دلار +STR_GAME_OPTIONS_CURRENCY_EUR :یورو +STR_GAME_OPTIONS_CURRENCY_JPY :ین +STR_GAME_OPTIONS_CURRENCY_ATS :شیلینگ استرالیا +STR_GAME_OPTIONS_CURRENCY_BEF :فرانک بلژیک +STR_GAME_OPTIONS_CURRENCY_CHF :فرانک سوییس +STR_GAME_OPTIONS_CURRENCY_CZK :کرونای چک +STR_GAME_OPTIONS_CURRENCY_DEM :مارک آلمان +STR_GAME_OPTIONS_CURRENCY_DKK :کرون دانمارک +STR_GAME_OPTIONS_CURRENCY_ESP :پزوتا +STR_GAME_OPTIONS_CURRENCY_FIM :مارک فنلاند +STR_GAME_OPTIONS_CURRENCY_FRF :فرانک +STR_GAME_OPTIONS_CURRENCY_GRD :دراخمای یونان +STR_GAME_OPTIONS_CURRENCY_HUF :فورینت مجارستان +STR_GAME_OPTIONS_CURRENCY_ISK :کرون ایسلندی +STR_GAME_OPTIONS_CURRENCY_ITL :لیره ایتالیا +STR_GAME_OPTIONS_CURRENCY_NLG :گیلدر هلندی +STR_GAME_OPTIONS_CURRENCY_NOK :کرون نروژ +STR_GAME_OPTIONS_CURRENCY_PLN :زلتای لهستانی +STR_GAME_OPTIONS_CURRENCY_RON :لئو رومانیایی +STR_GAME_OPTIONS_CURRENCY_RUR :روبل روسیه +STR_GAME_OPTIONS_CURRENCY_SIT :تولار اسلونی +STR_GAME_OPTIONS_CURRENCY_SEK :کرون سوییس +STR_GAME_OPTIONS_CURRENCY_TRY :لیره ترکیه +STR_GAME_OPTIONS_CURRENCY_SKK :کرونای اسلواکی +STR_GAME_OPTIONS_CURRENCY_BRL :رئال برزیل +STR_GAME_OPTIONS_CURRENCY_EEK :کرونی استونی +STR_GAME_OPTIONS_CURRENCY_LTL :لیتاس لیتوانی +STR_GAME_OPTIONS_CURRENCY_KRW :وان کره جنوبی +STR_GAME_OPTIONS_CURRENCY_ZAR :رند آفریقای جنوبی STR_GAME_OPTIONS_CURRENCY_CUSTOM :دلخواه... -STR_GAME_OPTIONS_CURRENCY_GEL :لیره گرجستان (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :ریال ایران (IRR) +STR_GAME_OPTIONS_CURRENCY_GEL :لیره گرجستان +STR_GAME_OPTIONS_CURRENCY_IRR :ریال ایران STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK} ذخیره اتوماتیک STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK} انتخاب فاصله زمانی بین ذخیره کردن های اتوماتیک diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 3fb93511c2..ce41efe47a 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -1332,48 +1332,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Waluta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Wybór waluty ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Funt brytyjski (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dolar amerykański ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Jen japoński (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Szyling austriacki (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Frank belgijski (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Frank szwajcarski (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Korona czeska (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marki niemieckie (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Korona duńska (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta hiszpańska (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marka fińska (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Frank francuski (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachma grecka (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint węgierski (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Korona islandzka (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira włoska (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Gulden holenderski (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Korona norweska (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polski złoty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Lej rumuński (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rubel rosyjski (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar słowenski (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Korona szwedzka (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira turecka (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Korona słowacka (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real brazylijski (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Korony estońskie (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lit litewski (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won południowokoreański (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Południowej Afryki (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Funt brytyjski +STR_GAME_OPTIONS_CURRENCY_USD :Dolar amerykański +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Jen japoński +STR_GAME_OPTIONS_CURRENCY_ATS :Szyling austriacki +STR_GAME_OPTIONS_CURRENCY_BEF :Frank belgijski +STR_GAME_OPTIONS_CURRENCY_CHF :Frank szwajcarski +STR_GAME_OPTIONS_CURRENCY_CZK :Korona czeska +STR_GAME_OPTIONS_CURRENCY_DEM :Marki niemieckie +STR_GAME_OPTIONS_CURRENCY_DKK :Korona duńska +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta hiszpańska +STR_GAME_OPTIONS_CURRENCY_FIM :Marka fińska +STR_GAME_OPTIONS_CURRENCY_FRF :Frank francuski +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma grecka +STR_GAME_OPTIONS_CURRENCY_HUF :Forint węgierski +STR_GAME_OPTIONS_CURRENCY_ISK :Korona islandzka +STR_GAME_OPTIONS_CURRENCY_ITL :Lira włoska +STR_GAME_OPTIONS_CURRENCY_NLG :Gulden holenderski +STR_GAME_OPTIONS_CURRENCY_NOK :Korona norweska +STR_GAME_OPTIONS_CURRENCY_PLN :Polski złoty +STR_GAME_OPTIONS_CURRENCY_RON :Lej rumuński +STR_GAME_OPTIONS_CURRENCY_RUR :Rubel rosyjski +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar słowenski +STR_GAME_OPTIONS_CURRENCY_SEK :Korona szwedzka +STR_GAME_OPTIONS_CURRENCY_TRY :Lira turecka +STR_GAME_OPTIONS_CURRENCY_SKK :Korona słowacka +STR_GAME_OPTIONS_CURRENCY_BRL :Real brazylijski +STR_GAME_OPTIONS_CURRENCY_EEK :Korony estońskie +STR_GAME_OPTIONS_CURRENCY_LTL :Lit litewski +STR_GAME_OPTIONS_CURRENCY_KRW :Won południowokoreański +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Południowej Afryki STR_GAME_OPTIONS_CURRENCY_CUSTOM :Własna... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari gruzińskie (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial irański (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nowy rubel rosyjski (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso meksykańskie (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nowy dolar tajwański (TWD) -STR_GAME_OPTIONS_CURRENCY_CNY :Juan chiński (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dolar hongkoński (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rupia Indyjska (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonezyjska (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malezyjski (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari gruzińskie +STR_GAME_OPTIONS_CURRENCY_IRR :Rial irański +STR_GAME_OPTIONS_CURRENCY_RUB :Nowy rubel rosyjski +STR_GAME_OPTIONS_CURRENCY_MXN :Peso meksykańskie +STR_GAME_OPTIONS_CURRENCY_NTD :Nowy dolar tajwański +STR_GAME_OPTIONS_CURRENCY_CNY :Juan chiński +STR_GAME_OPTIONS_CURRENCY_HKD :Dolar hongkoński +STR_GAME_OPTIONS_CURRENCY_INR :Rupia Indyjska +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonezyjska +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malezyjski STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autozapis STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Częstotliwość automatycznego zapisu stanu gry diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 6949de46e7..8a7b0475f7 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -953,48 +953,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecção de unidades monetárias ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britânica (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dólar dos E.U.A. (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen Japonês (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Xelim Austríaco (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franco Belga (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franco Suíço (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Coroa Checa (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marco Alemão (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Coroa Dinamarquesa (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Espanhola (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marco Finlandês (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franco Francês (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Dracma Grego (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florim Húngaro (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Coroa Islandesa (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italiana (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Florim Holandês (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Coroa Norueguesa (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zlóti Polaco (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Romeno (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rublo Russo (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Esloveno (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Coroa Sueca (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turca (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Coroa Eslovaca (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real Brasileiro (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Coroa Estoniana (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lituanias (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul Coreano (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul Africano (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britânica +STR_GAME_OPTIONS_CURRENCY_USD :Dólar dos E.U.A. +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen Japonês +STR_GAME_OPTIONS_CURRENCY_ATS :Xelim Austríaco +STR_GAME_OPTIONS_CURRENCY_BEF :Franco Belga +STR_GAME_OPTIONS_CURRENCY_CHF :Franco Suíço +STR_GAME_OPTIONS_CURRENCY_CZK :Coroa Checa +STR_GAME_OPTIONS_CURRENCY_DEM :Marco Alemão +STR_GAME_OPTIONS_CURRENCY_DKK :Coroa Dinamarquesa +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Espanhola +STR_GAME_OPTIONS_CURRENCY_FIM :Marco Finlandês +STR_GAME_OPTIONS_CURRENCY_FRF :Franco Francês +STR_GAME_OPTIONS_CURRENCY_GRD :Dracma Grego +STR_GAME_OPTIONS_CURRENCY_HUF :Florim Húngaro +STR_GAME_OPTIONS_CURRENCY_ISK :Coroa Islandesa +STR_GAME_OPTIONS_CURRENCY_ITL :Lira Italiana +STR_GAME_OPTIONS_CURRENCY_NLG :Florim Holandês +STR_GAME_OPTIONS_CURRENCY_NOK :Coroa Norueguesa +STR_GAME_OPTIONS_CURRENCY_PLN :Zlóti Polaco +STR_GAME_OPTIONS_CURRENCY_RON :Leu Romeno +STR_GAME_OPTIONS_CURRENCY_RUR :Rublo Russo +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Esloveno +STR_GAME_OPTIONS_CURRENCY_SEK :Coroa Sueca +STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turca +STR_GAME_OPTIONS_CURRENCY_SKK :Coroa Eslovaca +STR_GAME_OPTIONS_CURRENCY_BRL :Real Brasileiro +STR_GAME_OPTIONS_CURRENCY_EEK :Coroa Estoniana +STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lituanias +STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul Coreano +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul Africano STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizado... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiano (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Novo Rublo Russo (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexicano (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Novo dólar taiwanês (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chinês (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rupia Indiana (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonésia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit da Malásia (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiano +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano +STR_GAME_OPTIONS_CURRENCY_RUB :Novo Rublo Russo +STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexicano +STR_GAME_OPTIONS_CURRENCY_NTD :Novo dólar taiwanês +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chinês +STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong +STR_GAME_OPTIONS_CURRENCY_INR :Rupia Indiana +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonésia +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit da Malásia STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Guardar automaticamente STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Seleccionar o intervalo para guardar automático diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index db038c18a7..04e5de2ec5 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -952,48 +952,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unitate STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Alege unitatea monetară ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Liră sterlină (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dolar american ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen japonez (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Şiling austriac (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franc belgian (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franc elveţian (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Coroană cehă (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marcă germană (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Coroană daneză (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marcă finlandeză (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc francez (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drahmă grecească (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint unguresc (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Coroană islandeză (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Liră italiană (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Gulden olandez (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Coroană norvegiană (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zlot polonez (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu românesc (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rublă rusească (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar sloven (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Coroană suedeză (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Liră turcească (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Coroană slovacă (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real brazilian (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Coroane estoniene (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituanian (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-corean (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-african (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Liră sterlină +STR_GAME_OPTIONS_CURRENCY_USD :Dolar american +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen japonez +STR_GAME_OPTIONS_CURRENCY_ATS :Şiling austriac +STR_GAME_OPTIONS_CURRENCY_BEF :Franc belgian +STR_GAME_OPTIONS_CURRENCY_CHF :Franc elveţian +STR_GAME_OPTIONS_CURRENCY_CZK :Coroană cehă +STR_GAME_OPTIONS_CURRENCY_DEM :Marcă germană +STR_GAME_OPTIONS_CURRENCY_DKK :Coroană daneză +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Marcă finlandeză +STR_GAME_OPTIONS_CURRENCY_FRF :Franc francez +STR_GAME_OPTIONS_CURRENCY_GRD :Drahmă grecească +STR_GAME_OPTIONS_CURRENCY_HUF :Forint unguresc +STR_GAME_OPTIONS_CURRENCY_ISK :Coroană islandeză +STR_GAME_OPTIONS_CURRENCY_ITL :Liră italiană +STR_GAME_OPTIONS_CURRENCY_NLG :Gulden olandez +STR_GAME_OPTIONS_CURRENCY_NOK :Coroană norvegiană +STR_GAME_OPTIONS_CURRENCY_PLN :Zlot polonez +STR_GAME_OPTIONS_CURRENCY_RON :Leu românesc +STR_GAME_OPTIONS_CURRENCY_RUR :Rublă rusească +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar sloven +STR_GAME_OPTIONS_CURRENCY_SEK :Coroană suedeză +STR_GAME_OPTIONS_CURRENCY_TRY :Liră turcească +STR_GAME_OPTIONS_CURRENCY_SKK :Coroană slovacă +STR_GAME_OPTIONS_CURRENCY_BRL :Real brazilian +STR_GAME_OPTIONS_CURRENCY_EEK :Coroane estoniene +STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituanian +STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-corean +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-african STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizată... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgian (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranian (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Ruble rusești (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexican (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Noul Dolar Taiwanez (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Chinezesc (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dolar Hong Kong (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rupia Indiană (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indoneziană (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysian (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgian +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranian +STR_GAME_OPTIONS_CURRENCY_RUB :Ruble rusești +STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexican +STR_GAME_OPTIONS_CURRENCY_NTD :Noul Dolar Taiwanez +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Chinezesc +STR_GAME_OPTIONS_CURRENCY_HKD :Dolar Hong Kong +STR_GAME_OPTIONS_CURRENCY_INR :Rupia Indiană +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indoneziană +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysian STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvare automată STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Alege intervalul de timp dintre salvările automate diff --git a/src/lang/russian.txt b/src/lang/russian.txt index f11b36fd21..2016c99210 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1097,48 +1097,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Валю STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Смена используемой в игре валюты ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Английский фунт (£) -STR_GAME_OPTIONS_CURRENCY_USD :Доллар США ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Евро (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Японская иена (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Австрийский шиллинг (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Бельгийский франк (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Швейцарский франк (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Чешская крона (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Немецкая марка (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Датская крона (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Испанская песета (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Финская марка (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Французский франк (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Греческая драхма (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Венгерский форинт (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Исландская крона (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Итальянская лира (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Нидерландский гульден (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Норвежская крона (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Польский злотый (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Румынский лей (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Российский рубль (старый) (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Словенский толар (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Шведская крона (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Турецкая лира (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Словацкая крона (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Бразильский реал (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Эстонская крона (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Литовский лит (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Южнокорейская вона (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Южноафриканский ранд (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Английский фунт +STR_GAME_OPTIONS_CURRENCY_USD :Доллар США +STR_GAME_OPTIONS_CURRENCY_EUR :Евро +STR_GAME_OPTIONS_CURRENCY_JPY :Японская иена +STR_GAME_OPTIONS_CURRENCY_ATS :Австрийский шиллинг +STR_GAME_OPTIONS_CURRENCY_BEF :Бельгийский франк +STR_GAME_OPTIONS_CURRENCY_CHF :Швейцарский франк +STR_GAME_OPTIONS_CURRENCY_CZK :Чешская крона +STR_GAME_OPTIONS_CURRENCY_DEM :Немецкая марка +STR_GAME_OPTIONS_CURRENCY_DKK :Датская крона +STR_GAME_OPTIONS_CURRENCY_ESP :Испанская песета +STR_GAME_OPTIONS_CURRENCY_FIM :Финская марка +STR_GAME_OPTIONS_CURRENCY_FRF :Французский франк +STR_GAME_OPTIONS_CURRENCY_GRD :Греческая драхма +STR_GAME_OPTIONS_CURRENCY_HUF :Венгерский форинт +STR_GAME_OPTIONS_CURRENCY_ISK :Исландская крона +STR_GAME_OPTIONS_CURRENCY_ITL :Итальянская лира +STR_GAME_OPTIONS_CURRENCY_NLG :Нидерландский гульден +STR_GAME_OPTIONS_CURRENCY_NOK :Норвежская крона +STR_GAME_OPTIONS_CURRENCY_PLN :Польский злотый +STR_GAME_OPTIONS_CURRENCY_RON :Румынский лей +STR_GAME_OPTIONS_CURRENCY_RUR :Российский рубль (старый) +STR_GAME_OPTIONS_CURRENCY_SIT :Словенский толар +STR_GAME_OPTIONS_CURRENCY_SEK :Шведская крона +STR_GAME_OPTIONS_CURRENCY_TRY :Турецкая лира +STR_GAME_OPTIONS_CURRENCY_SKK :Словацкая крона +STR_GAME_OPTIONS_CURRENCY_BRL :Бразильский реал +STR_GAME_OPTIONS_CURRENCY_EEK :Эстонская крона +STR_GAME_OPTIONS_CURRENCY_LTL :Литовский лит +STR_GAME_OPTIONS_CURRENCY_KRW :Южнокорейская вона +STR_GAME_OPTIONS_CURRENCY_ZAR :Южноафриканский ранд STR_GAME_OPTIONS_CURRENCY_CUSTOM :Своя... -STR_GAME_OPTIONS_CURRENCY_GEL :Грузинский лари (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Иранский риал (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Российский рубль (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Мексиканский песо (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Новый тайваньский доллар (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Китайский юань (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Гонконгский доллар (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Индийская рупия (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Индонезийская рупия (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Малайзийский ринггит (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Грузинский лари +STR_GAME_OPTIONS_CURRENCY_IRR :Иранский риал +STR_GAME_OPTIONS_CURRENCY_RUB :Российский рубль +STR_GAME_OPTIONS_CURRENCY_MXN :Мексиканский песо +STR_GAME_OPTIONS_CURRENCY_NTD :Новый тайваньский доллар +STR_GAME_OPTIONS_CURRENCY_CNY :Китайский юань +STR_GAME_OPTIONS_CURRENCY_HKD :Гонконгский доллар +STR_GAME_OPTIONS_CURRENCY_INR :Индийская рупия +STR_GAME_OPTIONS_CURRENCY_IDR :Индонезийская рупия +STR_GAME_OPTIONS_CURRENCY_MYR :Малайзийский ринггит STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автосохранение STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Интервал автосохранения игры diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index d78d791dfc..1423df2b3a 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -1132,48 +1132,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor valute ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Britanska funta (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dolar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Evro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japanski jen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Austrijski šiling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgijski franak (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Švajcarski franak (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Češka kruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Nemačka marka (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danska kruna (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Španska pezeta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finska marka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Francuski franak (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grčka drahma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Mađarska forinta (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandska kruna (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italijanska lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Holandski gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norveška kruna (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Poljski zlot (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumunski lej (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Ruska rublja (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenački tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Švedska kruna (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turska lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovačka kruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilski real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estonska kruna (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litvanski litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski von (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafrički rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Britanska funta +STR_GAME_OPTIONS_CURRENCY_USD :Dolar +STR_GAME_OPTIONS_CURRENCY_EUR :Evro +STR_GAME_OPTIONS_CURRENCY_JPY :Japanski jen +STR_GAME_OPTIONS_CURRENCY_ATS :Austrijski šiling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgijski franak +STR_GAME_OPTIONS_CURRENCY_CHF :Švajcarski franak +STR_GAME_OPTIONS_CURRENCY_CZK :Češka kruna +STR_GAME_OPTIONS_CURRENCY_DEM :Nemačka marka +STR_GAME_OPTIONS_CURRENCY_DKK :Danska kruna +STR_GAME_OPTIONS_CURRENCY_ESP :Španska pezeta +STR_GAME_OPTIONS_CURRENCY_FIM :Finska marka +STR_GAME_OPTIONS_CURRENCY_FRF :Francuski franak +STR_GAME_OPTIONS_CURRENCY_GRD :Grčka drahma +STR_GAME_OPTIONS_CURRENCY_HUF :Mađarska forinta +STR_GAME_OPTIONS_CURRENCY_ISK :Islandska kruna +STR_GAME_OPTIONS_CURRENCY_ITL :Italijanska lira +STR_GAME_OPTIONS_CURRENCY_NLG :Holandski gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Norveška kruna +STR_GAME_OPTIONS_CURRENCY_PLN :Poljski zlot +STR_GAME_OPTIONS_CURRENCY_RON :Rumunski lej +STR_GAME_OPTIONS_CURRENCY_RUR :Ruska rublja +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenački tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Švedska kruna +STR_GAME_OPTIONS_CURRENCY_TRY :Turska lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovačka kruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brazilski real +STR_GAME_OPTIONS_CURRENCY_EEK :Estonska kruna +STR_GAME_OPTIONS_CURRENCY_LTL :Litvanski litas +STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski von +STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafrički rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sopstvena... -STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranski rijal (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nova ruska rublja (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksički pezos (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Novi tajvanski dolar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Kineski renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hongkonški dolar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indijska rupija (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonezijska rupija (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malezijski ringit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranski rijal +STR_GAME_OPTIONS_CURRENCY_RUB :Nova ruska rublja +STR_GAME_OPTIONS_CURRENCY_MXN :Meksički pezos +STR_GAME_OPTIONS_CURRENCY_NTD :Novi tajvanski dolar +STR_GAME_OPTIONS_CURRENCY_CNY :Kineski renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hongkonški dolar +STR_GAME_OPTIONS_CURRENCY_INR :Indijska rupija +STR_GAME_OPTIONS_CURRENCY_IDR :Indonezijska rupija +STR_GAME_OPTIONS_CURRENCY_MYR :Malezijski ringit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Auto čuvanje pozicije STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izbor vremenskog intervala između dve automatski sačuvane pozicije diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 4ae68c5e46..78f7c9f46a 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -937,48 +937,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}货币 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}货币单位选择 ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :英镑 (£) -STR_GAME_OPTIONS_CURRENCY_USD :美元 ($) -STR_GAME_OPTIONS_CURRENCY_EUR :欧元 (€) -STR_GAME_OPTIONS_CURRENCY_JPY :日元 (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :澳大利亚先令 (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :比利时法郎 (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :瑞士法郎 (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :捷克克朗 (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :德国马克 (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :丹麦克朗 (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :西班牙比赛塔 (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :芬兰马克 (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :法郎 (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :希腊德拉克马 (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :匈牙利福林 (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :冰岛克朗 (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :意大利里拉 (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :荷兰盾 (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :挪威克朗 (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :波兰兹罗提 (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :罗马尼亚列伊 (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :卢布 (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :斯洛文尼亚托拉捷夫 (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :瑞典克朗 (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :土耳其里拉 (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :斯洛伐克克朗 (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :巴西里亚伊 (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :爱沙尼亚克鲁恩 (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :立陶宛立特(LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :韩元(KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :南非兰特(ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :英镑 +STR_GAME_OPTIONS_CURRENCY_USD :美元 +STR_GAME_OPTIONS_CURRENCY_EUR :欧元 +STR_GAME_OPTIONS_CURRENCY_JPY :日元 +STR_GAME_OPTIONS_CURRENCY_ATS :澳大利亚先令 +STR_GAME_OPTIONS_CURRENCY_BEF :比利时法郎 +STR_GAME_OPTIONS_CURRENCY_CHF :瑞士法郎 +STR_GAME_OPTIONS_CURRENCY_CZK :捷克克朗 +STR_GAME_OPTIONS_CURRENCY_DEM :德国马克 +STR_GAME_OPTIONS_CURRENCY_DKK :丹麦克朗 +STR_GAME_OPTIONS_CURRENCY_ESP :西班牙比赛塔 +STR_GAME_OPTIONS_CURRENCY_FIM :芬兰马克 +STR_GAME_OPTIONS_CURRENCY_FRF :法郎 +STR_GAME_OPTIONS_CURRENCY_GRD :希腊德拉克马 +STR_GAME_OPTIONS_CURRENCY_HUF :匈牙利福林 +STR_GAME_OPTIONS_CURRENCY_ISK :冰岛克朗 +STR_GAME_OPTIONS_CURRENCY_ITL :意大利里拉 +STR_GAME_OPTIONS_CURRENCY_NLG :荷兰盾 +STR_GAME_OPTIONS_CURRENCY_NOK :挪威克朗 +STR_GAME_OPTIONS_CURRENCY_PLN :波兰兹罗提 +STR_GAME_OPTIONS_CURRENCY_RON :罗马尼亚列伊 +STR_GAME_OPTIONS_CURRENCY_RUR :卢布 +STR_GAME_OPTIONS_CURRENCY_SIT :斯洛文尼亚托拉捷夫 +STR_GAME_OPTIONS_CURRENCY_SEK :瑞典克朗 +STR_GAME_OPTIONS_CURRENCY_TRY :土耳其里拉 +STR_GAME_OPTIONS_CURRENCY_SKK :斯洛伐克克朗 +STR_GAME_OPTIONS_CURRENCY_BRL :巴西里亚伊 +STR_GAME_OPTIONS_CURRENCY_EEK :爱沙尼亚克鲁恩 +STR_GAME_OPTIONS_CURRENCY_LTL :立陶宛立特 +STR_GAME_OPTIONS_CURRENCY_KRW :韩元 +STR_GAME_OPTIONS_CURRENCY_ZAR :南非兰特 STR_GAME_OPTIONS_CURRENCY_CUSTOM :自定义… -STR_GAME_OPTIONS_CURRENCY_GEL :格鲁吉亚拉里(GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :伊朗里亚尔(IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :新俄罗斯卢布 (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :墨西哥比索 (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :新台币 (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :中国人民币 (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :港币 (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :印度卢布(INR) -STR_GAME_OPTIONS_CURRENCY_IDR :印尼盾 (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :马来西亚林吉特 (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :格鲁吉亚拉里 +STR_GAME_OPTIONS_CURRENCY_IRR :伊朗里亚尔 +STR_GAME_OPTIONS_CURRENCY_RUB :新俄罗斯卢布 +STR_GAME_OPTIONS_CURRENCY_MXN :墨西哥比索 +STR_GAME_OPTIONS_CURRENCY_NTD :新台币 +STR_GAME_OPTIONS_CURRENCY_CNY :中国人民币 +STR_GAME_OPTIONS_CURRENCY_HKD :港币 +STR_GAME_OPTIONS_CURRENCY_INR :印度卢布 +STR_GAME_OPTIONS_CURRENCY_IDR :印尼盾 +STR_GAME_OPTIONS_CURRENCY_MYR :马来西亚林吉特 STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}自动保存 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}选择自动保存的周期 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index ae66469f9e..fa97af7c26 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -1006,48 +1006,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Mena STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výber menovej jednotky ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Libra šterlingov (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Americký dolár (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japonský jen (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Rakúsky šiling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgický frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Švajčiarský frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Česká koruna (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Nemecký mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dánska koruna (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Španielské peso (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Fínsky mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Francúzsky frank (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grécka drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Maďarský forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandská koruna (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Talianská líra (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Holandský gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Nórska koruna (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Poľský zlotý (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumunský lev (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Ruský rubeľ (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovinský toliar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Švédska koruna (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turecká líra (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovenská koruna (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazílsky real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estónska koruna (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litovský litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Juhokórejský won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Juhoafrický rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Libra šterlingov +STR_GAME_OPTIONS_CURRENCY_USD :Americký dolár +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japonský jen +STR_GAME_OPTIONS_CURRENCY_ATS :Rakúsky šiling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgický frank +STR_GAME_OPTIONS_CURRENCY_CHF :Švajčiarský frank +STR_GAME_OPTIONS_CURRENCY_CZK :Česká koruna +STR_GAME_OPTIONS_CURRENCY_DEM :Nemecký mark +STR_GAME_OPTIONS_CURRENCY_DKK :Dánska koruna +STR_GAME_OPTIONS_CURRENCY_ESP :Španielské peso +STR_GAME_OPTIONS_CURRENCY_FIM :Fínsky mark +STR_GAME_OPTIONS_CURRENCY_FRF :Francúzsky frank +STR_GAME_OPTIONS_CURRENCY_GRD :Grécka drachma +STR_GAME_OPTIONS_CURRENCY_HUF :Maďarský forint +STR_GAME_OPTIONS_CURRENCY_ISK :Islandská koruna +STR_GAME_OPTIONS_CURRENCY_ITL :Talianská líra +STR_GAME_OPTIONS_CURRENCY_NLG :Holandský gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Nórska koruna +STR_GAME_OPTIONS_CURRENCY_PLN :Poľský zlotý +STR_GAME_OPTIONS_CURRENCY_RON :Rumunský lev +STR_GAME_OPTIONS_CURRENCY_RUR :Ruský rubeľ +STR_GAME_OPTIONS_CURRENCY_SIT :Slovinský toliar +STR_GAME_OPTIONS_CURRENCY_SEK :Švédska koruna +STR_GAME_OPTIONS_CURRENCY_TRY :Turecká líra +STR_GAME_OPTIONS_CURRENCY_SKK :Slovenská koruna +STR_GAME_OPTIONS_CURRENCY_BRL :Brazílsky real +STR_GAME_OPTIONS_CURRENCY_EEK :Estónska koruna +STR_GAME_OPTIONS_CURRENCY_LTL :Litovský litas +STR_GAME_OPTIONS_CURRENCY_KRW :Juhokórejský won +STR_GAME_OPTIONS_CURRENCY_ZAR :Juhoafrický rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Vlastná ... -STR_GAME_OPTIONS_CURRENCY_GEL :Gruzínske lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iránsky rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Ruský rubeľ (nový) (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexické peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Taiwanský dolár (nový) (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Čínsky jüan (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský dolár (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indická rupia (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonézska rupia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malajzijský ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzínske lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iránsky rial +STR_GAME_OPTIONS_CURRENCY_RUB :Ruský rubeľ (nový) +STR_GAME_OPTIONS_CURRENCY_MXN :Mexické peso +STR_GAME_OPTIONS_CURRENCY_NTD :Taiwanský dolár (nový) +STR_GAME_OPTIONS_CURRENCY_CNY :Čínsky jüan +STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský dolár +STR_GAME_OPTIONS_CURRENCY_INR :Indická rupia +STR_GAME_OPTIONS_CURRENCY_IDR :Indonézska rupia +STR_GAME_OPTIONS_CURRENCY_MYR :Malajzijský ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatické ukladanie STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Výber intervalu automatického ukladania diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 1677f29aae..f02fc661ab 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -1049,41 +1049,41 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valute STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbira valut ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Funt (£) -STR_GAME_OPTIONS_CURRENCY_USD :Dolar ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Jen (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Avstrijski Šiling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgijski Frank (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Švicarski Frank (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Češka Krona (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Nemška Marka (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danska Krona (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Pezeta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finska Marka (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Frank (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grška Drahma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Madžarski Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Islandska Krona (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italijanska Lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Nizozemski Gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norveška Krona (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Poljski Zlot (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Romunski Lej (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Ruski Rubelj (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenski tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Švedska Krona (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turška lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovaška krona (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brazilski Real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :estonske krone (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litvijske Lite (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski Won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafriški Rant (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Funt +STR_GAME_OPTIONS_CURRENCY_USD :Dolar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Jen +STR_GAME_OPTIONS_CURRENCY_ATS :Avstrijski Šiling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgijski Frank +STR_GAME_OPTIONS_CURRENCY_CHF :Švicarski Frank +STR_GAME_OPTIONS_CURRENCY_CZK :Češka Krona +STR_GAME_OPTIONS_CURRENCY_DEM :Nemška Marka +STR_GAME_OPTIONS_CURRENCY_DKK :Danska Krona +STR_GAME_OPTIONS_CURRENCY_ESP :Pezeta +STR_GAME_OPTIONS_CURRENCY_FIM :Finska Marka +STR_GAME_OPTIONS_CURRENCY_FRF :Frank +STR_GAME_OPTIONS_CURRENCY_GRD :Grška Drahma +STR_GAME_OPTIONS_CURRENCY_HUF :Madžarski Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Islandska Krona +STR_GAME_OPTIONS_CURRENCY_ITL :Italijanska Lira +STR_GAME_OPTIONS_CURRENCY_NLG :Nizozemski Gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Norveška Krona +STR_GAME_OPTIONS_CURRENCY_PLN :Poljski Zlot +STR_GAME_OPTIONS_CURRENCY_RON :Romunski Lej +STR_GAME_OPTIONS_CURRENCY_RUR :Ruski Rubelj +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenski tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Švedska Krona +STR_GAME_OPTIONS_CURRENCY_TRY :Turška lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovaška krona +STR_GAME_OPTIONS_CURRENCY_BRL :Brazilski Real +STR_GAME_OPTIONS_CURRENCY_EEK :estonske krone +STR_GAME_OPTIONS_CURRENCY_LTL :Litvijske Lite +STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski Won +STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafriški Rant STR_GAME_OPTIONS_CURRENCY_CUSTOM :Po meri... -STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranski Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kongški dolar (HKD) +STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijski Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranski Rial +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kongški dolar STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Samodejno shrani STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izberi časovni interval samodejnega shranjevanja igre diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 118721d282..e3ace15172 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -938,48 +938,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidad m STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecciona la nnidad monetaria ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Libra británica (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dólar estadounidense (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen japonés (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Chelín austriaco (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franco belga (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franco suizo (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Corona checa (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marco alemán (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Corona danesa (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta española (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Markka finlandés (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franco francés (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Dracma griego (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florín húngaro (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Corona islandesa (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Florín holandés (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Corona noruega(NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zloty polaco (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu rumano (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rublo ruso (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tólar esloveno (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Corona sueca (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca (TRY) +STR_GAME_OPTIONS_CURRENCY_GBP :Libra británica +STR_GAME_OPTIONS_CURRENCY_USD :Dólar estadounidense +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen japonés +STR_GAME_OPTIONS_CURRENCY_ATS :Chelín austriaco +STR_GAME_OPTIONS_CURRENCY_BEF :Franco belga +STR_GAME_OPTIONS_CURRENCY_CHF :Franco suizo +STR_GAME_OPTIONS_CURRENCY_CZK :Corona checa +STR_GAME_OPTIONS_CURRENCY_DEM :Marco alemán +STR_GAME_OPTIONS_CURRENCY_DKK :Corona danesa +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta española +STR_GAME_OPTIONS_CURRENCY_FIM :Markka finlandés +STR_GAME_OPTIONS_CURRENCY_FRF :Franco francés +STR_GAME_OPTIONS_CURRENCY_GRD :Dracma griego +STR_GAME_OPTIONS_CURRENCY_HUF :Florín húngaro +STR_GAME_OPTIONS_CURRENCY_ISK :Corona islandesa +STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana +STR_GAME_OPTIONS_CURRENCY_NLG :Florín holandés +STR_GAME_OPTIONS_CURRENCY_NOK :Corona noruega +STR_GAME_OPTIONS_CURRENCY_PLN :Zloty polaco +STR_GAME_OPTIONS_CURRENCY_RON :Leu rumano +STR_GAME_OPTIONS_CURRENCY_RUR :Rublo ruso +STR_GAME_OPTIONS_CURRENCY_SIT :Tólar esloveno +STR_GAME_OPTIONS_CURRENCY_SEK :Corona sueca +STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca STR_GAME_OPTIONS_CURRENCY_SKK :Corona eslovaca -STR_GAME_OPTIONS_CURRENCY_BRL :Real brasileño (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Krooni estonio (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituana (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won surcoreano (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano (ZAR) +STR_GAME_OPTIONS_CURRENCY_BRL :Real brasileño +STR_GAME_OPTIONS_CURRENCY_EEK :Krooni estonio +STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituana +STR_GAME_OPTIONS_CURRENCY_KRW :Won surcoreano +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizada... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgiano (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial iraní (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nuevo rublo ruso (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicano (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nuevo dólar taiwanés (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chino (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dólar hongkonés (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rupia india (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malasio (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgiano +STR_GAME_OPTIONS_CURRENCY_IRR :Rial iraní +STR_GAME_OPTIONS_CURRENCY_RUB :Nuevo rublo ruso +STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicano +STR_GAME_OPTIONS_CURRENCY_NTD :Nuevo dólar taiwanés +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chino +STR_GAME_OPTIONS_CURRENCY_HKD :Dólar hongkonés +STR_GAME_OPTIONS_CURRENCY_INR :Rupia india +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesia +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malasio STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autoguardado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selección del intervalo entre guardados automáticos del juego diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 1f1cf18292..e8f9b619ee 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -938,48 +938,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Divisa STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Elegir divisa ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Libra británica (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Dólar estadounidense (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen japonés (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Chelín austríaco (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Franco belga (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Franco suizo (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Corona checa (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Marco alemán (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Corona danesa (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta española (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Marco finlandés (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franco francés (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Dracma griego (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Florín húngaro (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Corona islandesa (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Florín holandés (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Corona noruega (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zloty polaco (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu rumano (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rublo ruso (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tólar esloveno (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Corona sueca (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Corona eslovaca (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real brasileño (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Corona estonia (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituana (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won surcoreano (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Libra británica +STR_GAME_OPTIONS_CURRENCY_USD :Dólar estadounidense +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen japonés +STR_GAME_OPTIONS_CURRENCY_ATS :Chelín austríaco +STR_GAME_OPTIONS_CURRENCY_BEF :Franco belga +STR_GAME_OPTIONS_CURRENCY_CHF :Franco suizo +STR_GAME_OPTIONS_CURRENCY_CZK :Corona checa +STR_GAME_OPTIONS_CURRENCY_DEM :Marco alemán +STR_GAME_OPTIONS_CURRENCY_DKK :Corona danesa +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta española +STR_GAME_OPTIONS_CURRENCY_FIM :Marco finlandés +STR_GAME_OPTIONS_CURRENCY_FRF :Franco francés +STR_GAME_OPTIONS_CURRENCY_GRD :Dracma griego +STR_GAME_OPTIONS_CURRENCY_HUF :Florín húngaro +STR_GAME_OPTIONS_CURRENCY_ISK :Corona islandesa +STR_GAME_OPTIONS_CURRENCY_ITL :Lira italiana +STR_GAME_OPTIONS_CURRENCY_NLG :Florín holandés +STR_GAME_OPTIONS_CURRENCY_NOK :Corona noruega +STR_GAME_OPTIONS_CURRENCY_PLN :Zloty polaco +STR_GAME_OPTIONS_CURRENCY_RON :Leu rumano +STR_GAME_OPTIONS_CURRENCY_RUR :Rublo ruso +STR_GAME_OPTIONS_CURRENCY_SIT :Tólar esloveno +STR_GAME_OPTIONS_CURRENCY_SEK :Corona sueca +STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca +STR_GAME_OPTIONS_CURRENCY_SKK :Corona eslovaca +STR_GAME_OPTIONS_CURRENCY_BRL :Real brasileño +STR_GAME_OPTIONS_CURRENCY_EEK :Corona estonia +STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituana +STR_GAME_OPTIONS_CURRENCY_KRW :Won surcoreano +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sudafricano STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizada... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgiano (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial iraní (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Nuevo rublo ruso (RUR) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicano (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Nuevo dólar taiwanés (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Yuan chino (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Dólar hongkonés (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rupia india (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malasio (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgiano +STR_GAME_OPTIONS_CURRENCY_IRR :Rial iraní +STR_GAME_OPTIONS_CURRENCY_RUB :Nuevo rublo ruso +STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicano +STR_GAME_OPTIONS_CURRENCY_NTD :Nuevo dólar taiwanés +STR_GAME_OPTIONS_CURRENCY_CNY :Yuan chino +STR_GAME_OPTIONS_CURRENCY_HKD :Dólar hongkonés +STR_GAME_OPTIONS_CURRENCY_INR :Rupia india +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesia +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit malasio STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Guardado automático STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Elegir el intervalo de guardados automáticos diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 3b5fef7075..d9855b6f43 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -950,48 +950,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaen STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Välj valutaenhet ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Brittiskt pund (£) -STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Japansk yen (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Österrikisk shilling (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Schweizisk franc (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Tjeckisk krona (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :D-mark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krona (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Spansk peseta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Finsk mark (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Fransk franc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Grekisk drachme (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Ungersk forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Isländsk krona (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lira (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Nederländsk gulden (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krona (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polsk złoty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Rumänsk leu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rysk rubel (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krona (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Turkisk lira (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk krona (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estnisk krona (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litauisk litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Sydkoreansk won (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Sydafrikansk rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Brittiskt pund +STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Japansk yen +STR_GAME_OPTIONS_CURRENCY_ATS :Österrikisk shilling +STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc +STR_GAME_OPTIONS_CURRENCY_CHF :Schweizisk franc +STR_GAME_OPTIONS_CURRENCY_CZK :Tjeckisk krona +STR_GAME_OPTIONS_CURRENCY_DEM :D-mark +STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krona +STR_GAME_OPTIONS_CURRENCY_ESP :Spansk peseta +STR_GAME_OPTIONS_CURRENCY_FIM :Finsk mark +STR_GAME_OPTIONS_CURRENCY_FRF :Fransk franc +STR_GAME_OPTIONS_CURRENCY_GRD :Grekisk drachme +STR_GAME_OPTIONS_CURRENCY_HUF :Ungersk forint +STR_GAME_OPTIONS_CURRENCY_ISK :Isländsk krona +STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lira +STR_GAME_OPTIONS_CURRENCY_NLG :Nederländsk gulden +STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krona +STR_GAME_OPTIONS_CURRENCY_PLN :Polsk złoty +STR_GAME_OPTIONS_CURRENCY_RON :Rumänsk leu +STR_GAME_OPTIONS_CURRENCY_RUR :Rysk rubel +STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krona +STR_GAME_OPTIONS_CURRENCY_TRY :Turkisk lira +STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk krona +STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real +STR_GAME_OPTIONS_CURRENCY_EEK :Estnisk krona +STR_GAME_OPTIONS_CURRENCY_LTL :Litauisk litas +STR_GAME_OPTIONS_CURRENCY_KRW :Sydkoreansk won +STR_GAME_OPTIONS_CURRENCY_ZAR :Sydafrikansk rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :Egen... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgisk lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iransk rial (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Ny rysk rubel (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Mexikansk peso (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Ny taiwanesisk dollar (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Kinesisk renminbi (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongdollar (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupie (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk rupie (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk ringgit (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgisk lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iransk rial +STR_GAME_OPTIONS_CURRENCY_RUB :Ny rysk rubel +STR_GAME_OPTIONS_CURRENCY_MXN :Mexikansk peso +STR_GAME_OPTIONS_CURRENCY_NTD :Ny taiwanesisk dollar +STR_GAME_OPTIONS_CURRENCY_CNY :Kinesisk renminbi +STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongdollar +STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupie +STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk rupie +STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk ringgit STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Spara automatiskt STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Välj intervall mellan automatiskt sparande diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 5c99d9ad77..01724ed3b1 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -897,48 +897,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}நா STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}நாணய பிரிவு தேர்ந்தெடுத்தல் ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :பிரித்தானிய பவுண்டு (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :அமெரிக்கன் டாலர் (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :யுரோ (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :ஜப்பானிய என் (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :ஆஸ்திரிய சில்லிங் (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :பெல்கிய ப்ரேங்க் (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :சுவிஸ் ப்ரேங்க் (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :செக் கொருணா (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :டச்மார்க் (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :டேனிஷ் க்ரோன் (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :ஸ்பானிஷ் பெசெடா (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :பின்னிஷ் மார்க்கா (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :பிரெஞ்ச் ப்ரேங்க் (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :கிரேக்க ட்ரச்மா (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :ஹங்கேரிய போரின்ட் (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :ஐஸ்லாந்திய க்ரோனா (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :இத்தாலிய லிரா (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :டச்சு கில்டர் (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :நோர்வேஜிய க்ரோன் (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :போலிஷ் சிலாட்டி Złoty (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :ரோமானிய லூ (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :ரஷ்ய ரூபில்ஸ் (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :ஸ்லோவேனிய டொலர் (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :ஸ்வீடிஷ் க்ரோனா (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :துருக்கிய லிரா (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :சுலோவக் கொருணா (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :பிரேசிலிய ரியால் (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :எஸ்டோனிய க்ரூனி (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :லிதுவேனிய லிடாஸ் (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :தென்கொரிய வொன் (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :தென் ஆப்பிரிக்க ரான்ட் (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :பிரித்தானிய பவுண்டு +STR_GAME_OPTIONS_CURRENCY_USD :அமெரிக்கன் டாலர் +STR_GAME_OPTIONS_CURRENCY_EUR :யுரோ +STR_GAME_OPTIONS_CURRENCY_JPY :ஜப்பானிய என் +STR_GAME_OPTIONS_CURRENCY_ATS :ஆஸ்திரிய சில்லிங் +STR_GAME_OPTIONS_CURRENCY_BEF :பெல்கிய ப்ரேங்க் +STR_GAME_OPTIONS_CURRENCY_CHF :சுவிஸ் ப்ரேங்க் +STR_GAME_OPTIONS_CURRENCY_CZK :செக் கொருணா +STR_GAME_OPTIONS_CURRENCY_DEM :டச்மார்க் +STR_GAME_OPTIONS_CURRENCY_DKK :டேனிஷ் க்ரோன் +STR_GAME_OPTIONS_CURRENCY_ESP :ஸ்பானிஷ் பெசெடா +STR_GAME_OPTIONS_CURRENCY_FIM :பின்னிஷ் மார்க்கா +STR_GAME_OPTIONS_CURRENCY_FRF :பிரெஞ்ச் ப்ரேங்க் +STR_GAME_OPTIONS_CURRENCY_GRD :கிரேக்க ட்ரச்மா +STR_GAME_OPTIONS_CURRENCY_HUF :ஹங்கேரிய போரின்ட் +STR_GAME_OPTIONS_CURRENCY_ISK :ஐஸ்லாந்திய க்ரோனா +STR_GAME_OPTIONS_CURRENCY_ITL :இத்தாலிய லிரா +STR_GAME_OPTIONS_CURRENCY_NLG :டச்சு கில்டர் +STR_GAME_OPTIONS_CURRENCY_NOK :நோர்வேஜிய க்ரோன் +STR_GAME_OPTIONS_CURRENCY_PLN :போலிஷ் சிலாட்டி Złoty +STR_GAME_OPTIONS_CURRENCY_RON :ரோமானிய லூ +STR_GAME_OPTIONS_CURRENCY_RUR :ரஷ்ய ரூபில்ஸ் +STR_GAME_OPTIONS_CURRENCY_SIT :ஸ்லோவேனிய டொலர் +STR_GAME_OPTIONS_CURRENCY_SEK :ஸ்வீடிஷ் க்ரோனா +STR_GAME_OPTIONS_CURRENCY_TRY :துருக்கிய லிரா +STR_GAME_OPTIONS_CURRENCY_SKK :சுலோவக் கொருணா +STR_GAME_OPTIONS_CURRENCY_BRL :பிரேசிலிய ரியால் +STR_GAME_OPTIONS_CURRENCY_EEK :எஸ்டோனிய க்ரூனி +STR_GAME_OPTIONS_CURRENCY_LTL :லிதுவேனிய லிடாஸ் +STR_GAME_OPTIONS_CURRENCY_KRW :தென்கொரிய வொன் +STR_GAME_OPTIONS_CURRENCY_ZAR :தென் ஆப்பிரிக்க ரான்ட் STR_GAME_OPTIONS_CURRENCY_CUSTOM :புதிதாக... -STR_GAME_OPTIONS_CURRENCY_GEL :ஜார்ஜிய லாரி (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :ஈரானிய ரியால் (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :புதிய ரஷ்ய ரூபிள் (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :மெக்சிகன் பெசோ (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :புதிய தைவான் டாலர் (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :சீன ரென்மின்பி (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :ஹாங்காங் டாலர் (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :இந்திய ரூபாய் (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :இந்தோனேசிய ரூபியா (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :மலேசிய ரிங்கிட்டு (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :ஜார்ஜிய லாரி +STR_GAME_OPTIONS_CURRENCY_IRR :ஈரானிய ரியால் +STR_GAME_OPTIONS_CURRENCY_RUB :புதிய ரஷ்ய ரூபிள் +STR_GAME_OPTIONS_CURRENCY_MXN :மெக்சிகன் பெசோ +STR_GAME_OPTIONS_CURRENCY_NTD :புதிய தைவான் டாலர் +STR_GAME_OPTIONS_CURRENCY_CNY :சீன ரென்மின்பி +STR_GAME_OPTIONS_CURRENCY_HKD :ஹாங்காங் டாலர் +STR_GAME_OPTIONS_CURRENCY_INR :இந்திய ரூபாய் +STR_GAME_OPTIONS_CURRENCY_IDR :இந்தோனேசிய ரூபியா +STR_GAME_OPTIONS_CURRENCY_MYR :மலேசிய ரிங்கிட்டு STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}தானாக சேமி STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}தானியங்கி விளையாட்டு சேமிப்பு இடைவெளியைத் தேர்ந்தெடுக்கவும் diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 024b348ae1..d7a41bc94c 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -908,42 +908,42 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}หน STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}การเลือกสกุลเงิน ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :ปอนด์สเตอร์ลิง (£) -STR_GAME_OPTIONS_CURRENCY_USD :ดอลลาร์สหรัฐ ($) +STR_GAME_OPTIONS_CURRENCY_GBP :ปอนด์สเตอร์ลิง +STR_GAME_OPTIONS_CURRENCY_USD :ดอลลาร์สหรัฐ STR_GAME_OPTIONS_CURRENCY_EUR :ยูโร -STR_GAME_OPTIONS_CURRENCY_JPY :เยน (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :ชิลลิ่งออสเตรีย (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :ฟรังก์เบลเยี่ยม (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :ฟรังก์สวิส (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :โครูนาเช็ค (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :ดอยช์มาร์ค (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :โครนเดนมาร์ค (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :เพเซต้า (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :มาร์คคา ฟินแลนด์ (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :ฟรังก์ฝรั่งเศส(FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :ดรากช์มา กรีซ (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :ฟอรินท์ ฮังการี (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :โครนา ไอซแลนด์ (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :ลิรา อิตาลี (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :กิลเดอร์ ดัชต์ (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :โครน นอร์เวย์ (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :ซโลตี โปแลนด์ (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :ลิว โรมาเนีย (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :รูเบิ้ลส์ รัสเซีย (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :โทลาร์ สโลวีเนีย (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :โครนา สวีเดน (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :ลิรา ตุรกี (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :โครูนา สโลวาเกีย (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :เรียล บราซิล (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :ครูนิ เอสโทเนีย (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :วอน เกาหลีใต้ (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) +STR_GAME_OPTIONS_CURRENCY_JPY :เยน +STR_GAME_OPTIONS_CURRENCY_ATS :ชิลลิ่งออสเตรีย +STR_GAME_OPTIONS_CURRENCY_BEF :ฟรังก์เบลเยี่ยม +STR_GAME_OPTIONS_CURRENCY_CHF :ฟรังก์สวิส +STR_GAME_OPTIONS_CURRENCY_CZK :โครูนาเช็ค +STR_GAME_OPTIONS_CURRENCY_DEM :ดอยช์มาร์ค +STR_GAME_OPTIONS_CURRENCY_DKK :โครนเดนมาร์ค +STR_GAME_OPTIONS_CURRENCY_ESP :เพเซต้า +STR_GAME_OPTIONS_CURRENCY_FIM :มาร์คคา ฟินแลนด์ +STR_GAME_OPTIONS_CURRENCY_FRF :ฟรังก์ฝรั่งเศส +STR_GAME_OPTIONS_CURRENCY_GRD :ดรากช์มา กรีซ +STR_GAME_OPTIONS_CURRENCY_HUF :ฟอรินท์ ฮังการี +STR_GAME_OPTIONS_CURRENCY_ISK :โครนา ไอซแลนด์ +STR_GAME_OPTIONS_CURRENCY_ITL :ลิรา อิตาลี +STR_GAME_OPTIONS_CURRENCY_NLG :กิลเดอร์ ดัชต์ +STR_GAME_OPTIONS_CURRENCY_NOK :โครน นอร์เวย์ +STR_GAME_OPTIONS_CURRENCY_PLN :ซโลตี โปแลนด์ +STR_GAME_OPTIONS_CURRENCY_RON :ลิว โรมาเนีย +STR_GAME_OPTIONS_CURRENCY_RUR :รูเบิ้ลส์ รัสเซีย +STR_GAME_OPTIONS_CURRENCY_SIT :โทลาร์ สโลวีเนีย +STR_GAME_OPTIONS_CURRENCY_SEK :โครนา สวีเดน +STR_GAME_OPTIONS_CURRENCY_TRY :ลิรา ตุรกี +STR_GAME_OPTIONS_CURRENCY_SKK :โครูนา สโลวาเกีย +STR_GAME_OPTIONS_CURRENCY_BRL :เรียล บราซิล +STR_GAME_OPTIONS_CURRENCY_EEK :ครูนิ เอสโทเนีย +STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas +STR_GAME_OPTIONS_CURRENCY_KRW :วอน เกาหลีใต้ +STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand STR_GAME_OPTIONS_CURRENCY_CUSTOM :ระบุเอง... -STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR) -STR_GAME_OPTIONS_CURRENCY_HKD :ดอลลาร์ฮ่องกง (HKD) -STR_GAME_OPTIONS_CURRENCY_MYR :ริงกิตมาเลเซีย (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari +STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial +STR_GAME_OPTIONS_CURRENCY_HKD :ดอลลาร์ฮ่องกง +STR_GAME_OPTIONS_CURRENCY_MYR :ริงกิตมาเลเซีย STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}บันทึกเกมอัตโนมัติ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}เลือกระยะห่างระหว่างการบันทึกเกมอัตโนมัติแต่ละครั้ง diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index b45eaa3062..0ede64e441 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -937,48 +937,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}幣值 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}選擇幣值單位 ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :英鎊 (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :美元 (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :歐元 (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :日圓 (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :奧地利先令 (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :比利時法郎 (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :瑞士法郎 (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :捷克克朗 (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :德國馬克 (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :捷克克朗 (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :西班牙披索 (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :芬蘭馬克 (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :法國法朗 (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :希臘德拉克馬 (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :匈牙利福林 (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :冰島克朗 (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :義大利里拉 (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :荷蘭盾 (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :挪威克朗 (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :波蘭茲羅提 (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :羅馬尼亞列伊 (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :俄羅斯舊盧布 (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :斯洛文尼亞托拉 (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :瑞典克朗 (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :土耳其里拉 (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :斯洛伐克克朗 (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :巴西里拉 (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :愛沙尼亞克魯恩(EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :立陶宛立特 (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :韓圓 (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :南非蘭特 (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :英鎊 +STR_GAME_OPTIONS_CURRENCY_USD :美元 +STR_GAME_OPTIONS_CURRENCY_EUR :歐元 +STR_GAME_OPTIONS_CURRENCY_JPY :日圓 +STR_GAME_OPTIONS_CURRENCY_ATS :奧地利先令 +STR_GAME_OPTIONS_CURRENCY_BEF :比利時法郎 +STR_GAME_OPTIONS_CURRENCY_CHF :瑞士法郎 +STR_GAME_OPTIONS_CURRENCY_CZK :捷克克朗 +STR_GAME_OPTIONS_CURRENCY_DEM :德國馬克 +STR_GAME_OPTIONS_CURRENCY_DKK :捷克克朗 +STR_GAME_OPTIONS_CURRENCY_ESP :西班牙披索 +STR_GAME_OPTIONS_CURRENCY_FIM :芬蘭馬克 +STR_GAME_OPTIONS_CURRENCY_FRF :法國法朗 +STR_GAME_OPTIONS_CURRENCY_GRD :希臘德拉克馬 +STR_GAME_OPTIONS_CURRENCY_HUF :匈牙利福林 +STR_GAME_OPTIONS_CURRENCY_ISK :冰島克朗 +STR_GAME_OPTIONS_CURRENCY_ITL :義大利里拉 +STR_GAME_OPTIONS_CURRENCY_NLG :荷蘭盾 +STR_GAME_OPTIONS_CURRENCY_NOK :挪威克朗 +STR_GAME_OPTIONS_CURRENCY_PLN :波蘭茲羅提 +STR_GAME_OPTIONS_CURRENCY_RON :羅馬尼亞列伊 +STR_GAME_OPTIONS_CURRENCY_RUR :俄羅斯舊盧布 +STR_GAME_OPTIONS_CURRENCY_SIT :斯洛文尼亞托拉 +STR_GAME_OPTIONS_CURRENCY_SEK :瑞典克朗 +STR_GAME_OPTIONS_CURRENCY_TRY :土耳其里拉 +STR_GAME_OPTIONS_CURRENCY_SKK :斯洛伐克克朗 +STR_GAME_OPTIONS_CURRENCY_BRL :巴西里拉 +STR_GAME_OPTIONS_CURRENCY_EEK :愛沙尼亞克魯恩 +STR_GAME_OPTIONS_CURRENCY_LTL :立陶宛立特 +STR_GAME_OPTIONS_CURRENCY_KRW :韓圓 +STR_GAME_OPTIONS_CURRENCY_ZAR :南非蘭特 STR_GAME_OPTIONS_CURRENCY_CUSTOM :自訂... -STR_GAME_OPTIONS_CURRENCY_GEL :喬治亞拉里 (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :伊朗里亞爾 (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :俄羅斯盧布 (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :墨西哥披索 (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :新臺幣 (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :中國人民幣(CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :港幣 (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :印度盧比(INR) -STR_GAME_OPTIONS_CURRENCY_IDR :印尼盾 (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :馬來西亞令吉 (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :喬治亞拉里 +STR_GAME_OPTIONS_CURRENCY_IRR :伊朗里亞爾 +STR_GAME_OPTIONS_CURRENCY_RUB :俄羅斯盧布 +STR_GAME_OPTIONS_CURRENCY_MXN :墨西哥披索 +STR_GAME_OPTIONS_CURRENCY_NTD :新臺幣 +STR_GAME_OPTIONS_CURRENCY_CNY :中國人民幣 +STR_GAME_OPTIONS_CURRENCY_HKD :港幣 +STR_GAME_OPTIONS_CURRENCY_INR :印度盧比 +STR_GAME_OPTIONS_CURRENCY_IDR :印尼盾 +STR_GAME_OPTIONS_CURRENCY_MYR :馬來西亞令吉 STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}自動存檔 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}選擇自動存檔頻率 diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 255aed8633..2c9cad1fa1 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -953,48 +953,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Para bir STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Para birimi seçimi ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Sterlin (£) -STR_GAME_OPTIONS_CURRENCY_USD :Amerikan Doları ($) -STR_GAME_OPTIONS_CURRENCY_EUR :Avro (€) -STR_GAME_OPTIONS_CURRENCY_JPY :Japon Yeni (¥) -STR_GAME_OPTIONS_CURRENCY_ATS :Avusturya Şilini (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Belçika Frankı (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :İsviçre Frankı (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Çek Korunası (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Alman markı (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Danimarka Kronu (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Pezeta (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Fin Markkası (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Fransız Frankı (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Yunan Drahmisi (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Macar Forinti (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :İzlanda Kronası (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :İtalyan Lirası (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Hollanda Guilderi (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Norveç Kronu (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Polonya Zilotisi (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Romanya Leusu (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rus Rublesi (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenya Toları (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :İsveç Kronası (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Türk Lirası (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Korunası (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Brezilya Reali (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Estonya Kronu (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litvanya Litası (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Güney Kore Vonu (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Güney Afrika Randı (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Sterlin +STR_GAME_OPTIONS_CURRENCY_USD :Amerikan Doları +STR_GAME_OPTIONS_CURRENCY_EUR :Avro +STR_GAME_OPTIONS_CURRENCY_JPY :Japon Yeni +STR_GAME_OPTIONS_CURRENCY_ATS :Avusturya Şilini +STR_GAME_OPTIONS_CURRENCY_BEF :Belçika Frankı +STR_GAME_OPTIONS_CURRENCY_CHF :İsviçre Frankı +STR_GAME_OPTIONS_CURRENCY_CZK :Çek Korunası +STR_GAME_OPTIONS_CURRENCY_DEM :Alman markı +STR_GAME_OPTIONS_CURRENCY_DKK :Danimarka Kronu +STR_GAME_OPTIONS_CURRENCY_ESP :Pezeta +STR_GAME_OPTIONS_CURRENCY_FIM :Fin Markkası +STR_GAME_OPTIONS_CURRENCY_FRF :Fransız Frankı +STR_GAME_OPTIONS_CURRENCY_GRD :Yunan Drahmisi +STR_GAME_OPTIONS_CURRENCY_HUF :Macar Forinti +STR_GAME_OPTIONS_CURRENCY_ISK :İzlanda Kronası +STR_GAME_OPTIONS_CURRENCY_ITL :İtalyan Lirası +STR_GAME_OPTIONS_CURRENCY_NLG :Hollanda Guilderi +STR_GAME_OPTIONS_CURRENCY_NOK :Norveç Kronu +STR_GAME_OPTIONS_CURRENCY_PLN :Polonya Zilotisi +STR_GAME_OPTIONS_CURRENCY_RON :Romanya Leusu +STR_GAME_OPTIONS_CURRENCY_RUR :Rus Rublesi +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenya Toları +STR_GAME_OPTIONS_CURRENCY_SEK :İsveç Kronası +STR_GAME_OPTIONS_CURRENCY_TRY :Türk Lirası +STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Korunası +STR_GAME_OPTIONS_CURRENCY_BRL :Brezilya Reali +STR_GAME_OPTIONS_CURRENCY_EEK :Estonya Kronu +STR_GAME_OPTIONS_CURRENCY_LTL :Litvanya Litası +STR_GAME_OPTIONS_CURRENCY_KRW :Güney Kore Vonu +STR_GAME_OPTIONS_CURRENCY_ZAR :Güney Afrika Randı STR_GAME_OPTIONS_CURRENCY_CUSTOM :Özel... -STR_GAME_OPTIONS_CURRENCY_GEL :Gürcistan Larisi (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :İran Riyali (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Yeni Rus Rublesi (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Meksika Pezosu (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Yeni Tayvan Doları (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Çin Yuanı (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Doları (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Hindistan Rupisi (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Endonezya Rupiahı (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Malezya Ringgiti (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Gürcistan Larisi +STR_GAME_OPTIONS_CURRENCY_IRR :İran Riyali +STR_GAME_OPTIONS_CURRENCY_RUB :Yeni Rus Rublesi +STR_GAME_OPTIONS_CURRENCY_MXN :Meksika Pezosu +STR_GAME_OPTIONS_CURRENCY_NTD :Yeni Tayvan Doları +STR_GAME_OPTIONS_CURRENCY_CNY :Çin Yuanı +STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Doları +STR_GAME_OPTIONS_CURRENCY_INR :Hindistan Rupisi +STR_GAME_OPTIONS_CURRENCY_IDR :Endonezya Rupiahı +STR_GAME_OPTIONS_CURRENCY_MYR :Malezya Ringgiti STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Otomatik Kaydet STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Otomatik kaydetme sıklığını seçin diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index d5da475b71..359a50321d 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -1080,48 +1080,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Грош STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Виберіть грошову одиницю ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Британський фунт (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Американський долар (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Євро (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Японська ієна (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Австрійський шилінг (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Бельгійський франк (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Швейцарський франк (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Чеська крона (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Німецька марка (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Данська крона (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Іспанська песета (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Фінська марка (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Французький франк (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Грецька драхма (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Угорський форинт (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Ісландська крона (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Італійська ліра (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Нідерландський гульден (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Норвезька крона (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Польський злотий (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Румунський лей (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Російський рубель (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Словенський талер (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Шведська крона (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Турецька ліра (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Словацька крона (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Бразильський реал (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Естонська крона (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Литовський літ (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Південнокорейський вон (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Південноафриканський ранд (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Британський фунт +STR_GAME_OPTIONS_CURRENCY_USD :Американський долар +STR_GAME_OPTIONS_CURRENCY_EUR :Євро +STR_GAME_OPTIONS_CURRENCY_JPY :Японська ієна +STR_GAME_OPTIONS_CURRENCY_ATS :Австрійський шилінг +STR_GAME_OPTIONS_CURRENCY_BEF :Бельгійський франк +STR_GAME_OPTIONS_CURRENCY_CHF :Швейцарський франк +STR_GAME_OPTIONS_CURRENCY_CZK :Чеська крона +STR_GAME_OPTIONS_CURRENCY_DEM :Німецька марка +STR_GAME_OPTIONS_CURRENCY_DKK :Данська крона +STR_GAME_OPTIONS_CURRENCY_ESP :Іспанська песета +STR_GAME_OPTIONS_CURRENCY_FIM :Фінська марка +STR_GAME_OPTIONS_CURRENCY_FRF :Французький франк +STR_GAME_OPTIONS_CURRENCY_GRD :Грецька драхма +STR_GAME_OPTIONS_CURRENCY_HUF :Угорський форинт +STR_GAME_OPTIONS_CURRENCY_ISK :Ісландська крона +STR_GAME_OPTIONS_CURRENCY_ITL :Італійська ліра +STR_GAME_OPTIONS_CURRENCY_NLG :Нідерландський гульден +STR_GAME_OPTIONS_CURRENCY_NOK :Норвезька крона +STR_GAME_OPTIONS_CURRENCY_PLN :Польський злотий +STR_GAME_OPTIONS_CURRENCY_RON :Румунський лей +STR_GAME_OPTIONS_CURRENCY_RUR :Російський рубель +STR_GAME_OPTIONS_CURRENCY_SIT :Словенський талер +STR_GAME_OPTIONS_CURRENCY_SEK :Шведська крона +STR_GAME_OPTIONS_CURRENCY_TRY :Турецька ліра +STR_GAME_OPTIONS_CURRENCY_SKK :Словацька крона +STR_GAME_OPTIONS_CURRENCY_BRL :Бразильський реал +STR_GAME_OPTIONS_CURRENCY_EEK :Естонська крона +STR_GAME_OPTIONS_CURRENCY_LTL :Литовський літ +STR_GAME_OPTIONS_CURRENCY_KRW :Південнокорейський вон +STR_GAME_OPTIONS_CURRENCY_ZAR :Південноафриканський ранд STR_GAME_OPTIONS_CURRENCY_CUSTOM :Власна... -STR_GAME_OPTIONS_CURRENCY_GEL :Грузинські ларі (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Іранський ріал (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Російський новий рубель (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Мексиканське песо (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Новий тайваньський долар (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Китайські ренміні (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Гонконгський долар (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Індійська рупія (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Індонезійська рупія (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Малайзійський рингіт (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Грузинські ларі +STR_GAME_OPTIONS_CURRENCY_IRR :Іранський ріал +STR_GAME_OPTIONS_CURRENCY_RUB :Російський новий рубель +STR_GAME_OPTIONS_CURRENCY_MXN :Мексиканське песо +STR_GAME_OPTIONS_CURRENCY_NTD :Новий тайваньський долар +STR_GAME_OPTIONS_CURRENCY_CNY :Китайські ренміні +STR_GAME_OPTIONS_CURRENCY_HKD :Гонконгський долар +STR_GAME_OPTIONS_CURRENCY_INR :Індійська рупія +STR_GAME_OPTIONS_CURRENCY_IDR :Індонезійська рупія +STR_GAME_OPTIONS_CURRENCY_MYR :Малайзійський рингіт STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автозбереження STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Виберіть період автозбереження гри diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 7e9d12674f..c912030d1e 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -862,37 +862,37 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}کرنس STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}کرنسی کی اکائی اختیار کریں ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :برطانوی پاونڈ (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :امریکی ڈالر (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :یورو (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :جاپانی ین (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :آسٹرین شِلنگ (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :بیلجیم کا فرانک (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :سوئس فرانک (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :چیک کرونا (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :ڈچ مارک (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :ڈینش کرونے (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :اسپینی پیسیتا (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :فِنش مارکہ (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :فرنچ فرانک (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :یونانی دراچما (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :ہینگرین فورِنٹ (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :آئس لینڈ کا کرونا (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :اِٹالین لیرا (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :ڈچ گِلڈر (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :ناروئیجین کرونے (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :پولش زلوٹے (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :رومانین لیو (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :رشین روبل (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :سلوئینین تولار (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :سوئیڈش کرونا (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :ٹرکش لیرا (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :سلواک کرونا (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :برازیلین رئیل (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :اِسٹونین کرونی (EEK) +STR_GAME_OPTIONS_CURRENCY_GBP :برطانوی پاونڈ +STR_GAME_OPTIONS_CURRENCY_USD :امریکی ڈالر +STR_GAME_OPTIONS_CURRENCY_EUR :یورو +STR_GAME_OPTIONS_CURRENCY_JPY :جاپانی ین +STR_GAME_OPTIONS_CURRENCY_ATS :آسٹرین شِلنگ +STR_GAME_OPTIONS_CURRENCY_BEF :بیلجیم کا فرانک +STR_GAME_OPTIONS_CURRENCY_CHF :سوئس فرانک +STR_GAME_OPTIONS_CURRENCY_CZK :چیک کرونا +STR_GAME_OPTIONS_CURRENCY_DEM :ڈچ مارک +STR_GAME_OPTIONS_CURRENCY_DKK :ڈینش کرونے +STR_GAME_OPTIONS_CURRENCY_ESP :اسپینی پیسیتا +STR_GAME_OPTIONS_CURRENCY_FIM :فِنش مارکہ +STR_GAME_OPTIONS_CURRENCY_FRF :فرنچ فرانک +STR_GAME_OPTIONS_CURRENCY_GRD :یونانی دراچما +STR_GAME_OPTIONS_CURRENCY_HUF :ہینگرین فورِنٹ +STR_GAME_OPTIONS_CURRENCY_ISK :آئس لینڈ کا کرونا +STR_GAME_OPTIONS_CURRENCY_ITL :اِٹالین لیرا +STR_GAME_OPTIONS_CURRENCY_NLG :ڈچ گِلڈر +STR_GAME_OPTIONS_CURRENCY_NOK :ناروئیجین کرونے +STR_GAME_OPTIONS_CURRENCY_PLN :پولش زلوٹے +STR_GAME_OPTIONS_CURRENCY_RON :رومانین لیو +STR_GAME_OPTIONS_CURRENCY_RUR :رشین روبل +STR_GAME_OPTIONS_CURRENCY_SIT :سلوئینین تولار +STR_GAME_OPTIONS_CURRENCY_SEK :سوئیڈش کرونا +STR_GAME_OPTIONS_CURRENCY_TRY :ٹرکش لیرا +STR_GAME_OPTIONS_CURRENCY_SKK :سلواک کرونا +STR_GAME_OPTIONS_CURRENCY_BRL :برازیلین رئیل +STR_GAME_OPTIONS_CURRENCY_EEK :اِسٹونین کرونی STR_GAME_OPTIONS_CURRENCY_LTL :لتھوینیا کے لٹاس (لٹل) -STR_GAME_OPTIONS_CURRENCY_KRW :جنوبی کوریا کے ون(KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :جنوبی افریقہ کے رنڈ (ZAR) +STR_GAME_OPTIONS_CURRENCY_KRW :جنوبی کوریا کے ون +STR_GAME_OPTIONS_CURRENCY_ZAR :جنوبی افریقہ کے رنڈ STR_GAME_OPTIONS_CURRENCY_CUSTOM :اپنی مرضی کی ۔۔۔ STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}خود مختار بچاو diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 977cf50a1e..05af0a7a26 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -952,48 +952,48 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Đơn v STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Lựa chọn đơn vị tiền tệ ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Bảng Anh (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Đô-la Mỹ (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yên Nhật (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Shilling Úc (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Phơ-răng Bỉ (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Phơ-răng Thụy Sỹ (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Séc (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Mác Đức (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Krone Đan Mạch (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Tây Ban Nha(ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Markka Phần Lan (FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Franc Pháp (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Hy Lạp (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint Hungary (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Đồng Króna (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira Ý (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Guilder Hà Lan (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Krone Na Uy (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Phần Lan (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Ru-ma-ni (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rúp Nga (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Krona Thụy Điển (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira Thổ Nhĩ Kỳ (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slovakia (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Đồng Real Brasil (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Kroon Estonia (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Đồng Litas Lát-vi (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won Hàn Quốc (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Nam Phi (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Bảng Anh +STR_GAME_OPTIONS_CURRENCY_USD :Đô-la Mỹ +STR_GAME_OPTIONS_CURRENCY_EUR :Euro +STR_GAME_OPTIONS_CURRENCY_JPY :Yên Nhật +STR_GAME_OPTIONS_CURRENCY_ATS :Shilling Úc +STR_GAME_OPTIONS_CURRENCY_BEF :Phơ-răng Bỉ +STR_GAME_OPTIONS_CURRENCY_CHF :Phơ-răng Thụy Sỹ +STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Séc +STR_GAME_OPTIONS_CURRENCY_DEM :Mác Đức +STR_GAME_OPTIONS_CURRENCY_DKK :Krone Đan Mạch +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Tây Ban Nha +STR_GAME_OPTIONS_CURRENCY_FIM :Markka Phần Lan +STR_GAME_OPTIONS_CURRENCY_FRF :Franc Pháp +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Hy Lạp +STR_GAME_OPTIONS_CURRENCY_HUF :Forint Hungary +STR_GAME_OPTIONS_CURRENCY_ISK :Đồng Króna +STR_GAME_OPTIONS_CURRENCY_ITL :Lira Ý +STR_GAME_OPTIONS_CURRENCY_NLG :Guilder Hà Lan +STR_GAME_OPTIONS_CURRENCY_NOK :Krone Na Uy +STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Phần Lan +STR_GAME_OPTIONS_CURRENCY_RON :Leu Ru-ma-ni +STR_GAME_OPTIONS_CURRENCY_RUR :Rúp Nga +STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar +STR_GAME_OPTIONS_CURRENCY_SEK :Krona Thụy Điển +STR_GAME_OPTIONS_CURRENCY_TRY :Lira Thổ Nhĩ Kỳ +STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slovakia +STR_GAME_OPTIONS_CURRENCY_BRL :Đồng Real Brasil +STR_GAME_OPTIONS_CURRENCY_EEK :Kroon Estonia +STR_GAME_OPTIONS_CURRENCY_LTL :Đồng Litas Lát-vi +STR_GAME_OPTIONS_CURRENCY_KRW :Won Hàn Quốc +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Nam Phi STR_GAME_OPTIONS_CURRENCY_CUSTOM :Tùy chọn... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Đồng Rúp Nga mới (RUB) -STR_GAME_OPTIONS_CURRENCY_MXN :Peso México (MXN) -STR_GAME_OPTIONS_CURRENCY_NTD :Tân Đài tệ (NTD) -STR_GAME_OPTIONS_CURRENCY_CNY :Nhân dân tệ TQ (CNY) -STR_GAME_OPTIONS_CURRENCY_HKD :Đô-la Hồng Kông (HKD) -STR_GAME_OPTIONS_CURRENCY_INR :Rupee Ấn Độ (INR) -STR_GAME_OPTIONS_CURRENCY_IDR :Rupiah Indonesia (IDR) -STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysia (MYR) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran +STR_GAME_OPTIONS_CURRENCY_RUB :Đồng Rúp Nga mới +STR_GAME_OPTIONS_CURRENCY_MXN :Peso México +STR_GAME_OPTIONS_CURRENCY_NTD :Tân Đài tệ +STR_GAME_OPTIONS_CURRENCY_CNY :Nhân dân tệ TQ +STR_GAME_OPTIONS_CURRENCY_HKD :Đô-la Hồng Kông +STR_GAME_OPTIONS_CURRENCY_INR :Rupee Ấn Độ +STR_GAME_OPTIONS_CURRENCY_IDR :Rupiah Indonesia +STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysia STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Lưu tự động STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Lựa chọn khoảng thời gian tự động lưu diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 385514e478..96c398850e 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -895,42 +895,42 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Uned Ari STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Dewis unedau arian ###length 42 -STR_GAME_OPTIONS_CURRENCY_GBP :Punnoedd Prydeinig (GBP) -STR_GAME_OPTIONS_CURRENCY_USD :Doleri America (USD) -STR_GAME_OPTIONS_CURRENCY_EUR :Ewro (EUR) -STR_GAME_OPTIONS_CURRENCY_JPY :Yen Siapan (JPY) -STR_GAME_OPTIONS_CURRENCY_ATS :Swllt Awstriaidd (ATS) -STR_GAME_OPTIONS_CURRENCY_BEF :Ffranc Belgaidd (BEF) -STR_GAME_OPTIONS_CURRENCY_CHF :Ffranc Swisaidd (CHF) -STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Tsecaidd (CZK) -STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) -STR_GAME_OPTIONS_CURRENCY_DKK :Krone Danaidd (DKK) -STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Sbaen (ESP) -STR_GAME_OPTIONS_CURRENCY_FIM :Markka Ffinaidd(FIM) -STR_GAME_OPTIONS_CURRENCY_FRF :Ffranc Ffrainc (FRF) -STR_GAME_OPTIONS_CURRENCY_GRD :Drachma (GRD) -STR_GAME_OPTIONS_CURRENCY_HUF :Forint (HUF) -STR_GAME_OPTIONS_CURRENCY_ISK :Krona Ynys yr Iâ (ISK) -STR_GAME_OPTIONS_CURRENCY_ITL :Lira Eidalaidd (ITL) -STR_GAME_OPTIONS_CURRENCY_NLG :Guilder (NLG) -STR_GAME_OPTIONS_CURRENCY_NOK :Krone Norwyaidd (NOK) -STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Pwylaidd (PLN) -STR_GAME_OPTIONS_CURRENCY_RON :Leu Rwmanaidd (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Rwbl Rwsaidd (RUR) -STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slofenaidd (SIT) -STR_GAME_OPTIONS_CURRENCY_SEK :Krona Swedaidd (SEK) -STR_GAME_OPTIONS_CURRENCY_TRY :Lira Twrcaidd (TRY) -STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slofacaidd (SKK) -STR_GAME_OPTIONS_CURRENCY_BRL :Real Brazilaidd (BRL) -STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Estonia (EEK) -STR_GAME_OPTIONS_CURRENCY_LTL :Litau Lithiwanaidd (LTL) -STR_GAME_OPTIONS_CURRENCY_KRW :Won De Korea (KRW) -STR_GAME_OPTIONS_CURRENCY_ZAR :Rand De Affrica (ZAR) +STR_GAME_OPTIONS_CURRENCY_GBP :Punnoedd Prydeinig +STR_GAME_OPTIONS_CURRENCY_USD :Doleri America +STR_GAME_OPTIONS_CURRENCY_EUR :Ewro +STR_GAME_OPTIONS_CURRENCY_JPY :Yen Siapan +STR_GAME_OPTIONS_CURRENCY_ATS :Swllt Awstriaidd +STR_GAME_OPTIONS_CURRENCY_BEF :Ffranc Belgaidd +STR_GAME_OPTIONS_CURRENCY_CHF :Ffranc Swisaidd +STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Tsecaidd +STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark +STR_GAME_OPTIONS_CURRENCY_DKK :Krone Danaidd +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Sbaen +STR_GAME_OPTIONS_CURRENCY_FIM :Markka Ffinaidd +STR_GAME_OPTIONS_CURRENCY_FRF :Ffranc Ffrainc +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma +STR_GAME_OPTIONS_CURRENCY_HUF :Forint +STR_GAME_OPTIONS_CURRENCY_ISK :Krona Ynys yr Iâ +STR_GAME_OPTIONS_CURRENCY_ITL :Lira Eidalaidd +STR_GAME_OPTIONS_CURRENCY_NLG :Guilder +STR_GAME_OPTIONS_CURRENCY_NOK :Krone Norwyaidd +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Pwylaidd +STR_GAME_OPTIONS_CURRENCY_RON :Leu Rwmanaidd +STR_GAME_OPTIONS_CURRENCY_RUR :Rwbl Rwsaidd +STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slofenaidd +STR_GAME_OPTIONS_CURRENCY_SEK :Krona Swedaidd +STR_GAME_OPTIONS_CURRENCY_TRY :Lira Twrcaidd +STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slofacaidd +STR_GAME_OPTIONS_CURRENCY_BRL :Real Brazilaidd +STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Estonia +STR_GAME_OPTIONS_CURRENCY_LTL :Litau Lithiwanaidd +STR_GAME_OPTIONS_CURRENCY_KRW :Won De Korea +STR_GAME_OPTIONS_CURRENCY_ZAR :Rand De Affrica STR_GAME_OPTIONS_CURRENCY_CUSTOM :Addasedig... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR) -STR_GAME_OPTIONS_CURRENCY_RUB :Rwbl Rwsaidd Newydd (RUB) -STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Tseina (CNY) +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran +STR_GAME_OPTIONS_CURRENCY_RUB :Rwbl Rwsaidd Newydd +STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Tseina STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Awtogadw STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Dewiswch pa mor aml y dylid awtogadw gemau From 78c9446aef0f592f6a871e2466ddb8b9dfe60aef Mon Sep 17 00:00:00 2001 From: translators Date: Fri, 23 Jun 2023 18:41:29 +0000 Subject: [PATCH 113/123] Update: Translations from eints norwegian (bokmal): 1 change by buzzCraft chinese (traditional): 1 change by wpi3 spanish (mexican): 1 change by absay lithuanian: 1 change by devbotas portuguese (brazilian): 3 changes by Greavez --- src/lang/afrikaans.txt | 1 + src/lang/arabic_egypt.txt | 1 + src/lang/basque.txt | 1 + src/lang/belarusian.txt | 1 + src/lang/brazilian_portuguese.txt | 7 ++++--- src/lang/bulgarian.txt | 1 + src/lang/catalan.txt | 1 + src/lang/chuvash.txt | 1 + src/lang/croatian.txt | 1 + src/lang/czech.txt | 1 + src/lang/danish.txt | 1 + src/lang/dutch.txt | 1 + src/lang/english_AU.txt | 1 + src/lang/english_US.txt | 1 + src/lang/esperanto.txt | 1 + src/lang/estonian.txt | 1 + src/lang/faroese.txt | 1 + src/lang/finnish.txt | 1 + src/lang/french.txt | 1 + src/lang/frisian.txt | 1 + src/lang/gaelic.txt | 1 + src/lang/galician.txt | 1 + src/lang/german.txt | 1 + src/lang/greek.txt | 1 + src/lang/hebrew.txt | 1 + src/lang/hindi.txt | 1 + src/lang/hungarian.txt | 1 + src/lang/icelandic.txt | 1 + src/lang/ido.txt | 1 + src/lang/indonesian.txt | 1 + src/lang/irish.txt | 1 + src/lang/italian.txt | 1 + src/lang/japanese.txt | 1 + src/lang/korean.txt | 1 + src/lang/latin.txt | 1 + src/lang/latvian.txt | 1 + src/lang/lithuanian.txt | 3 ++- src/lang/luxembourgish.txt | 1 + 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 | 3 ++- src/lang/norwegian_nynorsk.txt | 1 + src/lang/persian.txt | 1 + src/lang/polish.txt | 1 + src/lang/portuguese.txt | 1 + src/lang/romanian.txt | 1 + src/lang/russian.txt | 1 + src/lang/serbian.txt | 1 + src/lang/simplified_chinese.txt | 1 + src/lang/slovak.txt | 1 + src/lang/slovenian.txt | 1 + src/lang/spanish.txt | 1 + src/lang/spanish_MX.txt | 3 ++- src/lang/swedish.txt | 1 + src/lang/tamil.txt | 1 + src/lang/thai.txt | 1 + src/lang/traditional_chinese.txt | 3 ++- src/lang/turkish.txt | 1 + src/lang/ukrainian.txt | 1 + src/lang/urdu.txt | 1 + src/lang/vietnamese.txt | 1 + src/lang/welsh.txt | 1 + 64 files changed, 71 insertions(+), 7 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 910a58d214..bd110031ec 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -908,6 +908,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Spel Ops STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Geldeenheid STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Geld eendheid keuse + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Britse Pond STR_GAME_OPTIONS_CURRENCY_USD :Amerikaanse Dollar diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 20401ca326..c0401b1940 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -902,6 +902,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}إعدا STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}وحدة العملة STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}اختيار وحدة العملة + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :جنية STR_GAME_OPTIONS_CURRENCY_USD :دولار diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 2cc5b181eb..adf80e99eb 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -884,6 +884,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Jokoaren STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Diru unitateak STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Diru unitatearen aukeraketa + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libra STR_GAME_OPTIONS_CURRENCY_USD :Dolar Amerikarrak diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 05dc0a51c1..b751ced72e 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -1217,6 +1217,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Нала STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Валюта STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Выбар валюты + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Брытанскі фунт STR_GAME_OPTIONS_CURRENCY_USD :Даляр ЗША diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index ee85590ee1..f171545aed 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades monetárias STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Seleção de unidades monetárias + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libras Britânicas STR_GAME_OPTIONS_CURRENCY_USD :Dólares Norte Americanos @@ -985,15 +986,15 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lituano STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul-Coreano STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul-Africano STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizado... -STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Georgia -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano +STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Georgia (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano (IRR) STR_GAME_OPTIONS_CURRENCY_RUB :Novo Rublo Russo STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexicano STR_GAME_OPTIONS_CURRENCY_NTD :Novo dólar de Taiwan STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chinês STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong STR_GAME_OPTIONS_CURRENCY_INR :Rúpia Indiana -STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonésia +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia Indonésia (IDR) STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaio STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvar automaticamente diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index cc9aaf698d..aa9c883723 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -890,6 +890,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Наст STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Парична единица STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Избор на парична единица + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Британска лира STR_GAME_OPTIONS_CURRENCY_USD :Американски долар diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index e05627599d..b85012a456 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100{NBSP}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Moneda STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecció de la unitat monetària + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Lliura esterlina STR_GAME_OPTIONS_CURRENCY_USD :Dòlar americà diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index d2b6ef6380..ab004f943c 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -486,6 +486,7 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Пӗлт + ###length 42 STR_GAME_OPTIONS_CURRENCY_RUR :Вырӑсла тенкӗ (RUR) diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 7a2ae80bc8..211c22f9b4 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -1007,6 +1007,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Postavke STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Novčane jedinice STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor novčanih jedinica + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Funte STR_GAME_OPTIONS_CURRENCY_USD :Američki Dolar diff --git a/src/lang/czech.txt b/src/lang/czech.txt index d2f44f019b..aa65162fd7 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -1023,6 +1023,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Možnost STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Měna STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výběr jednotek měny + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libra STR_GAME_OPTIONS_CURRENCY_USD :Dolar diff --git a/src/lang/danish.txt b/src/lang/danish.txt index eba4cadc20..2044247191 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaenhed STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valg af valutaenhed + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Britiske Pund STR_GAME_OPTIONS_CURRENCY_USD :Amerikanske dollars diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 626bd9fd6a..afd055b880 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valuta kiezen + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Britse Pond STR_GAME_OPTIONS_CURRENCY_USD :Dollar diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 8acc7c5281..57e62325d4 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency units STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :British Pound STR_GAME_OPTIONS_CURRENCY_USD :American Dollar diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index c622ee91e1..58c8a55a2c 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency units STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :British Pound STR_GAME_OPTIONS_CURRENCY_USD :American Dollar diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index b34f69ebe7..6f658888f4 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -1027,6 +1027,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Monunuoj STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Elekto de monunuoj + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Brita Pundo STR_GAME_OPTIONS_CURRENCY_USD :Usona Dolaro diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 52d7c50b59..3b10e6f420 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -993,6 +993,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Liidese STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valuuta valimine + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Suurbritannia nael STR_GAME_OPTIONS_CURRENCY_USD :USA dollar diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index fd3339ed67..f31b58ca49 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -864,6 +864,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Spæli m STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldsoyra eindir STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Úrval av gjaldsoyra eindum + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Bretsk Pund STR_GAME_OPTIONS_CURRENCY_USD :Dollarar diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index ec07e69819..bc833f826b 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100{NBSP}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Rahayksikkö STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Rahayksikön valinta + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Englannin punta STR_GAME_OPTIONS_CURRENCY_USD :Yhdysvaltain dollari diff --git a/src/lang/french.txt b/src/lang/french.txt index 65c4584ec8..531a96a9d9 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Devise STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Sélectionner l'unité monétaire + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Livre STR_GAME_OPTIONS_CURRENCY_USD :Dollar diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index 35dd0a018e..44972751ce 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -901,6 +901,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Spulopsj STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Muntienheid STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Muntienheidseleksje + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Britske Pûn STR_GAME_OPTIONS_CURRENCY_USD :Amerikaanske Dollars diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index c0966f8d9b..512c0c76e6 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -1097,6 +1097,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Roghainn STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Aonadan airgeadra STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Tagh aonadan airgeadra + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Not Breatannach STR_GAME_OPTIONS_CURRENCY_USD :Dolar Aimeireaganach diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 15e89e936e..5c97de6c09 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades monetarias STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selección de unidades monetarias + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libra esterlina STR_GAME_OPTIONS_CURRENCY_USD :Dólar americano diff --git a/src/lang/german.txt b/src/lang/german.txt index 17fc8fec19..b8b7427b77 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -949,6 +949,7 @@ STR_GAME_OPTIONS_VOLUME_75 :75% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Währung STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Währung auswählen + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Britische Pfund STR_GAME_OPTIONS_CURRENCY_USD :US-Dollar diff --git a/src/lang/greek.txt b/src/lang/greek.txt index c32f7ebb91..03dea826ee 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -1042,6 +1042,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Επιλ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Νομισματικές μονάδες STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Επιλογή νομισματικών μονάδων + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Στερλίνα Ηνωμένου Βασιλείου STR_GAME_OPTIONS_CURRENCY_USD :Δολλάριο Η.Π.Α. diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 85e7cb9eb0..a85f8d5f28 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -913,6 +913,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}אפשר STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}מטבע STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}בחירת מטבע + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :לירה שטרלינג STR_GAME_OPTIONS_CURRENCY_USD :דולר אמריקאי diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 422f92b57f..ca81ba5781 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -274,6 +274,7 @@ STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLAC + ###length 42 STR_GAME_OPTIONS_CURRENCY_FIM :फिनलैंड मार्का (FIM) STR_GAME_OPTIONS_CURRENCY_ISK :आइसलैंडिक क्रोना (ISK) diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index f07d4c504c..3f3c7a5e03 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -1015,6 +1015,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Pénznem STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}A használt pénznem kiválasztása + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Angol Font STR_GAME_OPTIONS_CURRENCY_USD :Amerikai Dollár diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index f7881e1fda..ee65427078 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -863,6 +863,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Stilling STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldmiðill STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Val á gjaldmiðli + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Sterlingspund STR_GAME_OPTIONS_CURRENCY_USD :Bandaríkjadalur diff --git a/src/lang/ido.txt b/src/lang/ido.txt index ddee0e4460..16e7b7bfdb 100644 --- a/src/lang/ido.txt +++ b/src/lang/ido.txt @@ -475,6 +475,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Ludo Sel + ###length 42 diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 56f56e5864..8329e9f781 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -936,6 +936,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Opsi per STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Mata uang STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Pilih mata uang + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Poundsterling STR_GAME_OPTIONS_CURRENCY_USD :Dollar diff --git a/src/lang/irish.txt b/src/lang/irish.txt index bcc07c5d71..1985e73865 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -925,6 +925,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Roghanna STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Aonaid airgeadra STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Aonaid airgeadra a roghnú + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Punt na Breataine STR_GAME_OPTIONS_CURRENCY_USD :Dollar Mheiriceá diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 393ec717be..91f81f34d7 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -953,6 +953,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selezione della valuta + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Sterlina britannica STR_GAME_OPTIONS_CURRENCY_USD :Dollaro americano diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 119922f431..40f8d9db23 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}通貨単位 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}通貨単位の選択 + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :英ポンド STR_GAME_OPTIONS_CURRENCY_USD :米ドル diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 121a645e98..90c3885e49 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}화폐 단위 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}화폐 단위 선택 + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :영국 파운드 STR_GAME_OPTIONS_CURRENCY_USD :미국 달러 diff --git a/src/lang/latin.txt b/src/lang/latin.txt index d50d731f9d..76da6b1664 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -1088,6 +1088,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Ludi opt STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unitates nummi STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Electio unitatum nummi + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britannica STR_GAME_OPTIONS_CURRENCY_USD :Dollarium CFA diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index e029ffbed2..47d5e40740 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -938,6 +938,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Spēles STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Naudas vienības STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Naudas vienību izvēle + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Lielbritānijas sterliņu mārciņas STR_GAME_OPTIONS_CURRENCY_USD :ASV dolāri diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 682c988f2d..ec134a14ee 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -1136,6 +1136,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Pagrindi STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valiuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valiutos pasirinkimas + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Svarai sterlingų STR_GAME_OPTIONS_CURRENCY_USD :Amerikos Doleris @@ -1171,7 +1172,7 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Pietų Afrikos STR_GAME_OPTIONS_CURRENCY_CUSTOM :Kita... STR_GAME_OPTIONS_CURRENCY_GEL :Gruzijos lariai STR_GAME_OPTIONS_CURRENCY_IRR :Irano rialai -STR_GAME_OPTIONS_CURRENCY_RUB :Naujieji Rusijos rubliai +STR_GAME_OPTIONS_CURRENCY_RUB :Naujieji Rusijos rubliai (RUB) STR_GAME_OPTIONS_CURRENCY_MXN :Meksikos pesai STR_GAME_OPTIONS_CURRENCY_NTD :Naujieji Taivano doleriai STR_GAME_OPTIONS_CURRENCY_CNY :Kinijos ženminbi juaniai diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 848d069018..a6b3840d6b 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -936,6 +936,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Spill Op STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Währungseenheet STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Währungseenheet wielen + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Pond STR_GAME_OPTIONS_CURRENCY_USD :Dollar diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index d2b10cc4f3..61c71515a5 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -794,6 +794,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци + ###length 42 diff --git a/src/lang/malay.txt b/src/lang/malay.txt index 94ffa68dba..c22e125658 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -868,6 +868,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Pilihan STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unit kewangan STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Pilihan unit kewangan + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Paun British STR_GAME_OPTIONS_CURRENCY_USD :Dolar Amerika diff --git a/src/lang/maltese.txt b/src/lang/maltese.txt index 85ca34a6b9..92762595df 100644 --- a/src/lang/maltese.txt +++ b/src/lang/maltese.txt @@ -408,6 +408,7 @@ STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE + ###length 42 diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 95ccd85ff4..cee23e4047 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -701,6 +701,7 @@ STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLAC + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :पौंड STR_GAME_OPTIONS_CURRENCY_USD :डोल्लर diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index b96a6e2609..e9145e3640 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -929,6 +929,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Spillinn STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaenhet STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Velg valutaenhet som skal brukes + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Britisk pund STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar @@ -969,7 +970,7 @@ STR_GAME_OPTIONS_CURRENCY_MXN :Meksikansk peso STR_GAME_OPTIONS_CURRENCY_NTD :Ny Taiwan Dollar STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar -STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi +STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi (INR) STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupi STR_GAME_OPTIONS_CURRENCY_MYR :Malaysisk Ringgit diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index a33ddaa9b3..0350f994cb 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -894,6 +894,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Spelinns STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaeining STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Vel valutaeining + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Pund STR_GAME_OPTIONS_CURRENCY_USD :Dollar diff --git a/src/lang/persian.txt b/src/lang/persian.txt index de68b47603..c473dc8ff6 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -884,6 +884,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}تنظی STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}واحد پول STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}انتخب واحد پول + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :پوند STR_GAME_OPTIONS_CURRENCY_USD :دلار diff --git a/src/lang/polish.txt b/src/lang/polish.txt index ce41efe47a..b76f002ea4 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -1331,6 +1331,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Waluta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Wybór waluty + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Funt brytyjski STR_GAME_OPTIONS_CURRENCY_USD :Dolar amerykański diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 8a7b0475f7..a60246597d 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades monetárias STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecção de unidades monetárias + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britânica STR_GAME_OPTIONS_CURRENCY_USD :Dólar dos E.U.A. diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 04e5de2ec5..35d5c7524d 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unitate monetară STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Alege unitatea monetară + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Liră sterlină STR_GAME_OPTIONS_CURRENCY_USD :Dolar american diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 2016c99210..67ae4781c3 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1096,6 +1096,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Валюта STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Смена используемой в игре валюты + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Английский фунт STR_GAME_OPTIONS_CURRENCY_USD :Доллар США diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 1423df2b3a..bac4b490b0 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -1131,6 +1131,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Opcije STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valuta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor valute + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Britanska funta STR_GAME_OPTIONS_CURRENCY_USD :Dolar diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 78f7c9f46a..243eceeb71 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -936,6 +936,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}游戏 STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}货币单位 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}货币单位选择 + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :英镑 STR_GAME_OPTIONS_CURRENCY_USD :美元 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index fa97af7c26..558eb39581 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -1005,6 +1005,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Možnost STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Mena STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výber menovej jednotky + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libra šterlingov STR_GAME_OPTIONS_CURRENCY_USD :Americký dolár diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index f02fc661ab..0522676635 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -1048,6 +1048,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Možnost STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valute STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbira valut + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Funt STR_GAME_OPTIONS_CURRENCY_USD :Dolar diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index e3ace15172..fdda997dfd 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -937,6 +937,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Opciones STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidad monetaria STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecciona la nnidad monetaria + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libra británica STR_GAME_OPTIONS_CURRENCY_USD :Dólar estadounidense diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index e8f9b619ee..92e8d550ae 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -937,6 +937,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Opciones STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Divisa STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Elegir divisa + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libra británica STR_GAME_OPTIONS_CURRENCY_USD :Dólar estadounidense @@ -963,7 +964,7 @@ STR_GAME_OPTIONS_CURRENCY_RUR :Rublo ruso STR_GAME_OPTIONS_CURRENCY_SIT :Tólar esloveno STR_GAME_OPTIONS_CURRENCY_SEK :Corona sueca STR_GAME_OPTIONS_CURRENCY_TRY :Lira turca -STR_GAME_OPTIONS_CURRENCY_SKK :Corona eslovaca +STR_GAME_OPTIONS_CURRENCY_SKK :Corona eslovaca (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Real brasileño STR_GAME_OPTIONS_CURRENCY_EEK :Corona estonia STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituana diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index d9855b6f43..a1d25414b5 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -949,6 +949,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaenheter STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Välj valutaenhet + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Brittiskt pund STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 01724ed3b1..ec1048f923 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -896,6 +896,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}ஆட STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}நாணய பிரிவுகள் STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}நாணய பிரிவு தேர்ந்தெடுத்தல் + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :பிரித்தானிய பவுண்டு STR_GAME_OPTIONS_CURRENCY_USD :அமெரிக்கன் டாலர் diff --git a/src/lang/thai.txt b/src/lang/thai.txt index d7a41bc94c..a86b0238ee 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -907,6 +907,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}ตั STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}หน่วยสกุลเงิน STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}การเลือกสกุลเงิน + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :ปอนด์สเตอร์ลิง STR_GAME_OPTIONS_CURRENCY_USD :ดอลลาร์สหรัฐ diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 0ede64e441..d5fa12fcb3 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -936,6 +936,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}遊戲 STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}幣值單位 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}選擇幣值單位 + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :英鎊 STR_GAME_OPTIONS_CURRENCY_USD :美元 @@ -973,7 +974,7 @@ STR_GAME_OPTIONS_CURRENCY_GEL :喬治亞拉里 STR_GAME_OPTIONS_CURRENCY_IRR :伊朗里亞爾 STR_GAME_OPTIONS_CURRENCY_RUB :俄羅斯盧布 STR_GAME_OPTIONS_CURRENCY_MXN :墨西哥披索 -STR_GAME_OPTIONS_CURRENCY_NTD :新臺幣 +STR_GAME_OPTIONS_CURRENCY_NTD :新臺幣 (NTD) STR_GAME_OPTIONS_CURRENCY_CNY :中國人民幣 STR_GAME_OPTIONS_CURRENCY_HKD :港幣 STR_GAME_OPTIONS_CURRENCY_INR :印度盧比 diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 2c9cad1fa1..95e159d180 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Para birimleri STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Para birimi seçimi + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Sterlin STR_GAME_OPTIONS_CURRENCY_USD :Amerikan Doları diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 359a50321d..e3bc107299 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -1079,6 +1079,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Грошова одиниця STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Виберіть грошову одиницю + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Британський фунт STR_GAME_OPTIONS_CURRENCY_USD :Американський долар diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index c912030d1e..29bb2d1810 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -861,6 +861,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}کھیل STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}کرنسی کی اکائیاں STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}کرنسی کی اکائی اختیار کریں + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :برطانوی پاونڈ STR_GAME_OPTIONS_CURRENCY_USD :امریکی ڈالر diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 05af0a7a26..2df02fe8a1 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Đơn vị tiền tệ STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Lựa chọn đơn vị tiền tệ + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Bảng Anh STR_GAME_OPTIONS_CURRENCY_USD :Đô-la Mỹ diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 96c398850e..e800545f44 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -894,6 +894,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Dewisiad STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Uned Arian STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Dewis unedau arian + ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Punnoedd Prydeinig STR_GAME_OPTIONS_CURRENCY_USD :Doleri America From 71f241ffe1891e0eee5f67f2b106f42325171cf8 Mon Sep 17 00:00:00 2001 From: translators Date: Sat, 24 Jun 2023 18:40:40 +0000 Subject: [PATCH 114/123] Update: Translations from eints english (au): 1 change by krysclarke russian: 1 change by Ln-Wolf turkish: 1 change by BeratSJ french: 1 change by glx22 portuguese (brazilian): 4 changes by pasantoro --- src/lang/brazilian_portuguese.txt | 5 ++++- src/lang/english_AU.txt | 1 + src/lang/french.txt | 1 + src/lang/russian.txt | 1 + src/lang/turkish.txt | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index f171545aed..31c7422d0e 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unidades monetárias STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Seleção de unidades monetárias +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Libras Britânicas @@ -987,7 +988,7 @@ STR_GAME_OPTIONS_CURRENCY_KRW :Won Sul-Coreano STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Sul-Africano STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizado... STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Georgia (GEL) -STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano (IRR) +STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano STR_GAME_OPTIONS_CURRENCY_RUB :Novo Rublo Russo STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexicano STR_GAME_OPTIONS_CURRENCY_NTD :Novo dólar de Taiwan @@ -4574,6 +4575,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Agendado STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Trocar entre esperado e agendado +STR_TIMETABLE_ARRIVAL :C: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :P: {COLOUR}{DATE_TINY} # Date window (for timetable) diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 57e62325d4..7e277c8f0f 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency units STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :British Pound diff --git a/src/lang/french.txt b/src/lang/french.txt index 531a96a9d9..7ae2dce89e 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Devise STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Sélectionner l'unité monétaire +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Livre diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 67ae4781c3..79efd1b8a1 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1096,6 +1096,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Валюта STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Смена используемой в игре валюты +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Английский фунт diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 95e159d180..0cb0720f58 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Para birimleri STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Para birimi seçimi +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Sterlin From 509471f7f889aa9356937656ad6d4ea35f780fe5 Mon Sep 17 00:00:00 2001 From: PeterN Date: Sun, 25 Jun 2023 11:57:58 +0100 Subject: [PATCH 115/123] Codechange: Use std::optional for GRFConfig::GRFError (#11066) This changes the semantics from "object pointer ownership" to "optional object", and simplifies copies. --- src/newgrf.cpp | 17 ++++++++--------- src/newgrf_config.cpp | 4 ++-- src/newgrf_config.h | 12 ++++++------ src/newgrf_gui.cpp | 8 ++++---- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index d17999e2ff..31efc7360e 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -447,12 +447,11 @@ static GRFError *DisableGrf(StringID message = STR_NULL, GRFConfig *config = nul if (file != nullptr) ClearTemporaryNewGRFData(file); if (config == _cur.grfconfig) _cur.skip_sprites = -1; - if (message != STR_NULL) { - config->error = std::make_unique(STR_NEWGRF_ERROR_MSG_FATAL, message); - if (config == _cur.grfconfig) config->error->param_value[0] = _cur.nfo_line; - } + if (message == STR_NULL) return nullptr; - return config->error.get(); + config->error = {STR_NEWGRF_ERROR_MSG_FATAL, message}; + if (config == _cur.grfconfig) config->error->param_value[0] = _cur.nfo_line; + return &config->error.value(); } /** @@ -7154,10 +7153,10 @@ static void GRFLoadError(ByteReader *buf) } /* For now we can only show one message per newgrf file. */ - if (_cur.grfconfig->error != nullptr) return; + if (_cur.grfconfig->error.has_value()) return; - _cur.grfconfig->error = std::make_unique(sevstr[severity]); - GRFError *error = _cur.grfconfig->error.get(); + _cur.grfconfig->error = {sevstr[severity]}; + GRFError *error = &_cur.grfconfig->error.value(); if (message_id == 0xFF) { /* This is a custom error message. */ @@ -10006,7 +10005,7 @@ void LoadNewGRF(uint load_index, uint num_baseset) if (num_non_static == NETWORK_MAX_GRF_COUNT) { Debug(grf, 0, "'{}' is not loaded as the maximum number of non-static GRFs has been reached", c->filename); c->status = GCS_DISABLED; - c->error = std::make_unique(STR_NEWGRF_ERROR_MSG_FATAL, STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED); + c->error = {STR_NEWGRF_ERROR_MSG_FATAL, STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED}; continue; } num_non_static++; diff --git a/src/newgrf_config.cpp b/src/newgrf_config.cpp index 8f93043dd7..012da78ba8 100644 --- a/src/newgrf_config.cpp +++ b/src/newgrf_config.cpp @@ -51,6 +51,7 @@ GRFConfig::GRFConfig(const GRFConfig &config) : name(config.name), info(config.info), url(config.url), + error(config.error), version(config.version), min_loadable_version(config.min_loadable_version), flags(config.flags & ~(1 << GCF_COPY)), @@ -63,7 +64,6 @@ GRFConfig::GRFConfig(const GRFConfig &config) : param_info(config.param_info), has_param_defaults(config.has_param_defaults) { - if (config.error != nullptr) this->error = std::make_unique(*config.error); } /** @@ -495,7 +495,7 @@ compatible_grf: c->ident.md5sum = f->ident.md5sum; c->name = f->name; c->info = f->name; - c->error = nullptr; + c->error.reset(); c->version = f->version; c->min_loadable_version = f->min_loadable_version; c->num_valid_params = f->num_valid_params; diff --git a/src/newgrf_config.h b/src/newgrf_config.h index 171f49a604..9706f79fbc 100644 --- a/src/newgrf_config.h +++ b/src/newgrf_config.h @@ -109,11 +109,11 @@ struct GRFIdentifier { struct GRFError { GRFError(StringID severity, StringID message = 0); - std::string custom_message; ///< Custom message (if present) - std::string data; ///< Additional data for message and custom_message - StringID message; ///< Default message - StringID severity; ///< Info / Warning / Error / Fatal - std::array param_value; ///< Values of GRF parameters to show for message and custom_message + std::string custom_message{}; ///< Custom message (if present) + std::string data{}; ///< Additional data for message and custom_message + StringID message{}; ///< Default message + StringID severity{}; ///< Info / Warning / Error / Fatal + std::array param_value{}; ///< Values of GRF parameters to show for message and custom_message }; /** The possible types of a newgrf parameter. */ @@ -157,7 +157,7 @@ struct GRFConfig : ZeroedMemoryAllocator { GRFTextWrapper name; ///< NOSAVE: GRF name (Action 0x08) GRFTextWrapper info; ///< NOSAVE: GRF info (author, copyright, ...) (Action 0x08) GRFTextWrapper url; ///< NOSAVE: URL belonging to this GRF. - std::unique_ptr error; ///< NOSAVE: Error/Warning during GRF loading (Action 0x0B) + std::optional error; ///< NOSAVE: Error/Warning during GRF loading (Action 0x0B) uint32 version; ///< NOSAVE: Version a NewGRF can set so only the newest NewGRF is shown uint32 min_loadable_version; ///< NOSAVE: Minimum compatible version a NewGRF can define diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 3bcd2bf30e..785adf046f 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -48,7 +48,7 @@ void ShowNewGRFError() for (const GRFConfig *c = _grfconfig; c != nullptr; c = c->next) { /* Only show Fatal and Error level messages */ - if (c->error == nullptr || (c->error->severity != STR_NEWGRF_ERROR_MSG_FATAL && c->error->severity != STR_NEWGRF_ERROR_MSG_ERROR)) continue; + if (!c->error.has_value() || (c->error->severity != STR_NEWGRF_ERROR_MSG_FATAL && c->error->severity != STR_NEWGRF_ERROR_MSG_ERROR)) continue; SetDParamStr(0, c->GetName()); SetDParam (1, c->error->message != STR_NULL ? c->error->message : STR_JUST_RAW_STRING); @@ -70,7 +70,7 @@ void ShowNewGRFError() static void ShowNewGRFInfo(const GRFConfig *c, const Rect &r, bool show_params) { Rect tr = r.Shrink(WidgetDimensions::scaled.frametext); - if (c->error != nullptr) { + if (c->error.has_value()) { SetDParamStr(0, c->error->custom_message); // is skipped by built-in messages SetDParamStr(1, c->filename); SetDParamStr(2, c->error->data); @@ -886,8 +886,8 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { } } DrawSprite(SPR_SQUARE, pal, square_left, tr.top + square_offset_y); - if (c->error != nullptr) DrawSprite(SPR_WARNING_SIGN, 0, warning_left, tr.top + warning_offset_y); - uint txtoffset = c->error == nullptr ? 0 : warning.width; + if (c->error.has_value()) DrawSprite(SPR_WARNING_SIGN, 0, warning_left, tr.top + warning_offset_y); + uint txtoffset = !c->error.has_value() ? 0 : warning.width; DrawString(text_left + (rtl ? 0 : txtoffset), text_right - (rtl ? txtoffset : 0), tr.top + offset_y, text, h ? TC_WHITE : TC_ORANGE); tr.top += step_height; } From 43ddf19df30a9a669fe1f6b0f65912156a66382c Mon Sep 17 00:00:00 2001 From: PeterN Date: Sun, 25 Jun 2023 11:58:39 +0100 Subject: [PATCH 116/123] Change: Allow text shadow on WWT_EMPTY/WWT_TEXT to extend horizontally. (#11065) This alleviates text shadows of truetype fonts being cropped in some window layouts. --- src/widget.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/widget.cpp b/src/widget.cpp index 9b215e6878..fa4094ccd2 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -2857,10 +2857,10 @@ void NWidgetLeaf::Draw(const Window *w) { if (this->current_x == 0 || this->current_y == 0) return; - /* Setup a clipping rectangle... for WWT_EMPTY or WWT_TEXT, an extra scaled pixel is allowed vertically in case text shadow encroaches. */ - int extra_y = (this->type == WWT_EMPTY || this->type == WWT_TEXT) ? ScaleGUITrad(1) : 0; + /* Setup a clipping rectangle... for WWT_EMPTY or WWT_TEXT, an extra scaled pixel is allowed in case text shadow encroaches. */ + int extra = (this->type == WWT_EMPTY || this->type == WWT_TEXT) ? ScaleGUITrad(1) : 0; DrawPixelInfo new_dpi; - if (!FillDrawPixelInfo(&new_dpi, this->pos_x, this->pos_y, this->current_x, this->current_y + extra_y)) return; + if (!FillDrawPixelInfo(&new_dpi, this->pos_x, this->pos_y, this->current_x + extra, this->current_y + extra)) return; /* ...but keep coordinates relative to the window. */ new_dpi.left += this->pos_x; new_dpi.top += this->pos_y; From 19ae88fb63b891ce5130033c1efc644b5752a2a1 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Fri, 16 Jun 2023 20:48:41 +0100 Subject: [PATCH 117/123] Fix: Error logging in game and admin server HandlePacket Don't invent a packet type in the log message if we can't/don't read a packet type at all. Fix packet type not being logged when appropriate. --- src/network/core/tcp_admin.cpp | 15 ++++++++------- src/network/core/tcp_game.cpp | 15 ++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/network/core/tcp_admin.cpp b/src/network/core/tcp_admin.cpp index de1c22131c..877ee93b26 100644 --- a/src/network/core/tcp_admin.cpp +++ b/src/network/core/tcp_admin.cpp @@ -47,7 +47,13 @@ NetworkRecvStatus NetworkAdminSocketHandler::HandlePacket(Packet *p) { PacketAdminType type = (PacketAdminType)p->Recv_uint8(); - switch (this->HasClientQuit() ? INVALID_ADMIN_PACKET : type) { + if (this->HasClientQuit()) { + Debug(net, 0, "[tcp/admin] Received invalid packet from '{}' ({})", this->admin_name, this->admin_version); + this->CloseConnection(); + return NETWORK_RECV_STATUS_MALFORMED_PACKET; + } + + switch (type) { case ADMIN_PACKET_ADMIN_JOIN: return this->Receive_ADMIN_JOIN(p); case ADMIN_PACKET_ADMIN_QUIT: return this->Receive_ADMIN_QUIT(p); case ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY: return this->Receive_ADMIN_UPDATE_FREQUENCY(p); @@ -87,12 +93,7 @@ NetworkRecvStatus NetworkAdminSocketHandler::HandlePacket(Packet *p) case ADMIN_PACKET_SERVER_PONG: return this->Receive_SERVER_PONG(p); default: - if (this->HasClientQuit()) { - Debug(net, 0, "[tcp/admin] Received invalid packet type {} from '{}' ({})", type, this->admin_name, this->admin_version); - } else { - Debug(net, 0, "[tcp/admin] Received illegal packet from '{}' ({})", this->admin_name, this->admin_version); - } - + Debug(net, 0, "[tcp/admin] Received invalid packet type {} from '{}' ({})", type, this->admin_name, this->admin_version); this->CloseConnection(); return NETWORK_RECV_STATUS_MALFORMED_PACKET; } diff --git a/src/network/core/tcp_game.cpp b/src/network/core/tcp_game.cpp index ad94536aaa..560afdcec8 100644 --- a/src/network/core/tcp_game.cpp +++ b/src/network/core/tcp_game.cpp @@ -63,9 +63,15 @@ NetworkRecvStatus NetworkGameSocketHandler::HandlePacket(Packet *p) { PacketGameType type = (PacketGameType)p->Recv_uint8(); + if (this->HasClientQuit()) { + Debug(net, 0, "[tcp/game] Received invalid packet from client {}", this->client_id); + this->CloseConnection(); + return NETWORK_RECV_STATUS_MALFORMED_PACKET; + } + this->last_packet = std::chrono::steady_clock::now(); - switch (this->HasClientQuit() ? PACKET_END : type) { + switch (type) { case PACKET_SERVER_FULL: return this->Receive_SERVER_FULL(p); case PACKET_SERVER_BANNED: return this->Receive_SERVER_BANNED(p); case PACKET_CLIENT_JOIN: return this->Receive_CLIENT_JOIN(p); @@ -112,13 +118,8 @@ NetworkRecvStatus NetworkGameSocketHandler::HandlePacket(Packet *p) case PACKET_SERVER_CONFIG_UPDATE: return this->Receive_SERVER_CONFIG_UPDATE(p); default: + Debug(net, 0, "[tcp/game] Received invalid packet type {} from client {}", type, this->client_id); this->CloseConnection(); - - if (this->HasClientQuit()) { - Debug(net, 0, "[tcp/game] Received invalid packet type {} from client {}", type, this->client_id); - } else { - Debug(net, 0, "[tcp/game] Received illegal packet from client {}", this->client_id); - } return NETWORK_RECV_STATUS_MALFORMED_PACKET; } } From 4f6d75f97d07bb4da1264048e2d47bf74b51433b Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Fri, 16 Jun 2023 20:54:04 +0100 Subject: [PATCH 118/123] Fix #11016: Defer deletion of client and server game socket handlers This fixes various use after free scenarios in error handling paths --- src/network/core/tcp_game.cpp | 14 ++++++++++++++ src/network/core/tcp_game.h | 8 +++++++- src/network/network.cpp | 10 ++++++++-- src/network/network_client.cpp | 6 +++++- src/network/network_server.cpp | 7 ++++--- 5 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/network/core/tcp_game.cpp b/src/network/core/tcp_game.cpp index 560afdcec8..8960909e98 100644 --- a/src/network/core/tcp_game.cpp +++ b/src/network/core/tcp_game.cpp @@ -20,6 +20,8 @@ #include "../../safeguards.h" +static std::vector> _deferred_deletions; + /** * Create a new socket for the game connection. * @param s The socket to connect with. @@ -198,3 +200,15 @@ NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_MOVE(Packet *p) { ret NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_MOVE(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_MOVE); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_COMPANY_UPDATE(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_COMPANY_UPDATE); } NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_CONFIG_UPDATE(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_CONFIG_UPDATE); } + +void NetworkGameSocketHandler::DeferDeletion() +{ + _deferred_deletions.emplace_back(this); + this->is_pending_deletion = true; +} + +/* static */ void NetworkGameSocketHandler::ProcessDeferredDeletions() +{ + /* Calls deleter on all items */ + _deferred_deletions.clear(); +} diff --git a/src/network/core/tcp_game.h b/src/network/core/tcp_game.h index 4bcf1fb07d..e158ac3eb8 100644 --- a/src/network/core/tcp_game.h +++ b/src/network/core/tcp_game.h @@ -154,7 +154,8 @@ public: class NetworkGameSocketHandler : public NetworkTCPSocketHandler { /* TODO: rewrite into a proper class */ private: - NetworkClientInfo *info; ///< Client info related to this socket + NetworkClientInfo *info; ///< Client info related to this socket + bool is_pending_deletion = false; ///< Whether this socket is pending deletion protected: NetworkRecvStatus ReceiveInvalidPacket(PacketGameType type); @@ -543,6 +544,11 @@ public: const char *ReceiveCommand(Packet *p, CommandPacket *cp); void SendCommand(Packet *p, const CommandPacket *cp); + + bool IsPendingDeletion() const { return this->is_pending_deletion; } + + void DeferDeletion(); + static void ProcessDeferredDeletions(); }; #endif /* NETWORK_CORE_TCP_GAME_H */ diff --git a/src/network/network.cpp b/src/network/network.cpp index 3f76ef8413..9d84107a5e 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -595,6 +595,7 @@ void NetworkClose(bool close_admins) _network_coordinator_client.CloseAllConnections(); } + NetworkGameSocketHandler::ProcessDeferredDeletions(); TCPConnecter::KillAll(); @@ -992,12 +993,15 @@ void NetworkUpdateServerGameType() */ static bool NetworkReceive() { + bool result; if (_network_server) { ServerNetworkAdminSocketHandler::Receive(); - return ServerNetworkGameSocketHandler::Receive(); + result = ServerNetworkGameSocketHandler::Receive(); } else { - return ClientNetworkGameSocketHandler::Receive(); + result = ClientNetworkGameSocketHandler::Receive(); } + NetworkGameSocketHandler::ProcessDeferredDeletions(); + return result; } /* This sends all buffered commands (if possible) */ @@ -1009,6 +1013,7 @@ static void NetworkSend() } else { ClientNetworkGameSocketHandler::Send(); } + NetworkGameSocketHandler::ProcessDeferredDeletions(); } /** @@ -1023,6 +1028,7 @@ void NetworkBackgroundLoop() TCPConnecter::CheckCallbacks(); NetworkHTTPSocketHandler::HTTPReceive(); QueryNetworkGameSocketHandler::SendReceive(); + NetworkGameSocketHandler::ProcessDeferredDeletions(); NetworkBackgroundUDPLoop(); } diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index 6c14acc5f1..3ea79d4949 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -160,6 +160,8 @@ ClientNetworkGameSocketHandler::~ClientNetworkGameSocketHandler() NetworkRecvStatus ClientNetworkGameSocketHandler::CloseConnection(NetworkRecvStatus status) { assert(status != NETWORK_RECV_STATUS_OKAY); + if (this->IsPendingDeletion()) return status; + assert(this->sock != INVALID_SOCKET); if (!this->HasClientQuit()) { @@ -174,7 +176,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::CloseConnection(NetworkRecvSta CSleep(3 * MILLISECONDS_PER_TICK); } - delete this; + this->DeferDeletion(); return status; } @@ -185,6 +187,8 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::CloseConnection(NetworkRecvSta */ void ClientNetworkGameSocketHandler::ClientError(NetworkRecvStatus res) { + if (this->IsPendingDeletion()) return; + /* First, send a CLIENT_ERROR to the server, so it knows we are * disconnected (and why!) */ NetworkErrorCode errorno; diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index fae30089f2..79b780f06c 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -224,6 +224,8 @@ ServerNetworkGameSocketHandler::ServerNetworkGameSocketHandler(SOCKET s) : Netwo */ ServerNetworkGameSocketHandler::~ServerNetworkGameSocketHandler() { + delete this->GetInfo(); + if (_redirect_console_to_client == this->client_id) _redirect_console_to_client = INVALID_CLIENT_ID; OrderBackup::ResetUser(this->client_id); @@ -256,7 +258,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::CloseConnection(NetworkRecvSta * connection. This handles that case gracefully without having to make * that code any more complex or more aware of the validity of the socket. */ - if (this->sock == INVALID_SOCKET) return status; + if (this->IsPendingDeletion() || this->sock == INVALID_SOCKET) return status; if (status != NETWORK_RECV_STATUS_CLIENT_QUIT && status != NETWORK_RECV_STATUS_SERVER_ERROR && !this->HasClientQuit() && this->status >= STATUS_AUTHORIZED) { /* We did not receive a leave message from this client... */ @@ -292,8 +294,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::CloseConnection(NetworkRecvSta this->SendPackets(true); - delete this->GetInfo(); - delete this; + this->DeferDeletion(); InvalidateWindowData(WC_CLIENT_LIST, 0); From 55e3dd9409ff1d6e96dc614f9f0ce8386d1c3ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Guilloux?= Date: Sun, 25 Jun 2023 17:51:15 +0200 Subject: [PATCH 119/123] Cleanup 6298b96: Left-over function declaration (#11072) --- src/openttd.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/openttd.cpp b/src/openttd.cpp index 973ed8e16d..eefd43048b 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -88,7 +88,6 @@ void CallLandscapeTick(); void DoPaletteAnimations(); void MusicLoop(); -void ResetMusic(); void CallWindowGameTickEvent(); bool HandleBootstrap(); From 40a9b080aad463d99826a100f2610fae3f735b8e Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 25 Jun 2023 15:48:15 +0100 Subject: [PATCH 120/123] Fix: Ensure settings page label is orange. --- src/settings_gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 48b5e52518..4e8384fddb 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1717,7 +1717,7 @@ void SettingsPage::DrawSetting(GameSettings *settings_ptr, int left, int right, { bool rtl = _current_text_dir == TD_RTL; DrawSprite((this->folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED), PAL_NONE, rtl ? right - _circle_size.width : left, y + (SETTING_HEIGHT - _circle_size.height) / 2); - DrawString(rtl ? left : left + _circle_size.width + WidgetDimensions::scaled.hsep_normal, rtl ? right - _circle_size.width - WidgetDimensions::scaled.hsep_normal : right, y + (SETTING_HEIGHT - FONT_HEIGHT_NORMAL) / 2, this->title); + DrawString(rtl ? left : left + _circle_size.width + WidgetDimensions::scaled.hsep_normal, rtl ? right - _circle_size.width - WidgetDimensions::scaled.hsep_normal : right, y + (SETTING_HEIGHT - FONT_HEIGHT_NORMAL) / 2, this->title, TC_ORANGE); } /** Construct settings tree */ From fac317b13972d5d86d3d2e5f65c64569d5dc6e32 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 25 Jun 2023 16:31:31 +0100 Subject: [PATCH 121/123] Cleanup: Remove {ORANGE} from settings page strings. --- src/lang/afrikaans.txt | 46 ++++++++++++++--------------- src/lang/arabic_egypt.txt | 46 ++++++++++++++--------------- src/lang/basque.txt | 44 ++++++++++++++-------------- src/lang/belarusian.txt | 46 ++++++++++++++--------------- src/lang/brazilian_portuguese.txt | 48 +++++++++++++++---------------- src/lang/bulgarian.txt | 26 ++++++++--------- src/lang/catalan.txt | 48 +++++++++++++++---------------- src/lang/chuvash.txt | 10 +++---- src/lang/croatian.txt | 46 ++++++++++++++--------------- src/lang/czech.txt | 48 +++++++++++++++---------------- src/lang/danish.txt | 48 +++++++++++++++---------------- src/lang/dutch.txt | 48 +++++++++++++++---------------- src/lang/english.txt | 48 +++++++++++++++---------------- src/lang/english_AU.txt | 48 +++++++++++++++---------------- src/lang/english_US.txt | 48 +++++++++++++++---------------- src/lang/esperanto.txt | 48 +++++++++++++++---------------- src/lang/estonian.txt | 48 +++++++++++++++---------------- src/lang/faroese.txt | 18 ++++++------ src/lang/finnish.txt | 48 +++++++++++++++---------------- src/lang/french.txt | 48 +++++++++++++++---------------- src/lang/frisian.txt | 46 ++++++++++++++--------------- src/lang/gaelic.txt | 46 ++++++++++++++--------------- src/lang/galician.txt | 48 +++++++++++++++---------------- src/lang/german.txt | 48 +++++++++++++++---------------- src/lang/greek.txt | 48 +++++++++++++++---------------- src/lang/hebrew.txt | 46 ++++++++++++++--------------- src/lang/hindi.txt | 2 +- src/lang/hungarian.txt | 48 +++++++++++++++---------------- src/lang/icelandic.txt | 18 ++++++------ src/lang/indonesian.txt | 48 +++++++++++++++---------------- src/lang/irish.txt | 48 +++++++++++++++---------------- src/lang/italian.txt | 48 +++++++++++++++---------------- src/lang/japanese.txt | 48 +++++++++++++++---------------- src/lang/korean.txt | 48 +++++++++++++++---------------- src/lang/latin.txt | 46 ++++++++++++++--------------- src/lang/latvian.txt | 48 +++++++++++++++---------------- src/lang/lithuanian.txt | 48 +++++++++++++++---------------- src/lang/luxembourgish.txt | 48 +++++++++++++++---------------- src/lang/malay.txt | 24 ++++++++-------- src/lang/norwegian_bokmal.txt | 48 +++++++++++++++---------------- src/lang/norwegian_nynorsk.txt | 44 ++++++++++++++-------------- src/lang/persian.txt | 24 ++++++++-------- src/lang/polish.txt | 48 +++++++++++++++---------------- src/lang/portuguese.txt | 48 +++++++++++++++---------------- src/lang/romanian.txt | 48 +++++++++++++++---------------- src/lang/russian.txt | 48 +++++++++++++++---------------- src/lang/serbian.txt | 48 +++++++++++++++---------------- src/lang/simplified_chinese.txt | 48 +++++++++++++++---------------- src/lang/slovak.txt | 48 +++++++++++++++---------------- src/lang/slovenian.txt | 46 ++++++++++++++--------------- src/lang/spanish.txt | 48 +++++++++++++++---------------- src/lang/spanish_MX.txt | 48 +++++++++++++++---------------- src/lang/swedish.txt | 48 +++++++++++++++---------------- src/lang/tamil.txt | 44 ++++++++++++++-------------- src/lang/thai.txt | 34 +++++++++++----------- src/lang/traditional_chinese.txt | 48 +++++++++++++++---------------- src/lang/turkish.txt | 48 +++++++++++++++---------------- src/lang/ukrainian.txt | 48 +++++++++++++++---------------- src/lang/urdu.txt | 16 +++++------ src/lang/vietnamese.txt | 48 +++++++++++++++---------------- src/lang/welsh.txt | 46 ++++++++++++++--------------- 61 files changed, 1318 insertions(+), 1318 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index bd110031ec..c75d9947ab 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -1862,29 +1862,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Empiries (vt) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metries (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Eenhede -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika -STR_CONFIG_SETTING_SOUND :{ORANGE}Klank -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Koppelvlak -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Algemeen -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vertoonvensters -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruksie -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nuus / Raad -STR_CONFIG_SETTING_COMPANY :{ORANGE}Maatskappy -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Rekeningkunde -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Voertuie -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Roete -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Beperkings -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Ongelukke & rampe -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Land skepping -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Omgewing -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Stadsrade -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Dorpe -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Nywerhede -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Vragverspreiding -STR_CONFIG_SETTING_AI :{ORANGE}Mededingers -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Rekenaar spelers +STR_CONFIG_SETTING_LOCALISATION :Eenhede +STR_CONFIG_SETTING_GRAPHICS :Grafika +STR_CONFIG_SETTING_SOUND :Klank +STR_CONFIG_SETTING_INTERFACE :Koppelvlak +STR_CONFIG_SETTING_INTERFACE_GENERAL :Algemeen +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Vertoonvensters +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruksie +STR_CONFIG_SETTING_ADVISORS :Nuus / Raad +STR_CONFIG_SETTING_COMPANY :Maatskappy +STR_CONFIG_SETTING_ACCOUNTING :Rekeningkunde +STR_CONFIG_SETTING_VEHICLES :Voertuie +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fisika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Roete +STR_CONFIG_SETTING_LIMITATIONS :Beperkings +STR_CONFIG_SETTING_ACCIDENTS :Ongelukke & rampe +STR_CONFIG_SETTING_GENWORLD :Land skepping +STR_CONFIG_SETTING_ENVIRONMENT :Omgewing +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Stadsrade +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Dorpe +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Nywerhede +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Vragverspreiding +STR_CONFIG_SETTING_AI :Mededingers +STR_CONFIG_SETTING_AI_NPC :Rekenaar spelers STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Padvinder vir treine: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pad speurder om vir teine te gebruik diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index c0401b1940..578b91f7a8 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -1673,29 +1673,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :متري (كغ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :إمبراطوري (قدم) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :متري (م) -STR_CONFIG_SETTING_GRAPHICS :رسوميات {ORANGE} -STR_CONFIG_SETTING_SOUND :{ORANGE}الصوت -STR_CONFIG_SETTING_INTERFACE :{ORANGE}النظام البيني -STR_CONFIG_SETTING_INTERFACE_GENERAL :عموم{ORANGE} -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :مجالات رؤية {ORANGE} -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}البناء -STR_CONFIG_SETTING_ADVISORS :{ORANGE}أخبار\ مستشارون -STR_CONFIG_SETTING_COMPANY :شركة{ORANGE} -STR_CONFIG_SETTING_ACCOUNTING :حسابات{ORANGE} -STR_CONFIG_SETTING_VEHICLES :{ORANGE}المركبات -STR_CONFIG_SETTING_VEHICLES_PHYSICS :فيزياء{ORANGE} -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE} المسارات -STR_CONFIG_SETTING_LIMITATIONS :حدود {ORANGE} -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE} كوارث\حوادث -STR_CONFIG_SETTING_GENWORLD :تكوين عالم {ORANGE} -STR_CONFIG_SETTING_ENVIRONMENT :بيئة {ORANGE} -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :سلطات {ORANGE} -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE} مدن -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE} مصانع -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :توزيع البضائع{ORANGE} -STR_CONFIG_SETTING_AI :{ORANGE}المتنافسين -STR_CONFIG_SETTING_AI_NPC :{ORANGE} لاعبين الحاسوب -STR_CONFIG_SETTING_NETWORK :{ORANGE}شبكة الاتصال +STR_CONFIG_SETTING_GRAPHICS :رسوميات +STR_CONFIG_SETTING_SOUND :الصوت +STR_CONFIG_SETTING_INTERFACE :النظام البيني +STR_CONFIG_SETTING_INTERFACE_GENERAL :عموم +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :مجالات رؤية +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :البناء +STR_CONFIG_SETTING_ADVISORS :أخبار\ مستشارون +STR_CONFIG_SETTING_COMPANY :شركة +STR_CONFIG_SETTING_ACCOUNTING :حسابات +STR_CONFIG_SETTING_VEHICLES :المركبات +STR_CONFIG_SETTING_VEHICLES_PHYSICS :فيزياء +STR_CONFIG_SETTING_VEHICLES_ROUTING :المسارات +STR_CONFIG_SETTING_LIMITATIONS :حدود +STR_CONFIG_SETTING_ACCIDENTS :كوارث\حوادث +STR_CONFIG_SETTING_GENWORLD :تكوين عالم +STR_CONFIG_SETTING_ENVIRONMENT :بيئة +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :سلطات +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :مدن +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :مصانع +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :توزيع البضائع +STR_CONFIG_SETTING_AI :المتنافسين +STR_CONFIG_SETTING_AI_NPC : لاعبين الحاسوب +STR_CONFIG_SETTING_NETWORK :شبكة الاتصال STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :موجد الطريق- قصاص الطريق - للقطارات:{STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :موجد الطريق (قصاص الأثر) للعربات: {STRING} diff --git a/src/lang/basque.txt b/src/lang/basque.txt index adf80e99eb..f4b6c21e16 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -1753,28 +1753,28 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Inperiala (oin) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrikoa (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Kokapena -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafikoak -STR_CONFIG_SETTING_SOUND :{ORANGE}Soinua -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfazea -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Orokorra -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Leihoak -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Eraikuntza -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Albisteak / Aholkulariak -STR_CONFIG_SETTING_COMPANY :{ORANGE}Konpainia -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Ibilgailuak -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ibilbideak -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Mugak -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Hondamendiak / Istripuak -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Mundua sortu -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Ingurugiroa -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Agintariak -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Herriak -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industriak -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Zama banaketa -STR_CONFIG_SETTING_AI :{ORANGE}Lehiakideak -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Ordenagailu jokalariak +STR_CONFIG_SETTING_LOCALISATION :Kokapena +STR_CONFIG_SETTING_GRAPHICS :Grafikoak +STR_CONFIG_SETTING_SOUND :Soinua +STR_CONFIG_SETTING_INTERFACE :Interfazea +STR_CONFIG_SETTING_INTERFACE_GENERAL :Orokorra +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Leihoak +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Eraikuntza +STR_CONFIG_SETTING_ADVISORS :Albisteak / Aholkulariak +STR_CONFIG_SETTING_COMPANY :Konpainia +STR_CONFIG_SETTING_VEHICLES :Ibilgailuak +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fisika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Ibilbideak +STR_CONFIG_SETTING_LIMITATIONS :Mugak +STR_CONFIG_SETTING_ACCIDENTS :Hondamendiak / Istripuak +STR_CONFIG_SETTING_GENWORLD :Mundua sortu +STR_CONFIG_SETTING_ENVIRONMENT :Ingurugiroa +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Agintariak +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Herriak +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industriak +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Zama banaketa +STR_CONFIG_SETTING_AI :Lehiakideak +STR_CONFIG_SETTING_AI_NPC :Ordenagailu jokalariak STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Trenen ibilbide bilatzailea: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Trenek erabiliko duten ibilbide bilatzailea diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index b751ced72e..a4a0e2add4 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -2182,29 +2182,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :ангельс STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :мэтрычная (м) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :СІ (м) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Лакалізацыя -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Графіка -STR_CONFIG_SETTING_SOUND :{ORANGE}Гукавыя эфэкты -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Інтэрфэйс -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Агульныя наладкі -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Вокны прагляду -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Будаўніцтва -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Навіны і інфармацыя -STR_CONFIG_SETTING_COMPANY :{ORANGE}Кампанія -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Фінансы -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Транспарт -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Фізічная мадэль -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршруты -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Абмежаваньні -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Аварыі і катастрофы -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Стварэньне мапы -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Навакольнае асяроддзе -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Гарадская адміністрацыя -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Населеныя пункты -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Прамысловасьць -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Разьмеркаваньне грузаў -STR_CONFIG_SETTING_AI :{ORANGE}Канкурэнты -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Кампутарныя гульцы +STR_CONFIG_SETTING_LOCALISATION :Лакалізацыя +STR_CONFIG_SETTING_GRAPHICS :Графіка +STR_CONFIG_SETTING_SOUND :Гукавыя эфэкты +STR_CONFIG_SETTING_INTERFACE :Інтэрфэйс +STR_CONFIG_SETTING_INTERFACE_GENERAL :Агульныя наладкі +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Вокны прагляду +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Будаўніцтва +STR_CONFIG_SETTING_ADVISORS :Навіны і інфармацыя +STR_CONFIG_SETTING_COMPANY :Кампанія +STR_CONFIG_SETTING_ACCOUNTING :Фінансы +STR_CONFIG_SETTING_VEHICLES :Транспарт +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Фізічная мадэль +STR_CONFIG_SETTING_VEHICLES_ROUTING :Маршруты +STR_CONFIG_SETTING_LIMITATIONS :Абмежаваньні +STR_CONFIG_SETTING_ACCIDENTS :Аварыі і катастрофы +STR_CONFIG_SETTING_GENWORLD :Стварэньне мапы +STR_CONFIG_SETTING_ENVIRONMENT :Навакольнае асяроддзе +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Гарадская адміністрацыя +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Населеныя пункты +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Прамысловасьць +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Разьмеркаваньне грузаў +STR_CONFIG_SETTING_AI :Канкурэнты +STR_CONFIG_SETTING_AI_NPC :Кампутарныя гульцы STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Альґарытм пошуку шляху для цягнікоў: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Мэханізм пошуку шляху для цягнікоў. diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 31c7422d0e..4659fd800c 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -2021,30 +2021,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localização -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gráficos -STR_CONFIG_SETTING_SOUND :{ORANGE}Som -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Geral -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Janelas de visualização -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construção -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Notícias / Conselheiros -STR_CONFIG_SETTING_COMPANY :{ORANGE}Companhia -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Contabilidade -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Veículos -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Física -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rota -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitações -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Desastres / Acidentes -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Geração de Mundo -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Meio-Ambiente -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoridades -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE} Cidades -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Indústrias -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuição de Carga -STR_CONFIG_SETTING_AI :{ORANGE}Oponentes -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computadores -STR_CONFIG_SETTING_NETWORK :{ORANGE}Rede +STR_CONFIG_SETTING_LOCALISATION :Localização +STR_CONFIG_SETTING_GRAPHICS :Gráficos +STR_CONFIG_SETTING_SOUND :Som +STR_CONFIG_SETTING_INTERFACE :Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :Geral +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Janelas de visualização +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construção +STR_CONFIG_SETTING_ADVISORS :Notícias / Conselheiros +STR_CONFIG_SETTING_COMPANY :Companhia +STR_CONFIG_SETTING_ACCOUNTING :Contabilidade +STR_CONFIG_SETTING_VEHICLES :Veículos +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Física +STR_CONFIG_SETTING_VEHICLES_ROUTING :Rota +STR_CONFIG_SETTING_LIMITATIONS :Limitações +STR_CONFIG_SETTING_ACCIDENTS :Desastres / Acidentes +STR_CONFIG_SETTING_GENWORLD :Geração de Mundo +STR_CONFIG_SETTING_ENVIRONMENT :Meio-Ambiente +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoridades +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS : Cidades +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Indústrias +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribuição de Carga +STR_CONFIG_SETTING_AI :Oponentes +STR_CONFIG_SETTING_AI_NPC :Computadores +STR_CONFIG_SETTING_NETWORK :Rede STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder para trens: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algorítimo de formulação de vias para trens, que define quais vias tomar diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index aa9c883723..b8e77b4bd8 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -1804,19 +1804,19 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Позициониране -STR_CONFIG_SETTING_SOUND :{ORANGE}Звукови ефекти -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Интерфейс -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Основни -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Строене -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Автомобили -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршрутизация -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ограничения -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Права -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Градове -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Индустрии -STR_CONFIG_SETTING_AI :{ORANGE}Съперници -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Компютърни играчи +STR_CONFIG_SETTING_LOCALISATION :Позициониране +STR_CONFIG_SETTING_SOUND :Звукови ефекти +STR_CONFIG_SETTING_INTERFACE :Интерфейс +STR_CONFIG_SETTING_INTERFACE_GENERAL :Основни +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Строене +STR_CONFIG_SETTING_VEHICLES :Автомобили +STR_CONFIG_SETTING_VEHICLES_ROUTING :Маршрутизация +STR_CONFIG_SETTING_LIMITATIONS :Ограничения +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Права +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Градове +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Индустрии +STR_CONFIG_SETTING_AI :Съперници +STR_CONFIG_SETTING_AI_NPC :Компютърни играчи STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Пътенамирач за влакове: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Маршрутизатор използван за влакове diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index b85012a456..47787d1807 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -2020,30 +2020,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (peu) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Mètric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localització -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gràfics -STR_CONFIG_SETTING_SOUND :{ORANGE}Efectes de so -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfície -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Finestres de visualització -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construcció -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Notícies / Consells -STR_CONFIG_SETTING_COMPANY :{ORANGE}Companyia -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Comptabilitat -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Lleis físiques -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Recorreguts -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitacions -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Desastres / Accidents -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generació del món -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Interacció amb l'entorn -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoritats -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Poblacions -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Indústries -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribució de la càrrega -STR_CONFIG_SETTING_AI :{ORANGE}Competidors -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jugadors IA -STR_CONFIG_SETTING_NETWORK :{ORANGE}Xarxa +STR_CONFIG_SETTING_LOCALISATION :Localització +STR_CONFIG_SETTING_GRAPHICS :Gràfics +STR_CONFIG_SETTING_SOUND :Efectes de so +STR_CONFIG_SETTING_INTERFACE :Interfície +STR_CONFIG_SETTING_INTERFACE_GENERAL :General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Finestres de visualització +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construcció +STR_CONFIG_SETTING_ADVISORS :Notícies / Consells +STR_CONFIG_SETTING_COMPANY :Companyia +STR_CONFIG_SETTING_ACCOUNTING :Comptabilitat +STR_CONFIG_SETTING_VEHICLES :Vehicles +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Lleis físiques +STR_CONFIG_SETTING_VEHICLES_ROUTING :Recorreguts +STR_CONFIG_SETTING_LIMITATIONS :Limitacions +STR_CONFIG_SETTING_ACCIDENTS :Desastres / Accidents +STR_CONFIG_SETTING_GENWORLD :Generació del món +STR_CONFIG_SETTING_ENVIRONMENT :Interacció amb l'entorn +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoritats +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Poblacions +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Indústries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribució de la càrrega +STR_CONFIG_SETTING_AI :Competidors +STR_CONFIG_SETTING_AI_NPC :Jugadors IA +STR_CONFIG_SETTING_NETWORK :Xarxa STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Encaminador dels trens: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algorisme a emprar per a escollir les rutes dels trens diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index ab004f943c..af60124b6b 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -841,11 +841,11 @@ STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Питӗ хӑв ###length 3 -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Интерфейс -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Лартӑм -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Ҫул-йӗр: -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Хуласем -STR_CONFIG_SETTING_AI :{ORANGE}Ӑмӑртуҫӑсем +STR_CONFIG_SETTING_INTERFACE :Интерфейс +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Лартӑм +STR_CONFIG_SETTING_VEHICLES :Ҫул-йӗр: +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Хуласем +STR_CONFIG_SETTING_AI :Ӑмӑртуҫӑсем ###length 2 STR_CONFIG_SETTING_PATHFINDER_NPF :NPF diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 211c22f9b4..8097fb7f56 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -1981,29 +1981,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperijalni (ft STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrički (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizacija -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvučni efekti -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Sučelje -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Opće -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Pogledi -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Izgradnja -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Novosti / savjetnici -STR_CONFIG_SETTING_COMPANY :{ORANGE}Tvrtka -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Računovodstvo -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozila -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rutanje -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ograničenja -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofe / nesreće -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Stvaranje svijeta -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Okoliš -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Vlasti -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Gradovi -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrije -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribucija tereta -STR_CONFIG_SETTING_AI :{ORANGE}Suparnici -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Računalni igrači +STR_CONFIG_SETTING_LOCALISATION :Lokalizacija +STR_CONFIG_SETTING_GRAPHICS :Grafika +STR_CONFIG_SETTING_SOUND :Zvučni efekti +STR_CONFIG_SETTING_INTERFACE :Sučelje +STR_CONFIG_SETTING_INTERFACE_GENERAL :Opće +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Pogledi +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Izgradnja +STR_CONFIG_SETTING_ADVISORS :Novosti / savjetnici +STR_CONFIG_SETTING_COMPANY :Tvrtka +STR_CONFIG_SETTING_ACCOUNTING :Računovodstvo +STR_CONFIG_SETTING_VEHICLES :Vozila +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Rutanje +STR_CONFIG_SETTING_LIMITATIONS :Ograničenja +STR_CONFIG_SETTING_ACCIDENTS :Katastrofe / nesreće +STR_CONFIG_SETTING_GENWORLD :Stvaranje svijeta +STR_CONFIG_SETTING_ENVIRONMENT :Okoliš +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Vlasti +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Gradovi +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrije +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribucija tereta +STR_CONFIG_SETTING_AI :Suparnici +STR_CONFIG_SETTING_AI_NPC :Računalni igrači STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pronalaženje putanje za vlakove: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pronalazač puteva koji će se koristiti za vlakove diff --git a/src/lang/czech.txt b/src/lang/czech.txt index aa65162fd7..b1bb768ccb 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -2073,30 +2073,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperiální (f STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrické (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Překlad -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvuk -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Ovládaní -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Obecné -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Pohledy -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Výstavba -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Novinky / Poradci -STR_CONFIG_SETTING_COMPANY :{ORANGE}Společnost -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Účetnictví -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Dopravní prostředky -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fyzika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Směrování -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Omezení -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofy / Nehody -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generování krajiny -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Prostředí -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Městská správa -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Města -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Průmysl -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuce nákladu -STR_CONFIG_SETTING_AI :{ORANGE}Konkurenti -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Umělá inteligence -STR_CONFIG_SETTING_NETWORK :{ORANGE}Síť +STR_CONFIG_SETTING_LOCALISATION :Překlad +STR_CONFIG_SETTING_GRAPHICS :Grafika +STR_CONFIG_SETTING_SOUND :Zvuk +STR_CONFIG_SETTING_INTERFACE :Ovládaní +STR_CONFIG_SETTING_INTERFACE_GENERAL :Obecné +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Pohledy +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Výstavba +STR_CONFIG_SETTING_ADVISORS :Novinky / Poradci +STR_CONFIG_SETTING_COMPANY :Společnost +STR_CONFIG_SETTING_ACCOUNTING :Účetnictví +STR_CONFIG_SETTING_VEHICLES :Dopravní prostředky +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fyzika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Směrování +STR_CONFIG_SETTING_LIMITATIONS :Omezení +STR_CONFIG_SETTING_ACCIDENTS :Katastrofy / Nehody +STR_CONFIG_SETTING_GENWORLD :Generování krajiny +STR_CONFIG_SETTING_ENVIRONMENT :Prostředí +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Městská správa +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Města +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Průmysl +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribuce nákladu +STR_CONFIG_SETTING_AI :Konkurenti +STR_CONFIG_SETTING_AI_NPC :Umělá inteligence +STR_CONFIG_SETTING_NETWORK :Síť STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Hledač cesty pro vlaky: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Hledač cesty pro vlaky diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 2044247191..0d588153fa 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -2019,30 +2019,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperisk (fod) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisering -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafiksæt / Manglende grafik -STR_CONFIG_SETTING_SOUND :{ORANGE}Lydeffekter -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Brugerflade -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generelt -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Viewports -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktion -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nyheder / Rådgivere -STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Regnskab -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Køretøjer -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fysik / Tilstand -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruteplanlægning -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Begrænsninger -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofer / Ulykker -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Verden generation -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Miljø -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Myndigheder -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Byer -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrier -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Fragtdistribution -STR_CONFIG_SETTING_AI :{ORANGE}Modstandere -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computerstyrede spillere -STR_CONFIG_SETTING_NETWORK :{ORANGE}Netværk +STR_CONFIG_SETTING_LOCALISATION :Lokalisering +STR_CONFIG_SETTING_GRAPHICS :Grafiksæt / Manglende grafik +STR_CONFIG_SETTING_SOUND :Lydeffekter +STR_CONFIG_SETTING_INTERFACE :Brugerflade +STR_CONFIG_SETTING_INTERFACE_GENERAL :Generelt +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Viewports +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruktion +STR_CONFIG_SETTING_ADVISORS :Nyheder / Rådgivere +STR_CONFIG_SETTING_COMPANY :Firma +STR_CONFIG_SETTING_ACCOUNTING :Regnskab +STR_CONFIG_SETTING_VEHICLES :Køretøjer +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fysik / Tilstand +STR_CONFIG_SETTING_VEHICLES_ROUTING :Ruteplanlægning +STR_CONFIG_SETTING_LIMITATIONS :Begrænsninger +STR_CONFIG_SETTING_ACCIDENTS :Katastrofer / Ulykker +STR_CONFIG_SETTING_GENWORLD :Verden generation +STR_CONFIG_SETTING_ENVIRONMENT :Miljø +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Myndigheder +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Byer +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrier +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Fragtdistribution +STR_CONFIG_SETTING_AI :Modstandere +STR_CONFIG_SETTING_AI_NPC :Computerstyrede spillere +STR_CONFIG_SETTING_NETWORK :Netværk STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Stifinder til tog: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Stifinder til brug for toge diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index afd055b880..f8cab25a52 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -2019,30 +2019,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperiaal (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisch (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisatie -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafische elementen -STR_CONFIG_SETTING_SOUND :{ORANGE}Geluid -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Gebruikersscherm -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Algemeen -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Kijkvensters -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Constructie -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nieuws/adviseurs -STR_CONFIG_SETTING_COMPANY :{ORANGE}Bedrijf -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Boekhouding -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Voertuigen -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Natuurkundige eigenschappen -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routebepaling -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Beperkingen -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Rampen/ongelukken -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Wereldontwikkeling -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Omgeving -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoriteiten -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Steden -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrieën -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Vrachtdistributie -STR_CONFIG_SETTING_AI :{ORANGE}Tegenstanders -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computerspelers -STR_CONFIG_SETTING_NETWORK :{ORANGE}Netwerk +STR_CONFIG_SETTING_LOCALISATION :Lokalisatie +STR_CONFIG_SETTING_GRAPHICS :Grafische elementen +STR_CONFIG_SETTING_SOUND :Geluid +STR_CONFIG_SETTING_INTERFACE :Gebruikersscherm +STR_CONFIG_SETTING_INTERFACE_GENERAL :Algemeen +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Kijkvensters +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Constructie +STR_CONFIG_SETTING_ADVISORS :Nieuws/adviseurs +STR_CONFIG_SETTING_COMPANY :Bedrijf +STR_CONFIG_SETTING_ACCOUNTING :Boekhouding +STR_CONFIG_SETTING_VEHICLES :Voertuigen +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Natuurkundige eigenschappen +STR_CONFIG_SETTING_VEHICLES_ROUTING :Routebepaling +STR_CONFIG_SETTING_LIMITATIONS :Beperkingen +STR_CONFIG_SETTING_ACCIDENTS :Rampen/ongelukken +STR_CONFIG_SETTING_GENWORLD :Wereldontwikkeling +STR_CONFIG_SETTING_ENVIRONMENT :Omgeving +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoriteiten +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Steden +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrieën +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Vrachtdistributie +STR_CONFIG_SETTING_AI :Tegenstanders +STR_CONFIG_SETTING_AI_NPC :Computerspelers +STR_CONFIG_SETTING_NETWORK :Netwerk STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Routezoeker voor treinen: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Routezoeker voor treinen. diff --git a/src/lang/english.txt b/src/lang/english.txt index 8ef9cca353..ec45ebcdc4 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -2020,30 +2020,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localisation -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphics -STR_CONFIG_SETTING_SOUND :{ORANGE}Sound -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Viewports -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construction -STR_CONFIG_SETTING_ADVISORS :{ORANGE}News / Advisors -STR_CONFIG_SETTING_COMPANY :{ORANGE}Company -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Accounting -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physics -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitations -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Disasters / Accidents -STR_CONFIG_SETTING_GENWORLD :{ORANGE}World generation -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Environment -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Authorities -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Towns -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industries -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Cargo distribution -STR_CONFIG_SETTING_AI :{ORANGE}Competitors -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer players -STR_CONFIG_SETTING_NETWORK :{ORANGE}Network +STR_CONFIG_SETTING_LOCALISATION :Localisation +STR_CONFIG_SETTING_GRAPHICS :Graphics +STR_CONFIG_SETTING_SOUND :Sound +STR_CONFIG_SETTING_INTERFACE :Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Viewports +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construction +STR_CONFIG_SETTING_ADVISORS :News / Advisors +STR_CONFIG_SETTING_COMPANY :Company +STR_CONFIG_SETTING_ACCOUNTING :Accounting +STR_CONFIG_SETTING_VEHICLES :Vehicles +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Physics +STR_CONFIG_SETTING_VEHICLES_ROUTING :Routing +STR_CONFIG_SETTING_LIMITATIONS :Limitations +STR_CONFIG_SETTING_ACCIDENTS :Disasters / Accidents +STR_CONFIG_SETTING_GENWORLD :World generation +STR_CONFIG_SETTING_ENVIRONMENT :Environment +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Authorities +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Towns +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Cargo distribution +STR_CONFIG_SETTING_AI :Competitors +STR_CONFIG_SETTING_AI_NPC :Computer players +STR_CONFIG_SETTING_NETWORK :Network STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder for trains: {STRING2} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Path finder to use for trains diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 7e277c8f0f..714c844a79 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -2020,30 +2020,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localisation -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphics -STR_CONFIG_SETTING_SOUND :{ORANGE}Sound -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Viewports -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construction -STR_CONFIG_SETTING_ADVISORS :{ORANGE}News / Advisors -STR_CONFIG_SETTING_COMPANY :{ORANGE}Company -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Accounting -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physics -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitations -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Disasters / Accidents -STR_CONFIG_SETTING_GENWORLD :{ORANGE}World generation -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Environment -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Authorities -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Towns -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industries -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Cargo distribution -STR_CONFIG_SETTING_AI :{ORANGE}Competitors -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer players -STR_CONFIG_SETTING_NETWORK :{ORANGE}Network +STR_CONFIG_SETTING_LOCALISATION :Localisation +STR_CONFIG_SETTING_GRAPHICS :Graphics +STR_CONFIG_SETTING_SOUND :Sound +STR_CONFIG_SETTING_INTERFACE :Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Viewports +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construction +STR_CONFIG_SETTING_ADVISORS :News / Advisors +STR_CONFIG_SETTING_COMPANY :Company +STR_CONFIG_SETTING_ACCOUNTING :Accounting +STR_CONFIG_SETTING_VEHICLES :Vehicles +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Physics +STR_CONFIG_SETTING_VEHICLES_ROUTING :Routing +STR_CONFIG_SETTING_LIMITATIONS :Limitations +STR_CONFIG_SETTING_ACCIDENTS :Disasters / Accidents +STR_CONFIG_SETTING_GENWORLD :World generation +STR_CONFIG_SETTING_ENVIRONMENT :Environment +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Authorities +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Towns +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Cargo distribution +STR_CONFIG_SETTING_AI :Competitors +STR_CONFIG_SETTING_AI_NPC :Computer players +STR_CONFIG_SETTING_NETWORK :Network STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder for trains: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Path finder to use for trains diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 58c8a55a2c..ff09eff6ad 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -2019,30 +2019,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localization -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphics -STR_CONFIG_SETTING_SOUND :{ORANGE}Sound -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Viewports -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construction -STR_CONFIG_SETTING_ADVISORS :{ORANGE}News / Advisors -STR_CONFIG_SETTING_COMPANY :{ORANGE}Company -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Accounting -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physics -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitations -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Disasters / Accidents -STR_CONFIG_SETTING_GENWORLD :{ORANGE}World generation -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Environment -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Authorities -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Towns -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industries -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Cargo distribution -STR_CONFIG_SETTING_AI :{ORANGE}Competitors -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer players -STR_CONFIG_SETTING_NETWORK :{ORANGE}Network +STR_CONFIG_SETTING_LOCALISATION :Localization +STR_CONFIG_SETTING_GRAPHICS :Graphics +STR_CONFIG_SETTING_SOUND :Sound +STR_CONFIG_SETTING_INTERFACE :Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Viewports +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construction +STR_CONFIG_SETTING_ADVISORS :News / Advisors +STR_CONFIG_SETTING_COMPANY :Company +STR_CONFIG_SETTING_ACCOUNTING :Accounting +STR_CONFIG_SETTING_VEHICLES :Vehicles +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Physics +STR_CONFIG_SETTING_VEHICLES_ROUTING :Routing +STR_CONFIG_SETTING_LIMITATIONS :Limitations +STR_CONFIG_SETTING_ACCIDENTS :Disasters / Accidents +STR_CONFIG_SETTING_GENWORLD :World generation +STR_CONFIG_SETTING_ENVIRONMENT :Environment +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Authorities +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Towns +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Cargo distribution +STR_CONFIG_SETTING_AI :Competitors +STR_CONFIG_SETTING_AI_NPC :Computer players +STR_CONFIG_SETTING_NETWORK :Network STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder for trains: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Path finder to use for trains diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index 6f658888f4..4515f0626e 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -2053,30 +2053,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Angla-usona sis STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metra (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI-unuoj (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Loka adaptado -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafiko -STR_CONFIG_SETTING_SOUND :{ORANGE}Sonefektoj -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaco -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Ĝenerale -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vidujoj -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruado -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Novaĵoj / Konsilantoj -STR_CONFIG_SETTING_COMPANY :{ORANGE}Kompanio -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Librotenado -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Veturiloj -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fiziko -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Navigado -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limigoj -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofoj / akcidentoj -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Mondgenerado -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Medio -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Lokaj estroj -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Urboj -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrioj -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Ŝarĝodistribuado -STR_CONFIG_SETTING_AI :{ORANGE}Konkurantoj -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Komputil-ludantoj -STR_CONFIG_SETTING_NETWORK :{ORANGE}Reto +STR_CONFIG_SETTING_LOCALISATION :Loka adaptado +STR_CONFIG_SETTING_GRAPHICS :Grafiko +STR_CONFIG_SETTING_SOUND :Sonefektoj +STR_CONFIG_SETTING_INTERFACE :Interfaco +STR_CONFIG_SETTING_INTERFACE_GENERAL :Ĝenerale +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Vidujoj +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruado +STR_CONFIG_SETTING_ADVISORS :Novaĵoj / Konsilantoj +STR_CONFIG_SETTING_COMPANY :Kompanio +STR_CONFIG_SETTING_ACCOUNTING :Librotenado +STR_CONFIG_SETTING_VEHICLES :Veturiloj +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fiziko +STR_CONFIG_SETTING_VEHICLES_ROUTING :Navigado +STR_CONFIG_SETTING_LIMITATIONS :Limigoj +STR_CONFIG_SETTING_ACCIDENTS :Katastrofoj / akcidentoj +STR_CONFIG_SETTING_GENWORLD :Mondgenerado +STR_CONFIG_SETTING_ENVIRONMENT :Medio +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Lokaj estroj +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Urboj +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrioj +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Ŝarĝodistribuado +STR_CONFIG_SETTING_AI :Konkurantoj +STR_CONFIG_SETTING_AI_NPC :Komputil-ludantoj +STR_CONFIG_SETTING_NETWORK :Reto STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Padtrovilo por trajnoj: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Padtrovilo por stratveturiloj: {STRING} diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 3b10e6f420..f834ee760a 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -2042,30 +2042,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Inglise mõõdu STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Meetermõõdustik (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI-süsteem (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Kohandused -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graafika -STR_CONFIG_SETTING_SOUND :{ORANGE}Heliefektid -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Liides -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Üldine -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vaated -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Ehitus -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Uudised / Nõunikud -STR_CONFIG_SETTING_COMPANY :{ORANGE}Ettevõte -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Arveldamine -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Sõidukid -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Füüsika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Marsruutimine -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Piirangud -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastroofid / Õnnetused -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Maailma tekitamine -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Keskkond -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Omavalitsus -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Asulad -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Tööstused -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Kaubajaotus -STR_CONFIG_SETTING_AI :{ORANGE}Konkurendid -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Arvuti -STR_CONFIG_SETTING_NETWORK :{ORANGE}Võrk +STR_CONFIG_SETTING_LOCALISATION :Kohandused +STR_CONFIG_SETTING_GRAPHICS :Graafika +STR_CONFIG_SETTING_SOUND :Heliefektid +STR_CONFIG_SETTING_INTERFACE :Liides +STR_CONFIG_SETTING_INTERFACE_GENERAL :Üldine +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Vaated +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Ehitus +STR_CONFIG_SETTING_ADVISORS :Uudised / Nõunikud +STR_CONFIG_SETTING_COMPANY :Ettevõte +STR_CONFIG_SETTING_ACCOUNTING :Arveldamine +STR_CONFIG_SETTING_VEHICLES :Sõidukid +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Füüsika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Marsruutimine +STR_CONFIG_SETTING_LIMITATIONS :Piirangud +STR_CONFIG_SETTING_ACCIDENTS :Katastroofid / Õnnetused +STR_CONFIG_SETTING_GENWORLD :Maailma tekitamine +STR_CONFIG_SETTING_ENVIRONMENT :Keskkond +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Omavalitsus +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Asulad +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Tööstused +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Kaubajaotus +STR_CONFIG_SETTING_AI :Konkurendid +STR_CONFIG_SETTING_AI_NPC :Arvuti +STR_CONFIG_SETTING_NETWORK :Võrk STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Rongide marsruudileidja: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Marsruudileidja rongide jaoks diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index f31b58ca49..c00b29d8b7 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -1690,15 +1690,15 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Eingin ###length 3 -STR_CONFIG_SETTING_SOUND :{ORANGE}Ljóð effektir -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Takførisflati -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Bygging -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Flutningstól -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Beining -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bygdir -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Ídnaðir -STR_CONFIG_SETTING_AI :{ORANGE}Kappingarneytar -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Teldu spælarir +STR_CONFIG_SETTING_SOUND :Ljóð effektir +STR_CONFIG_SETTING_INTERFACE :Takførisflati +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Bygging +STR_CONFIG_SETTING_VEHICLES :Flutningstól +STR_CONFIG_SETTING_VEHICLES_ROUTING :Beining +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Bygdir +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Ídnaðir +STR_CONFIG_SETTING_AI :Kappingarneytar +STR_CONFIG_SETTING_AI_NPC :Teldu spælarir STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Leiðbeinari fyri tok: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Leið beinari at nýta til tok diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index bc833f826b..e2515250ea 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -2019,30 +2019,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Brittiläinen ( STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrinen (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Mittayksiköt ja päivämäärät -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafiikka -STR_CONFIG_SETTING_SOUND :{ORANGE}Ääni -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Käyttöliittymä -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Yleinen -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Näkymät -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Rakentaminen -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Uutiset ja neuvonantajat -STR_CONFIG_SETTING_COMPANY :{ORANGE}Yhtiö -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Talous -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Kulkuneuvot -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fysiikka -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Reititys -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Rajoitukset -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Onnettomuudet -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Maailman luominen -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Ympäristö -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Viranomaiset -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Kunnat -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Laitokset -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Rahdin jakautuminen -STR_CONFIG_SETTING_AI :{ORANGE}Kilpailijat -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Tietokonepelaajat -STR_CONFIG_SETTING_NETWORK :{ORANGE}Verkko +STR_CONFIG_SETTING_LOCALISATION :Mittayksiköt ja päivämäärät +STR_CONFIG_SETTING_GRAPHICS :Grafiikka +STR_CONFIG_SETTING_SOUND :Ääni +STR_CONFIG_SETTING_INTERFACE :Käyttöliittymä +STR_CONFIG_SETTING_INTERFACE_GENERAL :Yleinen +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Näkymät +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Rakentaminen +STR_CONFIG_SETTING_ADVISORS :Uutiset ja neuvonantajat +STR_CONFIG_SETTING_COMPANY :Yhtiö +STR_CONFIG_SETTING_ACCOUNTING :Talous +STR_CONFIG_SETTING_VEHICLES :Kulkuneuvot +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fysiikka +STR_CONFIG_SETTING_VEHICLES_ROUTING :Reititys +STR_CONFIG_SETTING_LIMITATIONS :Rajoitukset +STR_CONFIG_SETTING_ACCIDENTS :Onnettomuudet +STR_CONFIG_SETTING_GENWORLD :Maailman luominen +STR_CONFIG_SETTING_ENVIRONMENT :Ympäristö +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Viranomaiset +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Kunnat +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Laitokset +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Rahdin jakautuminen +STR_CONFIG_SETTING_AI :Kilpailijat +STR_CONFIG_SETTING_AI_NPC :Tietokonepelaajat +STR_CONFIG_SETTING_NETWORK :Verkko STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Junien käyttämä reitinetsijä: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Junien käyttämä reitinetsijä diff --git a/src/lang/french.txt b/src/lang/french.txt index 7ae2dce89e..3e8ebc4c41 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -2021,30 +2021,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Impérial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrique (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localisation -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graphiques -STR_CONFIG_SETTING_SOUND :{ORANGE}Son -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Général -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vues -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construction -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Informations / Annonces -STR_CONFIG_SETTING_COMPANY :{ORANGE}Compagnie -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Comptabilité -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Véhicules -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physique -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routage -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitations -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Catastrophes / Accidents -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Création du terrain -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Environnement -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autorités -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Villes -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industries -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribution des marchandises -STR_CONFIG_SETTING_AI :{ORANGE}Compétiteurs -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Intelligence artificielle -STR_CONFIG_SETTING_NETWORK :{ORANGE}Réseau +STR_CONFIG_SETTING_LOCALISATION :Localisation +STR_CONFIG_SETTING_GRAPHICS :Graphiques +STR_CONFIG_SETTING_SOUND :Son +STR_CONFIG_SETTING_INTERFACE :Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :Général +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Vues +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construction +STR_CONFIG_SETTING_ADVISORS :Informations / Annonces +STR_CONFIG_SETTING_COMPANY :Compagnie +STR_CONFIG_SETTING_ACCOUNTING :Comptabilité +STR_CONFIG_SETTING_VEHICLES :Véhicules +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Physique +STR_CONFIG_SETTING_VEHICLES_ROUTING :Routage +STR_CONFIG_SETTING_LIMITATIONS :Limitations +STR_CONFIG_SETTING_ACCIDENTS :Catastrophes / Accidents +STR_CONFIG_SETTING_GENWORLD :Création du terrain +STR_CONFIG_SETTING_ENVIRONMENT :Environnement +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autorités +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Villes +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industries +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribution des marchandises +STR_CONFIG_SETTING_AI :Compétiteurs +STR_CONFIG_SETTING_AI_NPC :Intelligence artificielle +STR_CONFIG_SETTING_NETWORK :Réseau STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Recherche de chemin des trains{NBSP}: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Recherche de chemin à utiliser pour les trains diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index 44972751ce..f1164007b3 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -1813,29 +1813,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Ymperiaal (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrysk (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisaasje -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Ôfbyldings -STR_CONFIG_SETTING_SOUND :{ORANGE}Lûd -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Algemien -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}konstruksje -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nijs / Adviseurs -STR_CONFIG_SETTING_COMPANY :{ORANGE}Bedriuw -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Boekhâlding -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Motorreauwen -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Natuerkundig model -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Route -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Beheinings -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Rampen / Ûngelokken -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Wrâldgeneraasje -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Omwrâld -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoriteiten -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Stêd -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}yndustryen -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Frachtdistribusje -STR_CONFIG_SETTING_AI :{ORANGE}Tsjinstânners -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer spilers -STR_CONFIG_SETTING_NETWORK :{ORANGE}Netwurk +STR_CONFIG_SETTING_LOCALISATION :Lokalisaasje +STR_CONFIG_SETTING_GRAPHICS :Ôfbyldings +STR_CONFIG_SETTING_SOUND :Lûd +STR_CONFIG_SETTING_INTERFACE :Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :Algemien +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :konstruksje +STR_CONFIG_SETTING_ADVISORS :Nijs / Adviseurs +STR_CONFIG_SETTING_COMPANY :Bedriuw +STR_CONFIG_SETTING_ACCOUNTING :Boekhâlding +STR_CONFIG_SETTING_VEHICLES :Motorreauwen +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Natuerkundig model +STR_CONFIG_SETTING_VEHICLES_ROUTING :Route +STR_CONFIG_SETTING_LIMITATIONS :Beheinings +STR_CONFIG_SETTING_ACCIDENTS :Rampen / Ûngelokken +STR_CONFIG_SETTING_GENWORLD :Wrâldgeneraasje +STR_CONFIG_SETTING_ENVIRONMENT :Omwrâld +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoriteiten +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Stêd +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :yndustryen +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Frachtdistribusje +STR_CONFIG_SETTING_AI :Tsjinstânners +STR_CONFIG_SETTING_AI_NPC :Computer spilers +STR_CONFIG_SETTING_NETWORK :Netwurk STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder foar treinen: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pathfinder foar auto's: {STRING} diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index 512c0c76e6..bd159a301c 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -2033,29 +2033,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Impireil (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Meatrach (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Ionadaileadh -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafaigeachd -STR_CONFIG_SETTING_SOUND :{ORANGE}Fuaim -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Eadar-aghaidh -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Coitcheann -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Puirt-sheallaidh -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Togail -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Comhairlean / Fiosrachadh -STR_CONFIG_SETTING_COMPANY :{ORANGE}Companaidh -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Cunntasachd -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Carbadan -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fiosaigeachd -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Lorg shlighean -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Cuingeachaidhean -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Dunaidh / Tubaistean -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Gintinn saoghail -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Àrainneachd -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Ùghdarrasan -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bailtean -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Gnìomhachasan -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Sgaoileadh carago -STR_CONFIG_SETTING_AI :{ORANGE}Co-farpaisichean -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Cluicheadairean coimpiutair +STR_CONFIG_SETTING_LOCALISATION :Ionadaileadh +STR_CONFIG_SETTING_GRAPHICS :Grafaigeachd +STR_CONFIG_SETTING_SOUND :Fuaim +STR_CONFIG_SETTING_INTERFACE :Eadar-aghaidh +STR_CONFIG_SETTING_INTERFACE_GENERAL :Coitcheann +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Puirt-sheallaidh +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Togail +STR_CONFIG_SETTING_ADVISORS :Comhairlean / Fiosrachadh +STR_CONFIG_SETTING_COMPANY :Companaidh +STR_CONFIG_SETTING_ACCOUNTING :Cunntasachd +STR_CONFIG_SETTING_VEHICLES :Carbadan +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fiosaigeachd +STR_CONFIG_SETTING_VEHICLES_ROUTING :Lorg shlighean +STR_CONFIG_SETTING_LIMITATIONS :Cuingeachaidhean +STR_CONFIG_SETTING_ACCIDENTS :Dunaidh / Tubaistean +STR_CONFIG_SETTING_GENWORLD :Gintinn saoghail +STR_CONFIG_SETTING_ENVIRONMENT :Àrainneachd +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Ùghdarrasan +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Bailtean +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Gnìomhachasan +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Sgaoileadh carago +STR_CONFIG_SETTING_AI :Co-farpaisichean +STR_CONFIG_SETTING_AI_NPC :Cluicheadairean coimpiutair STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Lorg shlighean aig trèanaichean: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :An dòigh a lorgas trèanaichean an slighe diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 5c97de6c09..d2fd658d31 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -2020,30 +2020,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localización -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gráficos -STR_CONFIG_SETTING_SOUND :{ORANGE}Efectos de son -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Xeral -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Fiestras de visualización -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construción -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Novas / Conselleiros -STR_CONFIG_SETTING_COMPANY :{ORANGE}Compañía -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Contabilidade -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehículos -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Física -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Encamiñamento -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitacións -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Desastres / Accidentes -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Xeración do mundo -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Contorno -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoridades -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Cidades -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrias -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribución da carga -STR_CONFIG_SETTING_AI :{ORANGE}Competidores -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Xogadores da computadora -STR_CONFIG_SETTING_NETWORK :{ORANGE}Rede +STR_CONFIG_SETTING_LOCALISATION :Localización +STR_CONFIG_SETTING_GRAPHICS :Gráficos +STR_CONFIG_SETTING_SOUND :Efectos de son +STR_CONFIG_SETTING_INTERFACE :Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :Xeral +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Fiestras de visualización +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construción +STR_CONFIG_SETTING_ADVISORS :Novas / Conselleiros +STR_CONFIG_SETTING_COMPANY :Compañía +STR_CONFIG_SETTING_ACCOUNTING :Contabilidade +STR_CONFIG_SETTING_VEHICLES :Vehículos +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Física +STR_CONFIG_SETTING_VEHICLES_ROUTING :Encamiñamento +STR_CONFIG_SETTING_LIMITATIONS :Limitacións +STR_CONFIG_SETTING_ACCIDENTS :Desastres / Accidentes +STR_CONFIG_SETTING_GENWORLD :Xeración do mundo +STR_CONFIG_SETTING_ENVIRONMENT :Contorno +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoridades +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Cidades +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrias +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribución da carga +STR_CONFIG_SETTING_AI :Competidores +STR_CONFIG_SETTING_AI_NPC :Xogadores da computadora +STR_CONFIG_SETTING_NETWORK :Rede STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Buscador de ruta para trens: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Buscador de ruta empregado polos trens diff --git a/src/lang/german.txt b/src/lang/german.txt index b8b7427b77..3d665b7679 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -2008,30 +2008,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisch (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisierung -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafik -STR_CONFIG_SETTING_SOUND :{ORANGE}Sound -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Oberfläche -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Allgemein -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Kartenansichten -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktion -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nachrichten und Hinweise -STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Finanzen -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Fahrzeuge -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physik -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Wegsuche -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Beschränkungen -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Unfälle und Katastrophen -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Spielfeld-Erzeugung -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Umgebung -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Öffentliche Verwaltungen -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Städte -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrien -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Warenverteilung -STR_CONFIG_SETTING_AI :{ORANGE}Mitbewerber -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computerspieler -STR_CONFIG_SETTING_NETWORK :{ORANGE}Netzwerk +STR_CONFIG_SETTING_LOCALISATION :Lokalisierung +STR_CONFIG_SETTING_GRAPHICS :Grafik +STR_CONFIG_SETTING_SOUND :Sound +STR_CONFIG_SETTING_INTERFACE :Oberfläche +STR_CONFIG_SETTING_INTERFACE_GENERAL :Allgemein +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Kartenansichten +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruktion +STR_CONFIG_SETTING_ADVISORS :Nachrichten und Hinweise +STR_CONFIG_SETTING_COMPANY :Firma +STR_CONFIG_SETTING_ACCOUNTING :Finanzen +STR_CONFIG_SETTING_VEHICLES :Fahrzeuge +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Physik +STR_CONFIG_SETTING_VEHICLES_ROUTING :Wegsuche +STR_CONFIG_SETTING_LIMITATIONS :Beschränkungen +STR_CONFIG_SETTING_ACCIDENTS :Unfälle und Katastrophen +STR_CONFIG_SETTING_GENWORLD :Spielfeld-Erzeugung +STR_CONFIG_SETTING_ENVIRONMENT :Umgebung +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Öffentliche Verwaltungen +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Städte +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrien +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Warenverteilung +STR_CONFIG_SETTING_AI :Mitbewerber +STR_CONFIG_SETTING_AI_NPC :Computerspieler +STR_CONFIG_SETTING_NETWORK :Netzwerk STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pfadsucher für Züge: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pfadsuch-Algorithmus für Züge diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 03dea826ee..2fb3380e09 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -2090,30 +2090,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Αυτοκρα STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Μετρικό (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Τοπικοποίηση -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Γραφικά -STR_CONFIG_SETTING_SOUND :{ORANGE}Ήχος -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Περιβάλλον Λειτουργίας -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Γενικά -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Παράθυρα προβολών -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Κατασκευή -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Ειδήσεις / Σύμβουλοι -STR_CONFIG_SETTING_COMPANY :{ORANGE}Εταιρία -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Λογιστικά -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Οχήματα -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Φυσική -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Δρομολογήσεις -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Περιορισμοί -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Καταστροφές/Ατυχήματα -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Δημιουργία Κόσμου -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Περιβάλλον -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Αρχές -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Πόλεις -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Βιομηχανίες -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Κατανομή φορτίων -STR_CONFIG_SETTING_AI :{ORANGE}Ανταγωνιστές -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Παίκτες υπολογιστή -STR_CONFIG_SETTING_NETWORK :{ORANGE}Δίκτυο +STR_CONFIG_SETTING_LOCALISATION :Τοπικοποίηση +STR_CONFIG_SETTING_GRAPHICS :Γραφικά +STR_CONFIG_SETTING_SOUND :Ήχος +STR_CONFIG_SETTING_INTERFACE :Περιβάλλον Λειτουργίας +STR_CONFIG_SETTING_INTERFACE_GENERAL :Γενικά +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Παράθυρα προβολών +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Κατασκευή +STR_CONFIG_SETTING_ADVISORS :Ειδήσεις / Σύμβουλοι +STR_CONFIG_SETTING_COMPANY :Εταιρία +STR_CONFIG_SETTING_ACCOUNTING :Λογιστικά +STR_CONFIG_SETTING_VEHICLES :Οχήματα +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Φυσική +STR_CONFIG_SETTING_VEHICLES_ROUTING :Δρομολογήσεις +STR_CONFIG_SETTING_LIMITATIONS :Περιορισμοί +STR_CONFIG_SETTING_ACCIDENTS :Καταστροφές/Ατυχήματα +STR_CONFIG_SETTING_GENWORLD :Δημιουργία Κόσμου +STR_CONFIG_SETTING_ENVIRONMENT :Περιβάλλον +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Αρχές +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Πόλεις +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Βιομηχανίες +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Κατανομή φορτίων +STR_CONFIG_SETTING_AI :Ανταγωνιστές +STR_CONFIG_SETTING_AI_NPC :Παίκτες υπολογιστή +STR_CONFIG_SETTING_NETWORK :Δίκτυο STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Μέθοδος δρομολόγησης για τρένα: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα τρένα diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index a85f8d5f28..a347cd66ef 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -1881,29 +1881,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :בריטית ( STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :מטרי (מטר) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (מטר) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}הגדרות מיקום -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}גרפיקה -STR_CONFIG_SETTING_SOUND :{ORANGE}צלילים -STR_CONFIG_SETTING_INTERFACE :{ORANGE}ממשק חזותי -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}כללי -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}נקודות מבט -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}בנייה -STR_CONFIG_SETTING_ADVISORS :{ORANGE}חדשות / יועצים -STR_CONFIG_SETTING_COMPANY :{ORANGE}חברה -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}חשבונאות -STR_CONFIG_SETTING_VEHICLES :{ORANGE}כלי תחבורה -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}פיזיקה -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}ניתוב -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}מגבלות -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}אסונות / תאונות -STR_CONFIG_SETTING_GENWORLD :{ORANGE}יצירת עולם -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}סביבה -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}רשויות -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}ערים -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}תעשיות -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}התפלגות המטען -STR_CONFIG_SETTING_AI :{ORANGE}מתחרים -STR_CONFIG_SETTING_AI_NPC :{ORANGE}שחקני מחשב +STR_CONFIG_SETTING_LOCALISATION :הגדרות מיקום +STR_CONFIG_SETTING_GRAPHICS :גרפיקה +STR_CONFIG_SETTING_SOUND :צלילים +STR_CONFIG_SETTING_INTERFACE :ממשק חזותי +STR_CONFIG_SETTING_INTERFACE_GENERAL :כללי +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :נקודות מבט +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :בנייה +STR_CONFIG_SETTING_ADVISORS :חדשות / יועצים +STR_CONFIG_SETTING_COMPANY :חברה +STR_CONFIG_SETTING_ACCOUNTING :חשבונאות +STR_CONFIG_SETTING_VEHICLES :כלי תחבורה +STR_CONFIG_SETTING_VEHICLES_PHYSICS :פיזיקה +STR_CONFIG_SETTING_VEHICLES_ROUTING :ניתוב +STR_CONFIG_SETTING_LIMITATIONS :מגבלות +STR_CONFIG_SETTING_ACCIDENTS :אסונות / תאונות +STR_CONFIG_SETTING_GENWORLD :יצירת עולם +STR_CONFIG_SETTING_ENVIRONMENT :סביבה +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :רשויות +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :ערים +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :תעשיות +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :התפלגות המטען +STR_CONFIG_SETTING_AI :מתחרים +STR_CONFIG_SETTING_AI_NPC :שחקני מחשב STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :{STRING} :אלגוריתם איתור נתיב עבור רכבות STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :אלגוריתם איתור נתיב עבור רכבות diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index ca81ba5781..d980ee5e79 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -601,7 +601,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :अंतर् ###length 3 -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}सामान्य +STR_CONFIG_SETTING_INTERFACE_GENERAL :सामान्य STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :नौकाओं द्वारा उपयोग किया जाने वाला पथान्वेषी ###length 2 diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 3f3c7a5e03..3093e9430a 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -2074,30 +2074,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Angolszász (l STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrikus (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Honosítás -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Megjelenés -STR_CONFIG_SETTING_SOUND :{ORANGE}Hang effektek -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Felület -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Általános -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Nézet -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Építkezés -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Hírüzenetek / Figyelmeztetések -STR_CONFIG_SETTING_COMPANY :{ORANGE}Vállalat -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Pénzügyek -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Járművek -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Útvonalkeresés -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Korlátozások -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katasztrófák / Balesetek -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Térképgenerálás -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Környezet -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Önkormányzatok -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Települések -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Gazdasági épületek -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Rakományok szétosztása (úticélok) -STR_CONFIG_SETTING_AI :{ORANGE}Ellenfelek -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Számítógép által vezérelt ellenfelek -STR_CONFIG_SETTING_NETWORK :{ORANGE}Hálózat +STR_CONFIG_SETTING_LOCALISATION :Honosítás +STR_CONFIG_SETTING_GRAPHICS :Megjelenés +STR_CONFIG_SETTING_SOUND :Hang effektek +STR_CONFIG_SETTING_INTERFACE :Felület +STR_CONFIG_SETTING_INTERFACE_GENERAL :Általános +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Nézet +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Építkezés +STR_CONFIG_SETTING_ADVISORS :Hírüzenetek / Figyelmeztetések +STR_CONFIG_SETTING_COMPANY :Vállalat +STR_CONFIG_SETTING_ACCOUNTING :Pénzügyek +STR_CONFIG_SETTING_VEHICLES :Járművek +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Útvonalkeresés +STR_CONFIG_SETTING_LIMITATIONS :Korlátozások +STR_CONFIG_SETTING_ACCIDENTS :Katasztrófák / Balesetek +STR_CONFIG_SETTING_GENWORLD :Térképgenerálás +STR_CONFIG_SETTING_ENVIRONMENT :Környezet +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Önkormányzatok +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Települések +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Gazdasági épületek +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Rakományok szétosztása (úticélok) +STR_CONFIG_SETTING_AI :Ellenfelek +STR_CONFIG_SETTING_AI_NPC :Számítógép által vezérelt ellenfelek +STR_CONFIG_SETTING_NETWORK :Hálózat STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Útvonalkereső vonatokhoz: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :A vonatokhoz használt útvonalkereső diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index ee65427078..7051c0fc09 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -1715,15 +1715,15 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Meðalstærð b ###length 3 -STR_CONFIG_SETTING_SOUND :{ORANGE}Hljóð -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Viðmót -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Bygging -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Farartæki -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Leiðarvísun farartækja -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bæir -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Iðnaður -STR_CONFIG_SETTING_AI :{ORANGE}Mótherji -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Gervigreind +STR_CONFIG_SETTING_SOUND :Hljóð +STR_CONFIG_SETTING_INTERFACE :Viðmót +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Bygging +STR_CONFIG_SETTING_VEHICLES :Farartæki +STR_CONFIG_SETTING_VEHICLES_ROUTING :Leiðarvísun farartækja +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Bæir +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Iðnaður +STR_CONFIG_SETTING_AI :Mótherji +STR_CONFIG_SETTING_AI_NPC :Gervigreind STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Leiðsögukerfi lesta: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Leiðsögukerfi sem nota á fyrir lestir diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 8329e9f781..daed78f1ee 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -1984,30 +1984,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrik (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisasi -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafik -STR_CONFIG_SETTING_SOUND :{ORANGE}Suara -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Antaramuka -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Umum -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Jendela -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruksi -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Berita / Penasihat -STR_CONFIG_SETTING_COMPANY :{ORANGE}Perusahaan -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Akuntansi -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Kendaraan -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Pengarahan -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Keterbatasan -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Bencana / Kecelakaan -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Pembuatan Bentang Darat -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Linkungan Dunia -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Berwenang -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Kota -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industri -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribusi kargo -STR_CONFIG_SETTING_AI :{ORANGE}Pesaing -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Pemain Komputer -STR_CONFIG_SETTING_NETWORK :{ORANGE}Jaringan +STR_CONFIG_SETTING_LOCALISATION :Lokalisasi +STR_CONFIG_SETTING_GRAPHICS :Grafik +STR_CONFIG_SETTING_SOUND :Suara +STR_CONFIG_SETTING_INTERFACE :Antaramuka +STR_CONFIG_SETTING_INTERFACE_GENERAL :Umum +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Jendela +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruksi +STR_CONFIG_SETTING_ADVISORS :Berita / Penasihat +STR_CONFIG_SETTING_COMPANY :Perusahaan +STR_CONFIG_SETTING_ACCOUNTING :Akuntansi +STR_CONFIG_SETTING_VEHICLES :Kendaraan +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fisika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Pengarahan +STR_CONFIG_SETTING_LIMITATIONS :Keterbatasan +STR_CONFIG_SETTING_ACCIDENTS :Bencana / Kecelakaan +STR_CONFIG_SETTING_GENWORLD :Pembuatan Bentang Darat +STR_CONFIG_SETTING_ENVIRONMENT :Linkungan Dunia +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Berwenang +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Kota +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industri +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribusi kargo +STR_CONFIG_SETTING_AI :Pesaing +STR_CONFIG_SETTING_AI_NPC :Pemain Komputer +STR_CONFIG_SETTING_NETWORK :Jaringan STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pencari jejak untuk kereta: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pencari jejak untuk kereta diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 1985e73865..3aa4732ed7 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -1945,30 +1945,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Impiriúil (tr) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Méadrach (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Logánú -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafaicí -STR_CONFIG_SETTING_SOUND :{ORANGE}Fuaim -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Comhéadan -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Ginearálta -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Painéil amhairc -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Tógáil -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nuacht / Comhairleoirí -STR_CONFIG_SETTING_COMPANY :{ORANGE}Cuideachta -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Cuntasaíocht -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Feithiclí -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisic -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ródú -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Teorainneacha -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Tubaistí / Timpistí -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Domhan a chruthú -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Timpeallacht -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Údaráis -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bailte -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Tionscail -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Dáileadh lastais -STR_CONFIG_SETTING_AI :{ORANGE}Iomaitheoirí -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Ríomh-imreoirí -STR_CONFIG_SETTING_NETWORK :{ORANGE}Líonra +STR_CONFIG_SETTING_LOCALISATION :Logánú +STR_CONFIG_SETTING_GRAPHICS :Grafaicí +STR_CONFIG_SETTING_SOUND :Fuaim +STR_CONFIG_SETTING_INTERFACE :Comhéadan +STR_CONFIG_SETTING_INTERFACE_GENERAL :Ginearálta +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Painéil amhairc +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Tógáil +STR_CONFIG_SETTING_ADVISORS :Nuacht / Comhairleoirí +STR_CONFIG_SETTING_COMPANY :Cuideachta +STR_CONFIG_SETTING_ACCOUNTING :Cuntasaíocht +STR_CONFIG_SETTING_VEHICLES :Feithiclí +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fisic +STR_CONFIG_SETTING_VEHICLES_ROUTING :Ródú +STR_CONFIG_SETTING_LIMITATIONS :Teorainneacha +STR_CONFIG_SETTING_ACCIDENTS :Tubaistí / Timpistí +STR_CONFIG_SETTING_GENWORLD :Domhan a chruthú +STR_CONFIG_SETTING_ENVIRONMENT :Timpeallacht +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Údaráis +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Bailte +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Tionscail +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Dáileadh lastais +STR_CONFIG_SETTING_AI :Iomaitheoirí +STR_CONFIG_SETTING_AI_NPC :Ríomh-imreoirí +STR_CONFIG_SETTING_NETWORK :Líonra STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Aimsitheoir bealaigh do thraenacha: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :An t-aimsitheoir bealaigh a úsáidfear do thraenacha diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 91f81f34d7..92873123c8 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -2054,30 +2054,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperiali (pied STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metriche (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localizzazione -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafica -STR_CONFIG_SETTING_SOUND :{ORANGE}Effetti sonori -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaccia -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generale -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Visuali -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Costruzione -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Notizie / consigli -STR_CONFIG_SETTING_COMPANY :{ORANGE}Compagnia -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Economia -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Veicoli -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fisica -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Instradamento -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limiti -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Disastri / incidenti -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generazione del mondo -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Ambiente -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autorità -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Città -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrie -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuzione dei carichi -STR_CONFIG_SETTING_AI :{ORANGE}Avversari -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Giocatori controllati dal computer -STR_CONFIG_SETTING_NETWORK :{ORANGE}Rete +STR_CONFIG_SETTING_LOCALISATION :Localizzazione +STR_CONFIG_SETTING_GRAPHICS :Grafica +STR_CONFIG_SETTING_SOUND :Effetti sonori +STR_CONFIG_SETTING_INTERFACE :Interfaccia +STR_CONFIG_SETTING_INTERFACE_GENERAL :Generale +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Visuali +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Costruzione +STR_CONFIG_SETTING_ADVISORS :Notizie / consigli +STR_CONFIG_SETTING_COMPANY :Compagnia +STR_CONFIG_SETTING_ACCOUNTING :Economia +STR_CONFIG_SETTING_VEHICLES :Veicoli +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fisica +STR_CONFIG_SETTING_VEHICLES_ROUTING :Instradamento +STR_CONFIG_SETTING_LIMITATIONS :Limiti +STR_CONFIG_SETTING_ACCIDENTS :Disastri / incidenti +STR_CONFIG_SETTING_GENWORLD :Generazione del mondo +STR_CONFIG_SETTING_ENVIRONMENT :Ambiente +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autorità +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Città +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrie +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribuzione dei carichi +STR_CONFIG_SETTING_AI :Avversari +STR_CONFIG_SETTING_AI_NPC :Giocatori controllati dal computer +STR_CONFIG_SETTING_NETWORK :Rete STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder per i treni: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pathfinder da utilizzare per i treni diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 40f8d9db23..2d99525068 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -2011,30 +2011,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :ヤード・ポ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :メートル法 (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :国際単位系 (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}多国籍対応 -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}グラフィック -STR_CONFIG_SETTING_SOUND :{ORANGE}効果音 -STR_CONFIG_SETTING_INTERFACE :{ORANGE}インターフェース -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}一般 -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}画面表示 -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}建設 -STR_CONFIG_SETTING_ADVISORS :{ORANGE}ニュース/アドバイス -STR_CONFIG_SETTING_COMPANY :{ORANGE}会社 -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}会計 -STR_CONFIG_SETTING_VEHICLES :{ORANGE}輸送機器 -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}物理モデル -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}経路構築 -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}制限 -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}災害/事故 -STR_CONFIG_SETTING_GENWORLD :{ORANGE}マップ生成 -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}環境 -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}地方自治体 -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}街 -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}産業 -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}貨物配送先 -STR_CONFIG_SETTING_AI :{ORANGE}競争会社 -STR_CONFIG_SETTING_AI_NPC :{ORANGE}コンピュータプレイヤー -STR_CONFIG_SETTING_NETWORK :{ORANGE}ネットワーク +STR_CONFIG_SETTING_LOCALISATION :多国籍対応 +STR_CONFIG_SETTING_GRAPHICS :グラフィック +STR_CONFIG_SETTING_SOUND :効果音 +STR_CONFIG_SETTING_INTERFACE :インターフェース +STR_CONFIG_SETTING_INTERFACE_GENERAL :一般 +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :画面表示 +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :建設 +STR_CONFIG_SETTING_ADVISORS :ニュース/アドバイス +STR_CONFIG_SETTING_COMPANY :会社 +STR_CONFIG_SETTING_ACCOUNTING :会計 +STR_CONFIG_SETTING_VEHICLES :輸送機器 +STR_CONFIG_SETTING_VEHICLES_PHYSICS :物理モデル +STR_CONFIG_SETTING_VEHICLES_ROUTING :経路構築 +STR_CONFIG_SETTING_LIMITATIONS :制限 +STR_CONFIG_SETTING_ACCIDENTS :災害/事故 +STR_CONFIG_SETTING_GENWORLD :マップ生成 +STR_CONFIG_SETTING_ENVIRONMENT :環境 +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :地方自治体 +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :街 +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :産業 +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :貨物配送先 +STR_CONFIG_SETTING_AI :競争会社 +STR_CONFIG_SETTING_AI_NPC :コンピュータプレイヤー +STR_CONFIG_SETTING_NETWORK :ネットワーク STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :列車の経路探索アルゴリズム: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :列車の経路探索アルゴリズムを決めます diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 90c3885e49..ab8c984a80 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -2020,30 +2020,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :야드파운드 STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :미터법 (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :국제표준규격 (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}단위 설정 -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}그래픽 -STR_CONFIG_SETTING_SOUND :{ORANGE}효과음 -STR_CONFIG_SETTING_INTERFACE :{ORANGE}인터페이스 -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}일반 -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}게임 화면 -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}건설 -STR_CONFIG_SETTING_ADVISORS :{ORANGE}뉴스 / 정보 -STR_CONFIG_SETTING_COMPANY :{ORANGE}회사 -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}회계 -STR_CONFIG_SETTING_VEHICLES :{ORANGE}차량 -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}물리 -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}경로 -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}제한 -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}재앙 / 사고 -STR_CONFIG_SETTING_GENWORLD :{ORANGE}세계 제작 -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}환경 -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}지역 당국 -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}도시 -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}산업시설 -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}화물 분배 -STR_CONFIG_SETTING_AI :{ORANGE}경쟁자 -STR_CONFIG_SETTING_AI_NPC :{ORANGE}컴퓨터 플레이어 -STR_CONFIG_SETTING_NETWORK :{ORANGE}네트워크 +STR_CONFIG_SETTING_LOCALISATION :단위 설정 +STR_CONFIG_SETTING_GRAPHICS :그래픽 +STR_CONFIG_SETTING_SOUND :효과음 +STR_CONFIG_SETTING_INTERFACE :인터페이스 +STR_CONFIG_SETTING_INTERFACE_GENERAL :일반 +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :게임 화면 +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :건설 +STR_CONFIG_SETTING_ADVISORS :뉴스 / 정보 +STR_CONFIG_SETTING_COMPANY :회사 +STR_CONFIG_SETTING_ACCOUNTING :회계 +STR_CONFIG_SETTING_VEHICLES :차량 +STR_CONFIG_SETTING_VEHICLES_PHYSICS :물리 +STR_CONFIG_SETTING_VEHICLES_ROUTING :경로 +STR_CONFIG_SETTING_LIMITATIONS :제한 +STR_CONFIG_SETTING_ACCIDENTS :재앙 / 사고 +STR_CONFIG_SETTING_GENWORLD :세계 제작 +STR_CONFIG_SETTING_ENVIRONMENT :환경 +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :지역 당국 +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :도시 +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :산업시설 +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :화물 분배 +STR_CONFIG_SETTING_AI :경쟁자 +STR_CONFIG_SETTING_AI_NPC :컴퓨터 플레이어 +STR_CONFIG_SETTING_NETWORK :네트워크 STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :열차에 사용할 경로 탐색법: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :열차에 사용할 경로 탐색 방법을 선택합니다. diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 76da6b1664..7573c0a942 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -2035,29 +2035,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Anglicae (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metricae (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localizatio -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Res Graphicae -STR_CONFIG_SETTING_SOUND :{ORANGE}Soni -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfacies -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Res Generales -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Fenestrae Conspectus -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Constructio -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nuntia / Admonitio -STR_CONFIG_SETTING_COMPANY :{ORANGE}Societas -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Ratiocinium -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicula -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physica -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Itinera -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Fines -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Calamitates / Accidentes -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generatio Mundi -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Circumiecta -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Auctoritates -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Oppida -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industriae -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Partitio onerum -STR_CONFIG_SETTING_AI :{ORANGE}Competitores -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Lusores computatrales +STR_CONFIG_SETTING_LOCALISATION :Localizatio +STR_CONFIG_SETTING_GRAPHICS :Res Graphicae +STR_CONFIG_SETTING_SOUND :Soni +STR_CONFIG_SETTING_INTERFACE :Interfacies +STR_CONFIG_SETTING_INTERFACE_GENERAL :Res Generales +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Fenestrae Conspectus +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Constructio +STR_CONFIG_SETTING_ADVISORS :Nuntia / Admonitio +STR_CONFIG_SETTING_COMPANY :Societas +STR_CONFIG_SETTING_ACCOUNTING :Ratiocinium +STR_CONFIG_SETTING_VEHICLES :Vehicula +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Physica +STR_CONFIG_SETTING_VEHICLES_ROUTING :Itinera +STR_CONFIG_SETTING_LIMITATIONS :Fines +STR_CONFIG_SETTING_ACCIDENTS :Calamitates / Accidentes +STR_CONFIG_SETTING_GENWORLD :Generatio Mundi +STR_CONFIG_SETTING_ENVIRONMENT :Circumiecta +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Auctoritates +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Oppida +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industriae +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Partitio onerum +STR_CONFIG_SETTING_AI :Competitores +STR_CONFIG_SETTING_AI_NPC :Lusores computatrales STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Inventrum itineris traminum: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Inventrum itineris hamaxostichis adhibendum diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 47d5e40740..23136c86b7 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -1990,30 +1990,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :impērijas, bri STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :metriskās (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI, starptautiskās (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizēšana -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika -STR_CONFIG_SETTING_SOUND :{ORANGE}Skaņa -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Saskarne -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Vispārīgi -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Skatvietas -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Būvniecība -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Avīžu raksti / padomnieki -STR_CONFIG_SETTING_COMPANY :{ORANGE}Uzņēmums -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Grāmatvedība -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Transportlīdzekļi -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Pārvietošanās -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ierobežojumi -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofas / negadījumi -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Pasaules radīšana -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Apkārtējā vide -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Pašvaldības -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Pilsētas -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Ražotnes -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Kravu sadale -STR_CONFIG_SETTING_AI :{ORANGE}Sāncenši -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Nespēlētāju tēli (datora vadīti) -STR_CONFIG_SETTING_NETWORK :{ORANGE}Tīkls +STR_CONFIG_SETTING_LOCALISATION :Lokalizēšana +STR_CONFIG_SETTING_GRAPHICS :Grafika +STR_CONFIG_SETTING_SOUND :Skaņa +STR_CONFIG_SETTING_INTERFACE :Saskarne +STR_CONFIG_SETTING_INTERFACE_GENERAL :Vispārīgi +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Skatvietas +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Būvniecība +STR_CONFIG_SETTING_ADVISORS :Avīžu raksti / padomnieki +STR_CONFIG_SETTING_COMPANY :Uzņēmums +STR_CONFIG_SETTING_ACCOUNTING :Grāmatvedība +STR_CONFIG_SETTING_VEHICLES :Transportlīdzekļi +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Pārvietošanās +STR_CONFIG_SETTING_LIMITATIONS :Ierobežojumi +STR_CONFIG_SETTING_ACCIDENTS :Katastrofas / negadījumi +STR_CONFIG_SETTING_GENWORLD :Pasaules radīšana +STR_CONFIG_SETTING_ENVIRONMENT :Apkārtējā vide +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Pašvaldības +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Pilsētas +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Ražotnes +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Kravu sadale +STR_CONFIG_SETTING_AI :Sāncenši +STR_CONFIG_SETTING_AI_NPC :Nespēlētāju tēli (datora vadīti) +STR_CONFIG_SETTING_NETWORK :Tīkls STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Vilcienu ceļa meklētājs: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Vilcieniem pielietotais ceļa meklētājs diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index ec134a14ee..91c2c9c7ee 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -2186,30 +2186,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :imperiniai (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :metriniai (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizavimas -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika -STR_CONFIG_SETTING_SOUND :{ORANGE}Garsai -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Vaizdas -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Bendros nuostatos -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Papildomi peržiūros langai -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstrukcijos -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Žinios ir patarėjai -STR_CONFIG_SETTING_COMPANY :{ORANGE}Kompanija -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Apskaita -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Transporto priemonės -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Maršrutas -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ribos -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofos ir incidentai -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Žemėlapio kūrimas -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Aplinka -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Valdžia -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Miestai -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Gamyklos -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Krovinių pasiskirstymas -STR_CONFIG_SETTING_AI :{ORANGE}Konkurentai -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Kompiuterio žaidėjai -STR_CONFIG_SETTING_NETWORK :{ORANGE}Žaidimas tinkle +STR_CONFIG_SETTING_LOCALISATION :Lokalizavimas +STR_CONFIG_SETTING_GRAPHICS :Grafika +STR_CONFIG_SETTING_SOUND :Garsai +STR_CONFIG_SETTING_INTERFACE :Vaizdas +STR_CONFIG_SETTING_INTERFACE_GENERAL :Bendros nuostatos +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Papildomi peržiūros langai +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstrukcijos +STR_CONFIG_SETTING_ADVISORS :Žinios ir patarėjai +STR_CONFIG_SETTING_COMPANY :Kompanija +STR_CONFIG_SETTING_ACCOUNTING :Apskaita +STR_CONFIG_SETTING_VEHICLES :Transporto priemonės +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Maršrutas +STR_CONFIG_SETTING_LIMITATIONS :Ribos +STR_CONFIG_SETTING_ACCIDENTS :Katastrofos ir incidentai +STR_CONFIG_SETTING_GENWORLD :Žemėlapio kūrimas +STR_CONFIG_SETTING_ENVIRONMENT :Aplinka +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Valdžia +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Miestai +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Gamyklos +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Krovinių pasiskirstymas +STR_CONFIG_SETTING_AI :Konkurentai +STR_CONFIG_SETTING_AI_NPC :Kompiuterio žaidėjai +STR_CONFIG_SETTING_NETWORK :Žaidimas tinkle STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Traukinių maršrutų paieškos algoritmas: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Maršruto naudojamas ieškotojas traukiniams diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index a6b3840d6b..f34f485b96 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -1986,30 +1986,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Britesch (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metresch (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokaliséirung -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafik -STR_CONFIG_SETTING_SOUND :{ORANGE}Soundeffekter -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generell -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Usiicht -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktioun -STR_CONFIG_SETTING_ADVISORS :{ORANGE}News / Meldungen -STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Compta -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Gefierer -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physik -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routeplangung -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitatiounen -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrophen / Accidenter -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Welt Generatioun -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Emwelt -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoritéiten -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Stied -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrien -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Wuereverdeelung -STR_CONFIG_SETTING_AI :{ORANGE}Géigner -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computerspiller -STR_CONFIG_SETTING_NETWORK :{ORANGE}Netzwierk +STR_CONFIG_SETTING_LOCALISATION :Lokaliséirung +STR_CONFIG_SETTING_GRAPHICS :Grafik +STR_CONFIG_SETTING_SOUND :Soundeffekter +STR_CONFIG_SETTING_INTERFACE :Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :Generell +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Usiicht +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruktioun +STR_CONFIG_SETTING_ADVISORS :News / Meldungen +STR_CONFIG_SETTING_COMPANY :Firma +STR_CONFIG_SETTING_ACCOUNTING :Compta +STR_CONFIG_SETTING_VEHICLES :Gefierer +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Physik +STR_CONFIG_SETTING_VEHICLES_ROUTING :Routeplangung +STR_CONFIG_SETTING_LIMITATIONS :Limitatiounen +STR_CONFIG_SETTING_ACCIDENTS :Katastrophen / Accidenter +STR_CONFIG_SETTING_GENWORLD :Welt Generatioun +STR_CONFIG_SETTING_ENVIRONMENT :Emwelt +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoritéiten +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Stied +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrien +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Wuereverdeelung +STR_CONFIG_SETTING_AI :Géigner +STR_CONFIG_SETTING_AI_NPC :Computerspiller +STR_CONFIG_SETTING_NETWORK :Netzwierk STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pfadfinder fir Zich: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pfadfinder dee fir Zich benotzt gëtt diff --git a/src/lang/malay.txt b/src/lang/malay.txt index c22e125658..3483b39d2a 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -1610,18 +1610,18 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :Unit SI (m³) ###length 3 -STR_CONFIG_SETTING_SOUND :{ORANGE}Bunyi -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Antaramuka (Interface) -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Pembinaan -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Berita / Penasihat -STR_CONFIG_SETTING_COMPANY :{ORANGE}Syarikat -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Kenderaan -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Laluan -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Kecelakaan / Kemalangan -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Bandar-bandar -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industri-industri -STR_CONFIG_SETTING_AI :{ORANGE}Pesaing -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Pemain komputer +STR_CONFIG_SETTING_SOUND :Bunyi +STR_CONFIG_SETTING_INTERFACE :Antaramuka (Interface) +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Pembinaan +STR_CONFIG_SETTING_ADVISORS :Berita / Penasihat +STR_CONFIG_SETTING_COMPANY :Syarikat +STR_CONFIG_SETTING_VEHICLES :Kenderaan +STR_CONFIG_SETTING_VEHICLES_ROUTING :Laluan +STR_CONFIG_SETTING_ACCIDENTS :Kecelakaan / Kemalangan +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Bandar-bandar +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industri-industri +STR_CONFIG_SETTING_AI :Pesaing +STR_CONFIG_SETTING_AI_NPC :Pemain komputer STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pencari laluan untuk keretapi: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pencari laluan untuk kenderaan jalanraya: {STRING} diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index e9145e3640..c2d1f323c2 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -1959,30 +1959,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Det britiske im STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisering -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafikk -STR_CONFIG_SETTING_SOUND :{ORANGE}Lydeffekter -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Grensesnitt -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generelt -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Synsfelt -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruksjon -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nyheter / Rådgivere -STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Regnskap -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Kjøretøy -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fysikk -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruting -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Begrensninger -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofer / Ulykker -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Verdensgenerering -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Miljø -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Myndigheter -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Byer -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrier -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Gods-distribusjon -STR_CONFIG_SETTING_AI :{ORANGE}Motstandere -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Datamaskinstyrte spillere -STR_CONFIG_SETTING_NETWORK :{ORANGE}Nettverk +STR_CONFIG_SETTING_LOCALISATION :Lokalisering +STR_CONFIG_SETTING_GRAPHICS :Grafikk +STR_CONFIG_SETTING_SOUND :Lydeffekter +STR_CONFIG_SETTING_INTERFACE :Grensesnitt +STR_CONFIG_SETTING_INTERFACE_GENERAL :Generelt +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Synsfelt +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruksjon +STR_CONFIG_SETTING_ADVISORS :Nyheter / Rådgivere +STR_CONFIG_SETTING_COMPANY :Firma +STR_CONFIG_SETTING_ACCOUNTING :Regnskap +STR_CONFIG_SETTING_VEHICLES :Kjøretøy +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fysikk +STR_CONFIG_SETTING_VEHICLES_ROUTING :Ruting +STR_CONFIG_SETTING_LIMITATIONS :Begrensninger +STR_CONFIG_SETTING_ACCIDENTS :Katastrofer / Ulykker +STR_CONFIG_SETTING_GENWORLD :Verdensgenerering +STR_CONFIG_SETTING_ENVIRONMENT :Miljø +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Myndigheter +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Byer +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrier +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Gods-distribusjon +STR_CONFIG_SETTING_AI :Motstandere +STR_CONFIG_SETTING_AI_NPC :Datamaskinstyrte spillere +STR_CONFIG_SETTING_NETWORK :Nettverk STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Veifinner for tog: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Stifinner som skal brukes for tog diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 0350f994cb..abeb981543 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -1755,28 +1755,28 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Britisk eining STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Plassering -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafikk -STR_CONFIG_SETTING_SOUND :{ORANGE}Lydar -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Grensesnitt -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generelt -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruksjon -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nyhende / Rådgjevarar -STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Rekneskap -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Køyretøy -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fysikk -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruting -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Avgrensingar -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofar / ulykker -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generer ei verd -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Miljø -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Styremaktane -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Byar -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industriar -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Varefordeling -STR_CONFIG_SETTING_AI :{ORANGE}Motstandarar -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Datamaskinspelarar +STR_CONFIG_SETTING_LOCALISATION :Plassering +STR_CONFIG_SETTING_GRAPHICS :Grafikk +STR_CONFIG_SETTING_SOUND :Lydar +STR_CONFIG_SETTING_INTERFACE :Grensesnitt +STR_CONFIG_SETTING_INTERFACE_GENERAL :Generelt +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruksjon +STR_CONFIG_SETTING_ADVISORS :Nyhende / Rådgjevarar +STR_CONFIG_SETTING_COMPANY :Firma +STR_CONFIG_SETTING_ACCOUNTING :Rekneskap +STR_CONFIG_SETTING_VEHICLES :Køyretøy +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fysikk +STR_CONFIG_SETTING_VEHICLES_ROUTING :Ruting +STR_CONFIG_SETTING_LIMITATIONS :Avgrensingar +STR_CONFIG_SETTING_ACCIDENTS :Katastrofar / ulykker +STR_CONFIG_SETTING_GENWORLD :Generer ei verd +STR_CONFIG_SETTING_ENVIRONMENT :Miljø +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Styremaktane +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Byar +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industriar +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Varefordeling +STR_CONFIG_SETTING_AI :Motstandarar +STR_CONFIG_SETTING_AI_NPC :Datamaskinspelarar STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Vegfinnar for tog: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Kva for vegfinnar som skal nyttast for tog diff --git a/src/lang/persian.txt b/src/lang/persian.txt index c473dc8ff6..483cca54ed 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -1585,18 +1585,18 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :امپریال STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :متریک (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :متر (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}بومی سازی -STR_CONFIG_SETTING_INTERFACE :{ORANGE}واسط کاربری -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}ساخت و ساز -STR_CONFIG_SETTING_VEHICLES :{ORANGE}وسایل نقلیه -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}مسیریابی -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}محیط زیست -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}مقامات -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}شهرها -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}صنایع -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}توزیع محموله -STR_CONFIG_SETTING_AI :{ORANGE}رقیبان -STR_CONFIG_SETTING_AI_NPC :{ORANGE}بازیگران رایانه +STR_CONFIG_SETTING_LOCALISATION :بومی سازی +STR_CONFIG_SETTING_INTERFACE :واسط کاربری +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :ساخت و ساز +STR_CONFIG_SETTING_VEHICLES :وسایل نقلیه +STR_CONFIG_SETTING_VEHICLES_ROUTING :مسیریابی +STR_CONFIG_SETTING_ENVIRONMENT :محیط زیست +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :مقامات +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :شهرها +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :صنایع +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :توزیع محموله +STR_CONFIG_SETTING_AI :رقیبان +STR_CONFIG_SETTING_AI_NPC :بازیگران رایانه STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :مسیریاب برای قطارها: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :مسیریاب برای خودروهای جاده ای: {STRING} diff --git a/src/lang/polish.txt b/src/lang/polish.txt index b76f002ea4..7176edacae 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -2399,30 +2399,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperialne (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metryczne (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizacja -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika -STR_CONFIG_SETTING_SOUND :{ORANGE}Dźwięk -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfejs -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Ogólne -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Widok -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstrukcje -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Wiadomości i porady -STR_CONFIG_SETTING_COMPANY :{ORANGE}Firma -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Finanse -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Pojazdy -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizyka -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Wyznaczanie trasy -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ograniczenia -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Awarie i katastrofy -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Tworzenie mapy -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Środowisko -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Władze lokalne -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Miasta -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Przedsiębiorstwa -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Dystrybucja ładunków -STR_CONFIG_SETTING_AI :{ORANGE}Rywale -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Gracze komputerowi -STR_CONFIG_SETTING_NETWORK :{ORANGE}Sieć +STR_CONFIG_SETTING_LOCALISATION :Lokalizacja +STR_CONFIG_SETTING_GRAPHICS :Grafika +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_ADVISORS :Wiadomości i porady +STR_CONFIG_SETTING_COMPANY :Firma +STR_CONFIG_SETTING_ACCOUNTING :Finanse +STR_CONFIG_SETTING_VEHICLES :Pojazdy +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizyka +STR_CONFIG_SETTING_VEHICLES_ROUTING :Wyznaczanie trasy +STR_CONFIG_SETTING_LIMITATIONS :Ograniczenia +STR_CONFIG_SETTING_ACCIDENTS :Awarie i katastrofy +STR_CONFIG_SETTING_GENWORLD :Tworzenie mapy +STR_CONFIG_SETTING_ENVIRONMENT :Środowisko +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Władze lokalne +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Miasta +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Przedsiębiorstwa +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Dystrybucja ładunków +STR_CONFIG_SETTING_AI :Rywale +STR_CONFIG_SETTING_AI_NPC :Gracze komputerowi +STR_CONFIG_SETTING_NETWORK :Sieć STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Wytyczanie drogi dla pociągów: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :System wyszukiwania trasy dla pociągów diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index a60246597d..dcde1bb52e 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -2020,30 +2020,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft/p STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localização -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gráficos -STR_CONFIG_SETTING_SOUND :{ORANGE}Efeitos sonoros -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interface -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Geral -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Visualizadores -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construção -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Notícias / Assessores -STR_CONFIG_SETTING_COMPANY :{ORANGE}Empresa -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Contabilidade -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Veículos -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Física -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Em rota -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitações -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Desastres / Acidentes -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Geração do mundo -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Meio Ambiente -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoridades -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Localidades -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrias -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuição de Carga -STR_CONFIG_SETTING_AI :{ORANGE}Oponentes -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jogadores Computador -STR_CONFIG_SETTING_NETWORK :{ORANGE}Rede +STR_CONFIG_SETTING_LOCALISATION :Localização +STR_CONFIG_SETTING_GRAPHICS :Gráficos +STR_CONFIG_SETTING_SOUND :Efeitos sonoros +STR_CONFIG_SETTING_INTERFACE :Interface +STR_CONFIG_SETTING_INTERFACE_GENERAL :Geral +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Visualizadores +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construção +STR_CONFIG_SETTING_ADVISORS :Notícias / Assessores +STR_CONFIG_SETTING_COMPANY :Empresa +STR_CONFIG_SETTING_ACCOUNTING :Contabilidade +STR_CONFIG_SETTING_VEHICLES :Veículos +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Física +STR_CONFIG_SETTING_VEHICLES_ROUTING :Em rota +STR_CONFIG_SETTING_LIMITATIONS :Limitações +STR_CONFIG_SETTING_ACCIDENTS :Desastres / Acidentes +STR_CONFIG_SETTING_GENWORLD :Geração do mundo +STR_CONFIG_SETTING_ENVIRONMENT :Meio Ambiente +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoridades +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Localidades +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrias +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribuição de Carga +STR_CONFIG_SETTING_AI :Oponentes +STR_CONFIG_SETTING_AI_NPC :Jogadores Computador +STR_CONFIG_SETTING_NETWORK :Rede STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Sistema de encaminhar comboios: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Sistema de encaminhar comboios diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 35d5c7524d..a91e0822c4 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -2017,30 +2017,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localizare -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafică -STR_CONFIG_SETTING_SOUND :{ORANGE}Efecte sonore -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaţă -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Câmpuri vizuale -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construcţie -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Știri / Consilieri -STR_CONFIG_SETTING_COMPANY :{ORANGE}Companie -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Contabilitate -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicule -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizică -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Direcţionare -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitări -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Dezastre / Accidente -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generare lume -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Mediu -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autorități -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Oraşe -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrii -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuţie cargo -STR_CONFIG_SETTING_AI :{ORANGE}Concurenţi -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jucători virtuali -STR_CONFIG_SETTING_NETWORK :{ORANGE}Rețea +STR_CONFIG_SETTING_LOCALISATION :Localizare +STR_CONFIG_SETTING_GRAPHICS :Grafică +STR_CONFIG_SETTING_SOUND :Efecte sonore +STR_CONFIG_SETTING_INTERFACE :Interfaţă +STR_CONFIG_SETTING_INTERFACE_GENERAL :General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Câmpuri vizuale +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construcţie +STR_CONFIG_SETTING_ADVISORS :Știri / Consilieri +STR_CONFIG_SETTING_COMPANY :Companie +STR_CONFIG_SETTING_ACCOUNTING :Contabilitate +STR_CONFIG_SETTING_VEHICLES :Vehicule +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizică +STR_CONFIG_SETTING_VEHICLES_ROUTING :Direcţionare +STR_CONFIG_SETTING_LIMITATIONS :Limitări +STR_CONFIG_SETTING_ACCIDENTS :Dezastre / Accidente +STR_CONFIG_SETTING_GENWORLD :Generare lume +STR_CONFIG_SETTING_ENVIRONMENT :Mediu +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autorități +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Oraşe +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrii +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribuţie cargo +STR_CONFIG_SETTING_AI :Concurenţi +STR_CONFIG_SETTING_AI_NPC :Jucători virtuali +STR_CONFIG_SETTING_NETWORK :Rețea STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Algoritm de rutare pentru trenuri: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algoritm de rutare pentru trenuri diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 79efd1b8a1..76b33849d9 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -2171,30 +2171,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :английс STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :метрическая (м) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :СИ (м) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Локализация -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Графика -STR_CONFIG_SETTING_SOUND :{ORANGE}Звуковые эффекты -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Интерфейс -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Общие настройки -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Окна просмотра -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Строительство -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Новости и информация -STR_CONFIG_SETTING_COMPANY :{ORANGE}Компания -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Финансы -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Транспорт -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Физическая модель -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршруты -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ограничения -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Аварии и катастрофы -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Создание карты -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Окружение -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Городская администрация -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Города -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Предприятия -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Распределение грузов -STR_CONFIG_SETTING_AI :{ORANGE}Конкуренты -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Искусственный интеллект -STR_CONFIG_SETTING_NETWORK :{ORANGE}Сеть +STR_CONFIG_SETTING_LOCALISATION :Локализация +STR_CONFIG_SETTING_GRAPHICS :Графика +STR_CONFIG_SETTING_SOUND :Звуковые эффекты +STR_CONFIG_SETTING_INTERFACE :Интерфейс +STR_CONFIG_SETTING_INTERFACE_GENERAL :Общие настройки +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Окна просмотра +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Строительство +STR_CONFIG_SETTING_ADVISORS :Новости и информация +STR_CONFIG_SETTING_COMPANY :Компания +STR_CONFIG_SETTING_ACCOUNTING :Финансы +STR_CONFIG_SETTING_VEHICLES :Транспорт +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Физическая модель +STR_CONFIG_SETTING_VEHICLES_ROUTING :Маршруты +STR_CONFIG_SETTING_LIMITATIONS :Ограничения +STR_CONFIG_SETTING_ACCIDENTS :Аварии и катастрофы +STR_CONFIG_SETTING_GENWORLD :Создание карты +STR_CONFIG_SETTING_ENVIRONMENT :Окружение +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Городская администрация +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Города +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Предприятия +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Распределение грузов +STR_CONFIG_SETTING_AI :Конкуренты +STR_CONFIG_SETTING_AI_NPC :Искусственный интеллект +STR_CONFIG_SETTING_NETWORK :Сеть STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Алгоритм поиска пути для поездов: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Алгоритм поиска пути, используемый поездами diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index bac4b490b0..303d02eb45 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -2179,30 +2179,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperijalne mer STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metričke mere (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Prevod -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvučni efekti -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Okruženje -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Opšte -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Prikazi -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Izgradnja -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Vesti / Savetnici -STR_CONFIG_SETTING_COMPANY :{ORANGE}Preduzeće -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Računovodstvo -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozila -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rutiranje -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ograničenja -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofe / Nezgode -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Stvaranje sveta -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Okoliš -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Vlasti -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Naselja -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Fabrike -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribucija tereta -STR_CONFIG_SETTING_AI :{ORANGE}Suparnici -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Računar -STR_CONFIG_SETTING_NETWORK :{ORANGE}Mreža +STR_CONFIG_SETTING_LOCALISATION :Prevod +STR_CONFIG_SETTING_GRAPHICS :Grafika +STR_CONFIG_SETTING_SOUND :Zvučni efekti +STR_CONFIG_SETTING_INTERFACE :Okruženje +STR_CONFIG_SETTING_INTERFACE_GENERAL :Opšte +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Prikazi +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Izgradnja +STR_CONFIG_SETTING_ADVISORS :Vesti / Savetnici +STR_CONFIG_SETTING_COMPANY :Preduzeće +STR_CONFIG_SETTING_ACCOUNTING :Računovodstvo +STR_CONFIG_SETTING_VEHICLES :Vozila +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Rutiranje +STR_CONFIG_SETTING_LIMITATIONS :Ograničenja +STR_CONFIG_SETTING_ACCIDENTS :Katastrofe / Nezgode +STR_CONFIG_SETTING_GENWORLD :Stvaranje sveta +STR_CONFIG_SETTING_ENVIRONMENT :Okoliš +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Vlasti +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Naselja +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Fabrike +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribucija tereta +STR_CONFIG_SETTING_AI :Suparnici +STR_CONFIG_SETTING_AI_NPC :Računar +STR_CONFIG_SETTING_NETWORK :Mreža STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pretraživanje putanja vozova: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algoritam pronalaženja puta za vozove diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 243eceeb71..532b4b79ba 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -1986,30 +1986,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :英制(呎) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :公制(米) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :国际单位制(米) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}本地化 -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}图形 -STR_CONFIG_SETTING_SOUND :{ORANGE}音效 -STR_CONFIG_SETTING_INTERFACE :{ORANGE}界面 -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}通用 -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}视点 -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}建设 -STR_CONFIG_SETTING_ADVISORS :{ORANGE}消息/新闻 -STR_CONFIG_SETTING_COMPANY :{ORANGE}公司 -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}财务管理 -STR_CONFIG_SETTING_VEHICLES :{ORANGE}车辆 -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}物理 -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}经由 -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}限制 -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}灾难/事故 -STR_CONFIG_SETTING_GENWORLD :{ORANGE}生成地图 -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}环境 -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}政府监管 -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}城镇 -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}工业设施 -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}货物分配 -STR_CONFIG_SETTING_AI :{ORANGE}竞争 -STR_CONFIG_SETTING_AI_NPC :{ORANGE}电脑玩家 -STR_CONFIG_SETTING_NETWORK :{ORANGE}网络 +STR_CONFIG_SETTING_LOCALISATION :本地化 +STR_CONFIG_SETTING_GRAPHICS :图形 +STR_CONFIG_SETTING_SOUND :音效 +STR_CONFIG_SETTING_INTERFACE :界面 +STR_CONFIG_SETTING_INTERFACE_GENERAL :通用 +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :视点 +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :建设 +STR_CONFIG_SETTING_ADVISORS :消息/新闻 +STR_CONFIG_SETTING_COMPANY :公司 +STR_CONFIG_SETTING_ACCOUNTING :财务管理 +STR_CONFIG_SETTING_VEHICLES :车辆 +STR_CONFIG_SETTING_VEHICLES_PHYSICS :物理 +STR_CONFIG_SETTING_VEHICLES_ROUTING :经由 +STR_CONFIG_SETTING_LIMITATIONS :限制 +STR_CONFIG_SETTING_ACCIDENTS :灾难/事故 +STR_CONFIG_SETTING_GENWORLD :生成地图 +STR_CONFIG_SETTING_ENVIRONMENT :环境 +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :政府监管 +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :城镇 +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :工业设施 +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :货物分配 +STR_CONFIG_SETTING_AI :竞争 +STR_CONFIG_SETTING_AI_NPC :电脑玩家 +STR_CONFIG_SETTING_NETWORK :网络 STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :火车寻路: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :列车寻路方式 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 558eb39581..62fff2c04b 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -2057,30 +2057,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperialne (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrické (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalizácia -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafika -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvuk -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Rozhranie -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Všeobecné -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Náhľady -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Výstavba -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Novinky / Varovania -STR_CONFIG_SETTING_COMPANY :{ORANGE}Spoločnosť -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Účtovníctvo -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozidlá -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fyzika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Smerovanie -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Obmedzenia -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofy / Nehody -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generovanie sveta -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Prostredie -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Miestne správy -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Mestá -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Priemysel -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribúcia nákladu -STR_CONFIG_SETTING_AI :{ORANGE}Konkurenti -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Počítačový hráči -STR_CONFIG_SETTING_NETWORK :{ORANGE}Sieť +STR_CONFIG_SETTING_LOCALISATION :Lokalizácia +STR_CONFIG_SETTING_GRAPHICS :Grafika +STR_CONFIG_SETTING_SOUND :Zvuk +STR_CONFIG_SETTING_INTERFACE :Rozhranie +STR_CONFIG_SETTING_INTERFACE_GENERAL :Všeobecné +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Náhľady +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Výstavba +STR_CONFIG_SETTING_ADVISORS :Novinky / Varovania +STR_CONFIG_SETTING_COMPANY :Spoločnosť +STR_CONFIG_SETTING_ACCOUNTING :Účtovníctvo +STR_CONFIG_SETTING_VEHICLES :Vozidlá +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fyzika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Smerovanie +STR_CONFIG_SETTING_LIMITATIONS :Obmedzenia +STR_CONFIG_SETTING_ACCIDENTS :Katastrofy / Nehody +STR_CONFIG_SETTING_GENWORLD :Generovanie sveta +STR_CONFIG_SETTING_ENVIRONMENT :Prostredie +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Miestne správy +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Mestá +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Priemysel +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribúcia nákladu +STR_CONFIG_SETTING_AI :Konkurenti +STR_CONFIG_SETTING_AI_NPC :Počítačový hráči +STR_CONFIG_SETTING_NETWORK :Sieť STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Algoritmus hľadania cesty pre vlaky: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Vyhľadávač trasy pre vlaky diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 0522676635..2acfc3ee44 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -1985,29 +1985,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperične (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrične (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalno -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafike -STR_CONFIG_SETTING_SOUND :{ORANGE}Zvočni učinki -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Vmesnik -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Splošno -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Pogledi -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Gradnja -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Novice/Nasveti -STR_CONFIG_SETTING_COMPANY :{ORANGE}Podjetje -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Računi -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozila -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizika -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Usmerjanje -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Omejitve -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Katastrofe / Nesreče -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Ustvarjanje sveta -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Okolje -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Oblasti -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Mesta -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrije -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Razpored tovora -STR_CONFIG_SETTING_AI :{ORANGE}Tekmeci -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Računalniški igralci +STR_CONFIG_SETTING_LOCALISATION :Lokalno +STR_CONFIG_SETTING_GRAPHICS :Grafike +STR_CONFIG_SETTING_SOUND :Zvočni učinki +STR_CONFIG_SETTING_INTERFACE :Vmesnik +STR_CONFIG_SETTING_INTERFACE_GENERAL :Splošno +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Pogledi +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Gradnja +STR_CONFIG_SETTING_ADVISORS :Novice/Nasveti +STR_CONFIG_SETTING_COMPANY :Podjetje +STR_CONFIG_SETTING_ACCOUNTING :Računi +STR_CONFIG_SETTING_VEHICLES :Vozila +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizika +STR_CONFIG_SETTING_VEHICLES_ROUTING :Usmerjanje +STR_CONFIG_SETTING_LIMITATIONS :Omejitve +STR_CONFIG_SETTING_ACCIDENTS :Katastrofe / Nesreče +STR_CONFIG_SETTING_GENWORLD :Ustvarjanje sveta +STR_CONFIG_SETTING_ENVIRONMENT :Okolje +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Oblasti +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Mesta +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrije +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Razpored tovora +STR_CONFIG_SETTING_AI :Tekmeci +STR_CONFIG_SETTING_AI_NPC :Računalniški igralci STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Iskalnik poti za vlake: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Iskalnik poti za vlake. diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index fdda997dfd..1b8083c64e 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -1987,30 +1987,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (pies) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localización -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gráficos -STR_CONFIG_SETTING_SOUND :{ORANGE}Efectos de sonido -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaz -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Ventanas de visualización -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construcción -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Noticias / Consejos -STR_CONFIG_SETTING_COMPANY :{ORANGE}Empresa -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Contabilidad -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehículos -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Leyes físicas -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Enrutamiento -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Limitaciones -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Desastres / Accidentes -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generación de mundo -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Ambiente -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoridades -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Municipios -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrias -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribución de carga -STR_CONFIG_SETTING_AI :{ORANGE}Competidores -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jugadores del ordenador (IA) -STR_CONFIG_SETTING_NETWORK :{ORANGE}Red +STR_CONFIG_SETTING_LOCALISATION :Localización +STR_CONFIG_SETTING_GRAPHICS :Gráficos +STR_CONFIG_SETTING_SOUND :Efectos de sonido +STR_CONFIG_SETTING_INTERFACE :Interfaz +STR_CONFIG_SETTING_INTERFACE_GENERAL :General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Ventanas de visualización +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construcción +STR_CONFIG_SETTING_ADVISORS :Noticias / Consejos +STR_CONFIG_SETTING_COMPANY :Empresa +STR_CONFIG_SETTING_ACCOUNTING :Contabilidad +STR_CONFIG_SETTING_VEHICLES :Vehículos +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Leyes físicas +STR_CONFIG_SETTING_VEHICLES_ROUTING :Enrutamiento +STR_CONFIG_SETTING_LIMITATIONS :Limitaciones +STR_CONFIG_SETTING_ACCIDENTS :Desastres / Accidentes +STR_CONFIG_SETTING_GENWORLD :Generación de mundo +STR_CONFIG_SETTING_ENVIRONMENT :Ambiente +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoridades +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Municipios +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrias +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribución de carga +STR_CONFIG_SETTING_AI :Competidores +STR_CONFIG_SETTING_AI_NPC :Jugadores del ordenador (IA) +STR_CONFIG_SETTING_NETWORK :Red STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Enrutador para trenes: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Enrutador a emplear en trenes diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 92e8d550ae..c72ba492f6 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -1987,30 +1987,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (pies) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Métrico (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Adaptación local -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Gráficos -STR_CONFIG_SETTING_SOUND :{ORANGE}Sonido -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaz -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Ventanas de vista -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construcción -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Noticias y sugerencias -STR_CONFIG_SETTING_COMPANY :{ORANGE}Empresa -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Contabilidad -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehículos -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Leyes físicas -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Enrutamiento -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Restricciones -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Desastres y accidentes -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generación de mapa -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Entorno -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Autoridades -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Localidades -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrias -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribución de carga -STR_CONFIG_SETTING_AI :{ORANGE}Competidores -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jugadores no humanos -STR_CONFIG_SETTING_NETWORK :{ORANGE}Red +STR_CONFIG_SETTING_LOCALISATION :Adaptación local +STR_CONFIG_SETTING_GRAPHICS :Gráficos +STR_CONFIG_SETTING_SOUND :Sonido +STR_CONFIG_SETTING_INTERFACE :Interfaz +STR_CONFIG_SETTING_INTERFACE_GENERAL :General +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Ventanas de vista +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Construcción +STR_CONFIG_SETTING_ADVISORS :Noticias y sugerencias +STR_CONFIG_SETTING_COMPANY :Empresa +STR_CONFIG_SETTING_ACCOUNTING :Contabilidad +STR_CONFIG_SETTING_VEHICLES :Vehículos +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Leyes físicas +STR_CONFIG_SETTING_VEHICLES_ROUTING :Enrutamiento +STR_CONFIG_SETTING_LIMITATIONS :Restricciones +STR_CONFIG_SETTING_ACCIDENTS :Desastres y accidentes +STR_CONFIG_SETTING_GENWORLD :Generación de mapa +STR_CONFIG_SETTING_ENVIRONMENT :Entorno +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Autoridades +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Localidades +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrias +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Distribución de carga +STR_CONFIG_SETTING_AI :Competidores +STR_CONFIG_SETTING_AI_NPC :Jugadores no humanos +STR_CONFIG_SETTING_NETWORK :Red STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Algoritmo de rutas para trenes: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algoritmo de búsqueda de rutas para trenes diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index a1d25414b5..8254e4621f 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -2015,30 +2015,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Brittisk (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisering -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafik -STR_CONFIG_SETTING_SOUND :{ORANGE}Ljud -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Gränssnitt -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Generellt -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vyfönster -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Konstruktion -STR_CONFIG_SETTING_ADVISORS :{ORANGE} Nyheter / Rådgivare -STR_CONFIG_SETTING_COMPANY :{ORANGE}Företag -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE} Redovisning -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Fordon -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE} Fysik -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Planering av resrutt -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE} Begränsningar -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE} Katastrofer / Olyckor -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Världsgenerering -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Miljö -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Mydigheter -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Städer -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrier -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Godsdistribution -STR_CONFIG_SETTING_AI :{ORANGE}Motståndare -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Datorspelare -STR_CONFIG_SETTING_NETWORK :{ORANGE}Nätverk +STR_CONFIG_SETTING_LOCALISATION :Lokalisering +STR_CONFIG_SETTING_GRAPHICS :Grafik +STR_CONFIG_SETTING_SOUND :Ljud +STR_CONFIG_SETTING_INTERFACE :Gränssnitt +STR_CONFIG_SETTING_INTERFACE_GENERAL :Generellt +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Vyfönster +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Konstruktion +STR_CONFIG_SETTING_ADVISORS : Nyheter / Rådgivare +STR_CONFIG_SETTING_COMPANY :Företag +STR_CONFIG_SETTING_ACCOUNTING : Redovisning +STR_CONFIG_SETTING_VEHICLES :Fordon +STR_CONFIG_SETTING_VEHICLES_PHYSICS : Fysik +STR_CONFIG_SETTING_VEHICLES_ROUTING :Planering av resrutt +STR_CONFIG_SETTING_LIMITATIONS : Begränsningar +STR_CONFIG_SETTING_ACCIDENTS : Katastrofer / Olyckor +STR_CONFIG_SETTING_GENWORLD :Världsgenerering +STR_CONFIG_SETTING_ENVIRONMENT :Miljö +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Mydigheter +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Städer +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Industrier +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Godsdistribution +STR_CONFIG_SETTING_AI :Motståndare +STR_CONFIG_SETTING_AI_NPC :Datorspelare +STR_CONFIG_SETTING_NETWORK :Nätverk STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Vägfinnare för tåg: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Vägfinnare som tåg ska använda diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index ec1048f923..0b2b615438 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -1775,28 +1775,28 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :இம்பீ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :மெட்ரிக் (மீ) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :அனைத்துலக முறை அலகு (மீ) -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}அசைவூட்டம் -STR_CONFIG_SETTING_SOUND :{ORANGE}ஒலிகள் -STR_CONFIG_SETTING_INTERFACE :{ORANGE}இடைமுகம் -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE} பொதுவான -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}கட்டுமானம் -STR_CONFIG_SETTING_ADVISORS :{ORANGE}செய்திகள் / அறிவுரைஞர்கள் -STR_CONFIG_SETTING_COMPANY :{ORANGE}நிறுவனம் -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}கணக்கியல் -STR_CONFIG_SETTING_VEHICLES :{ORANGE}வாகனங்கள் -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}இயற்பியல் -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}வழி மாற்றல் -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}எல்லைகள் -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}பேரழிவுகள் / விபத்துகள் -STR_CONFIG_SETTING_GENWORLD :{ORANGE}உலகம் உருவாக்குதல் -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}சுற்றுச்சூழல் -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}அதிகாரிகள் -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}நகரங்கள் -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}தொழிற்சாலைகள் -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}சரக்கு பரிமாற்றம் -STR_CONFIG_SETTING_AI :{ORANGE}போட்டியாளர்கள் -STR_CONFIG_SETTING_AI_NPC :{ORANGE}கணினி வீரர்கள் -STR_CONFIG_SETTING_NETWORK :{ORANGE}இணையம் +STR_CONFIG_SETTING_GRAPHICS :அசைவூட்டம் +STR_CONFIG_SETTING_SOUND :ஒலிகள் +STR_CONFIG_SETTING_INTERFACE :இடைமுகம் +STR_CONFIG_SETTING_INTERFACE_GENERAL : பொதுவான +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :கட்டுமானம் +STR_CONFIG_SETTING_ADVISORS :செய்திகள் / அறிவுரைஞர்கள் +STR_CONFIG_SETTING_COMPANY :நிறுவனம் +STR_CONFIG_SETTING_ACCOUNTING :கணக்கியல் +STR_CONFIG_SETTING_VEHICLES :வாகனங்கள் +STR_CONFIG_SETTING_VEHICLES_PHYSICS :இயற்பியல் +STR_CONFIG_SETTING_VEHICLES_ROUTING :வழி மாற்றல் +STR_CONFIG_SETTING_LIMITATIONS :எல்லைகள் +STR_CONFIG_SETTING_ACCIDENTS :பேரழிவுகள் / விபத்துகள் +STR_CONFIG_SETTING_GENWORLD :உலகம் உருவாக்குதல் +STR_CONFIG_SETTING_ENVIRONMENT :சுற்றுச்சூழல் +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :அதிகாரிகள் +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :நகரங்கள் +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :தொழிற்சாலைகள் +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :சரக்கு பரிமாற்றம் +STR_CONFIG_SETTING_AI :போட்டியாளர்கள் +STR_CONFIG_SETTING_AI_NPC :கணினி வீரர்கள் +STR_CONFIG_SETTING_NETWORK :இணையம் STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :இரயில்களுக்கான வழிகண்டுபிடிப்பான்: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :இரயில்கள் பயன்படுத்தப்போகும் வழிகண்டுபிடிப்பான் diff --git a/src/lang/thai.txt b/src/lang/thai.txt index a86b0238ee..721b9311a4 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -1854,23 +1854,23 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :อิมพี STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :เมตริก (เมตร) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :มาตรฐานสากล (เมตร) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}มาตราวัดต่างๆ -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}กราฟิก -STR_CONFIG_SETTING_SOUND :{ORANGE}เสียงเอฟเฟกต์ -STR_CONFIG_SETTING_INTERFACE :{ORANGE}ส่วนเชื่อมต่อผู้ใช้ -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}การก่อสร้าง -STR_CONFIG_SETTING_ADVISORS :{ORANGE}ข่าวสาร / ที่ปรึกษา -STR_CONFIG_SETTING_VEHICLES :{ORANGE}ยานพาหนะ -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}กายภาพ -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}การค้นหาเส้นทางของพาหนะ -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}ภัยพิบัติ / อุบัติเหตุ -STR_CONFIG_SETTING_GENWORLD :{ORANGE}การสร้างภูมิประเทศ -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}สิ่งแวดล้อม -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}เมือง -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}อุตสาหกรรม -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}การกระจายสินค้า -STR_CONFIG_SETTING_AI :{ORANGE}คู่แข่ง -STR_CONFIG_SETTING_AI_NPC :{ORANGE}ผู้เล่นคอมพิวเตอร์ +STR_CONFIG_SETTING_LOCALISATION :มาตราวัดต่างๆ +STR_CONFIG_SETTING_GRAPHICS :กราฟิก +STR_CONFIG_SETTING_SOUND :เสียงเอฟเฟกต์ +STR_CONFIG_SETTING_INTERFACE :ส่วนเชื่อมต่อผู้ใช้ +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :การก่อสร้าง +STR_CONFIG_SETTING_ADVISORS :ข่าวสาร / ที่ปรึกษา +STR_CONFIG_SETTING_VEHICLES :ยานพาหนะ +STR_CONFIG_SETTING_VEHICLES_PHYSICS :กายภาพ +STR_CONFIG_SETTING_VEHICLES_ROUTING :การค้นหาเส้นทางของพาหนะ +STR_CONFIG_SETTING_ACCIDENTS :ภัยพิบัติ / อุบัติเหตุ +STR_CONFIG_SETTING_GENWORLD :การสร้างภูมิประเทศ +STR_CONFIG_SETTING_ENVIRONMENT :สิ่งแวดล้อม +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :เมือง +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :อุตสาหกรรม +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :การกระจายสินค้า +STR_CONFIG_SETTING_AI :คู่แข่ง +STR_CONFIG_SETTING_AI_NPC :ผู้เล่นคอมพิวเตอร์ STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :ตัวค้นหาเส้นทางสำหรับรถไฟ: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :การหาค้นหาเส้นทางของขบวนรถไฟ diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index d5fa12fcb3..becf2bd820 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -1986,30 +1986,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :英制(英呎 STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :米制(米) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :國際單位(米) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}本地化 -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}圖形 -STR_CONFIG_SETTING_SOUND :{ORANGE}音效 -STR_CONFIG_SETTING_INTERFACE :{ORANGE}界面 -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}基本顯示 -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}顯示設定 -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}建造 -STR_CONFIG_SETTING_ADVISORS :{ORANGE}訊息提示 -STR_CONFIG_SETTING_COMPANY :{ORANGE}公司 -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}財務 -STR_CONFIG_SETTING_VEHICLES :{ORANGE}車輛 -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}物理 -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}路線 -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}遊戲限制 -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}災難/事故 -STR_CONFIG_SETTING_GENWORLD :{ORANGE}地圖的產生 -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}環境 -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}地方政府 -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}市鎮 -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}工業 -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}貨物分配 -STR_CONFIG_SETTING_AI :{ORANGE}競爭對手 -STR_CONFIG_SETTING_AI_NPC :{ORANGE}電腦玩家 -STR_CONFIG_SETTING_NETWORK :{ORANGE}網路 +STR_CONFIG_SETTING_LOCALISATION :本地化 +STR_CONFIG_SETTING_GRAPHICS :圖形 +STR_CONFIG_SETTING_SOUND :音效 +STR_CONFIG_SETTING_INTERFACE :界面 +STR_CONFIG_SETTING_INTERFACE_GENERAL :基本顯示 +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :顯示設定 +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :建造 +STR_CONFIG_SETTING_ADVISORS :訊息提示 +STR_CONFIG_SETTING_COMPANY :公司 +STR_CONFIG_SETTING_ACCOUNTING :財務 +STR_CONFIG_SETTING_VEHICLES :車輛 +STR_CONFIG_SETTING_VEHICLES_PHYSICS :物理 +STR_CONFIG_SETTING_VEHICLES_ROUTING :路線 +STR_CONFIG_SETTING_LIMITATIONS :遊戲限制 +STR_CONFIG_SETTING_ACCIDENTS :災難/事故 +STR_CONFIG_SETTING_GENWORLD :地圖的產生 +STR_CONFIG_SETTING_ENVIRONMENT :環境 +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :地方政府 +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :市鎮 +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :工業 +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :貨物分配 +STR_CONFIG_SETTING_AI :競爭對手 +STR_CONFIG_SETTING_AI_NPC :電腦玩家 +STR_CONFIG_SETTING_NETWORK :網路 STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :列車的路徑搜尋方式:{STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :設定列車使用的路徑搜尋方式。 diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 0cb0720f58..2ede1a4db2 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -2021,30 +2021,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (Ingil STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrik (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (Uluslararası Ölçüm Sistemi) (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Yerelleştirme -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafikler -STR_CONFIG_SETTING_SOUND :{ORANGE}Ses -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Arayüz -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Genel -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Görüş alanları -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}İnşaat -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Haberler / Danışmanlar -STR_CONFIG_SETTING_COMPANY :{ORANGE}Şirket -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Muhasebe -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Araçlar -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Fizik -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Yönlenme -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Sınırlamalar -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Felaketler / Kazalar -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Harita üretimi -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Ortam -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Yetkililer -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Şehirler -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Endüstri -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Kargo dağılımı -STR_CONFIG_SETTING_AI :{ORANGE}Rakipler -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Bilgisayar oyuncuları -STR_CONFIG_SETTING_NETWORK :{ORANGE}Ağ +STR_CONFIG_SETTING_LOCALISATION :Yerelleştirme +STR_CONFIG_SETTING_GRAPHICS :Grafikler +STR_CONFIG_SETTING_SOUND :Ses +STR_CONFIG_SETTING_INTERFACE :Arayüz +STR_CONFIG_SETTING_INTERFACE_GENERAL :Genel +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Görüş alanları +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :İnşaat +STR_CONFIG_SETTING_ADVISORS :Haberler / Danışmanlar +STR_CONFIG_SETTING_COMPANY :Şirket +STR_CONFIG_SETTING_ACCOUNTING :Muhasebe +STR_CONFIG_SETTING_VEHICLES :Araçlar +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Fizik +STR_CONFIG_SETTING_VEHICLES_ROUTING :Yönlenme +STR_CONFIG_SETTING_LIMITATIONS :Sınırlamalar +STR_CONFIG_SETTING_ACCIDENTS :Felaketler / Kazalar +STR_CONFIG_SETTING_GENWORLD :Harita üretimi +STR_CONFIG_SETTING_ENVIRONMENT :Ortam +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Yetkililer +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Şehirler +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Endüstri +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Kargo dağılımı +STR_CONFIG_SETTING_AI :Rakipler +STR_CONFIG_SETTING_AI_NPC :Bilgisayar oyuncuları +STR_CONFIG_SETTING_NETWORK :Ağ STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Trenler için yol bulucu: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Trenler için kullanılacak "yol bulucu" algoritma diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index e3bc107299..796062c2fb 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -2136,30 +2136,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Імперсь STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Метричні (м) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :СІ (м) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Локалізація -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Графіки -STR_CONFIG_SETTING_SOUND :{ORANGE}Звук -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Інтерфейс -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Загальні -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Точки огляду -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Будівництво -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Новини / Поради -STR_CONFIG_SETTING_COMPANY :{ORANGE}Компанія -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Облік -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Транспорт -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Фізика -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршрути -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Обмеження -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Катастрофи -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Створення світу -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Довкілля -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Органи влади -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Міста -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Підприємства -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Розподіл вантажів -STR_CONFIG_SETTING_AI :{ORANGE}Конкуренти -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Віртуальні гравці -STR_CONFIG_SETTING_NETWORK :{ORANGE}Мережа +STR_CONFIG_SETTING_LOCALISATION :Локалізація +STR_CONFIG_SETTING_GRAPHICS :Графіки +STR_CONFIG_SETTING_SOUND :Звук +STR_CONFIG_SETTING_INTERFACE :Інтерфейс +STR_CONFIG_SETTING_INTERFACE_GENERAL :Загальні +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Точки огляду +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Будівництво +STR_CONFIG_SETTING_ADVISORS :Новини / Поради +STR_CONFIG_SETTING_COMPANY :Компанія +STR_CONFIG_SETTING_ACCOUNTING :Облік +STR_CONFIG_SETTING_VEHICLES :Транспорт +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Фізика +STR_CONFIG_SETTING_VEHICLES_ROUTING :Маршрути +STR_CONFIG_SETTING_LIMITATIONS :Обмеження +STR_CONFIG_SETTING_ACCIDENTS :Катастрофи +STR_CONFIG_SETTING_GENWORLD :Створення світу +STR_CONFIG_SETTING_ENVIRONMENT :Довкілля +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Органи влади +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Міста +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Підприємства +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Розподіл вантажів +STR_CONFIG_SETTING_AI :Конкуренти +STR_CONFIG_SETTING_AI_NPC :Віртуальні гравці +STR_CONFIG_SETTING_NETWORK :Мережа STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Алгоритм пошуку шляху для поїздів: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Вибір алгоритма пошуку шляху для залізничного транспорту. diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 29bb2d1810..e8e5b78098 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -1482,14 +1482,14 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :شہر کا ش ###length 3 -STR_CONFIG_SETTING_INTERFACE :{ORANGE}انٹرفیس -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}تعمیرات -STR_CONFIG_SETTING_VEHICLES :{ORANGE}گاڑیاں -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}روٹنگ -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}شہر -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}صنعتیں -STR_CONFIG_SETTING_AI :{ORANGE}مد مقابل -STR_CONFIG_SETTING_AI_NPC :{ORANGE}کمپیوٹر کے کھلاڑی +STR_CONFIG_SETTING_INTERFACE :انٹرفیس +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :تعمیرات +STR_CONFIG_SETTING_VEHICLES :گاڑیاں +STR_CONFIG_SETTING_VEHICLES_ROUTING :روٹنگ +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :شہر +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :صنعتیں +STR_CONFIG_SETTING_AI :مد مقابل +STR_CONFIG_SETTING_AI_NPC :کمپیوٹر کے کھلاڑی STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :ریل گاڑیوں کے لئے راستہ ڈھونڈنے والا: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :گاڑیوں کا راستہ تلاش کرنے والا: {STRING} diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 2df02fe8a1..70554408fc 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -2019,30 +2019,30 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Hoàng Gia (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Tiêu Chuẩn Đo Lường -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Đồ họa -STR_CONFIG_SETTING_SOUND :{ORANGE}Âm thanh -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Giao Diện -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Tổng quát -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Vùng nhìn -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Xây Dựng -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Tin tức / Cố vấn -STR_CONFIG_SETTING_COMPANY :{ORANGE}Công ty -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Kế toán -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Phương Tiện -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Vật lý -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Tìm đường -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Giới hạn -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Thiên tai / Tai nạn -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Khởi tạo bản đồ -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Môi trường -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Chính quyền -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Đô thị -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Nhà máy -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Phân bổ hàng hóa -STR_CONFIG_SETTING_AI :{ORANGE}Đối Thủ -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Nhân vật máy -STR_CONFIG_SETTING_NETWORK :{ORANGE}Kết nối +STR_CONFIG_SETTING_LOCALISATION :Tiêu Chuẩn Đo Lường +STR_CONFIG_SETTING_GRAPHICS :Đồ họa +STR_CONFIG_SETTING_SOUND :Âm thanh +STR_CONFIG_SETTING_INTERFACE :Giao Diện +STR_CONFIG_SETTING_INTERFACE_GENERAL :Tổng quát +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Vùng nhìn +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Xây Dựng +STR_CONFIG_SETTING_ADVISORS :Tin tức / Cố vấn +STR_CONFIG_SETTING_COMPANY :Công ty +STR_CONFIG_SETTING_ACCOUNTING :Kế toán +STR_CONFIG_SETTING_VEHICLES :Phương Tiện +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Vật lý +STR_CONFIG_SETTING_VEHICLES_ROUTING :Tìm đường +STR_CONFIG_SETTING_LIMITATIONS :Giới hạn +STR_CONFIG_SETTING_ACCIDENTS :Thiên tai / Tai nạn +STR_CONFIG_SETTING_GENWORLD :Khởi tạo bản đồ +STR_CONFIG_SETTING_ENVIRONMENT :Môi trường +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Chính quyền +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Đô thị +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Nhà máy +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Phân bổ hàng hóa +STR_CONFIG_SETTING_AI :Đối Thủ +STR_CONFIG_SETTING_AI_NPC :Nhân vật máy +STR_CONFIG_SETTING_NETWORK :Kết nối STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Cơ chế tìm đường cho tàu hoả: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Cơ chế tìm đường cho tàu hỏa diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index e800545f44..24303ae30f 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -1831,29 +1831,29 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrig (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) -STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Unedau Lleol -STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Graffeg -STR_CONFIG_SETTING_SOUND :{ORANGE}Sain -STR_CONFIG_SETTING_INTERFACE :{ORANGE}Rhyngwyneb -STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Cyffredinol -STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Ffenestri Golygfa -STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Adeiladu -STR_CONFIG_SETTING_ADVISORS :{ORANGE}Newyddion a Chyngor -STR_CONFIG_SETTING_COMPANY :{ORANGE}Cwmni -STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Cyfrifo -STR_CONFIG_SETTING_VEHICLES :{ORANGE}Cerbydau -STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Ffiseg -STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Llwybro -STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Cyfyngiadau -STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Trychinebau a Damweiniau -STR_CONFIG_SETTING_GENWORLD :{ORANGE}Cread byd -STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Amgylchedd -STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Awdurdodau -STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Trefi -STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Diwydiannau -STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Dosraniad cargo -STR_CONFIG_SETTING_AI :{ORANGE}Cystadleuwyr -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Chwaraewyr Cyfrifiadurol +STR_CONFIG_SETTING_LOCALISATION :Unedau Lleol +STR_CONFIG_SETTING_GRAPHICS :Graffeg +STR_CONFIG_SETTING_SOUND :Sain +STR_CONFIG_SETTING_INTERFACE :Rhyngwyneb +STR_CONFIG_SETTING_INTERFACE_GENERAL :Cyffredinol +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :Ffenestri Golygfa +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :Adeiladu +STR_CONFIG_SETTING_ADVISORS :Newyddion a Chyngor +STR_CONFIG_SETTING_COMPANY :Cwmni +STR_CONFIG_SETTING_ACCOUNTING :Cyfrifo +STR_CONFIG_SETTING_VEHICLES :Cerbydau +STR_CONFIG_SETTING_VEHICLES_PHYSICS :Ffiseg +STR_CONFIG_SETTING_VEHICLES_ROUTING :Llwybro +STR_CONFIG_SETTING_LIMITATIONS :Cyfyngiadau +STR_CONFIG_SETTING_ACCIDENTS :Trychinebau a Damweiniau +STR_CONFIG_SETTING_GENWORLD :Cread byd +STR_CONFIG_SETTING_ENVIRONMENT :Amgylchedd +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :Awdurdodau +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :Trefi +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :Diwydiannau +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :Dosraniad cargo +STR_CONFIG_SETTING_AI :Cystadleuwyr +STR_CONFIG_SETTING_AI_NPC :Chwaraewyr Cyfrifiadurol STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Llwybrwr ar gyfer trenau: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Llwybrwr i'w ddefnyddio ar gyfer trenau From d140acf34e54b5878db2a5b947353da60eaa4b2c Mon Sep 17 00:00:00 2001 From: PeterN Date: Sun, 25 Jun 2023 19:32:53 +0100 Subject: [PATCH 122/123] Fix: Setting tree lines drawn incorrectly for RTL languages. (#11070) --- src/settings_gui.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 4e8384fddb..62fce17f55 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1161,7 +1161,7 @@ uint BaseSettingEntry::Draw(GameSettings *settings_ptr, int left, int right, int if (cur_row >= max_row) return cur_row; bool rtl = _current_text_dir == TD_RTL; - int offset = (rtl ? -(int)_circle_size.width : _circle_size.width) / 2; + int offset = (rtl ? -(int)_circle_size.width : (int)_circle_size.width) / 2; int level_width = rtl ? -WidgetDimensions::scaled.hsep_indent : WidgetDimensions::scaled.hsep_indent; int x = rtl ? right : left; @@ -1179,7 +1179,7 @@ uint BaseSettingEntry::Draw(GameSettings *settings_ptr, int left, int right, int int bottom_y = (flags & SEF_LAST_FIELD) ? halfway_y : y + SETTING_HEIGHT - 1; GfxDrawLine(x + offset, y, x + offset, bottom_y, colour); /* Small horizontal line from the last vertical line */ - GfxDrawLine(x + offset, halfway_y, x + level_width - WidgetDimensions::scaled.hsep_normal, halfway_y, colour); + GfxDrawLine(x + offset, halfway_y, x + level_width - (rtl ? -WidgetDimensions::scaled.hsep_normal : WidgetDimensions::scaled.hsep_normal), halfway_y, colour); x += level_width; this->DrawSetting(settings_ptr, rtl ? left : x, rtl ? x : right, y, this == selected); From 5db4473ae8e6d78fe9909b0d4b1095914d4d49cf Mon Sep 17 00:00:00 2001 From: translators Date: Sun, 25 Jun 2023 18:41:23 +0000 Subject: [PATCH 123/123] Update: Translations from eints vietnamese: 1 change by KhoiCanDev finnish: 3 changes by hpiirai french: 5 changes by Naeso --- src/lang/finnish.txt | 3 +++ src/lang/french.txt | 10 +++++----- src/lang/vietnamese.txt | 1 + 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index e2515250ea..edf725687e 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100{NBSP}% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Rahayksikkö STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Rahayksikön valinta +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Englannin punta @@ -4573,6 +4574,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Odotettu STR_TIMETABLE_SCHEDULED :{BLACK}Aikataulu STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Vaihda odotetun ja aikataulun välillä +STR_TIMETABLE_ARRIVAL :T: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :L: {COLOUR}{DATE_TINY} # Date window (for timetable) diff --git a/src/lang/french.txt b/src/lang/french.txt index 3e8ebc4c41..818e417de6 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -1018,21 +1018,21 @@ STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Cocher c STR_GAME_OPTIONS_RESOLUTION :{BLACK}Résolution STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Sélectionner la résolution d'écran à utiliser -STR_GAME_OPTIONS_RESOLUTION_OTHER :autre +STR_GAME_OPTIONS_RESOLUTION_OTHER :Autre STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM} -STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK} Accélération matérielle +STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Accélération matérielle STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Cochez cette case permet à OpenTTD d'utiliser l'accélération matérielle, si possible. Un paramètre modifié ne sera pris en compte qu'au redémarrage du jeu STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Les paramètres ne prendront effet qu'après le redémarrage du jeu STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync -STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Cochez cette case pour activer la synchronisation verticale de l'écran. La modification de ce paramètres ne sera effective qu'après le redémarrage du jeu. Fonctionne uniquement si l’accélération matérielle est active +STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Cochez cette case pour activer la synchronisation verticale de l'écran. La modification de ce paramètre ne sera effective qu'après le redémarrage du jeu. Fonctionne uniquement si l’accélération matérielle est active. STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Pilote actif{NBSP}: {STRING} STR_GAME_OPTIONS_GUI_SCALE_FRAME :Taille de l'interface STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}Faites glisser la souris pour définir la taille de l'interface. Maintenir Ctrl pour un réglage en continu -STR_GAME_OPTIONS_GUI_SCALE_AUTO :détection automatique de la taille +STR_GAME_OPTIONS_GUI_SCALE_AUTO :Détection automatique de la taille STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Cochez cette case pour détecter automatiquement la taille de l'interface STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Mettre à l’échelle les bordures @@ -1054,7 +1054,7 @@ STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Voir les STR_GAME_OPTIONS_GRAPHICS :{BLACK} Graphiques -STR_GAME_OPTIONS_REFRESH_RATE :{BLACK} Taux de rafraîchissement de l'affichage +STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Taux de rafraîchissement de l'affichage STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK} Sélectionnez la fréquence de rafraîchissement à utiliser STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE} Les taux de rafraîchissement supérieurs à 60Hz peuvent avoir un impact sur les performances. diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 70554408fc..09ab232eff 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -951,6 +951,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Đơn vị tiền tệ STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Lựa chọn đơn vị tiền tệ +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Bảng Anh