From 2545b24118daa67c2af49626b3453890de50c1e1 Mon Sep 17 00:00:00 2001 From: translators Date: Sun, 28 Feb 2021 19:00:53 +0000 Subject: [PATCH 01/16] Update: Translations from eints czech: 1 change by LubosKolouch --- src/lang/czech.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lang/czech.txt b/src/lang/czech.txt index ec5f74a967..4a85379c4f 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -3146,6 +3146,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Požadované zd STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} byla vypnuta {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neplatný/neznámý sprite layout formát (sprite {3:NUM}) STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Příliš mnoho prvků v seznamu hodnot vlastností (sprite {3:NUM}, vlastnost {4:HEX}) +STR_NEWGRF_ERROR_INDPROD_CALLBACK :Neplatné zpětné volání průmyslové produkce (sprite {3:NUM}, "{2:STRING}") # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Varování! From 8bc0089fc498d603ceef228c5488037721eb548d Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Sun, 28 Feb 2021 21:53:14 +0100 Subject: [PATCH 02/16] Fix c3dc27e3: put the max-value of fast-forward-speed-limit to within the storage size (#8769) --- src/table/settings.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/table/settings.ini b/src/table/settings.ini index 52602a3dfe..6dfb148b9f 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -3371,7 +3371,7 @@ flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_0ISDISABLED | SGF_NO_NETWORK def = 2500 min = 0 -max = 100000 +max = 50000 interval = 10 str = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT strhelp = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT From 25e5a92286958fd870f5783cbb4ebad5ecde77da Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Mon, 1 Mar 2021 15:15:50 +0100 Subject: [PATCH 03/16] Fix 9b800a96: (a << 16) is unsigned, so don't remove the cast --- src/company_cmd.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 4715efc9a4..f1c559926b 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -63,9 +63,9 @@ Company::Company(uint16 name_1, bool is_ai) this->name_1 = name_1; this->location_of_HQ = INVALID_TILE; this->is_ai = is_ai; - this->terraform_limit = _settings_game.construction.terraform_frame_burst << 16; - this->clear_limit = _settings_game.construction.clear_frame_burst << 16; - this->tree_limit = _settings_game.construction.tree_frame_burst << 16; + this->terraform_limit = (uint32)_settings_game.construction.terraform_frame_burst << 16; + this->clear_limit = (uint32)_settings_game.construction.clear_frame_burst << 16; + this->tree_limit = (uint32)_settings_game.construction.tree_frame_burst << 16; for (uint j = 0; j < 4; j++) this->share_owners[j] = COMPANY_SPECTATOR; InvalidateWindowData(WC_PERFORMANCE_DETAIL, 0, INVALID_COMPANY); @@ -266,9 +266,9 @@ void SubtractMoneyFromCompanyFract(CompanyID company, const CommandCost &cst) void UpdateLandscapingLimits() { for (Company *c : Company::Iterate()) { - c->terraform_limit = std::min(c->terraform_limit + _settings_game.construction.terraform_per_64k_frames, _settings_game.construction.terraform_frame_burst << 16); - c->clear_limit = std::min(c->clear_limit + _settings_game.construction.clear_per_64k_frames, _settings_game.construction.clear_frame_burst << 16); - c->tree_limit = std::min(c->tree_limit + _settings_game.construction.tree_per_64k_frames, _settings_game.construction.tree_frame_burst << 16); + c->terraform_limit = std::min(c->terraform_limit + _settings_game.construction.terraform_per_64k_frames, (uint32)_settings_game.construction.terraform_frame_burst << 16); + c->clear_limit = std::min(c->clear_limit + _settings_game.construction.clear_per_64k_frames, (uint32)_settings_game.construction.clear_frame_burst << 16); + c->tree_limit = std::min(c->tree_limit + _settings_game.construction.tree_per_64k_frames, (uint32)_settings_game.construction.tree_frame_burst << 16); } } From 40505e645aed0b19a8aa6884f75690e80ef1293a Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Mon, 1 Mar 2021 15:16:26 +0100 Subject: [PATCH 04/16] Fix: terraform limit acted random when maxing out per_64k_frames setting uint32 + uint32 can overflow, so cast it to uint64 first. --- src/company_cmd.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index f1c559926b..946ff0d57d 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -266,9 +266,9 @@ void SubtractMoneyFromCompanyFract(CompanyID company, const CommandCost &cst) void UpdateLandscapingLimits() { for (Company *c : Company::Iterate()) { - c->terraform_limit = std::min(c->terraform_limit + _settings_game.construction.terraform_per_64k_frames, (uint32)_settings_game.construction.terraform_frame_burst << 16); - c->clear_limit = std::min(c->clear_limit + _settings_game.construction.clear_per_64k_frames, (uint32)_settings_game.construction.clear_frame_burst << 16); - c->tree_limit = std::min(c->tree_limit + _settings_game.construction.tree_per_64k_frames, (uint32)_settings_game.construction.tree_frame_burst << 16); + c->terraform_limit = std::min((uint64)c->terraform_limit + _settings_game.construction.terraform_per_64k_frames, (uint64)_settings_game.construction.terraform_frame_burst << 16); + c->clear_limit = std::min((uint64)c->clear_limit + _settings_game.construction.clear_per_64k_frames, (uint64)_settings_game.construction.clear_frame_burst << 16); + c->tree_limit = std::min((uint64)c->tree_limit + _settings_game.construction.tree_per_64k_frames, (uint64)_settings_game.construction.tree_frame_burst << 16); } } From 02e7bc7e0a23ef30c796c681badfa1eaa6c950db Mon Sep 17 00:00:00 2001 From: translators Date: Mon, 1 Mar 2021 19:01:41 +0000 Subject: [PATCH 05/16] Update: Translations from eints swedish: 4 changes by kustridaren norwegian (bokmal): 3 changes by buzzCraft spanish (mexican): 12 changes by absay korean: 4 changes by telk5093 greek: 85 changes by sntovas german: 4 changes by MagnumSociety catalan: 5 changes by J0anJosep tamil: 16 changes by Ramesh78dev dutch: 4 changes by rcpaul polish: 5 changes by pAter-exe --- src/lang/catalan.txt | 6 ++- src/lang/dutch.txt | 4 ++ src/lang/german.txt | 4 ++ src/lang/greek.txt | 95 +++++++++++++++++++++++++++++++---- src/lang/korean.txt | 4 ++ src/lang/norwegian_bokmal.txt | 3 ++ src/lang/polish.txt | 6 ++- src/lang/spanish_MX.txt | 15 ++++-- src/lang/swedish.txt | 4 ++ src/lang/tamil.txt | 26 ++++++---- 10 files changed, 142 insertions(+), 25 deletions(-) diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 8706ae4160..16fbf86fa4 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -1454,6 +1454,10 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Agrupa les desp STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Defineix la disposició de la companyia a la finestra de despeses STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Treu automàticament els senyals durant la construcció ferroviària: {STRING} STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Treu automàticament els senyals ferroviaris que hi hagi pel mig durant la construcció de rail. Aneu amb compte ja que pot provocar col·lisions de trens. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Límit de velocitat de la partida: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Estableix el límit de velocitat de la partida quan s'activa l'avanç ràpid del temps. 0 = sense límit (tan ràpid com pugui el vostre ordinador). Els valors per sota de 100{NBSP}% alenteixen la partida. El límit de velocitat depèn de les característiques del vostre ordinador i de la partida que esteu jugant (mida del mapa, nombre de vehicles, longitud de les rutes...). +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}{NBSP}% de la velocitat normal +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Sense límit (tan ràpid com pugui el vostre ordinador) STR_CONFIG_SETTING_SOUND_TICKER :Barra de notícies: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reprodueix un so quan apareixen les notícies resumides a la barra inferior @@ -1821,7 +1825,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprova STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra els paràmetres de les IA/Script de la partida STR_INTRO_TOOLTIP_QUIT :{BLACK}Surt de l'OpenTTD. -STR_INTRO_BASESET :{WHITE}Al joc de gràfics base seleccionat li falten {NUM} sprite{P "" s}.{}Si us plau, comproveu-ne si hi ha actualitzacions disponibles. +STR_INTRO_BASESET :{WHITE}Al joc de gràfics base seleccionat li falten {NUM} sprite{P "" s}.{}Si us plau, comproveu si hi ha actualitzacions disponibles. STR_INTRO_TRANSLATION :{BLACK}A aquesta traducció li falten {NUM} caden{P a es}. Si us plau, ajudeu a fer millor l'OpenTTD unint-vos com a traductor. Vegeu el fitxer readme.txt per més detalls. # Quit window diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index e0645b442b..0c2bb3828d 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -1453,6 +1453,10 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Uitgaven in bed STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definieer de lay-out voor het bedrijfsuitgavenvenster STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatisch seinen verwijderen tijdens spooraanleg: {STRING} STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Seinen automatisch verwijderen tijdens spooraanleg als deze in de weg staan. Dit kan botsingen veroorzaken. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Limiet verhoogde spelsnelheid: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Beperkt de snelheid van het spel wanneer de spelsnelheid is verhoogt. 0 = geen limiet (alleen beperkt door de computer zelf). Waarden onder 100% vertragen het spel. De hoogste waarde hangt af van de specifcaties van de computer en kan afhankelijk van het spel variëren. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normale spelsnelheid +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Geen limiet (alleen beperkt door de computer zelf) STR_CONFIG_SETTING_SOUND_TICKER :Nieuwsticker: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Speel geluidseffecten af bij korte nieuwsberichten diff --git a/src/lang/german.txt b/src/lang/german.txt index 9b4dc1d2c3..32ae6f37d2 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -1454,6 +1454,10 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Zwischensummen STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Lege das Layout für das Fenster mit den Firmenausgaben fest STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatische Entfernung von Signalen während der Errichtung von Bahntrassen: {STRING} STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatische Entfernung von Signalen während der Errichtung der Bahntrasse, wenn diese sich im Weg befinden. Hinweis: Dies kann zu Unfällen führen! +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Zeitraffer Geschwindigkeitslimit: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Limit wie schnell das Spiel läuft, wenn Zeitraffer aktiviert ist. 0= unlimitiert (so schnell, wie ihr Computer es erlaubt). Eingaben unter 100% können das Spiel verlangsamen. Das obere Limit hängt von den technischen Spezifikationen ihres Computer ab und kann großen Einfluss auf das Spiel haben +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normale Spielgeschwindigkeit +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Keine Beschränkung (so schnell wie ihr Computer es erlaubt) STR_CONFIG_SETTING_SOUND_TICKER :Nachrichtenticker: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Soundeffekte für Kurzfassungen von Nachrichten abspielen (Ticker) diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 1d0d801269..f814f95ce3 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -294,6 +294,8 @@ STR_TOOLTIP_SORT_ORDER :{BLACK}Επιλ STR_TOOLTIP_SORT_CRITERIA :{BLACK}Επιλογή κριτηρίου ταξινόμησης STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Επιλέξτε κριτήρια φιλτραρίσματος STR_BUTTON_SORT_BY :{BLACK}Ταξινόμηση κατά +STR_BUTTON_CATCHMENT :{BLACK}Κάλυψη +STR_TOOLTIP_CATCHMENT :{BLACK}Εναλλαγή επίδειξης περιοχής κάλυψης STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Κλείσιμο παραθύρου STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Τίτλος παραθύρου - σύρετε το για να το μετακινήσετε @@ -370,8 +372,13 @@ STR_SORT_BY_CARGO_CAPACITY :Χωρητικ STR_SORT_BY_RANGE :Εμβέλεια STR_SORT_BY_POPULATION :Πληθυσμός STR_SORT_BY_RATING :Εκτίμηση +STR_SORT_BY_NUM_VEHICLES :Αριθμός οχημάτων +STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Συνολικό κέρδος τρέχοντος έτους +STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Μέσος όρος κέρδους τρέχοντος έτους # Group by options for vehicle list +STR_GROUP_BY_NONE :Καμία +STR_GROUP_BY_SHARED_ORDERS :Κοινές εντολές # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Παύση παιχνιδιού @@ -397,6 +404,7 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Μεγέ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Σμίκρυνση εικόνας STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Κατασκευή σιδηροτροχιάς STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Κατασκευάστε δρόμους +STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Κτίσιμο τραχιοδρόμων STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Κατασκευή λιμένων STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Κατασκευάστε αεροδρόμια STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Ανοίξτε την μπάρα εργαλείων μορφοποίησης εδάφους για ανύψωση/βύθιση γης, δενδροφύτευση, κλπ. @@ -706,7 +714,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Συντονι STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Επόπτης Διαδρομών STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Διευθυντής STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Ανώτερος Υπάλληλος -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Διαχειριστής +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Πρόεδρος STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Πρόεδρος STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Μεγιστάνας @@ -841,6 +849,7 @@ STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Τραχύ Έδαφος STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Γρασίδι STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Γυμνό Έδαφος +STR_SMALLMAP_LEGENDA_RAINFOREST :{TINY_FONT}{BLACK}Τροπικό δάσος STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Χωράφια STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Δέντρα STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Βράχοι @@ -872,6 +881,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Εμφά STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Εμφάνιση τελευταίου μηνύματος ή αναφοράς ειδήσεων STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * ΠΑΥΣΗ * * +STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}** ΠΑΎΣΗ (αναμονή για ενημέρωση γραφήματος συνδέσμου) ** STR_STATUSBAR_AUTOSAVE :{RED}ΑΥΤΟΜΑΤΗ ΑΠΟΘΗΚΕΥΣΗ STR_STATUSBAR_SAVING_GAME :{RED}* * ΑΠΟΘΗΚΕΥΣΗ ΠΑΙΧΝΙΔΙΟΥ * * @@ -966,6 +976,7 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLAC STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Ένα νέο {STRING} είναι πλέον διαθέσιμο! - {ENGINE} +STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Ανοίξτε το παράθυρο ομάδων εστιασμένος στην ομάδα του οχήματος STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}Ο σταθμός {STATION} δεν δέχεται πια {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}Ο σταθμός {STATION} δεν δέχεται πια ούτε {STRING} ούτε {STRING} @@ -1033,6 +1044,9 @@ STR_GAME_OPTIONS_CURRENCY_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_INR :Ρουπία Ινδίας (INR) ############ end of currency region STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Οδηγούν από αριστερά @@ -1089,6 +1103,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :άλλη STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Μέγεθος διεπαφής STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Επιλέξτε το μέγεθος στοιχείου διεπαφής +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(αυτόματη ανίχνευση) STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Κανονικό STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Διπλό μέγεθος STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Τετραπλό μέγεθος @@ -1533,6 +1548,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Διατήρη STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Διατήρηση ανοικτών των εργαλείων για γέφυρες, σήραγγες, κλπ μετά από τη χρήση STR_CONFIG_SETTING_EXPENSES_LAYOUT :Ομαδοποίηση εξόδων στο παράθυρο οικονομικών της εταιρίας: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Ορίστε τη μορφή για το παράθυρο των εξόδων της εταιρείας +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Όριο ταχύτητας γρήγορης κίνησης: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Όριο ταχύτητας του παιχνιδιού όταν είναι ενεργοποιημένη η γρήγορη ταχύτητα. 0 = κανένα όριο (όσο γρήγορα επιτρέπει ο υπολογιστής σας). Τιμές κάτω του 100% επιβραδύνουν το παιχνίδι. Το ανώτατο όριο εξαρτάται από τις προδιαγραφές του υπολογιστή σας και μπορεί να μεταβάλλεται ανάλογα με το παιχνίδι. STR_CONFIG_SETTING_SOUND_TICKER :Ήχος ειδήσεων: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Παίζει ήχο για περιληπτικά μηνύματα ειδήσεων @@ -1581,6 +1598,8 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Επιτρέπ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Επιτρέπεται η συμμετοχή παικτών υπολογιστή AI σε παιχνίδια πολλαπλών παικτών STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#εντολών πριν την παύση δεσμών ενεργειών: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Μέγιστος αριθμός βημάτων υπολογισμού που κάνει κάποιο σενάριο σε κάθε σειρά +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Πόση μνήμη μπορεί να καταναλώσει ένα script προτού τερματιστεί αναγκαστικά. Μπορεί να χρειαστεί να αυξηθεί για μεγαλύτερους χάρτες. +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Τα διαστήματα μεταξύ συντήρησης είναι σε ποσοστά: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Επιλέξτε εάν η επισκευή των οχημάτων εξαρτάται από τον χρόνο που πέρασε από την τελευταία επισκευή ή από την μείωση της αξιοπιστίας κατά ένα συγκεκριμένο ποσοστό της μέγιστης αξιοπιστίας @@ -1639,8 +1658,13 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Ολόκληρ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Τα έγχρωμα νέα εμφανίζονται από το: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Το έτος κατά το οποίο οι ανακοινώσεις στην εφημερίδα εκτυπώνονται έγχρωμες. Πριν από αυτό το έτος, εκτυπώνονται μονόχρωμες και ασπρόμαυρες STR_CONFIG_SETTING_STARTING_YEAR :Έτος εκκίνησης: {STRING} +STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} +STR_CONFIG_SETTING_ECONOMY_TYPE :Τύπος οικονομίας: {STRING} +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Η ομαλή οικονομία κάνει διαφοροποιήσεις στην παραγωγή πιο συχνά, και σε μικρότερα βήματα. Η παγωμένη οικονομία σταματά τις διαφοροποιήσεις στην παραγωγή και το κλείσιμο των βιομηχανιών. Αυτή η ρύθμιση μπορεί να μην έχει καμία αλλαγή εάν οι τύποι βιομηχανιών προσφέρονται από ένα NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Ομαλή STR_CONFIG_SETTING_ALLOW_SHARES :Ενεργοποίηση της δυνατότητας αγοράς μετοχών από άλλες εταιρίες: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Όταν είναι ενεργοποιημένη, επιτρέπεται η αγοραπωλησία εταιρικών μετοχών. Οι μετοχές θα είναι διαθέσιμες μόνο όταν οι εταιρείες φτάνουν μια ορισμένη ηλικία +STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Ελάχιστη ηλικία εταιρίας για συναλλαγή μετοχών: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Το ποσοστό κέρδους από το σκέλος μεταφοράς στα συστήματα τροφοδότησης: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Το ποσοστό του εισοδήματος που δίνεται στα ενδιάμεσα σκέλη των συστημάτων τροφοδότησης, δίνοντας μεγαλύτερο έλεγχο στο εισόδημα STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Όταν σύρετε, τοποθετούνται σήματα κάθε: {STRING} @@ -1688,6 +1712,7 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Γραμμικ STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Τοποθέτηση δέντρων εντός παιχνιδιού: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Έλεγχος της τυχαίας εμφάνισης δέντρων κατά τη διάρκεια του παιχνιδιού. Αυτό είναι πιθανό να επηρεάσει βιομηχανίες που εξαρτώνται από την ανάπτυξη των δέντρων, όπως για παράδειγμα οι υλοτομίες +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Φυτρώνει αλλά εξαπλώνεται μόνο σε τροπικό δάσος STR_CONFIG_SETTING_TOOLBAR_POS :Θέση κύριας εργαλειοθήκης: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Οριζόντια τοποθέτηση της κύριας γραμμής εργαλείων στο επάνω μέρος της οθόνης @@ -1886,6 +1911,7 @@ STR_INTRO_TRANSLATION :{BLACK}Λείπ # Quit window STR_QUIT_CAPTION :{WHITE}Έξοδος +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Είστε σίγουροι ότι θέλετε να εγκαταλείψετε το OpenTTD; STR_QUIT_YES :{BLACK}Ναι STR_QUIT_NO :{BLACK}Όχι @@ -1897,6 +1923,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Είσ # Cheat window STR_CHEATS :{WHITE}Απατεωνιές STR_CHEATS_TOOLTIP :{BLACK}Τα κουτάκια δείχνουν αν έχετε ξαναχρησιμοποιήσει αυτή την απατεωνιά +STR_CHEATS_NOTE :{BLACK}Σημείωση: κάθε χρήση αυτών των ρυθμίσεων θα καταγραφεί από το αρχείο αποθήκευσης STR_CHEAT_MONEY :{LTBLUE}Αύξηση χρημάτων κατά {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Παίζετε με την εταιρία: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Μαγική μπουλντόζα (αφαιρεί βιομηχανίες, αμετακίνητα αντικείμενα): {ORANGE}{STRING} @@ -2048,6 +2075,7 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Συμμ STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Ανανέωση διακομιστή STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Ανανεώση πληροφοριών του διακομιστή +STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Αναζήτηση στο διαδίκτυο για δημόσιους διακομιστές STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Προσθήκη διακομιστή STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Προσθέτει ένα διακομιστή στη λίστα ο οποίος θα ελέγχεται κάθε φορά για ενεργά παιχνίδια. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Εκκίνηση διακομιστή @@ -2231,6 +2259,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Λανθ STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Ο διακομιστής είναι γεμάτος STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Έχει απαγορευτεί η είσοδος σας από τον διακομιστή STR_NETWORK_ERROR_KICKED :{WHITE}Έχετε εκδιωχθεί από το παιχνίδι +STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Λόγος: {STRING} STR_NETWORK_ERROR_CHEATER :{WHITE}Η χρήση απατεωνιών δεν επιτρέπεται σε αυτόν τον διακομιστή STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Αποστείλατε πάρα πολλές εντολές στον διακομιστή STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Χρειαστήκατε πολύ χρόνο για να συμπληρώσετε τον κωδικό @@ -2272,11 +2301,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Παιχνίδ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Παιχνίδι ακόμα σε παύση ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Παιχνίδι ακόμα σε παύση ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Παιχνίδι ακόμα σε παύση ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Παιχνίδι ακόμα σε παύση ({STRING}, {STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Συνεχίση παιχνιδιού ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :αριθμός παιχτών STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :σύνδεση πελατών STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :χειροκίνητο STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :δέσμη ενεργειών παιχνιδιού +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :αναμονή για ενημέρωση γραφήματος συνδέσμου ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :αποχώρηση STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} συμμετέχει στο παιχνίδι @@ -2286,8 +2317,10 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} σ STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ξεκίνησε μια νέα εταιρία (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} αποχώρησε από το παιχνίδι ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} άλλαξαν το όνομά τους σε {STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} έδωσε {2:CURRENCY_LONG} σε {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Ο διακομιστής έκλεισε την συνεδρία STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Ο διακομιστής επανεκκινεί...{}Παρακαλώ περιμένετε... +STR_NETWORK_MESSAGE_KICKED :*** {STRING} εκδιώχθηκε. Λόγος: ({STRING}) # Content downloading window STR_CONTENT_TITLE :{WHITE}Περιεχόμενο κατεβαίνει @@ -2508,6 +2541,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Κατα STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης για αυτοκινητόδρομους STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Εναλλαγή κτισίματος/αφαίρεσης της κατασκευής τροχιόδρομου +STR_ROAD_NAME_ROAD :Δρόμος +STR_ROAD_NAME_TRAM :Τροχιόδρομος # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Προσανατολισμός Σταθμού Οχημάτων @@ -2595,6 +2630,10 @@ STR_TREES_RANDOM_TYPE :{BLACK}Δέντ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Τοποθετήστε δέντρα τυχαίου τύπου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Τυχαία Δέντρα STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Φυτέψτε δέντρα τυχαία στο έδαφος +STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Κανονικό +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Φυτέψτε μοναδικά δέντρα σέρνοντας πάνω από το τοπίο. +STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Άλσος +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Φυτέψτε μικρά δάση σέρνοντας πάνω από το τοπίο. # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Δημιουργία Γης @@ -2645,12 +2684,14 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Τυχα # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Χρηματοδότηση νέας βιομηχανίας STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Επιλέξτε την κατάλληλη βιομηχανία από την λίστα -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Πολλές τυχαίες βιομηχανίες +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Δημιουργία τυχαίων βιομηχανιών STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Γέμισε τον χάρτη με τυχαία τοποθετημένες βιομηχανίες STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Κόστος: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Διερεύνηση STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Κατασκευή STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Χρηματοδότηση +STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Αφαίρεση όλων των βιομηχανιών +STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Αφαίρεση όλων των βιομηχανιών που υπάρχουν αυτή την στιγμή στον χάρτι # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Αλυσίδα βιομηχανιών για τη βιομηχανία {STRING} @@ -2692,8 +2733,10 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Αποδεκτά εμπορεύματα: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Τύπος σιδηροτροχιάς: {LTBLUE}{STRING} +STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}Τύπος τραμ: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Όριο ταχύτητας σιδηροτροχιάς: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Όριο ταχύτητας δρόμου: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Όριο ταχύτητας τραμ: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Πέτρες @@ -2810,6 +2853,7 @@ STR_FRAMERATE_MS_BAD :{RED}{DECIMAL} STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} καρέ/δευτερόλεπτο STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} καρέ/δευτερόλεπτο STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} καρέ/δευτερόλεπτο +STR_FRAMERATE_BYTES_BAD :{RED}{BYTES} STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} ς ############ Leave those lines in this order!! @@ -2873,6 +2917,7 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: STR_SAVELOAD_FILTER_TITLE :Φιλτράρισμα κειμένου: STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Αντικατάσταση Αρχείου STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Είστε σίγουροι οτι θέλετε να αντικαταστήσετε το υπάρχων αρχείο; +STR_SAVELOAD_DIRECTORY :{STRING} (Κατάλογος) STR_SAVELOAD_OSKTITLE :{BLACK}Δώστε το όνομα του παιχνιδιού προς αποθήκευση @@ -3133,6 +3178,7 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Εναλ # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Επεξεργασία κειμένου πινακίδας +STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στη τοποθεσία της πινακίδας. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της πινακίδας STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Μετάβαση στην επόμενη πινακίδα STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Μετάβαση στη προηγούμενη πινακίδα @@ -3175,6 +3221,7 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Μετονομ # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Τοπική αρχή της πόλης {TOWN} +STR_LOCAL_AUTHORITY_ZONE :{BLACK}Ζώνη STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Ποσοστά εταιρίας μεταφορών: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Διαθέσιμες πράξεις: @@ -3214,10 +3261,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Εται STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Πατήστε στον στόχο για να επικεντρωθεί η οθόνη στη βιομηχανία/πόλη/τετραγωνίδιο. Με Ctrl+Κλικ ανοίγει το παράθυρο θέασης στην τοποθεσία της βιομηχανίας/πόλης/τετραγωνίδιου # Goal question window -STR_GOAL_QUESTION_CAPTION_QUESTION :Ερώτηση -STR_GOAL_QUESTION_CAPTION_INFORMATION :Πληροφορίες -STR_GOAL_QUESTION_CAPTION_WARNING :Προειδοποίηση -STR_GOAL_QUESTION_CAPTION_ERROR :Σφάλμα +STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Ερώτηση +STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Πληροφορίες +STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Προειδοποίηση +STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Σφάλμα ############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Ακύρωση @@ -3407,6 +3454,7 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Ανοι STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Εποικοδόμηση της έδρας της εταιρίας σε άλλο μέρος, με κόστος το 1% της αξίας της εταιρίας. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς επανατοποθέτηση της έδρας STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Λεπτομέρειες STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Προβολή λεπτομερούς μέτρησης υποδομών +STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Δώστε χρήματα σε αυτή την εταρία STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Νέο Πρόσωπο STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Επιλογή νέου προσώπου διευθυντή @@ -3424,6 +3472,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Πώλη STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Όνομα Εταιρίας STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Όνομα Διευθυντή +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Εισάγετε το χρηματικό ποσό που θέλετε να δώσετε STR_BUY_COMPANY_MESSAGE :{WHITE}Ψάχνουμε μία εταιρία μεταφορών για να εξαγοράσει την εταιρία μας.{}{}Θέλετε να εξαγοράσετε την {COMPANY} για {CURRENCY_LONG}; @@ -3432,6 +3481,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Υποδ STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Κομμάτια σιδηροτροχιάς: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Σήματα STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Κομμάτια δρόμου: +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Κομμάτια τραμ: STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Τετραγωνίδια νερού: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Κανάλια STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Σταθμοί: @@ -3443,7 +3493,13 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Βιομηχανίες STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Τίποτα - STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} +STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING} +STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ονόματα βιομηχανιών - πατήστε στο όνομα για κεντράρισμα στη βιομηχανία. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της βιομηχανίας +STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Αποδεκτό φορτίο: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Παραγόμενο εμπόρευμα: {SILVER}{STRING} +STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Όλοι οι τύποι φορτίου # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} @@ -3537,6 +3593,7 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Νέα Οχήμ STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Νέα Οχήματα Maglev STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Νέα Οχήματα Δρόμου +STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Νέα οχήματα τραμ ############ range for vehicle availability starts STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Νέα Οχήματα Σιδηρόδρομου @@ -3706,6 +3763,7 @@ STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Μόλι STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}ατμομηχανή STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE.geniki :ατμομηχανής +STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :Μηχανή ηλεκτροδοτουμένου σιδηροδρόμου STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}μηχανής μονοτρόχιου STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE.geniki :μηχανής monorail STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}μηχανής maglev @@ -3713,6 +3771,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.geniki :μηχανής STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}οχήματος δρόμου STR_ENGINE_PREVIEW_ROAD_VEHICLE.geniki :Οχήματος δρόμου +STR_ENGINE_PREVIEW_TRAM_VEHICLE :όχημα τροχιοδρόμου STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}αεροσκάφους STR_ENGINE_PREVIEW_AIRCRAFT.geniki :αεροσκάφους @@ -3758,12 +3817,14 @@ STR_REPLACE_WAGONS :Βαγόνια STR_REPLACE_ALL_RAILTYPE :Όλα τα οχήματα σιδηρόδρομου STR_REPLACE_HELP_RAILTYPE :{BLACK}Επιλέξτε τον τύπο σιδηροδρόμου για τον οποίο θέλετε να γίνει η αντικατάσταση των μηχανών +STR_REPLACE_HELP_ROADTYPE :{BLACK}Επιλέξτε τον τύπο δρόμου για τον οποίο θέλετε να γίνει η αντικατάσταση των μηχανών STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Εμφανίζει ποια μηχανή αυτή στα αριστερά θα αντικατασταθεί, εάν υπάρχει STR_REPLACE_RAIL_VEHICLES :Οχήματα Σιδηροδρόμου STR_REPLACE_ELRAIL_VEHICLES :Οχήματα Ηλεκτρικού Σιδηροδρόμου STR_REPLACE_MONORAIL_VEHICLES :Οχήματα Μονοτρόχιου STR_REPLACE_MAGLEV_VEHICLES :Οχήματα Maglev +STR_REPLACE_TRAM_VEHICLES :Οχήματα τροχιοδρόμου STR_REPLACE_REMOVE_WAGON :{BLACK}Αφαίρεση βαγονιού: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Υποχρεώνει την αυτόματη αντικατάσταση να διατηρεί σταθερό το μήκος του τρένου αφαιρώντας βαγόνια (ξεκινώντας από μπροστά), όταν η αντικατάσταση της μηχανής κάνει το τρένο μεγαλύτερο @@ -3771,6 +3832,8 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Υποχ # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} +STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του οχήματος. Με διπλό κλικ θα ακολουθείται το αυτοκίνητο στην κύρια προβολή. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του οχήματος +STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του πλοίου. Με διπλό κλικ θα ακολουθείται το πλοίο στην κύρια προβολή. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του πλοίου STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το τρένο στο αμαξοστάσιο. Με Ctrl+Κλικ κάνει μόνο επισκευή STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το όχημα στο αμαξοστάσιο. Με Ctrl+Κλικ κάνει μόνο επισκευή @@ -3802,6 +3865,7 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφά STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών πλοίου STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών αεροσκάφους +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Τρέχων ενέργεια οχήματος - κάντε κλικ για να σταματήσετε/ξεκινήσετε το όχημα # Messages in the start stop button in the vehicle view @@ -4030,6 +4094,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Μετατρο STR_ORDER_STOP_ORDER :(Στάση) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} +STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Δεν μπορείτε να χρησιμοποιήσετε τον σταθμό){POP_COLOUR} {STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Σιωπηρή) @@ -4208,6 +4273,9 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Αποδ STR_AI_LIST_CANCEL :{BLACK}Άκυρωση STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Να μην γίνει αλλαγή δέσμης ενεργειών +STR_SCREENSHOT_CAPTION :{WHITE}Βγάλτε στιγμιότυπο εικόνας +STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Το στιγμιότυπο οθόνης έχει μεγεθυνθεί πλήρως +STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Στιγμιότυπο χάρτη υψομετρίας # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Παράμετροι @@ -4473,6 +4541,7 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Λάθος τύ STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Το {VEHICLE} είναι πολύ μεγάλο μετά την ανανέωση STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Χωρίς εφαρμογή κανόνων αυτόματης ανανέωσης/αντικατάστασης STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(χρηματικό όριο) +STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Το καινούριο όχημα δεν μπορεί να επανεξοπλιστεί σε σειρά {NUM} # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Αδύνατος συνδυασμός σιδηροδρόμου @@ -4500,6 +4569,11 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Αδύν STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Δεν μπορεί να αφαιρεθεί τροχιόδρομος από εδώ... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... δεν υπάρχει δρόμος STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... δεν υπάρχει τροχιόδρομος +STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Δε γίνεται να μετατραπεί ο τύπος δρόμου εδώ... +STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Δε γίνεται να μετατραπεί ο τύπος τραμ εδώ... +STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Δεν υπάρχει κατάλληλος δρόμος +STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Καμία κατάλληλη γραμμή του τραμ +STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... μη συμβατός τραχιοδρόμος # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Δεν μπορεί να κτιστεί κανάλι εδώ @@ -4747,13 +4821,13 @@ STR_INDUSTRY_NAME_SUGAR_MINE :{G=n}Ορυχε ##id 0x6000 STR_SV_EMPTY : STR_SV_UNNAMED :Ανώνυμο -STR_SV_TRAIN_NAME :{G=n}Τρένο {COMMA} +STR_SV_TRAIN_NAME :{G=n}Τρένο #{COMMA} STR_SV_TRAIN_NAME.geniki :Τρένου {COMMA} -STR_SV_ROAD_VEHICLE_NAME :{G=n}Όχημα Δρόμου {COMMA} +STR_SV_ROAD_VEHICLE_NAME :{G=n}Όχημα Δρόμου #{COMMA} STR_SV_ROAD_VEHICLE_NAME.geniki :Οχήματος Δρόμου {COMMA} -STR_SV_SHIP_NAME :{G=n}Πλοίο {COMMA} +STR_SV_SHIP_NAME :{G=n}Πλοίο #{COMMA} STR_SV_SHIP_NAME.geniki :Πλοίου {COMMA} -STR_SV_AIRCRAFT_NAME :{G=n}Αεροσκάφος {COMMA} +STR_SV_AIRCRAFT_NAME :{G=n}Αεροσκάφος #{COMMA} STR_SV_AIRCRAFT_NAME.geniki :Αεροσκάφους {COMMA} STR_SV_STNAME :{STRING} @@ -5056,6 +5130,7 @@ STR_FORMAT_BUOY_NAME :Σημαδού STR_FORMAT_BUOY_NAME_SERIAL :Σημαδούρα {TOWN} #{COMMA} STR_FORMAT_COMPANY_NUM :(Εταιρία {COMMA}) STR_FORMAT_GROUP_NAME :Ομάδα {COMMA} +STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} STR_FORMAT_WAYPOINT_NAME :Σημείο Καθοδήγησης {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Σημείο Καθοδήγησης {TOWN} #{COMMA} diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 28e997c086..7784401d9a 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -1454,6 +1454,10 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :재정 창에 STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :재정 창에 나타나는 회사 비용을 어떻게 표시할지 설정합니다. STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :선로 건설 중 신호기 자동 제거: {STRING} STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :신호기가 이미 있는 선로에 선로를 추가로 설치하면 신호기를 자동으로 제거합니다. 잘못 사용하면 잠재적으로 열차가 충돌할 수 있다는 점을 명심하세요. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :빨리 감기 속도 제한: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :빨리 감기를 했을 때 게임이 진행되는 속도를 제한할 수 있습니다. 0으로 설정하면 컴퓨터가 허용하는 만큼 빠르게 돌립니다. 100% 미만의 값으로 설정하면 게임이 느리게 돌아갑니다. 빨리 감기 속도의 최댓값은 컴퓨터의 성능에 따라 결정되며 맵에 따라 다를 수 있습니다. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :보통 게임 속도의 {NUM}% +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :제한 없음 (컴퓨터가 허용하는 만큼 빠르게) STR_CONFIG_SETTING_SOUND_TICKER :뉴스 자막: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :요약된 뉴스 메시지가 나타나면 효과음을 재생합니다. diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index a81861f0fd..230290b531 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -1456,6 +1456,9 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupper utgifte STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definer oppsettet for vinduet som viser selskapets utgifter STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatisk fjerne signaler mens jernbane bygges: {STRING} STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatisk fjerne signaler mens jernbane bygges dersom signalene er i veien. Vær oppmerksom på at dette kan potensielt lede til togkrasj. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Grense for hvor fort spillet kjører: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normal hastighet +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Ingen grense (så fort som maskinen din tillater) STR_CONFIG_SETTING_SOUND_TICKER :Nyhetstavle: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spille av lyd for oppsummerte nyhetsmeldinger diff --git a/src/lang/polish.txt b/src/lang/polish.txt index cf422cf11c..dd438b8e7a 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -704,7 +704,7 @@ STR_GROUP_BY_SHARED_ORDERS :Polecenia wspó # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza -STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Szybkie przemijanie czasu w grze +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Przyspieszenie czasu w grze STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opcje STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Zapis gry, opuszczenie gry, wyjście STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Wyświetl mapę, dodatkowy podgląd lub listę napisów @@ -1833,6 +1833,10 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Pogrupuj wydatk STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Określa układ okienka wydatków firmy STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatycznie usuwaj sygnały podczas budowy torów: {STRING} STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatycznie usuwaj sygnały, które przeszkadzają w budowie toru. Pamiętaj, że może to doprowadzić do zderzenia pociągów, w przypadku usunięcia ważnych sygnałów. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Ograniczenie prędkości przyspieszonego czasu w grze: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Ograniczenie prędkości gry, kiedy przyspieszenie czasu jest włączone. 0 = bez ograniczenia (tak szybko, jak pozwoli na to komputer). Wartości poniżej 100% spowolnią grę. Górny limit jest zależny od specyfikacji komputera i może się różnić w zależności od rozgrywki. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normalnej prędkości gry +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Brak ograniczenia (tak szybko, jak pozwoli na to komputer) STR_CONFIG_SETTING_SOUND_TICKER :Pasek informacji: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Odtwarzaj dźwięk dla podsumowania wiadomości diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 14f44aef30..16ba9f97f2 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -613,7 +613,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinador de STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisor de Rutas STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Jefe STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Subdirector -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Director +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Director(a) STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Presidente STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnate @@ -696,7 +696,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Clic en STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Lista de empresas que han llegado a {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tabla de clasificación de empresas en {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. -STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Hombre de negocios +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Empresario(a) STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Empresario STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrial STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalista @@ -947,6 +947,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nuevo dólar ta STR_GAME_OPTIONS_CURRENCY_CNY :Yuan chino (CNY) STR_GAME_OPTIONS_CURRENCY_HKD :Dólar honkonés (HKD) STR_GAME_OPTIONS_CURRENCY_INR :Rupia india (INR) +STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesia (IDR) ############ end of currency region STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Manejar por la izquierda @@ -1003,6 +1004,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Otra STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamaño de la interfaz STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Elegir el tamaño de los elementos de la interfaz +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(detectar) STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Doble STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Cuádruple @@ -1010,6 +1012,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Cuádruple STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Tamaño de letra STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Elegir qué tamaño de letra usar en la interfaz +STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(detectar) STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Doble STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Cuádruple @@ -1451,6 +1454,10 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Agrupar gastos STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definir el diseño de la ventana de finanzas STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Quitar señales de forma automática al construir vías férreas: {STRING} STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Quitar las señales de forma automática al construir vías férreas si estas obstruyen. Puede provocar choques de trenes. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Límite de velocidad del avance rápido: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Límite de velocidad del avance rápido. 0 significa sin límite o la velocidad que el sistema permita. Valores debajo de 100% retardan el juego. El límite más alto varía en factor de las capacidades del sistema y el juego. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% velocidad normal +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Sin límite (lo que permita el sistema) STR_CONFIG_SETTING_SOUND_TICKER :Boletín de noticias: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reproducir sonido para mensajes resumidos de noticias @@ -2846,6 +2853,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtrar texto: STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Sobrescribir archivo STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}¿Estás seguro de sobrescribir el archivo? +STR_SAVELOAD_DIRECTORY :{STRING} (Carpeta) +STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Carpeta superior) STR_SAVELOAD_OSKTITLE :{BLACK}Indicar un nombre para la partida a guardar @@ -2996,7 +3005,7 @@ STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Número # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Analizar: {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Superior -STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspeccionar objeto del entorno superior +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspeccionar objeto del entorno externo STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} en {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objeto diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 7526b80fb7..3ce66b86ae 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -1453,6 +1453,10 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Gruppera utgift STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Välj layout för företagens utgiftsfönster STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatiskt ta bort signaler vid byggande av järnväg: {STRING} STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Ta automatiskt bort signaler vid byggande av järnväg om signalerna är i vägen. Notera att detta kan leda till att tåg krockar. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Snabbspolnings begränsning: {STRING} +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Begränsa hur snabbt spelet går när snabbspolning är aktiverad. 0 = ingen begränsning (så snabbt som din dator tillåter). Värden under 100% saktar ner spelet. Den övre begränsningen beror på din dators specifikationer och kan variera beroende på spelet. +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normal spel hastighet +STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Ingen begränsning (Så snabbt som din dator tillåter) STR_CONFIG_SETTING_SOUND_TICKER :Summerade nyheter: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spela ljudeffekt för sammanfattade nyhetsmeddelanden diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 889af7ce11..2487de0fc8 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -308,6 +308,7 @@ STR_SORT_BY_POPULATION :மக்கள STR_SORT_BY_RATING :மதிப்பீடு # Group by options for vehicle list +STR_GROUP_BY_NONE :ஒன்றுமில்லை # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}இடை நிறுத்து @@ -1355,6 +1356,7 @@ STR_CONFIG_SETTING_AI_PROFILE_EASY :எளிதா STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :நடுத்தரமான STR_CONFIG_SETTING_AI_PROFILE_HARD :கடுமையான +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :கணினிகளை பல்வீரர் ஆட்டத்தில் அனுமதி: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :பழுதுபார்த்தல்கள் இடையே உள்ள காலத்தினை சதவிகிதத்தில் காட்டவும்: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS :இரயிகளின் பழுதுபார்த்தல் இடைவேளி: {STRING} @@ -1608,6 +1610,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}நீ # Cheat window STR_CHEATS :{WHITE}ஏமாற்றுகள் +STR_CHEATS_NOTE :{BLACK}குறிப்பு: இந்த அமைப்புகளின் எந்தவொரு பயன்பாடும் பதிவு செய்யப்படும் STR_CHEAT_MONEY :{LTBLUE}{CURRENCY_LONG} ஆக பணத்தை உயர்த்து STR_CHEAT_CHANGE_COMPANY :{LTBLUE}இந்த நிறுவனமாக ஆடுகிறீர்கள்: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}அதிசய நிலச்சமனி (தொழிற்சாலைகள் மற்றும் பொருட்களை நீக்குவதற்கு): {ORANGE}{STRING} @@ -1979,6 +1982,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} புதிய நிறுவனம் (#{2:NUM})வை துவக்கி உள்ளார் STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ஆட்டத்தை விட்டு வெளியேரினார் ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} அவரது/அவளது பெயரினை {STRING} என்று மாற்றினார் +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} தங்கள் நிறுவனத்திற்கு {1:STRING} {2:CURRENCY_LONG} கொடுத்தார் STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}சர்வர் ஆட்டத்தினை முடித்தது STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}சர்வர் மீண்டும் தொடங்குகிறது...{}சற்று பொறுக்கவும்... STR_NETWORK_MESSAGE_KICKED :*** {STRING} வெளியேற்றப்பட்டார். காரணம்: ({STRING}) @@ -2296,7 +2300,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}ஏத # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}புதிய தொழிற்சாலையினை நிறுவு STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}இந்தப் பட்டியலிருந்து பொருத்தமான தொழிற்சாலை ஒன்றினை தேர்ந்தெடு -STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :பல மாறுபட்ட தொழிற்சாலைகள் +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}மாறுபட்ட தொழிற்சாலைகளை உருவாக்குக STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}விலை: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}எங்கேயோ நிறுவு STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}கட்டு @@ -2794,10 +2798,10 @@ STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}நிறுவனத்தின் குறிக்கோள்கள்: # Goal question window -STR_GOAL_QUESTION_CAPTION_QUESTION :கேள்வி -STR_GOAL_QUESTION_CAPTION_INFORMATION :தகவல் -STR_GOAL_QUESTION_CAPTION_WARNING :எச்சரிக்கை -STR_GOAL_QUESTION_CAPTION_ERROR :பிழை +STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}கேள்வி +STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}தகவல் +STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}எச்சரிக்கை +STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}பிழை ############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :இரத்து செய் @@ -2994,6 +2998,7 @@ STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}நி STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :நிறுவனத்தின் பெயர் STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :மேலாளரின் பெயர் +STR_BUY_COMPANY_MESSAGE :{WHITE}எங்கள் நிறுவனத்தை கையகப்படுத்த ஒரு போக்குவரத்து நிறுவனத்தை நாங்கள் தேடுகிறோம்.{}{}நீங்கள் {COMPANY}யை {CURRENCY_LONG} வாங்க விரும்புகிறீர்களா? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} இன் கட்டுமானங்கள் @@ -3141,11 +3146,12 @@ STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}வி STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}கப்பலை வாங்கி மாற்றியமை STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}விமானத்தை வாங்கி மாற்றியமை -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் இரயில் வாகனத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டு +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் இரயில் வாகனத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும். STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் சாலை வாகனத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும் STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் கப்பலை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும் STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் விமானத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும் +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் சாலை வாகனத்தை வாங்கி புதுப்பிக்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும். STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}பெயரிடு STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}பெயரிடு @@ -4250,10 +4256,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :சர்க் ##id 0x6000 STR_SV_EMPTY : STR_SV_UNNAMED :பெயரிடாதது -STR_SV_TRAIN_NAME :இரயில் {COMMA} -STR_SV_ROAD_VEHICLE_NAME :சாலை வாகனம் {COMMA} -STR_SV_SHIP_NAME :கப்பல் {COMMA} -STR_SV_AIRCRAFT_NAME :விமானம் {COMMA} +STR_SV_TRAIN_NAME :இரயில் #{COMMA} +STR_SV_ROAD_VEHICLE_NAME :சாலை வாகனம் #{COMMA} +STR_SV_SHIP_NAME :கப்பல் #{COMMA} +STR_SV_AIRCRAFT_NAME :விமானம் #{COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} வடக்கு From 838fd61f299d4455e9a1fc5be883f4e9f9a40934 Mon Sep 17 00:00:00 2001 From: Owen Rudge Date: Mon, 1 Mar 2021 20:25:08 +0000 Subject: [PATCH 06/16] Fix: [OSX] Hide dock when entering fullscreen --- src/video/cocoa/cocoa_v.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 523a408b1f..af63fe5f4d 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -196,6 +196,10 @@ bool VideoDriver_Cocoa::ToggleFullscreen(bool full_screen) if ([ this->window respondsToSelector:@selector(toggleFullScreen:) ]) { [ this->window performSelector:@selector(toggleFullScreen:) withObject:this->window ]; + + /* Hide the menu bar and the dock */ + [ NSMenu setMenuBarVisible:!full_screen ]; + this->UpdateVideoModes(); return true; } From cd4c8ecbf341e141e35b28980cdc5c7a2c04b1ca Mon Sep 17 00:00:00 2001 From: glx22 Date: Mon, 1 Mar 2021 19:35:39 +0100 Subject: [PATCH 07/16] Add: [Actions] Allow partial cache invalidation on dependencies change --- .github/workflows/ci-build.yml | 8 ++++++-- .github/workflows/release.yml | 9 +++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 2e5ad6e31a..d5bd304028 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -169,7 +169,9 @@ jobs: uses: actions/cache@v2 with: path: /usr/local/share/vcpkg/installed - key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }} + key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-0 # Increase the number whenever dependencies are modified + restore-keys: | + ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }} - name: Prepare vcpkg run: | @@ -249,7 +251,9 @@ jobs: uses: actions/cache@v2 with: path: vcpkg/installed - key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }} + key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-0 # Increase the number whenever dependencies are modified + restore-keys: | + ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }} - name: Prepare vcpkg shell: bash diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c03ea6ea98..ae0e4e1208 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -496,7 +496,10 @@ jobs: uses: actions/cache@v2 with: path: /usr/local/share/vcpkg/installed - key: ${{ steps.key.outputs.image }}-vcpkg-release + key: ${{ steps.key.outputs.image }}-vcpkg-release-0 # Increase the number whenever dependencies are modified + restore-keys: | + ${{ steps.key.outputs.image }}-vcpkg-release + ${{ steps.key.outputs.image }}-vcpkg-x64 - name: Prepare vcpkg run: | @@ -696,7 +699,9 @@ jobs: uses: actions/cache@v2 with: path: vcpkg/installed - key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }} + key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-0 # Increase the number whenever dependencies are modified + restore-keys: | + ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }} - name: Prepare vcpkg shell: bash From ef5cea0e0698bde451efc88eacdcda77105659fb Mon Sep 17 00:00:00 2001 From: Charles Pigott Date: Sun, 28 Feb 2021 21:27:53 +0000 Subject: [PATCH 08/16] Change: De-limit framerate window's framerate --- src/framerate_gui.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/framerate_gui.cpp b/src/framerate_gui.cpp index 26a40c4516..9bd5a2e8e2 100644 --- a/src/framerate_gui.cpp +++ b/src/framerate_gui.cpp @@ -399,7 +399,6 @@ struct FramerateWindow : Window { { const double threshold_good = target * 0.95; const double threshold_bad = target * 2 / 3; - value = std::min(9999.99, value); this->value = (uint32)(value * 100); this->strid = (value > threshold_good) ? STR_FRAMERATE_FPS_GOOD : (value < threshold_bad) ? STR_FRAMERATE_FPS_BAD : STR_FRAMERATE_FPS_WARN; } @@ -408,7 +407,6 @@ struct FramerateWindow : Window { { const double threshold_good = target / 3; const double threshold_bad = target; - value = std::min(9999.99, value); this->value = (uint32)(value * 100); this->strid = (value < threshold_good) ? STR_FRAMERATE_MS_GOOD : (value > threshold_bad) ? STR_FRAMERATE_MS_BAD : STR_FRAMERATE_MS_WARN; } From 64686b53ff743d1cc6d8b522abd066bca1420a59 Mon Sep 17 00:00:00 2001 From: Charles Pigott Date: Sun, 28 Feb 2021 21:28:21 +0000 Subject: [PATCH 09/16] Change: Zero out the gameloop timers when the game is paused --- src/framerate_gui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/framerate_gui.cpp b/src/framerate_gui.cpp index 9bd5a2e8e2..9ac78dc68b 100644 --- a/src/framerate_gui.cpp +++ b/src/framerate_gui.cpp @@ -274,6 +274,7 @@ void PerformanceMeasurer::SetExpectedRate(double rate) */ /* static */ void PerformanceMeasurer::Paused(PerformanceElement elem) { + PerformanceMeasurer::SetInactive(elem); _pf_data[elem].AddPause(GetPerformanceTimer()); } From 47e899cf7532f29acfe479c77a1d02f4fdd288ef Mon Sep 17 00:00:00 2001 From: Limyx826 <38696851+Limyx826@users.noreply.github.com> Date: Mon, 1 Mar 2021 19:51:21 +0800 Subject: [PATCH 10/16] Add: Malaysia Ringgit as Currency Cause why not *Update the formating --- src/currency.cpp | 1 + src/currency.h | 1 + src/lang/english.txt | 1 + 3 files changed, 3 insertions(+) diff --git a/src/currency.cpp b/src/currency.cpp index 46c478d0d9..841f00d56a 100644 --- a/src/currency.cpp +++ b/src/currency.cpp @@ -67,6 +67,7 @@ static const CurrencySpec origin_currency_specs[CURRENCY_END] = { { 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 }; /** Array of currencies used by the system */ diff --git a/src/currency.h b/src/currency.h index 37d1c66b92..e97fc6cb84 100644 --- a/src/currency.h +++ b/src/currency.h @@ -64,6 +64,7 @@ enum Currencies { CURRENCY_HKD, ///< Hong Kong Dollar CURRENCY_INR, ///< Indian Rupee CURRENCY_IDR, ///< Indonesian Rupiah + CURRENCY_MYR, ///< Malaysian Ringgit CURRENCY_END, ///< always the last item }; diff --git a/src/lang/english.txt b/src/lang/english.txt index 9935f3a568..636516900b 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -947,6 +947,7 @@ STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminb 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) ############ end of currency region STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Drive on left From abac4b17588688d0b8241a303104c39ca92a87e8 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Mon, 1 Mar 2021 23:17:30 +0100 Subject: [PATCH 11/16] Fix c4df0f95: bootstrap was only showing a black screen (#8788) The bootstrap has the _switch_mode to SM_MENU, and never leaves this mode. Neither is it considered a modal window (while in some sense it really is). So .. we need to add another "draw anyway" exception, to make sure bootstrap is being drawn. --- src/video/video_driver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/video_driver.cpp b/src/video/video_driver.cpp index bcd646abdf..5e25184357 100644 --- a/src/video/video_driver.cpp +++ b/src/video/video_driver.cpp @@ -41,7 +41,7 @@ bool VideoDriver::Tick() } /* Prevent drawing when switching mode, as windows can be removed when they should still appear. */ - if (this->HasGUI() && cur_ticks >= this->next_draw_tick && (_switch_mode == SM_NONE || HasModalProgress())) { + if (this->HasGUI() && cur_ticks >= this->next_draw_tick && (_switch_mode == SM_NONE || _game_mode == GM_BOOTSTRAP || HasModalProgress())) { this->next_draw_tick += this->GetDrawInterval(); /* Avoid next_draw_tick getting behind more and more if it cannot keep up. */ if (this->next_draw_tick < cur_ticks - ALLOWED_DRIFT * this->GetDrawInterval()) this->next_draw_tick = cur_ticks; From a0c298a539d9a5ffed2c82b94c04b362c2763465 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Mon, 1 Mar 2021 13:35:11 +0100 Subject: [PATCH 12/16] Fix: three max-values for settings could exceed their storage size --- src/table/settings.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/table/settings.ini b/src/table/settings.ini index 6dfb148b9f..dd0ecfee50 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -435,7 +435,7 @@ type = SLE_UINT16 from = SLV_156 def = 4096 min = 0 -max = 1 << 30 +max = 1 << 15 interval = 1 cat = SC_EXPERT @@ -457,7 +457,7 @@ type = SLE_UINT16 from = SLV_156 def = 4096 min = 0 -max = 1 << 30 +max = 1 << 15 interval = 1 cat = SC_EXPERT @@ -479,7 +479,7 @@ type = SLE_UINT16 from = SLV_175 def = 4096 min = 0 -max = 1 << 30 +max = 1 << 15 interval = 1 cat = SC_EXPERT From d7a70c67bacef7453ae56e9136c9c16e4b19c314 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Mon, 1 Mar 2021 13:35:39 +0100 Subject: [PATCH 13/16] Fix: old snow_line_height had a higher maximum value than could be stored So any old game made with this setting was overflowing anyway; not really a lot we can do about that now. --- src/table/gameopt_settings.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/table/gameopt_settings.ini b/src/table/gameopt_settings.ini index 32691c2891..b85e11d9c3 100644 --- a/src/table/gameopt_settings.ini +++ b/src/table/gameopt_settings.ini @@ -149,7 +149,8 @@ var = game_creation.snow_line_height type = SLE_UINT8 def = DEF_SNOWLINE_HEIGHT * TILE_HEIGHT min = MIN_SNOWLINE_HEIGHT * TILE_HEIGHT -max = MAX_SNOWLINE_HEIGHT * TILE_HEIGHT +# "max" used to be MAX_SNOWLINE_HEIGHT * TILE_HEIGHT, but this would overflow the storage. +max = UINT8_MAX to = SLV_22 [SDT_NULL] From 74aa934441351334e40d8963900b8a2fbc9bc9cd Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Mon, 1 Mar 2021 13:12:17 +0100 Subject: [PATCH 14/16] Codechange: validate that "max" value of settings fit in their storage This is an easy mistake to make, so protect us against making such mistakes, by validating it doesn't happen. --- src/settings_type.h | 9 +++ src/settingsgen/settingsgen.cpp | 139 +++++++++++++++++++------------- src/table/company_settings.ini | 3 + src/table/currency_settings.ini | 3 + src/table/gameopt_settings.ini | 7 ++ src/table/misc_settings.ini | 4 + src/table/settings.ini | 8 ++ src/table/win32_settings.ini | 3 + src/table/window_settings.ini | 3 + 9 files changed, 122 insertions(+), 57 deletions(-) diff --git a/src/settings_type.h b/src/settings_type.h index f2c591f642..433e8d5355 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -21,6 +21,15 @@ #include "zoom_type.h" #include "openttd.h" +/* Used to validate sizes of "max" value in settings. */ +const size_t MAX_SLE_UINT8 = UINT8_MAX; +const size_t MAX_SLE_UINT16 = UINT16_MAX; +const size_t MAX_SLE_UINT32 = UINT32_MAX; +const size_t MAX_SLE_UINT = UINT_MAX; +const size_t MAX_SLE_INT8 = INT8_MAX; +const size_t MAX_SLE_INT16 = INT16_MAX; +const size_t MAX_SLE_INT32 = INT32_MAX; +const size_t MAX_SLE_INT = INT_MAX; /** Settings profiles and highscore tables. */ enum SettingsProfile { diff --git a/src/settingsgen/settingsgen.cpp b/src/settingsgen/settingsgen.cpp index ac3a2a85ac..8dd9ff6f4a 100644 --- a/src/settingsgen/settingsgen.cpp +++ b/src/settingsgen/settingsgen.cpp @@ -186,11 +186,13 @@ struct SettingsIniFile : IniLoadFile { }; OutputStore _stored_output; ///< Temporary storage of the output, until all processing is done. +OutputStore _post_amble_output; ///< Similar to _stored_output, but for the post amble. -static const char *PREAMBLE_GROUP_NAME = "pre-amble"; ///< Name of the group containing the pre amble. +static const char *PREAMBLE_GROUP_NAME = "pre-amble"; ///< Name of the group containing the pre amble. static const char *POSTAMBLE_GROUP_NAME = "post-amble"; ///< Name of the group containing the post amble. -static const char *TEMPLATES_GROUP_NAME = "templates"; ///< Name of the group containing the templates. -static const char *DEFAULTS_GROUP_NAME = "defaults"; ///< Name of the group containing default values for the template variables. +static const char *TEMPLATES_GROUP_NAME = "templates"; ///< Name of the group containing the templates. +static const char *VALIDATION_GROUP_NAME = "validation"; ///< Name of the group containing the validation statements. +static const char *DEFAULTS_GROUP_NAME = "defaults"; ///< Name of the group containing default values for the template variables. /** * Load the INI file. @@ -239,17 +241,84 @@ static const char *FindItemValue(const char *name, IniGroup *grp, IniGroup *defa return item->value->c_str(); } +/** + * Parse a single entry via a template and output this. + * @param item The template to use for the output. + * @param grp Group current being used for template rendering. + * @param default_grp Default values for items not set in @grp. + * @param output Output to use for result. + */ +static void DumpLine(IniItem *item, IniGroup *grp, IniGroup *default_grp, OutputStore &output) +{ + static const int MAX_VAR_LENGTH = 64; + + /* Prefix with #if/#ifdef/#ifndef */ + static const char * const pp_lines[] = {"if", "ifdef", "ifndef", nullptr}; + int count = 0; + for (const char * const *name = pp_lines; *name != nullptr; name++) { + const char *condition = FindItemValue(*name, grp, default_grp); + if (condition != nullptr) { + output.Add("#", 1); + output.Add(*name); + output.Add(" ", 1); + output.Add(condition); + output.Add("\n", 1); + count++; + } + } + + /* Output text of the template, except template variables of the form '$[_a-z0-9]+' which get replaced by their value. */ + const char *txt = item->value->c_str(); + while (*txt != '\0') { + if (*txt != '$') { + output.Add(txt, 1); + txt++; + continue; + } + txt++; + if (*txt == '$') { // Literal $ + output.Add(txt, 1); + txt++; + continue; + } + + /* Read variable. */ + char variable[MAX_VAR_LENGTH]; + int i = 0; + while (i < MAX_VAR_LENGTH - 1) { + if (!(txt[i] == '_' || (txt[i] >= 'a' && txt[i] <= 'z') || (txt[i] >= '0' && txt[i] <= '9'))) break; + variable[i] = txt[i]; + i++; + } + variable[i] = '\0'; + txt += i; + + if (i > 0) { + /* Find the text to output. */ + const char *valitem = FindItemValue(variable, grp, default_grp); + if (valitem != nullptr) output.Add(valitem); + } else { + output.Add("$", 1); + } + } + output.Add("\n", 1); // \n after the expanded template. + while (count > 0) { + output.Add("#endif\n"); + count--; + } +} + /** * Output all non-special sections through the template / template variable expansion system. * @param ifile Loaded INI data. */ static void DumpSections(IniLoadFile *ifile) { - static const int MAX_VAR_LENGTH = 64; - static const char * const special_group_names[] = {PREAMBLE_GROUP_NAME, POSTAMBLE_GROUP_NAME, DEFAULTS_GROUP_NAME, TEMPLATES_GROUP_NAME, nullptr}; + static const char * const special_group_names[] = {PREAMBLE_GROUP_NAME, POSTAMBLE_GROUP_NAME, DEFAULTS_GROUP_NAME, TEMPLATES_GROUP_NAME, VALIDATION_GROUP_NAME, nullptr}; IniGroup *default_grp = ifile->GetGroup(DEFAULTS_GROUP_NAME, false); IniGroup *templates_grp = ifile->GetGroup(TEMPLATES_GROUP_NAME, false); + IniGroup *validation_grp = ifile->GetGroup(VALIDATION_GROUP_NAME, false); if (templates_grp == nullptr) return; /* Output every group, using its name as template name. */ @@ -263,61 +332,14 @@ static void DumpSections(IniLoadFile *ifile) fprintf(stderr, "settingsgen: Warning: Cannot find template %s\n", grp->name.c_str()); continue; } + DumpLine(template_item, grp, default_grp, _stored_output); - /* Prefix with #if/#ifdef/#ifndef */ - static const char * const pp_lines[] = {"if", "ifdef", "ifndef", nullptr}; - int count = 0; - for (const char * const *name = pp_lines; *name != nullptr; name++) { - const char *condition = FindItemValue(*name, grp, default_grp); - if (condition != nullptr) { - _stored_output.Add("#", 1); - _stored_output.Add(*name); - _stored_output.Add(" ", 1); - _stored_output.Add(condition); - _stored_output.Add("\n", 1); - count++; + if (validation_grp != nullptr) { + IniItem *validation_item = validation_grp->GetItem(grp->name, false); // Find template value. + if (validation_item != nullptr && validation_item->value.has_value()) { + DumpLine(validation_item, grp, default_grp, _post_amble_output); } } - - /* Output text of the template, except template variables of the form '$[_a-z0-9]+' which get replaced by their value. */ - const char *txt = template_item->value->c_str(); - while (*txt != '\0') { - if (*txt != '$') { - _stored_output.Add(txt, 1); - txt++; - continue; - } - txt++; - if (*txt == '$') { // Literal $ - _stored_output.Add(txt, 1); - txt++; - continue; - } - - /* Read variable. */ - char variable[MAX_VAR_LENGTH]; - int i = 0; - while (i < MAX_VAR_LENGTH - 1) { - if (!(txt[i] == '_' || (txt[i] >= 'a' && txt[i] <= 'z') || (txt[i] >= '0' && txt[i] <= '9'))) break; - variable[i] = txt[i]; - i++; - } - variable[i] = '\0'; - txt += i; - - if (i > 0) { - /* Find the text to output. */ - const char *valitem = FindItemValue(variable, grp, default_grp); - if (valitem != nullptr) _stored_output.Add(valitem); - } else { - _stored_output.Add("$", 1); - } - } - _stored_output.Add("\n", 1); // \n after the expanded template. - while (count > 0) { - _stored_output.Add("#endif\n"); - count--; - } } } @@ -476,6 +498,7 @@ int CDECL main(int argc, char *argv[]) } _stored_output.Clear(); + _post_amble_output.Clear(); for (int i = 0; i < mgo.numleft; i++) ProcessIniFile(mgo.argv[i]); @@ -483,6 +506,7 @@ int CDECL main(int argc, char *argv[]) if (output_file == nullptr) { CopyFile(before_file, stdout); _stored_output.Write(stdout); + _post_amble_output.Write(stdout); CopyFile(after_file, stdout); } else { static const char * const tmp_output = "tmp2.xxx"; @@ -494,6 +518,7 @@ int CDECL main(int argc, char *argv[]) } CopyFile(before_file, fp); _stored_output.Write(fp); + _post_amble_output.Write(fp); CopyFile(after_file, fp); fclose(fp); diff --git a/src/table/company_settings.ini b/src/table/company_settings.ini index e685ff6dcf..eea2371fc6 100644 --- a/src/table/company_settings.ini +++ b/src/table/company_settings.ini @@ -20,6 +20,9 @@ SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extra, $startup), SDT_END = SDT_END() +[validation] +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for $base.$var exceeds storage size"); + [defaults] flags = 0 guiflags = SGF_PER_COMPANY diff --git a/src/table/currency_settings.ini b/src/table/currency_settings.ini index 7ff8799647..c242c83a87 100644 --- a/src/table/currency_settings.ini +++ b/src/table/currency_settings.ini @@ -14,6 +14,9 @@ SDT_CHR = SDT_CHR($base, $var, $flags, $guiflags, $def, SDT_STR = SDT_STR($base, $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extra, $startup), SDT_END = SDT_END() +[validation] +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for $base.$var exceeds storage size"); + [defaults] flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NONE diff --git a/src/table/gameopt_settings.ini b/src/table/gameopt_settings.ini index b85e11d9c3..c4140f4282 100644 --- a/src/table/gameopt_settings.ini +++ b/src/table/gameopt_settings.ini @@ -46,6 +46,13 @@ SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, $ma SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extra, $startup), SDT_END = SDT_END() +[validation] +SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDTG_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDT_OMANY = static_assert($max <= MAX_$type, "Maximum value for $base.$var exceeds storage size"); +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for $base.$var exceeds storage size"); + [defaults] flags = 0 guiflags = SGF_NONE diff --git a/src/table/misc_settings.ini b/src/table/misc_settings.ini index 3add5148fe..9d2f76cc06 100644 --- a/src/table/misc_settings.ini +++ b/src/table/misc_settings.ini @@ -26,6 +26,10 @@ SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extra, $startup), SDTG_END = SDTG_END() +[validation] +SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDTG_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); + [defaults] flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NONE diff --git a/src/table/settings.ini b/src/table/settings.ini index dd0ecfee50..b48ac6cd6a 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -77,6 +77,14 @@ SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, SDT_NULL = SDT_NULL($length, $from, $to), SDT_END = SDT_END() +[validation] +SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDTG_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDT_OMANY = static_assert($max <= MAX_$type, "Maximum value for $base.$var exceeds storage size"); +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for $base.$var exceeds storage size"); + [defaults] flags = 0 guiflags = SGF_NONE diff --git a/src/table/win32_settings.ini b/src/table/win32_settings.ini index 406e8dd8fb..c3cc45014c 100644 --- a/src/table/win32_settings.ini +++ b/src/table/win32_settings.ini @@ -18,6 +18,9 @@ SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extra, $startup), SDTG_END = SDTG_END() +[validation] +SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); + [defaults] flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NONE diff --git a/src/table/window_settings.ini b/src/table/window_settings.ini index e336d6447a..fb252076ce 100644 --- a/src/table/window_settings.ini +++ b/src/table/window_settings.ini @@ -14,6 +14,9 @@ SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat, $extra, $startup), SDT_END = SDT_END() +[validation] +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for $base.$var exceeds storage size"); + [defaults] base = WindowDesc flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC From b7a44983b432a85f99b5d82493c3396e5833d245 Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Mon, 1 Mar 2021 23:18:53 +0100 Subject: [PATCH 15/16] Fix: [Win32] Original window size was lost when tabbing in and out of fullscreen. --- src/video/win32_v.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index d5f752be97..8200be887b 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -715,7 +715,9 @@ LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) if (video_driver->fullscreen) { if (active && minimized) { /* Restore the game window */ + Dimension d = _bck_resolution; // Save current non-fullscreen window size as it will be overwritten by ShowWindow. ShowWindow(hwnd, SW_RESTORE); + _bck_resolution = d; video_driver->MakeWindow(true); } else if (!active && !minimized) { /* Minimise the window and restore desktop */ From c656633bea39d2002330eddee54522c8db542785 Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Mon, 1 Mar 2021 23:19:54 +0100 Subject: [PATCH 16/16] Fix #8775: [Win32] Don't create the main window when alt-tabbing back into fullscreen. --- src/video/win32_v.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index 8200be887b..ae1f5aafad 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -137,7 +137,7 @@ bool VideoDriver_Win32Base::MakeWindow(bool full_screen) _fullscreen = full_screen; /* recreate window? */ - if ((full_screen || this->fullscreen) && this->main_wnd) { + if ((full_screen != this->fullscreen) && this->main_wnd) { DestroyWindow(this->main_wnd); this->main_wnd = 0; }