From 1b1aa682a6e032a37cffeecc4d0f1a556cc5ea83 Mon Sep 17 00:00:00 2001 From: PeterN Date: Fri, 6 Jan 2023 00:44:57 +0000 Subject: [PATCH 01/10] Fix: Don't assume engclass 2 should be elrail. (#10315) When disabling/enabling elrail, there is an assumption that `engclass` of 2 means the engine will run on elrail. While this holds for default engines, NewGRFs can do other things. To resolve this we store the intended railtype so that toggling elrail will restore to the correct type. --- src/elrail.cpp | 8 +++----- src/engine_type.h | 3 ++- src/newgrf.cpp | 1 + src/table/engines.h | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/elrail.cpp b/src/elrail.cpp index 6f238ee515..f284e6fe2f 100644 --- a/src/elrail.cpp +++ b/src/elrail.cpp @@ -597,16 +597,14 @@ void SettingsDisableElrail(int32 new_value) { bool disable = (new_value != 0); - /* we will now walk through all electric train engines and change their railtypes if it is the wrong one*/ - const RailType old_railtype = disable ? RAILTYPE_ELECTRIC : RAILTYPE_RAIL; + /* pick appropriate railtype for elrail engines depending on setting */ const RailType new_railtype = disable ? RAILTYPE_RAIL : RAILTYPE_ELECTRIC; /* walk through all train engines */ for (Engine *e : Engine::IterateType(VEH_TRAIN)) { RailVehicleInfo *rv_info = &e->u.rail; - /* if it is an electric rail engine and its railtype is the wrong one */ - if (rv_info->engclass == 2 && rv_info->railtype == old_railtype) { - /* change it to the proper one */ + /* update railtype of engines intended to use elrail */ + if (rv_info->intended_railtype == RAILTYPE_ELECTRIC) { rv_info->railtype = new_railtype; } } diff --git a/src/engine_type.h b/src/engine_type.h index eeccf3e2b8..aac6a38eee 100644 --- a/src/engine_type.h +++ b/src/engine_type.h @@ -43,7 +43,8 @@ struct RailVehicleInfo { byte image_index; RailVehicleTypes railveh_type; byte cost_factor; ///< Purchase cost factor; For multiheaded engines the sum of both engine prices. - RailType railtype; + RailType railtype; ///< Railtype, mangled if elrail is disabled. + RailType intended_railtype; ///< Intended railtype, regardless of elrail being enabled or disabled. uint16 max_speed; ///< Maximum speed (1 unit = 1/1.6 mph = 1 km-ish/h) uint16 power; ///< Power of engine (hp); For multiheaded engines the sum of both engine powers. uint16 weight; ///< Weight of vehicle (tons); For multiheaded engines the weight of each single engine. diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 692ef30850..62e72f8e8e 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -9804,6 +9804,7 @@ static void AfterLoadGRFs() e->info.climates = 0; } else { e->u.rail.railtype = railtype; + e->u.rail.intended_railtype = railtype; } } diff --git a/src/table/engines.h b/src/table/engines.h index e3b1481d7f..830ab93ced 100644 --- a/src/table/engines.h +++ b/src/table/engines.h @@ -386,7 +386,7 @@ static const EngineInfo _orig_engine_info[] = { * Tractive effort coefficient by default is the same as TTDPatch, 0.30*256=76 * Air drag value depends on the top speed of the vehicle. */ -#define RVI(a, b, c, d, e, f, g, h, i, j, k) { a, b, c, j, d, e, f, g, h, k, i, 0, 0, 0, VE_DEFAULT, 0, 76, 0, 0, 0 } +#define RVI(a, b, c, d, e, f, g, h, i, j, k) { a, b, c, j, j, d, e, f, g, h, k, i, 0, 0, 0, VE_DEFAULT, 0, 76, 0, 0, 0 } #define M RAILVEH_MULTIHEAD #define W RAILVEH_WAGON #define G RAILVEH_SINGLEHEAD From e00996a18afee0a8f8a7da70071fae59316bed1b Mon Sep 17 00:00:00 2001 From: Charles Pigott Date: Fri, 6 Jan 2023 13:05:09 +0000 Subject: [PATCH 02/10] Change: Big UFO disaster targets current location of a random train (#10290) --- src/disaster_vehicle.cpp | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/disaster_vehicle.cpp b/src/disaster_vehicle.cpp index 668a1caea5..4a99ca2544 100644 --- a/src/disaster_vehicle.cpp +++ b/src/disaster_vehicle.cpp @@ -40,6 +40,7 @@ #include "sound_func.h" #include "effectvehicle_func.h" #include "roadveh.h" +#include "train.h" #include "ai/ai.hpp" #include "game/game.hpp" #include "company_base.h" @@ -578,17 +579,34 @@ static bool DisasterTick_Big_Ufo(DisasterVehicle *v) } v->current_order.SetDestination(1); - TileIndex tile_org = RandomTile(); - TileIndex tile = tile_org; - do { - if (IsPlainRailTile(tile) && - Company::IsHumanID(GetTileOwner(tile))) { + const auto is_valid_target = [](const Train *t) { + return t->IsFrontEngine() // Only the engines + && Company::IsHumanID(t->owner) // Don't break AIs + && IsPlainRailTile(t->tile) // No tunnels + && (t->vehstatus & VS_CRASHED) == 0; // Not crashed + }; + + uint n = 0; // Total number of targetable trains. + for (const Train *t : Train::Iterate()) { + if (is_valid_target(t)) n++; + } + + if (n == 0) { + /* If there are no targetable trains, destroy the UFO. */ + delete v; + return false; + } + + n = RandomRange(n); // Choose one of them. + for (const Train *t : Train::Iterate()) { + /* Find (n+1)-th train. */ + if (is_valid_target(t) && (n-- == 0)) { + /* Target it. */ + v->dest_tile = t->tile; + v->age = 0; break; } - tile = TILE_MASK(tile + 1); - } while (tile != tile_org); - v->dest_tile = tile; - v->age = 0; + } } return true; From 3c54344825cf38a9aa02842a43b42c7bf45015ec Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 2 Jan 2023 22:51:21 +0100 Subject: [PATCH 03/10] Fix: comparison of narrow type with wide type in loop condition Technically this can't be triggered with the currently returned values though. --- src/saveload/station_sl.cpp | 2 +- src/saveload/town_sl.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp index b5f4cbcd13..7a0b57d67d 100644 --- a/src/saveload/station_sl.cpp +++ b/src/saveload/station_sl.cpp @@ -392,7 +392,7 @@ public: } size_t num_cargo = this->GetNumCargo(); - for (CargoID i = 0; i < num_cargo; i++) { + for (size_t i = 0; i < num_cargo; i++) { GoodsEntry *ge = &st->goods[i]; SlObject(ge, this->GetLoadDescription()); if (IsSavegameVersionBefore(SLV_183)) { diff --git a/src/saveload/town_sl.cpp b/src/saveload/town_sl.cpp index 7b91259171..2ba0b9963e 100644 --- a/src/saveload/town_sl.cpp +++ b/src/saveload/town_sl.cpp @@ -148,7 +148,7 @@ public: void Load(Town *t) const override { size_t num_cargo = this->GetNumCargo(); - for (CargoID i = 0; i < num_cargo; i++) { + for (size_t i = 0; i < num_cargo; i++) { SlObject(&t->supplied[i], this->GetLoadDescription()); } } From fbd0f5ad7d75eb8bb5e2402ce8119a0a86e606db Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 2 Jan 2023 22:57:17 +0100 Subject: [PATCH 04/10] Fix: inconsistent allocation error handling Mix-and-matching std::bad_alloc exception handling with nullptr checks --- src/spritecache.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/spritecache.cpp b/src/spritecache.cpp index 2b3ba095c1..08b1ad85a9 100644 --- a/src/spritecache.cpp +++ b/src/spritecache.cpp @@ -988,12 +988,8 @@ static void GfxInitSpriteCache() _allocated_sprite_cache_size = target_size; do { - try { - /* Try to allocate 50% more to make sure we do not allocate almost all available. */ - _spritecache_ptr = reinterpret_cast(new byte[_allocated_sprite_cache_size + _allocated_sprite_cache_size / 2]); - } catch (std::bad_alloc &) { - _spritecache_ptr = nullptr; - } + /* Try to allocate 50% more to make sure we do not allocate almost all available. */ + _spritecache_ptr = reinterpret_cast(new(std::nothrow) byte[_allocated_sprite_cache_size + _allocated_sprite_cache_size / 2]); if (_spritecache_ptr != nullptr) { /* Allocation succeeded, but we wanted less. */ From 496ec1f012e0f085c09f666ddfb55828101dbe42 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 2 Jan 2023 23:17:24 +0100 Subject: [PATCH 05/10] Fix: use reference and array indexing to prevent suspicious pointer scaling --- src/company_gui.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/company_gui.cpp b/src/company_gui.cpp index bf43af43d4..965d0c804b 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -227,7 +227,7 @@ static void DrawPrice(Money amount, int left, int right, int top, TextColour col * Draw a category of expenses/revenues in the year column. * @return The income sum of the category. */ -static Money DrawYearCategory (const Rect &r, int start_y, ExpensesList list, const Money(*tbl)[EXPENSES_END]) +static Money DrawYearCategory (const Rect &r, int start_y, ExpensesList list, const Money(&tbl)[EXPENSES_END]) { int y = start_y; ExpensesType et; @@ -235,7 +235,7 @@ static Money DrawYearCategory (const Rect &r, int start_y, ExpensesList list, co for (uint i = 0; i < list.length; i++) { et = list.et[i]; - Money cost = (*tbl)[et]; + Money cost = tbl[et]; sum += cost; if (cost != 0) DrawPrice(cost, r.left, r.right, y, TC_BLACK); y += FONT_HEIGHT_NORMAL; @@ -255,10 +255,10 @@ static Money DrawYearCategory (const Rect &r, int start_y, ExpensesList list, co * Draw a column with prices. * @param r Available space for drawing. * @param year Year being drawn. - * @param tbl Pointer to table of amounts for \a year. + * @param tbl Reference to table of amounts for \a year. * @note The environment must provide padding at the left and right of \a r. */ -static void DrawYearColumn(const Rect &r, int year, const Money (*tbl)[EXPENSES_END]) +static void DrawYearColumn(const Rect &r, int year, const Money (&tbl)[EXPENSES_END]) { int y = r.top; Money sum; @@ -435,7 +435,7 @@ struct CompanyFinancesWindow : Window { int age = std::min(_cur_year - c->inaugurated_year, 2); int wid_offset = widget - WID_CF_EXPS_PRICE1; if (wid_offset <= age) { - DrawYearColumn(r, _cur_year - (age - wid_offset), c->yearly_expenses + (age - wid_offset)); + DrawYearColumn(r, _cur_year - (age - wid_offset), c->yearly_expenses[age - wid_offset]); } break; } From 170f37d07fff493cf43be1557af9d654e6669142 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 3 Jan 2023 19:02:36 +0100 Subject: [PATCH 06/10] Codechange: silence some potentially uninitialized local variable errors In these cases technically they are false positives, however dismissing the alerts when the underlying code may make them true positives does not seem like the safest solution. --- src/company_gui.cpp | 2 +- src/script/api/script_rail.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 965d0c804b..3d8fe8896b 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -636,7 +636,7 @@ private: const Company *c; const Livery *livery, *default_livery = nullptr; bool primary = widget == WID_SCL_PRI_COL_DROPDOWN; - byte default_col; + byte default_col = 0; /* Disallow other company colours for the primary colour */ if (this->livery_class < LC_GROUP_RAIL && HasBit(this->sel, LS_DEFAULT) && primary) { diff --git a/src/script/api/script_rail.cpp b/src/script/api/script_rail.cpp index 39f14cd0be..76eda79f4d 100644 --- a/src/script/api/script_rail.cpp +++ b/src/script/api/script_rail.cpp @@ -449,7 +449,7 @@ static bool IsValidSignalType(int signal_type) EnforcePrecondition(false, ::IsValidSignalType(signal)); Track track = INVALID_TRACK; - uint signal_cycles; + uint signal_cycles = 0; int data_index = 2 + (::TileX(front) - ::TileX(tile)) + 2 * (::TileY(front) - ::TileY(tile)); for (int i = 0; i < NUM_TRACK_DIRECTIONS; i++) { From f7af9a299a0269e6c3529c81439368a271cd4f11 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 3 Jan 2023 19:11:24 +0100 Subject: [PATCH 07/10] Codechange: prevent suspicious pointer scaling --- src/3rdparty/squirrel/squirrel/sqstate.cpp | 2 +- src/blitter/32bpp_anim.cpp | 4 ++-- src/blitter/32bpp_optimized.cpp | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/3rdparty/squirrel/squirrel/sqstate.cpp b/src/3rdparty/squirrel/squirrel/sqstate.cpp index 23bd520a1a..574311cf77 100644 --- a/src/3rdparty/squirrel/squirrel/sqstate.cpp +++ b/src/3rdparty/squirrel/squirrel/sqstate.cpp @@ -513,7 +513,7 @@ void RefTable::AllocNodes(SQUnsignedInteger size) bucks[n] = nullptr; temp->refs = 0; new (&temp->obj) SQObjectPtr; - temp->next = temp+1; + temp->next = &temp[1]; temp++; } bucks[n] = nullptr; diff --git a/src/blitter/32bpp_anim.cpp b/src/blitter/32bpp_anim.cpp index ed96c78d80..ab6f984d61 100644 --- a/src/blitter/32bpp_anim.cpp +++ b/src/blitter/32bpp_anim.cpp @@ -383,7 +383,7 @@ void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width, dst += _screen.pitch; /* Copy back the anim-buffer */ memcpy(anim_line, usrc, width * sizeof(uint16)); - usrc = (const uint32 *)((const uint16 *)usrc + width); + usrc = (const uint32 *)&((const uint16 *)usrc)[width]; anim_line += this->anim_buf_pitch; /* Okay, it is *very* likely that the image we stored is using @@ -422,7 +422,7 @@ void Blitter_32bppAnim::CopyToBuffer(const void *video, void *dst, int width, in udst += width; /* Copy the anim-buffer */ memcpy(udst, anim_line, width * sizeof(uint16)); - udst = (uint32 *)((uint16 *)udst + width); + udst = (uint32 *)&((uint16 *)udst)[width]; anim_line += this->anim_buf_pitch; } } diff --git a/src/blitter/32bpp_optimized.cpp b/src/blitter/32bpp_optimized.cpp index beafcff37f..3eae7c4e48 100644 --- a/src/blitter/32bpp_optimized.cpp +++ b/src/blitter/32bpp_optimized.cpp @@ -316,8 +316,9 @@ template Sprite *Blitter_32bppOptimized::EncodeInternal(const const SpriteLoader::CommonPixel *src = (const SpriteLoader::CommonPixel *)src_orig->data; for (uint y = src_orig->height; y > 0; y--) { - Colour *dst_px = (Colour *)(dst_px_ln + 1); - uint16 *dst_n = (uint16 *)(dst_n_ln + 1); + /* Index 0 of dst_px and dst_n is left as space to save the length of the row to be filled later. */ + Colour *dst_px = (Colour *)&dst_px_ln[1]; + uint16 *dst_n = (uint16 *)&dst_n_ln[1]; uint16 *dst_len = dst_n++; From c1ff471c777abd7b98699f30529f511a5561b4dd Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 6 Jan 2023 18:16:28 +0100 Subject: [PATCH 08/10] Fix: bad oddness checks Modulo on a signed number returns negative values for negative values, so i % 2 == 1 will only return true for positive odd numbers, whereas i % 2 != 0 returns true for both positive and negative odd numbers. --- src/timetable_gui.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/timetable_gui.cpp b/src/timetable_gui.cpp index f6b1e3da93..94a78b7a61 100644 --- a/src/timetable_gui.cpp +++ b/src/timetable_gui.cpp @@ -310,13 +310,13 @@ struct TimetableWindow : Window { bool disable = true; if (selected != -1) { const Order *order = v->GetOrder(((selected + 1) / 2) % v->GetNumOrders()); - if (selected % 2 == 1) { + if (selected % 2 != 0) { disable = order != nullptr && (order->IsType(OT_CONDITIONAL) || order->IsType(OT_IMPLICIT)); } else { disable = order == nullptr || ((!order->IsType(OT_GOTO_STATION) || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) && !order->IsType(OT_CONDITIONAL)); } } - bool disable_speed = disable || selected % 2 != 1 || v->type == VEH_AIRCRAFT; + bool disable_speed = disable || selected % 2 == 0 || v->type == VEH_AIRCRAFT; this->SetWidgetDisabledState(WID_VT_CHANGE_TIME, disable); this->SetWidgetDisabledState(WID_VT_CLEAR_TIME, disable); @@ -505,7 +505,7 @@ struct TimetableWindow : Window { static inline std::tuple PackTimetableArgs(const Vehicle *v, uint selected, bool speed) { uint order_number = (selected + 1) / 2; - ModifyTimetableFlags mtf = (selected % 2 == 1) ? (speed ? MTF_TRAVEL_SPEED : MTF_TRAVEL_TIME) : MTF_WAIT_TIME; + ModifyTimetableFlags mtf = (selected % 2 != 0) ? (speed ? MTF_TRAVEL_SPEED : MTF_TRAVEL_TIME) : MTF_WAIT_TIME; if (order_number >= v->GetNumOrders()) order_number = 0; @@ -543,7 +543,7 @@ struct TimetableWindow : Window { StringID current = STR_EMPTY; if (order != nullptr) { - uint time = (selected % 2 == 1) ? order->GetTravelTime() : order->GetWaitTime(); + uint time = (selected % 2 != 0) ? order->GetTravelTime() : order->GetWaitTime(); if (!_settings_client.gui.timetable_in_ticks) time /= DAY_TICKS; if (time != 0) { From 0251786f463ae651ab9a4e848b8aafb403a8f145 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 6 Jan 2023 18:31:29 +0100 Subject: [PATCH 09/10] Fix: virtual call from constructor That fills an instance variable that is only read from the Game Options window and that is overwritten when the video driver is started. Since you cannot get into the Game Options window without starting the video driver, it is just pointless and wrong code that would never be noticed by the end user. --- src/video/sdl2_v.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/video/sdl2_v.h b/src/video/sdl2_v.h index a2298c44e9..9b70eafd9c 100644 --- a/src/video/sdl2_v.h +++ b/src/video/sdl2_v.h @@ -17,7 +17,7 @@ /** The SDL video driver. */ class VideoDriver_SDL_Base : public VideoDriver { public: - VideoDriver_SDL_Base() : sdl_window(nullptr), buffer_locked(false), driver_info(this->GetName()) {} + VideoDriver_SDL_Base() : sdl_window(nullptr), buffer_locked(false) {} const char *Start(const StringList ¶m) override; @@ -41,8 +41,6 @@ public: std::vector GetListOfMonitorRefreshRates() override; - const char *GetName() const override { return "sdl"; } - const char *GetInfoString() const override { return this->driver_info.c_str(); } protected: From 29af0f8c7b91fa714644b2cb8d48cdea52c6de96 Mon Sep 17 00:00:00 2001 From: translators Date: Fri, 6 Jan 2023 18:46:19 +0000 Subject: [PATCH 10/10] Update: Translations from eints swedish: 18 changes by joeax910 chinese (simplified): 2 changes by HansKaffee romanian: 3 changes by ALEX11BR slovak: 15 changes by legitalk tamil: 21 changes by Aswn --- src/lang/romanian.txt | 6 +++--- src/lang/simplified_chinese.txt | 4 ++-- src/lang/slovak.txt | 22 ++++++++++++++------- src/lang/swedish.txt | 35 +++++++++++++++++---------------- src/lang/tamil.txt | 21 ++++++++++++++++++++ 5 files changed, 59 insertions(+), 29 deletions(-) diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 908e47d36a..784d9b6f8f 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -866,7 +866,7 @@ STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Rezerve noi de cărbune la {INDUSTRY}!{}Se preconizează dublarea producţiei! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Rezerve noi de petrol la {INDUSTRY}!{}Se preconizează dublarea producţiei! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Noile tehnologii folosite la {INDUSTRY} vor aduce dublarea producţiei! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Producţia de {STRING} de la {INDUSTRY} creste cu {COMMA}%! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Producţia de {STRING} de la {INDUSTRY} crește cu {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} scade producţia cu 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insectele cauzează distrugeri masive la {INDUSTRY}!{}Producţia scade cu 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Producţia de {STRING} de la {INDUSTRY} scade cu {COMMA}%! @@ -4189,13 +4189,13 @@ STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Acțiune # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Încărcare / Descărcare -STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Pleaca +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Pleacă STR_VEHICLE_STATUS_CRASHED :{RED}Accident! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Defect STR_VEHICLE_STATUS_STOPPED :{RED}Oprit STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Oprire, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Fara curent -STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Astept cale libera +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Aștept cale liberă STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Prea departe pentru următoarea destinație STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Spre {STATION}, {VELOCITY} diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 132af1e11a..432af037b5 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -2603,8 +2603,8 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}超载 # Linkgraph tooltip -STR_LINKGRAPH_STATS_TOOLTIP :{BLACK}{CARGO_LONG} 每月待从{STATION}运输到{STATION}为({COMMA}%产量){STRING} -STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}{CARGO_LONG}要运回({COMMA}% of capacity) +STR_LINKGRAPH_STATS_TOOLTIP :{BLACK}每月有{CARGO_LONG}待从{STATION}运输到{STATION}(运载能力的{COMMA}%){STRING} +STR_LINKGRAPH_STATS_TOOLTIP_RETURN_EXTENSION :{}有{CARGO_LONG}要运回(运载能力的{COMMA}%) STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}平均行驶时间: {NUM}{NBSP}天 # Base for station construction window(s) diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 8f5d1fe95c..9d0adec449 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -2919,6 +2919,8 @@ STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Nahodné STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Postaviť mesto na náhodnej pozícii STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Veľa náhodných miest STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Pokryť mapu náhodne umiestnenými mestami +STR_FOUND_TOWN_EXPAND_ALL_TOWNS :{BLACK}Rozbaliť všetky mestá +STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP :{BLACK}Nechať všetky mestá mierne rásť STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Meno mesta: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Vložte meno mesta @@ -3395,7 +3397,10 @@ STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Reprezen STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Posúvajte sprite, so súčasnou zmenou X a Y súradnice. Ctrl+klik posunie sprite o osem jednotiek súčasne ###length 2 +STR_SPRITE_ALIGNER_CENTRE_OFFSET :{BLACK}Offset v strede +STR_SPRITE_ALIGNER_CENTRE_SPRITE :{BLACK}Sprite zarovnávač v strede +STR_SPRITE_ALIGNER_CROSSHAIR :{BLACK}Zameriavací kríž STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Resetovať relatívne STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Resetovať aktuálne relatívne posunutie @@ -4251,7 +4256,7 @@ STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Činnos STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Činnosť aktuálneho lietadla - kliknite na zastavenie/spustenie lietadla # Messages in the start stop button in the vehicle view -STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Nakláda / Vykláda +STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Nakladá / Vykladá STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Opúšta STR_VEHICLE_STATUS_CRASHED :{RED}Zničené! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Pokazený @@ -4511,7 +4516,7 @@ STR_ORDER_TRANSFER_NO_LOAD :(Prelož a nech STR_ORDER_NO_UNLOAD :(Nevykladaj a nalož) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Nevykladaj a čakaj na plné naloženie) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Nevykladaj a čakaj na plné naloženie čohokoľvek) -STR_ORDER_NO_UNLOAD_NO_LOAD :(Žiadne vykládanie ani nakládanie) +STR_ORDER_NO_UNLOAD_NO_LOAD :(Žiadne vykladanie ani nakladanie) STR_ORDER_AUTO_REFIT :(Prestavať na {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Plne nalož s prestavbou na {STRING}) @@ -4576,22 +4581,22 @@ STR_TIMETABLE_STARTING_DATE :{BLACK}Začiato STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vyberte dátum začiatku cestovného poriadku. Ctrl+klik rozdelí od daného dátumu rovnomerne všetky vozidlá zdieľajúce tieto príkazy na základe ich relatívneho poradia, ak je cestovný poriadok kompletne vyplnený STR_TIMETABLE_CHANGE_TIME :{BLACK}Zmeniť čas -STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zmeniť dĺžku trvania označeného príkazu +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zmeniť dĺžku trvania označeného príkazu. Ctrl+klik nastaví čas pre všetky príkazy STR_TIMETABLE_CLEAR_TIME :{BLACK}Odstrániť čas -STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Odstrániť dĺžku trvania označeného príkazu +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Odstrániť dĺžku trvania označeného príkazu. Ctrl+klik vymaže čas pre všetky príkazy STR_TIMETABLE_CHANGE_SPEED :{BLACK}Zmeniť maximálnu rýchlosť -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Zmeniť maximálnu rýchlosť označeného príkazu +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Zmeniť maximálnu rýchlosť označeného príkazu. Ctrl+klik nastaví rýchlosť pre všetky príkazy STR_TIMETABLE_CLEAR_SPEED :{BLACK}Odstrániť rýchlostné obmedzenie -STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Odstrániť obmedzenie maximánej rýchlosti označeného príkazu +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Odstrániť obmedzenie maximánej rýchlosti označeného príkazu. Ctrl+klik vymaže rýchlosť pre všetky príkazy STR_TIMETABLE_RESET_LATENESS :{BLACK}Reset meškania STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Vynulovať počítadlo meškania, takže vozidlo pôjde presne STR_TIMETABLE_AUTOFILL :{BLACK}Automaticky vyplniť -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Vyplniť časový plán automaticky s hodnotami z nasledujúcej trasy (Ctrl+klik - pokúsiť sa udržať čakacie doby) +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Vyplniť časový plán automaticky s hodnotami z nasledujúcej trasy. Ctrl+klik - pokúsiť sa udržať čakacie doby STR_TIMETABLE_EXPECTED :{BLACK}Očakávané STR_TIMETABLE_SCHEDULED :{BLACK}Plánované @@ -4847,6 +4852,7 @@ STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... prí STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nemožno vygenerovať priemysel... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}{STRING} sa tu nedá postaviť... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Nemôžete tu postaviť tento typ priemyslu... +STR_ERROR_CAN_T_PROSPECT_INDUSTRY :{WHITE}Nemôžem hľadať priemysel... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... príliš blízko iného priemyslu STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... najskôr je potrebné založiť mesto STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... povolené len jedno pre každé mesto @@ -4861,6 +4867,8 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... les STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... môže byť postavené len nad hranicou snehu STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... môže byť postavené len pod hranicou snehu +STR_ERROR_PROSPECTING_WAS_UNLUCKY :{WHITE}Financovanie sa nepodarilo nájsť pre smolu; skúste to znova +STR_ERROR_NO_SUITABLE_PLACES_FOR_PROSPECTING :{WHITE}Nenašli sa žiadne vhodné miesta na vyhliadku pre toto odvetvie STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nenašli sa žiadne vhodné miesta pre '{STRING}' STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Pre získanie lepšej mapy zmeňte parametre jej generovania diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index ef0a3dc906..8ce5f3ecb6 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -236,7 +236,7 @@ STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Sökfilter: -STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv in sökfilter +STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv in ett eller flera sökord att filtrera listan efter STR_LIST_FILTER_TOOLTIP :{BLACK}Skriv in ett eller flera sökord att filtrera listan efter STR_TOOLTIP_GROUP_ORDER :{BLACK}Välj order att gruppera på @@ -257,7 +257,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Klicka o STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Växla stor/liten fönsterstorlek STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullningslist - rullar listan upp/ned STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullningslist - rullar listan höger/vänster -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv byggnader etc. på en markruta. Ctrl väljer yta diagonalt. Shift växlar mellan att riva/visa beräknad kostnad +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv byggnader etc. på en markruta. Ctrl väljer ytan diagonalt. Shift växlar mellan att riva/visa beräknad kostnad # Show engines button ###length VEHICLE_TYPES @@ -388,7 +388,7 @@ STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Bygg vä STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Spårvägskonstruktion STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantera träd. Shift växlar mellan att bygga/visa beräknad kostnad STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Placera skylt -STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Placera objekt. Ctrl markerkar området diagonalt. Shift växlar mellan att bygga/visa beräknad kostnad +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Placera objekt. Ctrl väljer ytan diagonalt. Shift växlar mellan att bygga/visa beräknad kostnad # Scenario editor file menu ###length 7 @@ -1701,7 +1701,7 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillåt datorst STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes innan skript sätts i viloläge: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximalt antal beräkningssteg ett skript kan utföra i en omgång -STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maximalt minnesanvändning per skript: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maximal minnesanvändning per skript: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Hur mycket minne ett enda skript kan konsumera innan det tvingas avslutas. Det kan behöva ökas för stora kartor. STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB @@ -2798,14 +2798,14 @@ STR_STATION_BUILD_NOISE :{BLACK}Generera # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landskapsplanering -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Sänk ett hörn av marken. Vid dragning kommer hörnet och vald yta att sänkas ner till hörnets nya höjd. Ctrl väljer yta diagonalt. Shift växlar mellan att sänka/visa beräknad kostnad -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Höj ett hörn av marken. Vid dragning kommer hörnet och vald yta att höjas upp till hörnets nya höjd. Ctrl väljer yta diagonalt. Shift växlar mellan att höja/visa beräknad kostnad -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Utjämna land till höjden av det först valda hörnet. Ctrl väljer området diagonalt. Shift växlar mellan att utjämna/visa beräknad kostnad -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Köp mark för framtida användning. Ctrl väljer området diagonalt. Shift växlar mellan att köpa mark/visa beräknad kostnad +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Sänk ett hörn av marken. Vid dragning kommer hörnet och vald yta att sänkas ner till hörnets nya höjd. Ctrl väljer ytan diagonalt. Shift växlar mellan att sänka/visa beräknad kostnad +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Höj ett hörn av marken. Vid dragning kommer hörnet och vald yta att höjas upp till hörnets nya höjd. Ctrl väljer ytan diagonalt. Shift växlar mellan att höja/visa beräknad kostnad +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Utjämna land till höjden av det först valda hörnet. Ctrl väljer ytan diagonalt. Shift växlar mellan att utjämna/visa beräknad kostnad +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Köp mark för framtida användning. Ctrl väljer ytan diagonalt. Shift växlar mellan att köpa mark/visa beräknad kostnad # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Val av objekt -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Välj objekt att bygga. Shift växlar mellan att bygga/visa beräknad kostnad +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Välj objekt att bygga. Ctrl väljer ytan diagonalt. Shift växlar mellan att bygga/visa beräknad kostnad STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Välj typ av objekt att bygga STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Förhandsvisning av objektet STR_OBJECT_BUILD_SIZE :{BLACK}Storlek: {GOLD}{NUM} x {NUM} rutor @@ -3348,7 +3348,7 @@ STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatalt: {S STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ett fatalt NewGRF-fel har uppstått:{}{STRING} STR_NEWGRF_ERROR_POPUP :{WHITE}Ett NewGRF-fel har uppstått:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} kommer inte att fungera med den TTDPatchversion som rapporterades av OpenTTD -STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} är för {STRING}versionen av TTD +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} är för {2:STRING}-versionen av TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} är designat för att användas med {2:STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Felaktig parameter för {1:STRING}: parameter {2:STRING} ({3:NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} måste laddas in innan {2:STRING} @@ -3489,11 +3489,11 @@ STR_LOCAL_AUTHORITY_ACTION_BRIBE :Muta de lokala ###length 8 STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{PUSH_COLOUR}{YELLOW}Starta en liten lokal reklamkampanj för att attrahera fler passagerare och mer gods till dina tranporttjänster.{}Ger en temporär boost till stationers betyg i en liten radie runt stadens centrum.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Starta en medelstor lokal reklamkampanj, för att attrahera fler passagerare och mer gods till dina tranporttjänster.{}Ger en temporär boost till stationers betyg i en medelstor radie runt stadens centrum.{}Kostnad: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Starta en stor lokal reklamkampanj, för att attrahera fler passagerare och mer gods till dina transporttjänster.{}Ger en temporär boost till stationers betyg i en stor radie runt stadens centrum.{}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{PUSH_COLOUR}{YELLOW}Starta en medelstor lokal reklamkampanj, för att attrahera fler passagerare och mer gods till dina tranporttjänster.{}Ger en temporär boost till stationers betyg i en medelstor radie runt stadens centrum.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{YELLOW}Starta en stor lokal reklamkampanj, för att attrahera fler passagerare och mer gods till dina transporttjänster.{}Ger en temporär boost till stationers betyg i en stor radie runt stadens centrum.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{PUSH_COLOUR}{YELLOW}Bekosta ombyggnad av stadens vägnätverk.{}Orsakar ansenliga störningar för vägtrafik i upp till 6 månader.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Bygg en staty i ditt företags ära.{}Ger en permanent boost till stationers betyg i staden.{}Cost: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Bekosta uppbyggnad av nya byggnader i staden.{}Ger en temporär boost till stadens tillväxt.{}Kostnad: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Bygg en staty till ditt företags ära.{}Ger en permanent boost till stationers betyg i staden.{}{POP_COLOUR}Cost: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Bekosta konstruktion av nya byggnader i staden.{}Ger en temporär boost till stadens tillväxt.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{PUSH_COLOUR}{YELLOW}Köp 1 års exklusiva transporträttigheter i staden.{}De lokala myndigheterna kommer inte tillåta passagerare och gods att använda dina motståndares stationer.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW} Muta de lokala myndigheterna för att öka din värdering, med risk för att få höga böter om du blir upptäckt.{}{POP_COLOUR}Kostnad: {CURRENCY_LONG} @@ -4587,7 +4587,7 @@ STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spelskr STR_AI_CONFIG_GAMESCRIPT_PARAM :{SILVER}Parametrar STR_AI_CONFIG_AI :{SILVER}Datorspelare -STR_AI_CONFIG_CHANGE_AI :Datorspelare +STR_AI_CONFIG_CHANGE_AI :{BLACK}Välj datorspelare STR_AI_CONFIG_CHANGE_GAMESCRIPT :{BLACK}Välj spelskript STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Läs in ett annat skript STR_AI_CONFIG_CONFIGURE :{BLACK}Konfigurera @@ -4617,7 +4617,7 @@ STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Skärmdu STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Skärmdump av miniatyrkartan # AI Parameters -STR_AI_SETTINGS_CAPTION_AI :Datorspelarens +STR_AI_SETTINGS_CAPTION_AI :{WHITE}Datorspelarens parametrar STR_AI_SETTINGS_CLOSE :{BLACK}Stäng STR_AI_SETTINGS_RESET :{BLACK}Återställ STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} @@ -4673,7 +4673,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Sparfilen är g STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Filen är inte läsbar STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Filen är inte skrivbar STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Integritetskontrollen på datan misslyckades -STR_GAME_SAVELOAD_ERROR_PATCHPACK :Sparat spel är från en modifierat version +STR_GAME_SAVELOAD_ERROR_PATCHPACK :Sparat spel är från en modifierad version STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spelet sparades i en version som ej stöder spårvagn. Alla spårvagnar har tagits bort @@ -4965,6 +4965,7 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objekt i STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... huvudkontor i vägen STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kan inte köpa denna mark... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... du äger den redan! +STR_ERROR_BUILD_OBJECT_LIMIT_REACHED :{WHITE}... gränsen för konstruktion av objekt är nådd # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan inte skapa grupp... diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index a9ebb69bf7..43b8f47604 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -200,6 +200,7 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp STR_UNITS_POWER_SI :{COMMA}{NBSP}kW +STR_UNITS_POWER_SI_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}kW/t STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}டன் STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}டன் @@ -958,6 +959,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}தி STR_GAME_OPTIONS_RESOLUTION_OTHER :மற்றவை STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM} +STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}விளையாட்டு மறுதொடக்கம் செய்யப்பட்ட பிறகு மட்டுமே இந்த அமைப்பு நடைமுறைக்கு வரும் STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync @@ -965,6 +967,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync +STR_GAME_OPTIONS_GRAPHICS :{BLACK}அசைவூட்டங்கள் STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz @@ -1172,6 +1175,7 @@ STR_CONFIG_SETTING_DISASTERS :பேரழி STR_CONFIG_SETTING_CITY_APPROVAL :நகர மறு அமைப்பின் மீது நகராட்சியின் நிலை: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :நிறுவனங்களின் சத்தம் மற்றும் சுற்றுச்சூழல் சேதம் அவர்களின் நகர மதிப்பீட்டை பாதிக்கும் மற்றும் அவற்றின் பகுதியில் மேலும் கட்டுமான நடவடிக்கைகளைத் தேர்வுசெய்க +STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :வரைபட உயர வரம்பு: {STRING} ###setting-zero-is-special STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE} அதிகபட்ச வரைபட உயரமாக இந்த மதிப்பை நீங்கள் தர இயலாது. வரைபடத்தில் குறைந்தது ஒரு மலையாவது இந்த மதிப்பை விட உயரமாக உள்ளது @@ -1265,6 +1269,7 @@ STR_CONFIG_SETTING_FREIGHT_TRAINS :பெரிய STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :ரயில்களில் சரக்குகளை கொண்டு செல்வதன் தாக்கத்தை அமைக்கவும். அதிக மதிப்பு ரயில்களுக்கு, குறிப்பாக மலைகளில் தேவைப்படும் அளவுக்கு சரக்குகளை எடுத்துச் செல்கிறது STR_CONFIG_SETTING_PLANE_SPEED :விமான வேக பெருக்கி: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :விமானங்களின் போக்குவரத்து வருமானத்தின் அளவைக் குறைக்க, மற்ற வாகன வகைகளுடன் ஒப்பிடும்போது விமானங்களின் ஒப்பீட்டு வேகத்தை அமைக்கவும் STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :விமான விபத்துகளின் எண்ணிக்கை: {STRING} @@ -1281,6 +1286,7 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}வா STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :கட்டட பராமரிப்பு: {STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :துவங்கும் நிறுவனத்தின் வண்ணம்: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :துவங்கும் நிறுவனத்தின் வண்ணம் STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :விமான நிலையங்கள் என்றும் காலாவதியாகாது: {STRING} @@ -1426,6 +1432,7 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :ஒரு அ ###length 3 STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER :என்றுமில்லை STR_CONFIG_SETTING_USE_RELAY_SERVICE_ASK :கேள் +STR_CONFIG_SETTING_USE_RELAY_SERVICE_ALLOW :அனுமதி ###length 3 STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click @@ -1581,6 +1588,7 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :தொழிற STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :பொருளாதார மாற்றங்கள்: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :உலக பொருளாதார மாற்றங்களைப் பற்றி செய்தித்தாளினைக் காட்டு +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :நிறுவனத்தால் வழங்கப்படும் தொழில்களின் உற்பத்தி நிலை மாறும்போது செய்தித்தாளைக் காட்டவும் STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :மற்ற தொழிற்சாலைகளின் உற்பத்தி மாற்றங்கள்: {STRING} @@ -1702,6 +1710,7 @@ STR_CONFIG_SETTING_TOWN_GROWTH_FAST :வேகமா STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :அதிவேகமாக STR_CONFIG_SETTING_LARGER_TOWNS :நகரங்கள் மாநகரங்கள் ஆகும் வாய்ப்பு: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :நகரமாக மாறும் நகரங்களின் எண்ணிக்கை, இதனால் பெரியதாகத் தொடங்கி வேகமாக வளரும் நகரம் STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 இல் {COMMA} ###setting-zero-is-special STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ஒன்றுமில்லை @@ -1749,6 +1758,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :இம்பீ STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :மெட்ரிக் (I) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (மீ³) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :இழு திறன் அலகுகள்: {STRING} ###length 3 STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :இம்பீரியல் (lbf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :மெட்ரிக் (kgf) @@ -2066,12 +2076,14 @@ STR_NETWORK_COMPANY_LIST_CLIENT_LIST :இணைய STR_NETWORK_COMPANY_LIST_SPECTATE :பார்வையாளனாக பார் # Network client list +STR_NETWORK_CLIENT_LIST_CAPTION :{WHITE}இணைய வீரர்கள் STR_NETWORK_CLIENT_LIST_SERVER_NAME_EDIT_TOOLTIP :{BLACK}உங்கள் சேவையகத்தின் பெயரைத் திருத்தவும் STR_NETWORK_CLIENT_LIST_SERVER_NAME_QUERY_CAPTION :சேவையகத்தின் பெயர் STR_NETWORK_CLIENT_LIST_SERVER_VISIBILITY :{BLACK}தெரிவுநிலை STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE :{BLACK}தொடர்பு வகை STR_NETWORK_CLIENT_LIST_SERVER_CONNECTION_TYPE_TOOLTIP :{BLACK}உங்கள் சேவையகத்தை மற்றவர்கள் எப்படி அணுகலாம் STR_NETWORK_CLIENT_LIST_PLAYER_NAME_TOOLTIP :{BLACK}உங்கள் வீரரின் பெயர் +STR_NETWORK_CLIENT_LIST_PLAYER_NAME_EDIT_TOOLTIP :{BLACK}உங்கள் வீரரின் பெயரைத் திருத்தவும் STR_NETWORK_CLIENT_LIST_ADMIN_COMPANY_TOOLTIP :{BLACK}இந்த நிறுவனத்திற்கான நிர்வாக நடவடிக்கைகள் STR_NETWORK_CLIENT_LIST_JOIN_TOOLTIP :இந்த நிறுவனத்தில் சேரு STR_NETWORK_CLIENT_LIST_CHAT_CLIENT_TOOLTIP :{BLACK}இந்த விளையாட்டாளருக்கு ஒரு செய்தியை அனுப்பவும் @@ -2507,6 +2519,7 @@ STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}ஏத STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}ஏதொவொறு இடத்தில் நகரத்தினை நிறுவு STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}பல வெவ்வேறு நகரங்கள் STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}வரைபடத்தினை நகரங்களினால் நிறப்பு +STR_FOUND_TOWN_EXPAND_ALL_TOWNS :{BLACK}எல்லா ஊர்களையும் விரிவுபடுத்து STR_FOUND_TOWN_NAME_TITLE :{YELLOW}நகரத்தின் பெயர்: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}நகரத்தின் பெயரினை இடு @@ -2697,6 +2710,7 @@ STR_FRAMERATE_MEMORYUSE :{WHITE}நி STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} நுண்ணொடி STR_FRAMERATE_MS_BAD :{RED}{DECIMAL} மில்லி விநாடி(கள்) +STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} பிரேம்கள்/வினாடி STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} வினாடிக்கு பிரேம்கள் STR_FRAMERATE_BYTES_GOOD :{LTBLUE}{BYTES} STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} விநாடி(கள்) @@ -2719,6 +2733,7 @@ STR_FRAMETIME_CAPTION_GL_TRAINS :இரயில STR_FRAMETIME_CAPTION_GL_ROADVEHS :சாலை வாகனத்தின் பயண நேரம் STR_FRAMETIME_CAPTION_GL_AIRCRAFT :விமான டிக்குகள் STR_FRAMETIME_CAPTION_GL_LANDSCAPE :உலக சொடுக்குகள் +STR_FRAMETIME_CAPTION_GL_LINKGRAPH :இணைப்பு வரைபட தாமதம் STR_FRAMETIME_CAPTION_DRAWING :கிராபிக்ஸ் ரெண்டரிங் STR_FRAMETIME_CAPTION_VIDEO :வீடியோ வெளியீடு STR_FRAMETIME_CAPTION_SOUND :ஒலி கலவை @@ -2747,6 +2762,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}ஆட STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}எந்த தகவலும் கிடைக்கவில்லை STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} +STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}கோப்பை மேலெழுதவும் STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}ஏற்கனவே உள்ள கோப்பை மேலெழுத விரும்புகிறீர்களா? STR_SAVELOAD_DIRECTORY :{STRING} (கோப்பகம்) STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (தாய் கோப்புறை) @@ -2933,6 +2949,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}மு STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}முன்னிருந்தமாதிரி மாற்று STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}தற்போதைய ஆஃப்செட்களை மீட்டமைக்கவும் +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X ஒதுக்கம்: {NUM}, Y ஒதுக்கம்: {NUM} (அறுதி) STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X ஒதுக்கம்: {NUM}, Y ஒதுக்கம்: {NUM} (சார்பு) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}ஸ்பிரைட்டினைத் தேர்ந்தெடுக்கவும் @@ -3229,6 +3246,7 @@ STR_FINANCES_SECTION_SHIP_REVENUE :{GOLD}கப் STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}கடன் வட்டி STR_FINANCES_SECTION_OTHER :{GOLD}மற்றவை +STR_FINANCES_TOTAL_CAPTION :{WHITE}மொத்தம் STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}வங்கி கையிருப்பு @@ -3367,6 +3385,7 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :பணிமன STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}பட்டியலில் உள்ள அனைத்து வாகனங்களையும் நிறுத்த இங்கே சொடுக்கவும் STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}பட்டியலில் உள்ள அனைத்து வாகனங்களையும் இயக்க இங்கே சொடுக்கவும் +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}இந்த வகை வாகனத்திற்கான எஞ்சின் வடிவமைப்புகளின் பட்டியலைப் பார்க்கவும் STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}{COMMA} வாகன{P "த்தின்" ங்களின்} பகிர்ந்த கட்டளைகள் @@ -3446,6 +3465,7 @@ STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}தூ STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}விமான வகை: {GOLD}{STRING} ###length 3 +STR_CARGO_TYPE_FILTER_FREIGHT :சரக்கு ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}இரயில் வாகனங்கள் பட்டியல் - மேலும் விவரங்களுக்கு வாகனத்தை சொடுக்கவும் @@ -3460,6 +3480,7 @@ STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}கப STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}விமானத்தை வாங்கு ###length VEHICLE_TYPES +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}வாகனத்தை வாங்கி மாற்றியமை STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}கப்பலை வாங்கி மாற்றியமை STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}விமானத்தை வாங்கி மாற்றியமை